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
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 enawsfirelens
. -
El límite de búfer predeterminado es de
1048576
líneas de registro. -
Los valores válidos son
0
y536870912
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áximo8
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
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 } ] }