Comment utiliser les journaux de l'agent SSM pour résoudre les problèmes liés à l'agent SSM dans mon instance gérée ?

Dernière mise à jour: 2021-06-08

L'agent AWS Systems Manager Agent (agent SSM) ne parvient pas à s'exécuter correctement, mais je ne sais pas comment résoudre le problème à l'aide des journaux de l'agent SSM. Comment accéder et interpréter les messages du journal de l'agent SSM ?

Brève description

L'agent SSM s'exécute sur votre instance gérée Amazon Elastic Compute Cloud (Amazon EC2) et traite les requêtes provenant du service AWS Systems Manager. Pour utiliser l'agent SSM, les conditions suivantes doivent être remplies :

  • L'agent SSM doit se connecter aux points de terminaison de service requis.
  • L'agent SSM requiert des autorisations AWS Identity and Access Management (IAM) pour appeler les appels de l'API Systems Manager.

L'agent SSM ne parvient pas à s'exécuter correctement si l'une de ces conditions n'est pas remplie.

Pour identifier la cause racine de l'échec de l'agent SSM, consultez les journaux de l'agent SSM aux emplacements suivants :

Linux

/var/log/amazon/ssm/amazon-ssm-agent.log
/var/log/amazon/ssm/errors.log

Windows

%PROGRAMDATA%\Amazon\SSM\Logs\amazon-ssm-agent.log
%PROGRAMDATA%\Amazon\SSM\Logs\errors.log

Remarque : Il est recommandé de configurer les mises à jour automatisées de l'agent SSM étant donné que ce dernier est mis à jour fréquemment avec de nouvelles fonctionnalités.

Solution

Après avoir examiné les journaux et identifié si le problème de l'agent SSM est causé par des connexions de point de terminaison manquantes ou des autorisations manquantes, procédez comme suit :

L'agent SSM ne peut pas communiquer avec les points de terminaison requis

L'agent SSM ne peut pas atteindre le service de métadonnées

L'agent SSM ne parvient pas à localiser les informations sur la région, le rôle IAM et l'ID d'instance à partir du service de métadonnées d'instance étant donné que l'agent SSM ne peut pas atteindre le service de métadonnées.

Lorsque l'agent SSM ne parvient pas à atteindre les points de terminaison du service de métadonnées, un message d'erreur semblable au suivant s'affiche dans les journaux de l'agent SSM :

INFO- Impossible de récupérer l'ID d'instance. Les données du coffre sont vides. RequestError: send request failed caused by: Get http://169.254.169.254/latest/meta-data/instance-id

La raison la plus fréquente de cette erreur est l'utilisation d'un proxy pour établir des connexions Internet sortantes à partir de votre instance sans configurer l'agent SSM pour utiliser un proxy. Assurez-vous de configurer l'agent SSM pour utiliser un proxy.

Sur les instances Windows, l'erreur peut également être causée par une route réseau persistante mal configurée lorsque vous utilisez une AMI personnalisée pour lancer votre instance. Vous devez vérifier que la route de cet IP du service de métadonnées pointe vers la bonne passerelle par défaut.

L'agent SSM ne parvient pas à atteindre les points de terminaison du service Systems Manager

L'agent SSM doit établir une connexion sortante avec les appels d'API du service Systems Manager suivants sur le port 443. L'agent SSM échoue si la connexion n'est pas établie.

  • Point de terminaison SSM : ssm.REGION.amazonaws.com
  • Point de terminaison de messagerie EC2 : ec2messages.REGION.amazonaws.com
  • Point de terminaison de messagerie SSM : ssmmessages.REGION.amazonaws.com

Remarque : l'agent SSM utilise les informations sur la région récupérées par le service de métadonnées d'instance pour remplacer la valeur REGION dans les points de terminaison ci-dessus.

Lorsque l'agent SSM ne parvient pas à se connecter aux points de terminaison de Systems Manager, des messages d'erreur similaires aux suivants s'affichent dans les journaux de l'agent SSM :

ERROR [HealthCheck] error when calling AWS APIs. error details - RequestError: send request failed caused by: Post https://ssm.ap-southeast-2.amazonaws.com/: dial tcp 172.31.24.65:443: i/o timeout
DEBUG [MessagingDeliveryService] RequestError: send request failed
caused by: Post https://ec2messages.ap-southeast-2.amazonaws.com/: net/http: request cancelled while waiting for connection (Client.Timeout exceeded while awaiting headers)

Voici quelques raisons courantes pour lesquelles l'agent SSM ne parvient pas à se connecter aux points de terminaison de l'API Systems Manager sur le port 443 :

  • Les règles des groupes de sécurité de la sortie des instances n'autorisent pas les connexions sortantes sur le port 443.
  • Les règles des groupes de sécurité du trafic entrant et sortant des terminaux Virtual Private Cloud (VPC) n'autorisent pas les connexions entrantes et sortantes au point de terminaison de l'interface VPC sur le port 443.
  • Les règles des tables de routage ne sont pas configurées pour diriger le trafic à l'aide d'une passerelle Internet lorsque l'instance vit dans un sous-réseau public.
  • Les règles des tables de routage ne sont pas configurées pour diriger le trafic à l'aide d'une passerelle NAT ou d'un point de terminaison VPC lorsque l'instance vit dans un sous-réseau privé.
  • L'agent SSM n'est pas configuré pour utiliser le proxy si les règles des tables de routage sont configurées pour utiliser le proxy pour toutes les connexions sortantes.

L'agent SSM n'a pas les autorisations nécessaires pour appeler les appels d'API System Manager requis

L'agent SSM n'a pas pu s'enregistrer comme étant en ligne sur Systems Manager car l'agent SSM n'est pas autorisé à effectuer des appels d'API UpdateInstanceInformation vers le service.

L'appel d'API UpdateInstanceInformation est requis pour maintenir une connexion avec l'agent SSM afin que le service sache que l'agent SSM fonctionne comme prévu. L'agent SSM appelle le service Systems Manager dans le cloud toutes les cinq minutes pour fournir des informations sur la vérification de l'état.

Si l'agent SSM ne dispose pas des autorisations IAM appropriées, un message d'erreur similaire au suivant s'affiche dans les journaux de l'agent SSM.

Si l'agent SSM utilise des autorisations IAM inappropriées :

ERROR [instanceID=i-XXXXX] [HealthCheck] error when calling AWS APIs. error details - AccessDeniedException: User: arn:aws:sts::XXX:assumed-role/XXX /i-XXXXXX is not authorized to perform: ssm:UpdateInstanceInformation on resource: arn:aws:ec2:ap-southeast-2:XXXXXXX:instance/i-XXXXXX
status code: 400, request id: XXXXXXXX-XXXX-XXXXXXX
INFO [instanceID=i-XXXX] [HealthCheck] increasing error count by 1

Si l'agent SSM n'a aucune autorisation IAM :

ERROR [instanceID=i-XXXXXXX] [HealthCheck] error when calling AWS APIs. error details - NoCredentialProviders: no valid providers in chain. Obsolète. Pour la messagerie verbeuse, voir aws.Config.CredentialsChainVerboseErrors
2018-05-08 10:58:39 INFO [instanceID=i-XXXXXXX] [HealthCheck] increasing error count by 1

Vérifiez que le rôle IAM attaché à l'instance contient les autorisations requises pour permettre à une instance d'utiliser les fonctionnalités de base de service Systems Manager. Ou, si un rôle de profil d'instance n'est pas déjà attaché, attachez un rôle de profil d'instance et incluez les autorisations AmazonSSMManagedInstanceCore.

Pour plus d'informations sur les autorisations IAM requises pour Systems Manager, consultez À propos des stratégies pour un profil d'instance Systems Manager.

Limitation des appels d'API pour Systems Manager

Les appels d'API peuvent être limités si un volume élevé d'instances gérées exécutant l'agent SSM effectue des appels simultanés de l'API UpdateInstanceInformation.

Si l'appel d'API UpdateInstanceInformation de votre instance est limité, des messages d'erreur similaires au suivant s'affichent dans les journaux de l'agent SSM :

INFO [HealthCheck] HealthCheck reporting agent health.
ERROR [HealthCheck] error when calling AWS APIs. error details - ThrottlingException: Rate exceeded
status code: 400, request id: XXXXX-XXXXX-XXXX
INFO [HealthCheck] increasing error count by 1

Essayez les étapes de dépannage suivantes pour éviter les erreurs ThrottlingException :

  • Réduisez la fréquence des appels d'API.
  • Implémentez de nouvelles tentatives après erreur et des interruptions exponentielles lorsque vous effectuez des appels d'API.
  • Échelonnez les intervalles des appels d'API pour qu'ils ne s'exécutent pas tous simultanément.
  • Demandez une augmentation des limites pour les appels d'API UpdateInstanceInformation.

Cet article vous a-t-il été utile ?


Besoin d'aide pour une question technique ou de facturation ?