Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Uso del enrutamiento de registros personalizado
Puede utilizar Amazon ECS FireLens para utilizar los parámetros de definición de tareas para enrutar los registros a un AWS
servicio o destino AWS Partner Network (APN) para el almacenamiento y el análisis de los registros. AWS Partner Network Se trata de una comunidad global de socios que aprovecha los programas, la experiencia y los recursos para crear, comercializar y vender ofertas para los clientes. Para obtener más información, consulte AWS Partner
Consideraciones
Tenga en cuenta lo siguiente cuando lo utilice FireLens para Amazon ECS:
-
Le recomendamos que añada un nombre
my_service_
al contenedor de registro para que pueda distinguir fácilmente los nombres de los contenedores en la consola. -
Amazon ECS añade una dependencia de orden de contenedores inicial entre los contenedores de la aplicación y el FireLens contenedor de forma predeterminada. Al especificar un orden de contenedores entre los contenedores de la aplicación y el FireLens contenedor, se anula el orden de contenedores inicial predeterminado.
-
FireLensfor Amazon ECS es compatible con las tareas que se alojan tanto AWS Fargate en Linux como en Amazon EC2 en Linux. Los contenedores de Windows no son compatibles con FireLens.
Para obtener información sobre cómo configurar el registro centralizado para contenedores de Windows, consulte Centralized logging for Windows containers on Amazon ECS using Fluent Bit
(Registro centralizado para contenedores de Windows en Amazon ECS con Fluent Bit). -
FireLenspara Amazon ECS se admite en AWS CloudFormation las plantillas. Para obtener más información, consulte AWS::ECS::TaskDefinition FirelensConfigurationla Guía AWS CloudFormation del usuario
-
FireLensescucha en el puerto
24224
, por lo que, para garantizar que no se pueda acceder al router de FireLens registro fuera de la tarea, no debe permitir el tráfico entrante24224
en el puerto del grupo de seguridad que utilice su tarea. Para tareas que utilizan el modo de redawsvpc
, es el grupo de seguridad asociado a la tarea. Para tareas que utilizan el modo de redhost
, es el grupo de seguridad asociado a la instancia de Amazon EC2 que aloja la tarea. Para tareas que utilizan el modo de redbridge
, no cree asignaciones de puertos que utilicen el puerto24224
. -
En el caso de las tareas que utilizan el modo de
bridge
red, el contenedor con la FireLens configuración debe iniciarse antes de que se inicie cualquier contenedor de aplicaciones que dependa de él. Para controlar el orden de inicio de los contenedores, utilice las condiciones de dependencia en la definición de la tarea. Para obtener más información, consulte Dependencia de contenedor.nota
Si utiliza parámetros de condiciones de dependencia en las definiciones de contenedores con una FireLens configuración, asegúrese de que cada contenedor tenga un requisito de
HEALTHY
condiciónSTART
o. -
Por defecto, FireLens agrega el nombre de definición de clúster y tarea y el nombre de recurso de Amazon (ARN) del clúster como claves de metadatos a los registros de contenedor de stdout/stderr. A continuación se muestra un ejemplo del formato de los metadatos.
"ecs_cluster": "
cluster-name
", "ecs_task_arn": "arn:aws:ecs:region
:111122223333
:task/cluster-name
/f2ad7dba413f45ddb4EXAMPLE
", "ecs_task_definition": "task-def-name:revision",Si no quiere que los metadatos estén en los registros, establezca
enable-ecs-log-metadata
enfalse
en lafirelensConfiguration
de la definición de tareas."firelensConfiguration":{ "type":"fluentbit", "options":{ "enable-ecs-log-metadata":"false", "config-file-type":"file", "config-file-value":"/extra.conf" }
Permisos de IAM necesarios
Para usar esta función, debe crear un rol de IAM para sus tareas que proporcione los permisos necesarios para usar cualquier AWS servicio que requieran las tareas. Por ejemplo, si un contenedor envía registros a Firehose, la tarea requiere permiso para llamar a la firehose:PutRecordBatch
API. Para obtener más información, consulte Adición y eliminación de permisos de identidad de IAM en la Guía del usuario de IAM.
El siguiente ejemplo de política de IAM agrega los permisos necesarios para enrutar los registros a Firehose.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "
firehose:PutRecordBatch
" ], "Resource": [ "*" ] } ] }
El siguiente ejemplo de política de IAM añade los permisos necesarios para enrutar los registros a Amazon CloudWatch Logs.
{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [
"logs:CreateLogStream", "logs:CreateLogGroup", "logs:PutLogEvents"
], "Resource": "*" }] }
Es posible que la tarea también requiera el rol de ejecución de tareas de Amazon ECS en las condiciones que se describen a continuación. Para obtener más información, consulte Rol de IAM de ejecución de tareas de Amazon ECS.
-
Si su tarea está alojada en Fargate y extrae imágenes de contenedores de Amazon ECR o hace referencia a datos confidenciales de su configuración de AWS Secrets Manager registro, debe incluir la función de IAM de ejecución de tareas.
-
Si especifica un archivo de configuración personalizado alojado en Amazon S3, el rol de IAM de ejecución de tareas debe incluir el permiso
s3:GetObject
para el archivo de configuración y el permisos3:GetBucketLocation
en el bucket de Amazon S3 en el que se encuentra el archivo. Para obtener más información, consulte Especificación de permisos en una política en la Guía del usuario de Amazon Simple Storage Service.La siguiente política de IAM de ejemplo agrega los permisos necesarios para recuperar un archivo de Amazon S3. Especifique el nombre del bucket de Amazon S3 y el nombre del archivo de configuración.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "
s3:GetObject
" ], "Resource": [ "arn:aws:s3:::examplebucket
/folder_name
/config_file_name
" ] }, { "Effect": "Allow", "Action": [ "s3:GetBucketLocation" ], "Resource": [ "arn:aws:s3:::examplebucket
" ] } ] }
Límite de búfer de Fluentd
Al crear una definición de tarea, puede especificar el número de eventos que se almacenan en búfer en la memoria especificando el valor (en bytes) 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. Los registros perdidos pueden dificultar la solución de problemas. Establecer el límite de búfer podría ayudar a evitar este problema.
A continuación se muestra la sintaxis para especificar el. log-driver-buffer-limit
my_service_
Sustitúyalo por el nombre de su 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": "2097152" } }, "dependsOn": [ { "containerName": "log_router", "condition": "START" } ], "memoryReservation": 100 } ] }
Tenga en cuenta lo siguiente cuando lo utilice FireLens para Amazon ECS con la opción de límite de búfer:
-
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
1
MiB. -
Los valores válidos son
0
y536870912
(512 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 límite de búfer de memoria. La cantidad total de memoria de búfer especificada debe ser inferior a
536870912
(512 MiB) cuando no se especifica los valores de contenedormemory
ymemoryReservation
. Más concretamente, puede tener un contenedor de aplicaciones con el controlador de registroawsfirelens
y la opciónlog-driver-buffer-limit
establecida en 300 MiB. Sin embargo, no se le permitirá ejecutar tareas si tiene más de dos contenedores conlog-driver-buffer-limit
establecido en 300 MiB (300 MiB * 2 > 512 MiB).
Uso de bibliotecas de registradores Fluent o Log4j sobre TCP
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 se asigna al FireLens contenedor.
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