Help us improve the AWS re:Post Knowledge Center by sharing your feedback in a brief survey. Your input can influence how we create and update our content to better support your AWS journey.
Warum überträgt der vereinheitlichte CloudWatch-Agent meine Metriken oder Protokollereignisse nicht an CloudWatch?
Ich habe den vereinheitlichten Amazon CloudWatch-Agent auf meiner Amazon Elastic Compute Cloud (Amazon EC2)-Instance so konfiguriert, dass Metriken und Protokolle an Amazon CloudWatch gesendet werden. Ich kann meine Metriken oder Protokollereignisse jedoch nicht in der CloudWatch-Konsole sehen.
Kurzbeschreibung
Der vereinheitlichte CloudWatch-Agent überträgt möglicherweise keine Metriken oder Protokolle an CloudWatch mithilfe von Push, wenn es Konnektivitäts- oder Berechtigungsprobleme gibt. Wenn du die vereinheitlichten CloudWatch-Agent-Protokolle überprüfst, kann einer der folgenden Fehler auftreten:
- Agentenprotokollfehler: Keine Konnektivität zum Endpunkt
- Agentenprotokollfehler: Unzureichende Berechtigungen
Lösung
Gehe wie folgt vor, um Probleme mit dem vereinheitlichten CloudWatch-Agent zu beheben:
Hinweis: Wenn du beim Ausführen von AWS Command Line Interface (AWS CLI)-Befehlen Fehlermeldungen erhältst, findest du weitere Informationen dazu unter Problembehandlung bei AWS CLI-Fehlern. Stelle außerdem sicher, dass du die neueste Version der AWS CLI verwendest.
Überprüfen der vereinheitlichten CloudWatch-Agent-Protokolle
Du kannst die Agent-Protokolldatei verwenden, um Probleme zu beheben, die mit dem vereinheitlichten CloudWatch-Agent-Paket auftreten.
Möglicherweise tritt eines der folgenden Probleme auf:
- Du kannst keine Verbindung zu den erforderlichen AWS-Serviceendpunkten oder Amazon Virtual Private Cloud (Amazon VPC)-Endpunkten herstellen. Weitere Informationen findest du unter Arbeiten mit VPC-Endpunkten.
- Du hast nicht die richtigen Berechtigungen, um Support-API-Aufrufe an CloudWatch zu tätigen. Weitere Informationen findest du unter CloudWatch-API-Operationen und erforderliche Berechtigungen für Aktionen.
Möglicherweise wird einer dieser Fehler in den folgenden Protokollen angezeigt.
Agentenprotokollfehler: Keine Konnektivität zum Endpunkt
2021-08-30T04:07:46Z E! cloudwatch: code: RequestError, message: send request failed, original error: Post "https://monitoring.us-east-1.amazonaws.com/": dial tcp 172.31.11.121:443: i/o timeout 2021-08-30T04:07:46Z W! 210 retries, going to sleep 1m0s before retrying. 2021-08-30T04:07:46Z E! cloudwatch: code: RequestError, message: send request failed, original error: Post "https://monitoring.us-east-1.amazonaws.com/": dial tcp 172.31.11.121:443: i/o timeout 2021-08-30T04:07:46Z W! 211 retries, going to sleep 1m0s before retrying.
Agentenprotokollfehler: Ungenügende Berechtigungen
2021-08-30T02:15:45Z E! cloudwatch: code: AccessDenied, message: User: arn:aws:sts::123456789012:assumed-role/cwagent/i-0744de7c842d2c2ba is not authorized to perform: cloudwatch:PutMetricData, original error: 2021-08-30T02:15:45Z W! 1 retries, going to sleep 400ms before retrying. 2021-08-30T02:15:46Z E! WriteToCloudWatch failure, err: AccessDenied: User: arn:aws:sts::123456789012:assumed-role/cwagent/i-0744de7c842d2c2ba is not authorized to perform: cloudwatch:PutMetricData status code: 403, request id: f1171fd0-05b6-4f7d-bac2-629c8594c46e
Bestätige die Konnektivität zu den CloudWatch-Endpunkten
Wenn der Datenverkehr zu CloudWatch nicht über das öffentliche Internet erfolgt, kannst du Amazon VPC-Endpunkte verwenden. Wenn du Amazon VPC-Endpunkte verwendest, überprüfe die folgenden Parameter:
- Wenn du private Nameserver verwendest, stelle sicher, dass die DNS-Auflösung korrekte Antworten geliefert hat.
- Vergewissere dich, dass die CloudWatch-Endpunkte in private IP-Adressen aufgelöst werden.
- Bestätige, dass die Sicherheitsgruppe, die dem Amazon VPC-Endpunkt zugeordnet ist, eingehenden Datenverkehr vom Host zulässt.
Gehe wie folgt vor, um die Konnektivität zu den CloudWatch-Endpunkten zu bestätigen:
-
Führe den folgenden Befehl aus, um die Konnektivität zum Metrikenendpunkt zu überprüfen:
$ telnet monitoring.us-east-1.amazonaws.com 443 Trying 52.46.138.115... Connected to monitoring.amazonaws.com. Escape character is '^]'. ^] telnet> quit Connection closed. -
Führe den folgenden Befehl aus, um die Konnektivität zum Logs-Endpunkt zu überprüfen:
$ telnet logs.us-east-1.amazonaws.com 443 Trying 3.236.94.218... Connected to logs.us-east-1.amazonaws.com. Escape character is '^]'. ^] telnet> quit Connection closed -
Um zu überprüfen, ob der Amazon VPC-Endpunkt in private IP-Adressen aufgelöst wird, führe den folgenden Befehl aus:
$ dig monitoring.us-east-1.amazonaws.com +short172.31.11.121 172.31.0.13
Überprüfe die einheitliche CloudWatch-Agent-Konfiguration
Die CloudWatch-Agent-Konfigurationsdatei beschreibt die Metriken und Protokolle, die auf CloudWatch veröffentlicht werden. Überprüfe die Agent-Konfigurationsdatei, um sicherzustellen, dass die Protokolle und Metriken, die du veröffentlichen möchtest, enthalten sind.
Vergewissere dich, dass der Host berechtigt ist, Metriken und Logs zu veröffentlichen
Die von AWS verwalteten Richtlinien CloudWatchAgentServerPolicy und CloudWatchAgentAdminPolicy können dir bei der Bereitstellung des einheitlichen CloudWatch-Agenten helfen. Mithilfe der Richtlinien kannst du auch überprüfen, ob du über die richtigen Berechtigungen verfügst. Verwende diese Richtlinien als Referenz, um sicherzustellen, dass dein Gastgeber über die richtigen Berechtigungen verfügt.
Die AWS-CLI-Ausgaben in diesen Beispielen zeigen unzureichende Berechtigungen.
Der folgende AWS CLI config-Befehl zeigt, dass die der EC2-Instance zugeordnete AWS Identity and Access Management (IAM, identitäts- und Zugriffsmanagement)-Rolle Folgendes fehlt:
$ /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -c ssm:CWT-Web-Server -s ****** processing amazon-cloudwatch-agent ****** /opt/aws/amazon-cloudwatch-agent/bin/config-downloader --output-dir /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.d --download-source ssm:CWT-Web-Server --mode ec2 --config /opt/aws/amazon-cloudwatch-agent/etc/common-config.toml --multi-config default Region: us-east-1 credsConfig: map[] Error in retrieving parameter store content: NoCredentialProviders: no valid providers in chain. Deprecated. For verbose messaging see aws.Config.CredentialsChainVerboseErrors Fail to fetch/remove json config: NoCredentialProviders: no valid providers in chain. Deprecated. For verbose messaging see aws.Config.CredentialsChainVerboseErrors Fail to fetch the config!
Der folgende AWS CLI config-Befehl zeigt, dass die falsche IAM-Rolle an die EC2-Instance angefügt ist:
$ /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -c ssm:CWT-Web-Server -s ****** processing amazon-cloudwatch-agent ****** /opt/aws/amazon-cloudwatch-agent/bin/config-downloader --output-dir /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.d --download-source ssm:CWT-Web-Server --mode ec2 --config /opt/aws/amazon-cloudwatch-agent/etc/common-config.toml --multi-config default Region: us-east-1 credsConfig: map[] Error in retrieving parameter store content: AccessDeniedException: User: arn:aws:sts::123456789012:assumed-role/cwagent/i-0744de7c842d2c2ba is not authorized to perform: ssm:GetParameter on resource: arn:aws:ssm:us-east-1:123456789012:parameter/CWT-Web-Server status code: 400, request id: b85b0a7a-0fb1-47b4-924f-be8cf43a3b4d Fail to fetch/remove json config: AccessDeniedException: User: arn:aws:sts::123456789012:assumed-role/cwagent/i-0744de7c842d2c2ba is not authorized to perform: ssm:GetParameter on resource: arn:aws:ssm:us-east-1:123456789012:parameter/CWT-Web-Server status code: 400, request id: b85b0a7a-0fb1-47b4-924f-be8cf43a3b4d Fail to fetch the config!
Der folgende get-caller-identity-Befehl gibt den IAM-Benutzer oder die IAM-Rolle zurück, der/die der Instance zugeordnet ist:
$ aws sts get-caller-identity { "UserId": "AROA123456789012ABCDE:i-0744de7c842d2c2ba", "Account": "123456789012", "Arn": "arn:aws:sts::123456789012:assumed-role/CloudWatchAgentServerRole/i-0744de7c842d2c2ba" }
Bestätige, dass der Agent korrekt gestartet wird
Du kannst AWS CLI mit der als Argument übergebenen Konfigurationsdatei verwenden, um den Agent zu starten. Führe die folgenden gültigen Startbefehle aus, um den Agent zu starten.
Führe unter Linux die folgenden Befehle aus:
- `$ sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -s -c file:configuration-file-path` - `$ sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -s -c ssm:configuration-parameter-store-name`
Führe unter Windows die folgenden Befehle aus:
- `& "C:\Program Files\Amazon\AmazonCloudWatchAgent\amazon-cloudwatch-agent-ctl.ps1" -a fetch-config -m ec2 -s -c file:"C:\Program Files\Amazon\AmazonCloudWatchAgent\config.json"` - `& "C:\Program Files\Amazon\AmazonCloudWatchAgent\amazon-cloudwatch-agent-ctl.ps1" -a fetch-config -m ec2 -s -c ssm:configuration-parameter-store-name`
Wichtig: Starte den Agent nicht über die Windows-Systemsteuerung.
Bestätige, dass der Agent ausgeführt wird
Um Metriken und Protokolle zu veröffentlichen, muss der Agent aktiv sein. Führe den folgenden Befehl aus, um zu überprüfen, ob der CloudWatch-Agent aktiv ist:
$ sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -m ec2 -a status { "status": "running", "starttime": "2021-08-30T02:13:44+00:00", "configstatus": "configured", "cwoc_status": "stopped", "cwoc_starttime": "", "cwoc_configstatus": "not configured", "version": "1.247349.0b251399" }
Neustart des Agent, nachdem du die Agent-Konfiguration aktualisiert hast
Der Agent registriert Änderungen an der Konfigurationsdatei nicht automatisch. Wenn die Agentenkonfiguration aktualisiert wird und neue oder andere Metriken und Logs enthält, musst du den folgenden Befehl verwenden, um den Agenten neu zu starten:
$ sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -m ec2 -a stop ****** processing cwagent-otel-collector ****** cwagent-otel-collector has already been stopped ****** processing amazon-cloudwatch-agent ****** Redirecting to /bin/systemctl stop amazon-cloudwatch-agent.service $ sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -s -c file:config.json ****** processing amazon-cloudwatch-agent ****** /opt/aws/amazon-cloudwatch-agent/bin/config-downloader --output-dir /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.d --download-source file:config.json --mode ec2 --config /opt/aws/amazon-cloudwatch-agent/etc/common-config.toml --multi-config default Successfully fetched the config and saved in /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.d/file_config.json.tmp Start configuration validation... /opt/aws/amazon-cloudwatch-agent/bin/config-translator --input /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.json --input-dir /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.d --output /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.toml --mode ec2 --config /opt/aws/amazon-cloudwatch-agent/etc/common-config.toml --multi-config default 2021/08/31 02:45:37 Reading json config file path: /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.d/file_config.json.tmp ... Valid Json input schema. I! Detecting run_as_user... Configuration validation first phase succeeded /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent -schematest -config /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.toml Configuration validation second phase succeeded Configuration validation succeeded amazon-cloudwatch-agent has already been stopped Redirecting to /bin/systemctl restart amazon-cloudwatch-agent.service $ sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -m ec2 -a status { "status": "running", "starttime": "2021-08-31T02:45:37+0000", "configstatus": "configured", "cwoc_status": "stopped", "cwoc_starttime": "", "cwoc_configstatus": "not configured", "version": "1.247349.0b251399" }
Ähnliche Informationen
- Sprache
- Deutsch
