Uso del controlador de registros awslogs - 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.

Uso del controlador de registros awslogs

Puede configurar los contenedores en las tareas para enviar información de registro a CloudWatch Logs. Si utiliza el tipo de lanzamiento para sus tareas, esto le permite ver los registros de los contenedores.Fargate Si utiliza el tipo de lanzamiento EC2, esto le permite ver diferentes registros desde sus contenedores en una ubicación cómoda y evita que los registros de contenedor ocupen espacio en disco en sus instancias de contenedor. Este tema le ayuda a comenzar a utilizar el controlador de registros awslogs en sus definiciones de tareas.

nota

El tipo de información que registran los contenedores de la tarea depende en gran medida del comando ENTRYPOINT De forma predeterminada, los registros que se capturan muestran la salida del comando que aparecería normalmente en un terminal interactivo si el contenedor se ejecutara localmente, que son los flujos de E/S STDOUT y STDERR El controlador del registro awslogs simplemente transfiere estos registros de Docker a CloudWatch Logs. Para obtener más información sobre cómo se procesan los registros de Docker, incluidas formas alternativas de capturar diferentes datos de archivo o flujos, consulte View logs for a container or service en la documentación de Docker.

Para enviar registros del sistema desde las instancias de contenedor de Amazon ECS a CloudWatch Logs;, consulte Usar CloudWatch Logs con instancias de contenedor. Para obtener más información sobre CloudWatch Logs, consulte Monitoreo de los archivos de registro y Cuotas de CloudWatch Logs en la Amazon CloudWatch Logs User Guide.

Habilitación del controlador de registros awslogs para los contenedores

Si utiliza el tipo de lanzamiento Fargate para las tareas, lo único que tiene que hacer para habilitar el controlador de registros awslogs es agregar los parámetros logConfiguration necesarios a la definición de tareas. Para obtener más información, consulte Especificación de una configuración de registro en la definición de tarea.

Si utiliza el tipo de lanzamiento EC2 para las tareas y desea habilitar el controlador de registros awslogs, las instancias de contenedor de Amazon ECS requieren al menos la versión 1.9.0 del agente de contenedor. Para obtener información sobre la comprobación de la versión del agente y la actualización a la versión más reciente, consulte Actualizar el agente de contenedor de Amazon ECS.

nota

Si no está utilizando la Amazon ECS optimizada para AMI (con al menos la versión 1.9.0-1 del paquete ecs-init) para las instancias de contenedor, también tiene que especificar que el controlador de registros awslogs esté disponible en la instancia de contenedor al iniciar el agente utilizando la siguiente variable de entorno en la instrucción docker run o el archivo de variables de entorno. Para obtener más información, consulte Instalar el agente de contenedor de Amazon ECS.

ECS_AVAILABLE_LOGGING_DRIVERS='["json-file","awslogs"]'

Las instancias de contenedor de Amazon ECS también requieren permisos logs:CreateLogStream y logs:PutLogEvents en el rol de IAM con el que se lanzan las instancias de contenedor. Si creó el rol de instancia de contenedor de Amazon ECS antes de que el soporte del controlador de registros awslogs se habilitara en Amazon ECS, es posible que tenga que agregar este permiso. Si las instancias de contenedor utilizan la política de IAM administrada para instancias de contenedor, las instancias de contenedor deben tener los permisos correctos. Para obtener información sobre cómo comprobar el rol de instancia de contenedor de Amazon ECS y cómo asociar la política de IAM administrada para instancias de contenedor, consulte Para comprobar si existe ecsInstanceRole en la consola de IAM.

Creación de un grupo de registros

El controlador de registros awslogs puede enviar flujos de registros a un grupo de registros existente en CloudWatch Logs o puede crear un nuevo grupo de registros en su nombre. La Consola de administración de AWS proporciona una opción de configuración automática que crea un grupo de registros en su nombre mediante el nombre de familia de definición de tareas con ecs como prefijo. De forma alternativa, puede especificar manualmente las opciones de configuración de registros y especificar la opción awslogs-create-group con un valor de true que creará los grupos de registros en su nombre.

nota

Para utilizar la opción awslogs-create-group con el fin de crear el grupo de registros, la política de IAM debe incluir el permiso logs:CreateLogGroup

Usar la característica de configuración automática para crear un grupo de registros

Al registrar una definición de tareas en la consola de Amazon ECS, tiene la opción de permitir que Amazon ECS configure automáticamente los registros de CloudWatch Esta opción crea un grupo de registros en su nombre mediante el nombre de familia de definición de tareas con ecs como prefijo.

Para utilizar la opción de configuración automática de grupos de registros en la consola de Amazon ECS

  1. Abra la consola de Amazon ECS en https://console.aws.amazon.com/ecs/.

  2. En el panel de navegación izquierdo, elija Task Definitions y Create new Task Definition.

  3. Seleccione la opción de compatibilidad y elija Next Step (Siguiente paso).

  4. Elija Add container (Añadir contenedor).

  5. En la sección Storage and Logging (Almacenamiento y registro), elija Auto-configure CloudWatch Logs (Configurar automáticamente CloudWatch Logs) en Log configuration (Configuración de registros).

  6. Indique las opciones del controlador de registros awslogs. Para obtener más información, consulte Especificación de una configuración de registro en la definición de tarea.

  7. Complete el resto del asistente de definición de tareas.

Opciones disponibles del controlador de registros awslogs

El controlador de registros awslogs admite las opciones siguientes en las definiciones de tareas de Amazon ECS Para obtener más información, consulte la sección sobre el controlador de registros de CloudWatch Logs.

awslogs-create-group

Obligatorio: no

Especifique si desea que el grupo de registros se cree automáticamente. Si no se especifica esta opción, el valor predeterminado es false.

nota

La política de IAM debe incluir el permiso logs:CreateLogGroup antes de intentar utilizar awslogs-create-group.

awslogs-region

Obligatorio: sí

Especifique la región en la que el controlador de registros awslogs debe enviarle sus registros de Docker. Puede elegir enviar todos sus registros desde clústeres en distintas regiones a una única región en CloudWatch Logs para que estén visibles en una ubicación o puede separarlos por región para mayor granularidad. Asegúrese de que el grupo de registro especificado exista en la región que especifique con esta opción.

awslogs-endpoint

Obligatorio: no

Por defecto, Docker usa la opción de registro awslogs-region o la región detectada para construir el punto de enlace de la API remota de CloudWatch Logs Utilice la opción de registro awslogs-endpoint para anular el punto de enlace predeterminado con el punto de enlace proporcionado.

awslogs-group

Obligatorio: sí

Debe especificar un grupo de registros al que el controlador de registros awslogs envíe sus secuencias de registros. Para obtener más información, consulte Creación de un grupo de registros.

awslogs-stream-prefix

Obligatorio: Opcional cuando se utiliza el tipo de lanzamiento EC2, necesario para el tipo de lanzamiento Fargate

La opción awslogs-stream-prefix le permite asociar un flujo de registros con el prefijo especificado, el nombre del contenedor y el ID de la tarea de Amazon ECS a la que pertenece el contenedor. Si especifica un prefijo con esta opción, entonces el flujo de registros adopta el siguiente formato:

prefix-name/container-name/ecs-task-id

Si no especifica un prefijo con esta opción, el nombre del flujo de registros se obtiene a partir del ID de contenedor asignado por el demonio de Docker en la instancia de contenedor. Dado que es difícil realizar un seguimiento de los registros hasta el contenedor que les envió el ID de contenedor de Docker (que solo está disponible en la instancia de contenedor), le recomendamos que especifique un prefijo con esta opción.

Para servicios de Amazon ECS, podría utilizar el nombre de servicio como prefijo, lo que le permitiría realizar un seguimiento de flujos de registros hasta el servicio al que pertenece el contenedor, el nombre del contenedor que las ha enviado y el ID de la tarea a la que pertenece el contenedor.

Debe especificar un prefijo de flujo para los registros con el fin de que aparezcan en el panel de registros cuando use la consola de Amazon ECS

awslogs-datetime-format

Obligatorio: no

Esta opción define un patrón de inicio de varias líneas en formato strftime de Python. Un mensaje de registro consta de una línea que coincide con el patrón y de líneas siguientes que no coinciden con el patrón. Por tanto, la línea coincidente es el delimitador entre los mensajes de registro.

Un ejemplo de caso de uso de este formato es para analizar la salida como un volcado de pila, que de lo contrario podría registrarse en varias entradas. El patrón correcto permite capturarla en una sola entrada.

Para obtener más información, consulte awslogs-datetime-format.

Esta opción siempre tiene prioridad si ambos awslogs-datetime-format y awslogs-multiline-pattern están configurados.

nota

El registro de varias líneas realiza análisis de las expresiones regulares y correspondencia de todos los mensajes de registro, lo que puede tener un impacto negativo sobre el rendimiento de registro.

awslogs-multiline-pattern

Obligatorio: no

Esta opción define un patrón de inicio de varias líneas con una expresión regular. Un mensaje de registro consta de una línea que coincide con el patrón y de líneas siguientes que no coinciden con el patrón. Por tanto, la línea coincidente es el delimitador entre los mensajes de registro.

Para obtener más información, consulte awslogs-multiline-pattern.

Esta opción se pasa por alto si también se ha configurado awslogs-datetime-format

nota

El registro de varias líneas realiza análisis de las expresiones regulares y correspondencia de todos los mensajes de registro. Esto puede tener un impacto negativo sobre el rendimiento de registro.

mode

Obligatorio: no

Valores válidos: non-blocking | blocking

Valor predeterminado: blocking

El modo de entrega de mensajes de registro desde el contenedor a awslogs. Para obtener más información, consulte Configuración de controladores de registro.

max-buffer-size

Obligatorio: no

Valor predeterminado: 1m

Al utilizar el modo non-blocking, la opción de registro max-buffer-size controla el tamaño del búfer de anillo utilizado para el almacenamiento intermedio de mensajes.

Especificación de una configuración de registro en la definición de tarea

Antes de que los contenedores puedan enviar registros a CloudWatch, debe especificar el controlador de registros awslogs para los contenedores en la definición de tarea. Esta sección describe la configuración de registros para un contenedor para utilizar el controlador de registro awslogs Para obtener más información, consulte Creación de una definición de tarea.

El JSON de definición de tareas mostrado debajo tiene un objeto logConfiguration especificado para cada contenedor; uno para el contenedor de WordPress que envía registros a un grupo de registros denominado awslogs-wordpress y otro para un contenedor de MySQL que envía los registros a un grupo de registros denominado awslogs-mysql. Ambos contenedores utilizan el prefijo de flujo de registros awslogs-example

{ "containerDefinitions": [ { "name": "wordpress", "links": [ "mysql" ], "image": "wordpress", "essential": true, "portMappings": [ { "containerPort": 80, "hostPort": 80 } ], "logConfiguration": { "logDriver": "awslogs", "options": { "awslogs-group": "awslogs-wordpress", "awslogs-region": "us-west-2", "awslogs-stream-prefix": "awslogs-example" } }, "memory": 500, "cpu": 10 }, { "environment": [ { "name": "MYSQL_ROOT_PASSWORD", "value": "password" } ], "name": "mysql", "image": "mysql", "cpu": 10, "memory": 500, "essential": true, "logConfiguration": { "logDriver": "awslogs", "options": { "awslogs-group": "awslogs-mysql", "awslogs-region": "us-west-2", "awslogs-stream-prefix": "awslogs-example" } } } ], "family": "awslogs-example" }

En la consola de Amazon ECS, la configuración de registros para el contenedor wordpress se especifica tal como se muestra en la imagen siguiente.


					Configuración de registros de la consola

Después de haber registrado una definición de tarea con el controlador de registros awslogs en una configuración de registros de definición de contenedor, puede ejecutar una tarea o crear un servicio con dicha definición de tarea para comenzar a enviar registros a CloudWatch Logs. Para obtener más información, consulte Ejecución de una tarea independiente y Crear un servicio.

Visualización de registros de contenedor de awslogs enCloudWatch Logs

En el caso de tareas que utilizan el tipo de lanzamiento EC2, una vez que el rol de instancia de contenedor tenga los permisos adecuados para enviar registros a CloudWatch Logs, los agentes de contenedor se actualicen como mínimo a la versión 1.9.0 y se haya configurado e iniciado una tarea con contenedores que utilicen el controlador de registros awslogs, los contenedores configurados deberían enviar sus datos de registro a CloudWatch Logs. Puede consultar y buscar estos registros en la consola.

Para ver los datos de CloudWatch Logs de un contenedor desde la consola de Amazon ECS

  1. Abra la consola de Amazon ECS en https://console.aws.amazon.com/ecs/.

  2. En la página Clusters (Clústeres), seleccione el clúster que contiene la tarea que desea ver.

  3. En el clúster: cluster_name, elija Tasks y seleccione la tarea que desea ver.

  4. En la tarea: task_id, expanda la vista de contenedor eligiendo la flecha situada a la izquierda del nombre del contenedor.

  5. En la sección Log Configuration (Configuración de registros), elija View logs in CloudWatch (Ver registros en ), que abre el flujo de registros asociado en la consola de CloudWatch.

    
							Vista de definición de tareas de la configuración de registros

Para ver los datos de CloudWatch Logs en la consola de CloudWatch

  1. Abra la consola de CloudWatch en https://console.aws.amazon.com/cloudwatch/.

  2. En el panel de navegación izquierdo, elija Logs (Registros).

  3. Seleccione un grupo de registros que desea ver. Debería ver los grupos de registros que haya creado en Creación de un grupo de registros.

    
							Vista de métricas de la consola de awslogs
  4. Elija el flujo de registros que desea ver.

    
							Vista de métricas de la consola de awslogs