Quiero usar Amazon CloudWatch para supervisar los registros de contenedores de Amazon Elastic Container Service (Amazon ECS).
Solución
Nota: Si se muestran errores al ejecutar comandos de la Interfaz de la línea de comandos de AWS (AWS CLI), consulta Solución de problemas de AWS CLI. Además, asegúrate de utilizar la versión más reciente de la AWS CLI.
Configuración del controlador de registro
Puedes usar la consola de Amazon ECS o el editor JSON para configurar el controlador de registro.
Uso de la consola de Amazon ECS
Sigue estos pasos:
- Abre la consola de Amazon ECS.
- En el panel de navegación, elige Definiciones de tareas y, a continuación, Create new task definition (Crear una nueva definición de tarea).
**Nota:**Para actualizar una definición de tarea existente, selecciona la definición de tarea y, a continuación, elige Crear una nueva revisión.
- En la página Create new task definition (Crear una nueva definición de tarea), en la sección Task definition configuration (Configuración de la definición de la tarea), introduce el nombre de la familia de definiciones de la tarea.
- En la sección Infrastructure requirements (Requisitos de infraestructura), elige el tipo de lanzamiento.
- En la sección Contenedor, en Registro, elige Use log collection (Usar recopilación de registros).
- En las siguientes claves, mantén los valores predeterminados. Si el campo está vacío, introduce un valor:
awslogs-group
awslogs-region
awslogs-stream-prefix
Nota: Si el grupo de registro no existe, define el parámetro awslogs-create-group en True.
- Asegúrate de que los permisos del rol de AWS Identity and Access Management (IAM) de ejecución de la tarea incluyan la acción CreateLogGroup.
- Selecciona Crear.
Uso del editor de JSON
Para definir el parámetro logConfiguration en la definición de tareas de ECS, introduce la plantilla de definición de tareas de ECS en el editor de JSON de la consola.
Configuración del ejemplo:
"logConfiguration":
"logDriver": "awslogs",
"options": {
"awslogs-group": "/ecs/my-log-group",
"awslogs-region": "region-code",
"awslogs-stream-prefix": "ecs"
}
}
Nota: Sustituye my-log-group por el nombre de tu grupo de registro.
Para obtener más información, consulta Definición de tareas de Amazon ECS: enrutar registros a CloudWatch y Envío de registros de Amazon ECS a CloudWatch.
Para obtener más información sobre las opciones de registro, consulta Amazon CloudWatch Logs options (Opciones de Registros de Amazon CloudWatch) en el sitio web de Docker.
Supervisión y solución de problemas de los registros de contenedores
Análisis de los registros del contenedor
Para usar Información de registros de CloudWatch para consultar los registros, sigue estos pasos:
-
Abre la consola de CloudWatch.
-
En el panel de navegación, elige Registros.
-
Elige Logs Insights (Información de registros).
-
Selecciona tu grupo de registro.
-
Introduce tu consulta.
-
Selecciona Ejecutar consulta.
-
Busca palabras clave de error para solucionar problemas de la aplicación. Si los registros de la aplicación incluyen tiempos de respuesta, analiza las solicitudes lentas.
Consultas de ejemplo:
fields @timestamp, @message
| filter @message like /error/
| sort @timestamp desc
fields @timestamp, @message, response_time
| filter response_time > 2000
| sort response_time desc
Para obtener más información, consulte Analyzing log data with CloudWatch Logs Insights (Análisis de datos de registro con Información de registros de CloudWatch).
Creación de alertas
Sigue estos pasos:
- Crea filtros de métricas a partir de eventos de registro.
- Crea una alarma de CloudWatch.
Solución de errores
Para solucionar los errores OutOfMemory o ConnectionTimeout, consulta ¿Cómo soluciono los problemas de utilización elevada de la CPU en una tarea de Amazon ECS en Fargate?
Para solucionar problemas relacionados con un gran volumen de códigos de estado HTTP 5xx, consulta HTTP 500: Internal server error (HTTP 500: Error interno del servidor).
Integración con los servicios de AWS
Utiliza las suscripciones para acceder a una fuente en tiempo real de los eventos de registro de Registros de CloudWatch. CloudWatch entrega eventos de registro a servicios como una secuencia de Amazon Kinesis o AWS Lambda para procesarlos, analizarlos o cargarlos en otros sistemas.
Control de los costes de Registros de CloudWatch
Modificación de las políticas de retención
Se recomienda utilizar periodos de retención más cortos para los entornos de desarrollo y retener los registros durante más tiempo para los entornos de producción.
Puedes elegir un periodo de retención que oscile entre 1 día y 10 años o conservar los registros de forma indefinida. Para evitar costes innecesarios, revisa la configuración de retención para asegurarte de que no guardas los registros más tiempo del necesario.
Para establecer políticas de retención, sigue estos pasos:
- Abre la consola de CloudWatch.
- En el panel de navegación, elige Registros.
- Elige Grupos de registro.
- Selecciona tu grupo de registro.
- Selecciona Acciones y, a continuación, selecciona Editar configuración de retención.
- Selecciona un periodo de retención. Por ejemplo, elige 1 semana, 1 mes o un valor personalizado.
- Selecciona Guardar.
También puedes ejecutar el siguiente comando put-retention-policy de la AWS CLI:
aws logs put-retention-policy --log-group-name "/ecs/production-web-app" --retention-in-days retention-period>
Nota: Sustituye log-group-name por el nombre de tu grupo de registro y retention-period por el periodo de retención.
**Análisis de las métricas de registro **
Para reducir y optimizar los costes, utiliza el Explorador de costes de AWS para analizar los costes asociados a cada grupo de registro.
Exportación y archivado de registros
Para un almacenamiento a largo plazo a un coste menor, traslada los registros a Amazon Simple Storage Service (Amazon S3) o a una solución de archivado. Para exportar registros a Amazon S3, utiliza la consola de CloudWatch o ejecuta el comando create-export-task:
aws logs create-export-task --log-group-name "/ecs/production-web-app" \--from start-timestamp --to end-timestamp --destination "s3-log-archive"
Nota: Sustituye log-group-name por el nombre del grupo de registro, start-timestamp por la hora de inicio y end-timestamp por la hora de finalización.
Implementación de políticas de ciclo de vida de Amazon S3
Utiliza las configuraciones de ciclo de vida de S3 para transferir automáticamente los registros más antiguos a Amazon S3 Glacier para archivarlos o eliminarlos después de un tiempo específico.
Evitar el registro excesivo
Configura la aplicación para enviar solo los registros relevantes. Para obtener más información, consulta Logging best practices (Prácticas recomendadas de registro).
Información relacionada
Registro y monitoreo en Amazon Elastic Container Service