Surveillance des instances AWS PCS à l'aide d'Amazon CloudWatch - AWS PC

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Surveillance des instances AWS PCS à l'aide d'Amazon CloudWatch

AWS PCS lance EC2 des instances Amazon selon les besoins pour répondre aux exigences de dimensionnement définies dans vos groupes de nœuds de calcul PCS. Vous pouvez surveiller ces instances lorsqu'elles sont en cours d'exécution à l'aide d'Amazon CloudWatch. Vous pouvez consulter les journaux des instances en cours d'exécution en vous y connectant et en utilisant des outils de ligne de commande interactifs. Toutefois, par défaut, CloudWatch les données des métriques ne sont conservées que pendant une période limitée une fois qu'une instance est résiliée, et les journaux d'instance sont généralement supprimés en même temps que les volumes EBS qui soutiennent l'instance. Pour conserver les métriques ou les données de journalisation des instances lancées par PCS après leur arrêt, vous pouvez configurer l' CloudWatch agent sur vos instances à l'aide d'un modèle de EC2 lancement. Cette rubrique fournit une vue d'ensemble de la surveillance des instances en cours d'exécution et fournit des exemples de configuration des métriques et des journaux d'instance persistants.

Surveillance des instances en cours d'exécution

Recherche d'instances AWS PCS

Pour surveiller les instances lancées par PCS, recherchez les instances en cours d'exécution associées à un cluster ou à un groupe de nœuds de calcul. Ensuite, dans la EC2 console d'une instance donnée, inspectez les sections État, alarmes et surveillance. Si l'accès de connexion est configuré pour ces instances, vous pouvez vous y connecter et inspecter les différents fichiers journaux des instances. Pour plus d'informations sur l'identification des instances gérées par PCS, consultezRecherche d'instances de groupes de nœuds de calcul dans AWS PCS.

Permettre des métriques détaillées

Par défaut, les métriques d'instance sont collectées à intervalles de 5 minutes. Pour collecter des métriques à intervalles d'une minute, activez la CloudWatch surveillance détaillée dans votre modèle de lancement de groupe de nœuds de calcul. Pour de plus amples informations, veuillez consulter Activez la CloudWatch surveillance détaillée.

Configuration des métriques et des journaux d'instance persistants

Vous pouvez conserver les métriques et les journaux de vos instances en installant et en configurant l' CloudWatch agent Amazon sur celles-ci. Cela comprend trois étapes principales :

  1. Créez une configuration d' CloudWatch agent.

  2. Stockez la configuration dans un endroit où elle peut être récupérée par les instances PCS.

  3. Rédigez un modèle de EC2 lancement qui installe le logiciel de l' CloudWatch agent, récupère votre configuration et démarre l' CloudWatch agent à l'aide de cette configuration.

Pour plus d'informations, consultez Collecter des métriques, des journaux et des traces avec l' CloudWatch agent dans le guide de CloudWatch l'utilisateur Amazon, etUtilisation des modèles de EC2 lancement Amazon avec AWS PCS.

Création d'une configuration CloudWatch d'agent

Avant de déployer l' CloudWatch agent sur vos instances, vous devez générer un fichier de configuration JSON qui spécifie les métriques, les journaux et les traces à collecter. Les fichiers de configuration peuvent être créés à l'aide d'un assistant ou manuellement à l'aide d'un éditeur de texte. Le fichier de configuration sera créé manuellement pour cette démonstration.

Sur un ordinateur sur lequel la CLI AWS est installée, créez un fichier CloudWatch de configuration nommé config.json avec le contenu ci-dessous. Vous pouvez également utiliser l'URL suivante pour télécharger une copie du fichier.

https://aws-hpc-recipes.s3.amazonaws.com/main/recipes/pcs/cloudwatch/assets/config.json
Remarques
  • Les chemins de journal figurant dans le fichier d'exemple concernent Amazon Linux 2. Si vos instances doivent utiliser un système d'exploitation de base différent, modifiez les chemins comme il convient.

  • Pour capturer d'autres journaux, ajoutez des entrées supplémentaires souscollect_list.

  • Les valeurs saisies {brackets} sont des variables modélisées. Pour obtenir la liste complète des variables prises en charge, voir Création ou modification manuelle du fichier de configuration de l' CloudWatch agent dans le guide de CloudWatch l'utilisateur Amazon.

  • Vous pouvez choisir d'omettre logs ou metrics de ne pas collecter ces types d'informations.

{ "agent": { "metrics_collection_interval": 60 }, "logs": { "logs_collected": { "files": { "collect_list": [ { "file_path": "/var/log/cloud-init.log", "log_group_class": "STANDARD", "log_group_name": "/PCSLogs/instances", "log_stream_name": "{instance_id}.cloud-init.log", "retention_in_days": 30 }, { "file_path": "/var/log/cloud-init-output.log", "log_group_class": "STANDARD", "log_stream_name": "{instance_id}.cloud-init-output.log", "log_group_name": "/PCSLogs/instances", "retention_in_days": 30 }, { "file_path": "/var/log/amazon/pcs/bootstrap.log", "log_group_class": "STANDARD", "log_stream_name": "{instance_id}.bootstrap.log", "log_group_name": "/PCSLogs/instances", "retention_in_days": 30 }, { "file_path": "/var/log/slurmd.log", "log_group_class": "STANDARD", "log_stream_name": "{instance_id}.slurmd.log", "log_group_name": "/PCSLogs/instances", "retention_in_days": 30 }, { "file_path": "/var/log/messages", "log_group_class": "STANDARD", "log_stream_name": "{instance_id}.messages", "log_group_name": "/PCSLogs/instances", "retention_in_days": 30 }, { "file_path": "/var/log/secure", "log_group_class": "STANDARD", "log_stream_name": "{instance_id}.secure", "log_group_name": "/PCSLogs/instances", "retention_in_days": 30 } ] } } }, "metrics": { "aggregation_dimensions": [ [ "InstanceId" ] ], "append_dimensions": { "AutoScalingGroupName": "${aws:AutoScalingGroupName}", "ImageId": "${aws:ImageId}", "InstanceId": "${aws:InstanceId}", "InstanceType": "${aws:InstanceType}" }, "metrics_collected": { "cpu": { "measurement": [ "cpu_usage_idle", "cpu_usage_iowait", "cpu_usage_user", "cpu_usage_system" ], "metrics_collection_interval": 60, "resources": [ "*" ], "totalcpu": false }, "disk": { "measurement": [ "used_percent", "inodes_free" ], "metrics_collection_interval": 60, "resources": [ "*" ] }, "diskio": { "measurement": [ "io_time" ], "metrics_collection_interval": 60, "resources": [ "*" ] }, "mem": { "measurement": [ "mem_used_percent" ], "metrics_collection_interval": 60 }, "swap": { "measurement": [ "swap_used_percent" ], "metrics_collection_interval": 60 } } } }

Ce fichier demande à l' CloudWatch agent de surveiller plusieurs fichiers qui peuvent être utiles pour diagnostiquer les erreurs liées au démarrage des instances, à l'authentification et à la connexion, ainsi que dans d'autres domaines de résolution des problèmes. Il s’agit des licences suivantes :

  • /var/log/cloud-init.log— Résultat de la phase initiale de configuration de l'instance

  • /var/log/cloud-init-output.log— Résultat des commandes exécutées lors de la configuration de l'instance

  • /var/log/amazon/pcs/bootstrap.log— Résultat des opérations spécifiques au PC exécutées lors de la configuration de l'instance

  • /var/log/slurmd.log— Résultat du daemon slurmd du gestionnaire de charge de travail Slurm

  • /var/log/messages— Messages système provenant du noyau, des services système et des applications

  • /var/log/secure— Journaux liés aux tentatives d'authentification, tels que SSH, sudo et autres événements de sécurité

Les fichiers journaux sont envoyés à un groupe de CloudWatch journaux nommé/PCSLogs/instances. Les flux de journaux sont une combinaison de l'ID d'instance et du nom de base du fichier journal. Le groupe de journaux a une durée de conservation de 30 jours.

En outre, le fichier demande à l' CloudWatch agent de collecter plusieurs métriques communes, en les agrégeant par ID d'instance.

Stocker la configuration

Le fichier de configuration de l' CloudWatch agent doit être stocké de manière à être accessible aux instances du nœud de calcul PCS. Il existe deux méthodes courantes pour ce faire. Vous pouvez le télécharger dans un compartiment Amazon S3 auquel les instances de votre groupe de nœuds de calcul auront accès via leur profil d'instance. Vous pouvez également le stocker en tant que paramètre SSM dans Amazon Systems Manager Parameter Store.

Téléchargement vers un compartiment S3

Pour stocker votre fichier dans S3, utilisez les commandes de l'interface de ligne de commande AWS ci-dessous. Avant d'exécuter la commande, effectuez les remplacements suivants :

  • amzn-s3-demo-bucketRemplacez-le par votre propre nom de compartiment S3

Tout d'abord (cela est facultatif si vous avez un bucket existant), créez un bucket pour contenir vos fichiers de configuration.

aws s3 mb s3://amzn-s3-demo-bucket

Ensuite, chargez le fichier dans le compartiment.

aws s3 cp ./config.json s3://amzn-s3-demo-bucket/

Stocker en tant que paramètre SSM

Pour enregistrer votre fichier en tant que paramètre SSM, utilisez la commande ci-dessous. Avant d'exécuter la commande, effectuez les remplacements suivants :

  • Remplacez region-code par la région AWS dans laquelle vous travaillez avec AWS PCS.

  • (Facultatif) AmazonCloudWatch-PCS Remplacez-le par votre propre nom pour le paramètre. Notez que si vous modifiez le préfixe du nom de, AmazonCloudWatch- vous devrez spécifiquement ajouter un accès en lecture au paramètre SSM dans le profil d'instance de votre groupe de nœuds.

aws ssm put-parameter \ --region region-code \ --name "AmazonCloudWatch-PCS" \ --type String \ --value file://config.json

Rédiger un modèle de EC2 lancement

Les détails spécifiques du modèle de lancement varient selon que votre fichier de configuration est stocké dans S3 ou SSM.

Utiliser une configuration stockée dans S3

Ce script installe CloudWatch l'agent, importe un fichier de configuration depuis un compartiment S3 et lance l' CloudWatch agent avec celui-ci. Remplacez les valeurs suivantes dans ce script par vos propres informations :

  • amzn-s3-demo-bucket— Le nom d'un compartiment S3 que votre compte peut lire

  • /config.json— Chemin relatif à la racine du compartiment S3 où la configuration est stockée

MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="==MYBOUNDARY==" --==MYBOUNDARY== Content-Type: text/cloud-config; charset="us-ascii" packages: - amazon-cloudwatch-agent runcmd: - aws s3 cp s3://amzn-s3-demo-bucket/config.json /etc/s3-cw-config.json - /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -s -c file://etc/s3-cw-config.json --==MYBOUNDARY==--

Le profil d'instance IAM du groupe de nœuds doit avoir accès au bucket. Voici un exemple de politique IAM pour le bucket dans le script de données utilisateur ci-dessus.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket", "arn:aws:s3:::amzn-s3-demo-bucket/*" ] } ] }

Notez également que les instances doivent autoriser le trafic sortant vers le S3 et les points de CloudWatch terminaison. Cela peut être réalisé à l'aide de groupes de sécurité ou de points de terminaison VPC, en fonction de l'architecture de votre cluster.

Utiliser une configuration stockée dans SSM

Ce script installe CloudWatch l'agent, importe un fichier de configuration à partir d'un paramètre SSM et lance l' CloudWatch agent avec celui-ci. Remplacez les valeurs suivantes dans ce script par vos propres informations :

  • (Facultatif) AmazonCloudWatch-PCS Remplacez-le par votre propre nom pour le paramètre.

MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="==MYBOUNDARY==" --==MYBOUNDARY== Content-Type: text/cloud-config; charset="us-ascii" packages: - amazon-cloudwatch-agent runcmd: - /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -s -c ssm:AmazonCloudWatch-PCS --==MYBOUNDARY==--

La politique d'instance IAM pour le groupe de nœuds doit être CloudWatchAgentServerPolicyassociée à celle-ci.

Si le nom de votre paramètre ne commence pas par, AmazonCloudWatch- vous devrez spécifiquement ajouter un accès en lecture au paramètre SSM dans le profil d'instance de votre groupe de nœuds. Voici un exemple de politique IAM qui illustre cela pour le préfixeDOC-EXAMPLE-PREFIX.

JSON
{ "Version":"2012-10-17", "Statement" : [ { "Sid" : "CustomCwSsmMParamReadOnly", "Effect" : "Allow", "Action" : [ "ssm:GetParameter" ], "Resource" : "arn:aws:ssm:*:*:parameter/DOC-EXAMPLE-PREFIX*" } ] }

Notez également que les instances doivent autoriser le trafic sortant vers le SSM et CloudWatch les points de terminaison. Cela peut être réalisé à l'aide de groupes de sécurité ou de points de terminaison VPC, en fonction de l'architecture de votre cluster.