Configurazione dei log di Amazon ECS per un throughput elevato
Quando si crea una definizione di attività, è possibile specificare il numero righe di log che sono stati salvati nella memoria specificando il valore nel log-driver-buffer-limit. Per ulteriori informazioni, consulta la pagina Driver di registro di Fluentd
Utilizzare questa opzione in caso di throughput elevato, perché Docker potrebbe esaurire la memoria buffer e scartare i messaggi buffer in modo da poter aggiungere nuovi messaggi.
Quando usi FireLens per Amazon ECS con l'opzione di limite del buffer, tieni presente le considerazioni seguenti:
-
Questa opzione è supportata nei tipi EC2 e Fargate con versione della piattaforma
1.4.0o successiva. -
L'opzione è valida solo quando
logDriverè impostato suawsfirelens. -
Il limite di buffer di default è
1048576righe di log. -
Il limite del buffer deve essere maggiore o uguale a
0e inferiore a536870912righe di log. -
La quantità massima di memoria utilizzata per questo buffer è il prodotto della dimensione di ogni riga di log e della dimensione del buffer. Ad esempio, se le righe di log dell'applicazione sono in media di
2KiB, un limite di buffer di 4096 utilizzerebbe al massimo8MiB. La quantità totale di memoria allocata a livello di attività deve essere superiore a quella allocata per tutti i container oltre al driver di log del buffer di memoria.
Quando il driver di log awsfirelens è specificato in una definizione di attività, l'agente Amazon ECS inserisce le seguenti variabili di ambiente nel container:
FLUENT_HOST-
L'indirizzo IP assegnato al container FireLens.
Nota
Se si utilizza EC2 con la modalità di rete
bridge, la variabile di ambienteFLUENT_HOSTnel container dell'applicazione può diventare imprecisa dopo il riavvio del container del router del log FireLens (il container con l'oggettofirelensConfigurationnella sua definizione). Questo perchéFLUENT_HOSTè un indirizzo IP dinamico e può cambiare dopo un riavvio. La registrazione diretta dal container dell'applicazione all'indirizzo IPFLUENT_HOSTpuò iniziare a fallire dopo la modifica dell'indirizzo. Per ulteriori informazioni sul riavvio di singoli container, consultare Riavviare singoli container nelle attività Amazon ECS con policy di riavvio dei container. FLUENT_PORT-
La porta su cui il protocollo Fluent Forward è in ascolto.
Le variabili di ambiente FLUENT_HOST e FLUENT_PORT consentono di accedere direttamente al router di log dal codice anziché passare attraverso stdout. Per ulteriori informazioni, consulta fluent-logger-golang
Di seguito è mostrata la sintassi per specificare il log-driver-buffer-limit. Sostituire my_service_ con il nome del servizio:
{ "containerDefinitions": [ { "name": "my_service_log_router", "image": "public.ecr.aws/aws-observability/aws-for-fluent-bit:stable", "cpu": 0, "memoryReservation": 51, "portMappings": [], "essential": true, "environment": [], "mountPoints": [], "volumesFrom": [], "user": "0", "logConfiguration": { "logDriver": "awslogs", "options": { "awslogs-group": "/ecs/ecs-aws-firelens-sidecar-container", "mode": "non-blocking", "awslogs-create-group": "true", "max-buffer-size": "25m", "awslogs-region": "us-east-1", "awslogs-stream-prefix": "firelens" }, "secretOptions": [] }, "systemControls": [], "firelensConfiguration": { "type": "fluentbit" } }, { "essential": true, "image": "public.ecr.aws/docker/library/httpd:latest", "name": "app", "logConfiguration": { "logDriver": "awsfirelens", "options": { "Name": "firehose", "region": "us-west-2", "delivery_stream": "my-stream", "log-driver-buffer-limit": "51200" } }, "dependsOn": [ { "containerName": "log_router", "condition": "START" } ], "memoryReservation": 100 } ] }