Je souhaite obtenir les journaux AWS Systems Manager Agent (SSM Agent) pour les tâches AWS Fargate pour lesquelles Amazon Elastic Container Service (Amazon ECS) Exec est activé.
Brève description
Prérequis :
Remplir les conditions requises pour utiliser ECS Exec.
Pour obtenir les journaux des agents SSM pour les tâches Fargate pour lesquelles ECS Exec est activé, créez un système de fichiers Amazon Elastic File System (Amazon EFS). Montez ensuite le système de fichiers Amazon EFS sur le conteneur Fargate. Enfin, montez le même système de fichiers sur une instance Amazon Elastic Compute Cloud (Amazon EC2) pour obtenir les journaux de l’agent SSM.
Important : avant de monter le système de fichiers EFS, vous devez lancer une instance Amazon EC2. Votre système de fichiers Amazon EFS, votre cluster Amazon ECS et vos tâches Fargate doivent tous se trouver dans le même Amazon Virtual Private Cloud (Amazon VPC).
Solution
Remarque : la solution suivante concerne uniquement les tâches Fargate pour lesquelles ECS Exec est activé. Suivez les étapes de cette solution uniquement pour le débogage. Pour être sûr de ne pas remplacer vos journaux, lancez la tâche en tant que tâche autonome. Alternativement, vous pouvez maintenir le desiredCount à « 1 » dans votre service Amazon ECS. Vous pouvez également utiliser la solution suivante dans les cas où vous devez vérifier les journaux non stderr/stdout à partir des conteneurs.
Créez votre système de fichiers Amazon EFS et montez-le sur un conteneur Fargate
Voici comment créer votre système de fichiers Amazon EFS et le monter sur un conteneur Fargate dans le cadre d’une tâche ou d’un service :
- Création de votre système de fichiers Amazon EFS.
- Notez l’ID Amazon EFS et l’ID du groupe de sécurité.
- Modifiez les règles de groupe de sécurité de votre système de fichiers pour autoriser les connexions entrantes sur le port 2049 à partir du groupe de sécurité associé à votre tâche Fargate.
- Mettez à jour votre groupe de sécurité Amazon ECS pour autoriser les connexions sortantes sur le port 2049 vers le groupe de sécurité de votre système de fichiers.
- Ouvrez la console Amazon ECS.
- Dans le volet de navigation, choisissez Définitions de tâches, puis choisissez la définition de votre tâche.
- Choisissez Créer une révision.
- Sous Stockage, dans le champ Volumes, choisissez Ajouter un volume. Ensuite, saisissez les informations suivantes :
Dans le champ Nom du volume, entrez le nom de votre volume.
Dans le champ Type de volume, choisissez EFS.
Dans le champ ID du système de fichiers, saisissez l’ID de votre système de fichiers.
- Dans le champ Points de montage du conteneur, choisissez Ajouter un point de montage. Ensuite, saisissez les informations suivantes :
Dans le champ Conteneur, choisissez votre conteneur.
Dans le champ Volume source, choisissez le volume source.
Dans le champ Chemin du conteneur, saisissez /var/log/amazon.
- Choisissez Créer.
Remarque : avant de monter le système de fichiers Amazon EFS sur une instance Amazon EC2, la tâche doit être en cours d’exécution.
Montez le système de fichiers Amazon EFS sur une instance Amazon EC2 et récupérez les journaux de l’agent SSM
Remarque : si des erreurs surviennent lorsque vous exécutez des commandes de l’interface de la ligne de commande AWS (AWS CLI), consultez la page Résoudre les erreurs liées à l’AWS CLI. Vérifiez également que vous utilisez la version la plus récente d’AWS CLI.
Effectuez les opérations suivantes :
-
montez votre système de fichiers sur une instance EC2.
-
Pour obtenir les données du journal, exécutez la commande AWS CLI suivante :
sudo mount -t nfs4 -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport fs-01b0bxxxxxxxx.efs.ap-southeast-1.amazonaws.com:/ /efs
Exemple de sortie :
# df -h
Filesystem Size Used Avail Use% Mounted on
fs-01b0bxxxxxxxx.efs.us-west-2.amazonaws.com:/ 8.0E 0 8.0E 0% /efs
Voici un exemple de journaux stockés sur le chemin /var/log/amazon/ssm/amazon-ssm-agent.log dans le conteneur Fargate :
[root@ip-172-31-32-32 efs]# cd ssm/
[root@ip-172-31-32-32 ssm]# ls
amazon-ssm-agent.log audits
[root@ip-172-31-32-32 ssm]# cat amazon-ssm-agent.log | tail -n 10
2022-10-20 11:50:34 INFO [ssm-agent-worker] [MessageService] [MessageHandler] ended idempotency deletion thread
2022-10-20 11:50:37 INFO [ssm-agent-worker] [MessageService] [MGSInteractor] send failed reply thread started
2022-10-20 11:50:37 INFO [ssm-agent-worker] [MessageService] [MGSInteractor] send failed reply thread done
2022-10-20 11:55:37 INFO [ssm-agent-worker] [MessageService] [MGSInteractor] send failed reply thread started
2022-10-20 11:55:37 INFO [ssm-agent-worker] [MessageService] [MGSInteractor] send failed reply thread done
2022-10-20 12:00:34 INFO [ssm-agent-worker] [MessageService] [MessageHandler] started idempotency deletion thread
2022-10-20 12:00:34 WARN [ssm-agent-worker] [MessageService] [MessageHandler] [Idempotency] encountered error open /var/lib/amazon/ssm/170b15cacf5846ed836bcd7903cbee48-2531612879/idempotency: no such file or directory while listing replies in /var/lib/amazon/ssm/170b15cacf5846ed836bcd7903cbee48-2531612879/idempotency
2022-10-20 12:00:34 INFO [ssm-agent-worker] [MessageService] [MessageHandler] ended idempotency deletion thread
2022-10-20 12:00:37 INFO [ssm-agent-worker] [MessageService] [MGSInteractor] send failed reply thread started
2022-10-20 12:00:37 INFO [ssm-agent-worker] [MessageService] [MGSInteractor] send failed reply thread done
[root@ip-172-31-32-32 ssm]#