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 :
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) ?