Saltar al contenido

How do I troubleshoot missing container logs for Amazon ECS or Amazon EKS? (¿Cómo soluciono los registros de contenedores que faltan en Amazon ECS o Amazon EKS?)

4 minutos de lectura
0

No encuentro los registros de contenedores de mi tarea de Amazon Elastic Container Service (Amazon ECS) ni los del pod de Amazon Elastic Kubernetes Service (Amazon EKS).

Descripción corta

Si faltan registros de contenedor para Amazon ECS o Amazon EKS, es posible que haya problemas con la instancia de host. O bien, si la aplicación en contenedores no se escribe en la ubicación correcta, es posible que el daemon de Docker no pueda ver los registros.

A continuación se indican situaciones comunes en las que la aplicación en contenedores no escribe algunos o todos los registros:

  • Ejecute el comando docker logs yourContainerName en una instancia de contenedor en Amazon ECS.
  • Use el controlador de registro awslogs en una tarea en Amazon ECS.
  • Ejecute el comando kubectl logs yourPodName en un clúster de Amazon EKS.

Resolución

Solución de problemas con los registros de sus tareas de Amazon ECS

Confirmación de que la tarea está configurada correctamente

  • Revise la configuración de registros del contenedor que contiene sus registros. El controlador de registros se establece mediante el parámetro logConfiguration en la sección Definición de contenedores de la definición de tareas de ECS. Los controladores de registro se configuran por contenedor. Si su tarea de ECS tiene varias definiciones de contenedor, verifique que la configuración del registro sea correcta en los contenedores que tengan sus registros.
  • Revise la configuración de limpieza de tareas en su instancia de contenedor. El agente de contenedores de Amazon ECS elimina automáticamente los archivos de registro para recuperar espacio libre. Para conservar los archivos de registro durante más tiempo en la instancia de contenedor, reduzca la frecuencia de la limpieza de tareas.

Revisión de sus registros de CloudWatch

Si sus tareas utilizan el controlador de registro awslogs, los registros se transmiten a Registros de Amazon CloudWatch. Estos registros nunca se escriben en la instancia de contenedor. El comando docker logs yourContainerName devuelve el siguiente mensaje de error: "Error response from daemon: configured logging driver does not support reading."

Concesión de los permisos adecuados

Para permitir que los tipos de inicio de Amazon Elastic Compute Cloud (Amazon EC2) se transmitan a Registros de CloudWatch, conceda permisos al rol de IAM de la instancia de contenedor.

Para permitir que los tipos de inicio de AWS Fargate se transmitan a Registros de CloudWatch, conceda permisos al rol de IAM de la tarea que utiliza su tarea.

Si aún faltan registros, complete los pasos de la sección Solución de problemas con el contenedor de la aplicación.

Solución de problemas con los registros de sus pods de Kubernetes en Amazon EKS

Para devolver los archivos de registro generados desde el contenedor de un pod, ejecute el siguiente comando kubectl:

kubectl logs yourPodName

Nota: El elemento kubelet elimina automáticamente los archivos de registro una vez que sale un pod. Para más información, consulte Garbage collection of unused containers and images (Recopilación de elementos no utilizados de contenedores e imágenes sin usar) en el sitio web de Kubernetes. Para conservar estos archivos de registro durante más tiempo en un nodo de trabajo, configure el kubelet para que ejecute la recopilación de elementos no utilizados con menos frecuencia.

Si aún faltan registros, complete los pasos de la sección Solución de problemas con el contenedor de la aplicación.

Solución de problemas con el contenedor de la aplicación

Para solucionar los problemas que tenga con el contenedor de la aplicación, complete las siguientes tareas:

  • Establezca su aplicación en el nivel de registro correcto durante la creación del contenedor.
    Nota: Es posible que su aplicación requiera que configure el registro a través de una variable de entorno o en un archivo de configuración.
  • Establezca la aplicación como PUNTO DE ENTRADA del contenedor. Para más información, consulte ENTRYPOINT en el sitio web de Docker Docs.
    Nota: El elemento ENTRYPOINT de su archivo de Docker es el proceso en el que se transmiten los flujos STDOUT y STDERR I/O. Para más información, vea Consulta de los registros de contenedores en el sitio web de Docker Docs.
  • Cree su contenedor con los archivos del registro de aplicaciones vinculados a STDOUT y STDERR. O bien, configure la aplicación para iniciar sesión directamente en /proc/1/fd/1 (stdout) y /proc/1/fd/2 (stderr). Por ejemplo, consulte las imágenes de contenedor oficiales de nginx y httpd en el sitio web de Docker Hub.
    Nota: Si el caso práctico lo permite, establezca el proceso de la aplicación como el proceso principal del contenedor. Si el contenedor usa un script de shell como ENTRYPOINT, configure el script para iniciar los datos del contenedor en la versión ejecutable.
OFICIAL DE AWSActualizada hace 2 años