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

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 AWS PCS instances à l'aide d'Amazon CloudWatch

AWSPCSlance EC2 les instances Amazon selon les besoins pour répondre aux exigences de dimensionnement définies dans vos groupes de nœuds de PCS calcul. 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 EBS volumes qui soutiennent l'instance. Pour conserver les métriques ou les données de journalisation des instances lancées PCS après leur résiliation, 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

Trouver des AWS PCS instances

Pour surveiller les instances lancées parPCS, 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éesPCS, 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 PCS les instances.

  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 EC2 de 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 JSON configuration 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 vous l'avez AWS CLI installé, créez un fichier CloudWatch de configuration nommé config.json avec le contenu ci-dessous. Vous pouvez également utiliser ce qui suit URL 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 d'opérations PCS spécifiques 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'authentificationSSH, tels que 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 PCS calcul. 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 SSM paramètre dans Amazon Systems Manager Parameter Store.

Téléchargement vers un compartiment S3

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

  • Remplacez DOC-EXAMPLE-BUCKET avec 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://DOC-EXAMPLE-BUCKET

Ensuite, chargez le fichier dans le compartiment.

aws s3 cp ./config.json s3://DOC-EXAMPLE-BUCKET/

Stocker en tant que SSM paramètre

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

  • Remplacez region-code avec la AWS région avec laquelle vous travaillez AWSPCS.

  • (Facultatif) Remplacer AmazonCloudWatch-PCS avec 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 SSM paramètre 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 ouSSM.

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 :

  • DOC-EXAMPLE-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://DOC-EXAMPLE-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'IAMinstance du groupe de nœuds doit avoir accès au bucket. Voici un exemple de IAM politique pour le bucket dans le script de données utilisateur ci-dessus.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::DOC-EXAMPLE-BUCKET", "arn:aws:s3:::DOC-EXAMPLE-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 VPC points de terminaison, 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 SSM paramètre et lance l' CloudWatch agent avec celui-ci. Remplacez les valeurs suivantes dans ce script par vos propres informations :

  • (Facultatif) Remplacer AmazonCloudWatch-PCS avec 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'IAMinstance du 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 SSM paramètre dans le profil d'instance de votre groupe de nœuds. Voici un exemple de IAM politique qui illustre cela pour le préfixe DOC-EXAMPLE-PREFIX.

{ "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 les points de CloudWatch terminaison SSM et. Cela peut être réalisé à l'aide de groupes de sécurité ou de VPC points de terminaison, en fonction de l'architecture de votre cluster.