Configurazione dei log di Amazon ECS per un throughput elevato - Amazon Elastic Container Service

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 nella documentazione Docker.

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.0 o successiva.

  • L'opzione è valida solo quando logDriver è impostato su awsfirelens.

  • Il limite di buffer di default è 1048576 righe di log.

  • Il limite del buffer deve essere maggiore o uguale a 0 e inferiore a 536870912 righe 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 2 KiB, un limite di buffer di 4096 utilizzerebbe al massimo 8 MiB. 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 ambiente FLUENT_HOST nel container dell'applicazione può diventare imprecisa dopo il riavvio del container del router del log FireLens (il container con l'oggetto firelensConfiguration nella 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 IP FLUENT_HOST può 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 su GitHub.

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 } ] }