Configuración de los registros de Amazon ECS para conseguir un alto rendimiento - Amazon Elastic Container Service

Configuración de los registros de Amazon ECS para conseguir un alto rendimiento

Al crear una definición de tareas, puede indicar el número de líneas de registro que se almacenan en búfer en la memoria mediante la especificación del valor en el log-driver-buffer-limit. Para obtener más información, consulte Controladores de registro Fluentd en la documentación de Docker.

Utilice esta opción cuando haya un alto rendimiento, ya que Docker podría quedarse sin memoria de búfer y descartar mensajes de búfer para poder agregar nuevos mensajes.

Al utilizar FireLens para Amazon ECS con la opción de límite de búfer, tenga en cuenta lo siguiente:

  • Esta opción se admite en el tipo de lanzamiento de Amazon EC2 y en el tipo de lanzamiento de Fargate con versión de plataforma 1.4.0 o posterior.

  • La opción solo es válida cuando logDriver se establece en awsfirelens.

  • El límite de búfer predeterminado es de 1048576 líneas de registro.

  • Los valores válidos son 0 y 536870912 líneas de registro.

  • La cantidad máxima de memoria utilizada para este búfer es el producto del tamaño de cada línea de registro y el tamaño del búfer. Por ejemplo, si las líneas de registro de la aplicación tienen un promedio de 2 KiB, un límite de búfer de 4096 utilizaría como máximo 8 MiB. La cantidad total de memoria asignada a nivel de tarea debe ser superior a la cantidad de memoria asignada a todos los contenedores, además del búfer de memoria del controlador de registro.

Cuando se especifica el controlador de registros awsfirelens en una definición de tarea, el agente de contenedor de Amazon ECS introduce las siguientes variables de entorno en el contenedor:

FLUENT_HOST

La dirección IP que está asignada al contenedor FireLens.

FLUENT_PORT

El puerto en el que se está escuchando el protocolo Fluent Forward.

Puede utilizar las variables de entorno FLUENT_HOST y FLUENT_PORT para iniciar sesión directamente en el enrutador de registros desde el código en lugar de pasar por stdout. Para obtener más información, consulte fluent-logger-golang en GitHub.

A continuación, se muestra la sintaxis para indicar la propiedad log-driver-buffer-limit. Sustituya my_service_ por el nombre del servicio:

{ "containerDefinitions": [ { "essential": true, "image": "906394416424.dkr.ecr.us-west-2.amazonaws.com/aws-for-fluent-bit:stable", "name": "my_service_log_router", "firelensConfiguration": { "type": "fluentbit" }, "logConfiguration": { "logDriver": "awslogs", "options": { "awslogs-group": "firelens-container", "awslogs-region": "us-west-2", "awslogs-create-group": "true", "awslogs-stream-prefix": "firelens" } }, "memoryReservation": 50 }, { "essential": true, "image": "httpd", "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 } ] }