AWS PCSInstances mithilfe von Amazon überwachen CloudWatch - AWS PCS

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

AWS PCSInstances mithilfe von Amazon überwachen CloudWatch

AWSPCSstartet EC2 Amazon-Instances nach Bedarf, um die in Ihren PCS Rechenknotengruppen definierten Skalierungsanforderungen zu erfüllen. Sie können diese Instances mit Amazon überwachen, während sie ausgeführt werden CloudWatch. Sie können die Protokolle laufender Instances einsehen, indem Sie sich bei ihnen anmelden und interaktive Befehlszeilentools verwenden. Standardmäßig werden CloudWatch Metrikdaten jedoch nur für einen begrenzten Zeitraum aufbewahrt, sobald eine Instance beendet wurde. Instance-Logs werden in der Regel zusammen mit den EBS Volumes gelöscht, die die Instance unterstützen. Um Metriken oder Protokolldaten der Instances beizubehalten, die PCS nach deren Beendigung gestartet wurden, können Sie den CloudWatch Agenten auf Ihren Instances mit einer EC2 Startvorlage konfigurieren. Dieses Thema bietet einen Überblick über die Überwachung laufender Instances und enthält Beispiele für die Konfiguration persistenter Instance-Metriken und Logs.

Überwachung laufender Instanzen

AWSPCSInstanzen finden

Um Instances zu überwachen, die von gestartet wurdenPCS, suchen Sie nach den laufenden Instances, die einem Cluster oder einer Compute-Knotengruppe zugeordnet sind. Überprüfen Sie dann in der EC2 Konsole für eine bestimmte Instanz die Abschnitte Status und Alarme sowie Überwachung. Wenn der Anmeldezugriff für diese Instances konfiguriert ist, können Sie eine Verbindung zu ihnen herstellen und verschiedene Protokolldateien auf den Instances einsehen. Weitere Informationen zur Identifizierung der Instanzen, von denen verwaltet wirdPCS, finden Sie unterSuchen nach Instanzen der Compute-Knotengruppe in AWS PCS.

Aktivierung detaillierter Metriken

Standardmäßig werden Instanzmetriken in Intervallen von 5 Minuten erfasst. Um Metriken in Intervallen von einer Minute zu erfassen, aktivieren Sie die detaillierte CloudWatch Überwachung in Ihrer Vorlage für den Start von Compute-Knotengruppen. Weitere Informationen finden Sie unter Aktivieren Sie die detaillierte CloudWatch Überwachung.

Konfiguration persistenter Instanzmetriken und -protokolle

Sie können die Metriken und Protokolle Ihrer Instances behalten, indem Sie den CloudWatch Amazon-Agenten auf ihnen installieren und konfigurieren. Dies besteht aus drei Hauptschritten:

  1. Erstellen Sie eine CloudWatch Agentenkonfiguration.

  2. Speichern Sie die Konfiguration dort, wo sie von PCS Instanzen abgerufen werden kann.

  3. Schreiben Sie eine EC2 Startvorlage, die die CloudWatch Agentsoftware installiert, Ihre Konfiguration abruft und den CloudWatch Agenten anhand der Konfiguration startet.

Weitere Informationen finden Sie unter Erfassung von Metriken, Protokollen und Traces mit dem CloudWatch Agenten im CloudWatch Amazon-Benutzerhandbuch undVerwenden von EC2 Amazon-Startvorlagen mit AWS PCS.

Erstellen Sie eine CloudWatch Agentenkonfiguration

Bevor Sie den CloudWatch Agenten auf Ihren Instances bereitstellen, müssen Sie eine JSON Konfigurationsdatei generieren, die die zu erfassenden Metriken, Logs und Traces spezifiziert. Konfigurationsdateien können mit einem Assistenten oder manuell mit einem Texteditor erstellt werden. Die Konfigurationsdatei wird für diese Demonstration manuell erstellt.

Erstellen Sie auf einem Computer, auf dem Sie die AWS CLI installiert haben, eine CloudWatch Konfigurationsdatei namens config.json mit dem folgenden Inhalt. Sie können auch Folgendes verwendenURL, um eine Kopie der Datei herunterzuladen.

https://aws-hpc-recipes.s3.amazonaws.com/main/recipes/pcs/cloudwatch/assets/config.json
Hinweise
  • Die Protokollpfade in der Beispieldatei beziehen sich auf Amazon Linux 2. Wenn Ihre Instances ein anderes Basisbetriebssystem verwenden, ändern Sie die Pfade entsprechend.

  • Um andere Logs zu erfassen, fügen Sie weitere Einträge unter hinzucollect_list.

  • Bei den Werten in {brackets} handelt es sich um Vorlagenvariablen. Die vollständige Liste der unterstützten Variablen finden Sie unter Manuelles Erstellen oder Bearbeiten der CloudWatch Agentenkonfigurationsdatei im CloudWatch Amazon-Benutzerhandbuch.

  • Sie können wählen, metrics ob Sie diese Informationstypen weglassen logs oder nicht sammeln möchten.

{ "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 } } } }

Diese Datei weist den CloudWatch Agenten an, mehrere Dateien zu überwachen, was bei der Diagnose von Fehlern bei Instance-Bootstrapping, Authentifizierung und Anmeldung sowie bei anderen Problembehandlungsdomänen hilfreich sein kann. Dazu zählen:

  • /var/log/cloud-init.log— Ausgabe aus der Anfangsphase der Instanzkonfiguration

  • /var/log/cloud-init-output.log— Ausgabe von Befehlen, die während der Instanzkonfiguration ausgeführt werden

  • /var/log/amazon/pcs/bootstrap.log— Ausgabe von PCS -spezifischen Vorgängen, die während der Instanzkonfiguration ausgeführt werden

  • /var/log/slurmd.log— Ausgabe vom Daemon slurmd des Slurm-Workload-Managers

  • /var/log/messages— Systemnachrichten vom Kernel, von Systemdiensten und Anwendungen

  • /var/log/secure— Protokolle im Zusammenhang mit Authentifizierungsversuchen wie SSH Sudo und anderen Sicherheitsereignissen

Die Protokolldateien werden an eine CloudWatch Protokollgruppe mit dem Namen /PCSLogs/instances gesendet. Die Protokollstreams sind eine Kombination aus der Instanz-ID und dem Basisnamen der Protokolldatei. Die Protokollgruppe hat eine Aufbewahrungszeit von 30 Tagen.

Darüber hinaus weist die Datei den CloudWatch Agenten an, mehrere allgemeine Messwerte zu sammeln und sie nach Instanz-ID zu aggregieren.

Speichern Sie die Konfiguration

Die CloudWatch Agenten-Konfigurationsdatei muss an einem Ort gespeichert werden, auf den PCS Rechenknoteninstanzen zugegriffen werden kann. Es gibt zwei gängige Methoden, dies zu tun. Sie können es in einen Amazon S3 S3-Bucket hochladen, auf den Ihre Compute-Knotengruppen-Instances über ihr Instance-Profil Zugriff haben. Alternativ können Sie es als SSM Parameter im Amazon Systems Manager Parameter Store speichern.

Laden Sie es in einen S3-Bucket hoch

Verwenden Sie die folgenden AWS CLI Befehle, um Ihre Datei in S3 zu speichern. Bevor Sie den Befehl ausführen, nehmen Sie folgende Ersetzungen vor:

  • Ersetzen DOC-EXAMPLE-BUCKET mit Ihrem eigenen S3-Bucket-Namen

Erstellen Sie zunächst (dies ist optional, wenn Sie über einen vorhandenen Bucket verfügen) einen Bucket, der Ihre Konfigurationsdatei (en) enthält.

aws s3 mb s3://DOC-EXAMPLE-BUCKET

Laden Sie als Nächstes die Datei in den Bucket hoch.

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

Als SSM Parameter speichern

Verwenden Sie den folgenden Befehl, um Ihre Datei als SSM Parameter zu speichern. Nehmen Sie vor der Ausführung des Befehls die folgenden Ersetzungen vor:

  • Ersetzen region-code mit der AWS Region, in der Sie arbeiten AWSPCS.

  • (Optional) Ersetzen AmazonCloudWatch-PCS durch Ihren eigenen Namen für den Parameter. Beachten Sie, dass Sie, wenn Sie das Präfix des Namens von AmazonCloudWatch- ändern, ausdrücklich Lesezugriff auf den SSM Parameter in Ihrem Knotengruppen-Instanzprofil hinzufügen müssen.

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

Schreiben Sie eine EC2 Startvorlage

Die spezifischen Details für die Startvorlage hängen davon ab, ob Ihre Konfigurationsdatei in S3 gespeichert ist oderSSM.

Verwenden Sie eine in S3 gespeicherte Konfiguration

Dieses Skript installiert den CloudWatch Agenten, importiert eine Konfigurationsdatei aus einem S3-Bucket und startet den CloudWatch Agenten damit. Ersetzen Sie die folgenden Werte in diesem Skript durch Ihre eigenen Details:

  • DOC-EXAMPLE-BUCKET — Der Name eines S3-Buckets, aus dem Ihr Konto lesen kann

  • /config.json — Pfad relativ zum S3-Bucket-Root, in dem die Konfiguration gespeichert ist

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==--

Das IAM Instanzprofil für die Knotengruppe muss Zugriff auf den Bucket haben. Hier ist eine IAM Beispielrichtlinie für den Bucket im obigen Benutzerdatenskript.

{ "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/*" ] } ] }

Beachten Sie außerdem, dass die Instances ausgehenden Datenverkehr zum S3 und zu den CloudWatch Endpunkten zulassen müssen. Dies kann je nach Ihrer Cluster-Architektur mithilfe von Sicherheitsgruppen oder VPC Endpunkten erreicht werden.

Verwenden Sie eine Konfiguration, die in gespeichert ist SSM

Dieses Skript installiert den CloudWatch Agenten, importiert eine Konfigurationsdatei aus einem SSM Parameter und startet den CloudWatch Agenten damit. Ersetzen Sie die folgenden Werte in diesem Skript durch Ihre eigenen Daten:

  • (Optional) Ersetzen AmazonCloudWatch-PCS durch Ihren eigenen Namen für den Parameter.

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==--

Der IAM Instanzrichtlinie für die Knotengruppe muss das CloudWatchAgentServerPolicyangehängt sein.

Wenn Ihr Parametername nicht mit beginnt, müssen AmazonCloudWatch- Sie ausdrücklich Lesezugriff auf den SSM Parameter in Ihrem Knotengruppen-Instanzprofil hinzufügen. Hier ist ein Beispiel für eine IAM Richtlinie, die dies für das Präfix veranschaulicht DOC-EXAMPLE-PREFIX.

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

Beachten Sie außerdem, dass die Instances ausgehenden Datenverkehr zu den CloudWatch Endpunkten SSM und zulassen müssen. Dies kann je nach Clusterarchitektur mithilfe von Sicherheitsgruppen oder VPC Endpunkten erreicht werden.