Especificar una FireLens configuración en una definición de tarea - Amazon Elastic Container Service

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.

Especificar una FireLens configuración en una definición de tarea

Para utilizar el enrutamiento de registros personalizado con FireLens, debe especificar lo siguiente en la definición de tareas:

  • Un contenedor del enrutador de registros que incluye una configuración de FireLens. Recomendamos que el contenedor se marque como essential.

  • Uno o varios contenedores de aplicaciones que incluyen una configuración de registro que especifica el controlador de registros awsfirelens.

  • Un nombre de recurso de Amazon (ARN) de rol de IAM de tarea que incluya los permisos necesarios para que la tarea envíe los registros. Para obtener más información sobre los permisos del rol tareas de IAM, consulte Permisos de IAM necesarios.

Al crear una nueva definición de tarea mediante el AWS Management Console, hay una sección de FireLens integración que facilita la adición de un contenedor de Log Router. Para obtener más información, consulte Creación de una definición de tareas con la consola.

Amazon ECS convierte la configuración de registros y genera la configuración de salida de Fluentd o Fluent Bit. La configuración de salida se monta en el contenedor de enrutamiento de registros en /fluent-bit/etc/fluent-bit.conf para Fluent Bit y /fluentd/etc/fluent.conf para Fluentd.

importante

FireLens escucha en el puerto 24224. Por lo tanto, para garantizar que no se pueda acceder al router de FireLens registro fuera de la tarea, no debe permitir la entrada de tráfico en el puerto 24224 del grupo de seguridad que utilice la tarea. Para tareas que utilizan el modo de red awsvpc, es el grupo de seguridad asociado a la tarea. Para tareas que utilizan el modo de red host, es el grupo de seguridad asociado a la instancia de Amazon EC2 que aloja la tarea. Para tareas que utilizan el modo de red bridge, no cree asignaciones de puertos que utilicen el puerto 24224.

De forma predeterminada, Amazon ECS agrega campos adicionales a las entradas de registro, que ayudan a identificar su origen.

  • ecs_cluster: el nombre del clúster del que forma parte la tarea.

  • ecs_task_arn: nombre de recurso de Amazon (ARN) de la tarea de la que el contenedor forma parte.

  • ecs_task_definition: el nombre y la revisión de la definición de tareas que utiliza la tarea.

  • ec2_instance_id: el ID de la instancia de Amazon EC2 en la que está alojado el contenedor. Este campo solo es válido para las tareas que utilizan el tipo de lanzamiento EC2.

Puede enable-ecs-log-metadata configurarlo en false si no desea los metadatos.

El siguiente ejemplo de definición de tareas define un contenedor de enrutadores de registros que usa Fluent Bit para enrutar sus CloudWatch registros a Logs. También define un contenedor de aplicaciones que usa una configuración de registro para enrutar los registros a Amazon Data Firehose y establece la memoria que se usa para almacenar eventos en los 2 MiB.

nota

Para ver más ejemplos de definiciones de tareas, consulte los FireLens ejemplos de Amazon ECS en GitHub.

{ "family": "firelens-example-firehose", "taskRoleArn": "arn:aws:iam::123456789012:role/ecs_task_iam_role", "containerDefinitions": [ { "essential": true, "image": "906394416424.dkr.ecr.us-west-2.amazonaws.com/aws-for-fluent-bit:stable", "name": "log_router", "firelensConfiguration": { "type":"fluentbit", "options":{ "enable-ecs-log-metadata":"true" }, "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" } }, "memoryReservation": 100 } ] }

Los pares de clave-valor especificados como opciones en el objeto logConfiguration se utilizan para generar la configuración de salida de Fluentd o Fluent Bit. A continuación, se muestra un ejemplo de código de una definición de salida de Fluent Bit.

[OUTPUT] Name firehose Match app-firelens* region us-west-2 delivery_stream my-stream
nota

FireLens administra la match configuración. Esta configuración no se especifica en la definición de tareas.

Especificación de un archivo de configuración personalizado

Además, del archivo de configuración generado automáticamente que FireLens crea en su nombre, también puede especificar un archivo de configuración personalizado. El formato del archivo de configuración es el formato nativo del enrutador de registros que está utilizando. Para obtener más información, consulte las secciones Fluentd Config File Syntax (Sintaxis del archivo de configuración de Fluentd) y Fluent Bit Configuration File (Archivo de configuración de Fluent Bit).

En el archivo de configuración personalizado, en el caso de las tareas que utilizan el modo de red bridge o awsvpc, no establezca una entrada directa Fluentd o Fluent Bit a través de TCP porque FireLens la agrega a la configuración de entrada.

La configuración de FireLens debe incluir las siguientes opciones para especificar un archivo de configuración personalizado:

config-file-type

La ubicación de origen del archivo de configuración personalizado. Las opciones disponibles son s3 o file.

nota

Las tareas alojadas en ellas AWS Fargate solo admiten el tipo file de archivo de configuración.

config-file-value

El origen del archivo de configuración personalizado. Si se utiliza el tipo de archivo de configuración s3, el valor del archivo de configuración es el ARN completo del bucket y el archivo de Amazon S3. Si se utiliza el tipo de archivo de configuración file, el valor del archivo de configuración es la ruta completa del archivo de configuración que existe en la imagen del contenedor o en un volumen que se monta en el contenedor.

importante

Cuando se utilice un archivo de configuración personalizado, se debe especificar una ruta diferente a la que utiliza FireLens. Amazon ECS reserva la ruta de archivo /fluent-bit/etc/fluent-bit.conf para Fluent Bit y la /fluentd/etc/fluent.conf para Fluentd.

En el ejemplo siguiente se muestra la sintaxis necesaria al especificar una configuración personalizada.

importante

Para especificar un archivo de configuración personalizado alojado en Amazon S3, asegúrese de haber creado un rol de IAM de ejecución de tareas con los permisos adecuados. Para obtener más información, consulte Permisos de IAM necesarios.

A continuación se muestra la sintaxis necesaria al especificar una configuración personalizada.

{ "containerDefinitions":[ { "essential":true, "image":"906394416424.dkr.ecr.us-west-2.amazonaws.com/aws-for-fluent-bit:stable", "name":"log_router", "firelensConfiguration":{ "type":"fluentbit", "options":{ "config-file-type":"s3 | file", "config-file-value":"arn:aws:s3:::mybucket/fluent.conf | filepath" } } } ] }
nota

Las tareas alojadas en AWS Fargate solo admiten el tipo file de archivo de configuración.