Pourquoi mes journaux de conteneurs Amazon ECS ne sont-ils pas transmis à CloudWatch Logs ?

Lecture de 4 minute(s)
0

Je ne trouve pas les journaux de conteneurs de ma tâche Amazon Elastic Container Service (Amazon ECS) dans Amazon CloudWatch Logs.

Brève description

Il se peut que les journaux de conteneurs Amazon ECS ne soient pas transmis à CloudWatch Logs pour l’une des raisons suivantes :

  • Le pilote de journal awslogs n’est pas configuré correctement dans vos définitions de tâches Amazon ECS.
  • Le rôle Gestion des identités et des accès AWS (AWS IAM) ne dispose pas des autorisations requises.
  • Le réseau n’est pas configuré correctement.
  • Le niveau de journalisation du conteneur n’est pas configuré correctement.

Résolution

Le pilote de journal awslogs n’est pas configuré correctement

Pour envoyer les informations du journal des conteneurs à CloudWatch Logs, vous devez configurer correctement les conteneurs dans vos tâches. Lorsque vous définissez les paramètres de votre conteneur, veillez à configurer correctement le paramètre logConfiguration. Si votre définition de tâche Amazon ECS implique plusieurs conteneurs, vous devez configurer ce paramètre pour chaque conteneur. Vous devez également ajouter le pilote de journal awslogs au paramètre logConfiguration dans votre définition de tâche.

Pour les types de lancement Amazon Elastic Compute Cloud (Amazon EC2), effectuez les tâches supplémentaires suivantes :

  • Mettez à jour votre instance de conteneur Amazon ECS vers la version 1.9.0 ou ultérieure de l’agent de conteneur. Pour en savoir plus, consultez la page Mise à jour de l’agent de conteneur Amazon ECS.
  • Pour les instances de conteneur qui n’utilisent pas l’AMI optimisée pour Amazon ECS, spécifiez le pilote de journal awslogs sur l’instance de conteneur. Lorsque vous utilisez la variable d’environnement suivante pour démarrer l’agent, spécifiez le pilote de journal awslogs :
    ECS_AVAILABLE_LOGGING_DRIVERS='["json-file","awslogs"]'

Pour en savoir plus, consultez la page Installation de l’agent de conteneur Amazon ECS.

Le rôle IAM ne dispose pas des autorisations requises

Procédez comme suit :

  • Pour votre rôle IAM sur votre instance de conteneur Amazon ECS, ajoutez les autorisations logs:CreateLogStream et logs:PutLogEvents.
  • Pour le type de lancement AWS Fargate, utilisez le rôle IAM d’exécution des tâches Amazon ECS avec les autorisations logs:CreateLogStream et logs:PutLogEvents. Pour en savoir plus, consultez la page Rôle IAM d’exécution des tâches Amazon ECS.
  • Pour le type de lancement Amazon EC2, vérifiez les points suivants :
    Pour les tâches qui n’utilisent pas le rôle IAM d’exécution des tâches Amazon ECS, accordez les autorisations logs:CreateLogStream et logs:PutLogEvents au rôle IAM de l’instance de conteneur.
    Pour les tâches qui utilisent le rôle IAM d’exécution des tâches Amazon ECS, mettez à jour la valeur du paramètre de l’agent de conteneur ECS_ENABLE_AWSLOGS_EXECUTIONROLE_OVERRIDE sur true.
    Remarque : si vous utilisez l’AMI optimisée pour Amazon ECS avec la version 1.16.0 -1 ou ultérieure du package ecs-init, la valeur par défaut de ce paramètre est true. Sous Windows, la valeur par défaut de ce paramètre est false. Pour en savoir plus, consultez la page Configuration de l’agent de conteneur Amazon ECS.

Le réseau est configuré correctement

Les tâches qui utilisent le pilote de journal awslogs avec un Amazon Virtual Private Cloud (Amazon VPC) sans passerelle Internet doivent créer un point de terminaison CloudWatch Logs. Pour en savoir plus, consultez la page Utilisation de CloudWatch Logs avec les points de terminaison de VPC d’interface.

Le niveau de journalisation du conteneur n’est pas configuré correctement

Le pilote de journal awslogs transmet les journaux de conteneurs correspondant aux flux d’E/S STDOUT et STDERR de Docker à CloudWatch Logs. Mettez à jour votre application pour envoyer les journaux aux flux d’E/S STDOUT et STDERR. Configurez le niveau de journalisation approprié pour votre application lors de la création du conteneur. En fonction de votre application, vous pouvez définir le niveau de journalisation via une variable d’environnement ou un fichier de configuration.

Informations connexes

Outils de surveillance pour Amazon ECS

Comment résoudre les problèmes de journaux de conteneurs manquants pour Amazon ECS ou Amazon Elastic Kubernetes Service (Amazon EKS) ?

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a 10 mois