Warum überträgt der vereinheitlichte CloudWatch-Agent meine Metriken oder Protokollereignisse nicht an CloudWatch?
Ich habe den vereinheitlichten Amazon CloudWatch-Agenten auf meiner Amazon Elastic Compute Cloud (Amazon EC2)-Instance so konfiguriert, dass Metriken und Protokolle an Amazon CloudWatch gesendet werden. Aber ich kann meine Metriken oder Logs in der CloudWatch-Konsole nicht sehen. Ich möchte meine Metriken sehen und Ereignisse in CloudWatch protokollieren
Kurzbeschreibung
Es kann mehrere Gründe geben, warum der vereinheitlichte CloudWatch-Agent Ihre Metriken oder Logs nicht an CloudWatch weiterleitet. Beispielsweise liegt möglicherweise ein Berechtigungs- oder Verbindungsfehler vor, der den Agenten daran hindert, Ihre Messwerte zu veröffentlichen. Wenn Sie die vereinheitlichten CloudWatch-Agent-Protokolle überprüfen, kann einer der folgenden Fehler auftreten:
- Agentenprotokollfehler: Keine Konnektivität zum Endpunkt
- Agentenprotokollfehler: Unzureichende Berechtigungen
Behebung
Anmerkung: Wenn Sie beim Ausführen von AWS Command Line Interface (AWS CLI)-Befehlen Fehler erhalten, finden Sie weitere Informationen unter Beheben von AWS-CLI-Fehlern. Stellen Sie außerdem sicher, dass Sie die neueste AWS-CLI-Version verwenden.
Überprüfen Sie die vereinheitlichten CloudWatch-Agentenprotokolle
Sie können die Agent-Protokolldatei verwenden, um Probleme zu beheben, die mit dem vereinheitlichten CloudWatch-Agent-Paket auftreten.
Möglicherweise tritt eines der folgenden Probleme auf:
- Es treten Verbindungsprobleme zu den erforderlichen AWS-Serviceendpunkten oder Amazon Virtual Private Cloud (Amazon VPC)-Endpunkten auf.
- Sie haben nicht die richtigen Berechtigungen, um Support-API-Aufrufe an CloudWatch zu tätigen.
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ätigen Sie die Konnektivität zu den CloudWatch-Endpunkten
Wenn der Datenverkehr zu CloudWatch nicht über das öffentliche Internet erfolgt, können Sie Amazon VPC-Endpunkte verwenden. Wenn Sie Amazon VPC-Endpunkte verwenden, überprüfen Sie die folgenden Parameter:
- Wenn Sie private Nameserver verwenden, stellen Sie sicher, dass die DNS-Auflösung korrekte Antworten geliefert hat.
- Vergewissern Sie sich, dass die CloudWatch-Endpunkte in private IP-Adressen aufgelöst werden.
- Bestätigen Sie die Sicherheitsgruppe, die dem Amazon VPC-Endpunkt zugeordnet ist und eingehenden Datenverkehr vom Host zulässt.
Gehen Sie wie folgt vor, um die Konnektivität zu den CloudWatch-Endpunkten zu bestätigen:
-
Führen Sie 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ühren Sie 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ühren Sie den folgenden Befehl aus:
$ dig monitoring.us-east-1.amazonaws.com +short172.31.11.121 172.31.0.13
Überprüfen Sie die einheitliche CloudWatch-Agent-Konfiguration
Die Agentenkonfigurationsdatei beschreibt die Metriken und Protokolle, die auf CloudWatch veröffentlicht werden. Überprüfen Sie die Agentenkonfigurationsdatei, um sicherzustellen, dass die Protokolle und Metriken, die Sie veröffentlichen möchten, enthalten sind.
Vergewissern Sie sich, dass der Host berechtigt ist, Metriken und Logs zu veröffentlichen
Die von AWS verwalteten Richtlinien CloudWatchAgentServerPolicy und CloudWatchAgentAdminPolicy können Ihnen bei der Bereitstellung des einheitlichen CloudWatch-Agenten helfen. Mithilfe der Richtlinien können Sie auch überprüfen, ob Sie über die richtigen Berechtigungen verfügen. 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)-Rolle 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 angehängt 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, 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ätigen Sie, dass der Agent korrekt gestartet wird
Sie können AWS CLI mit der als Argument übergebenen Konfigurationsdatei verwenden, um den Agenten zu starten. Führen Sie die folgenden gültigen Startbefehle aus, um den Agenten zu starten.
Führen Sie 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ühren Sie 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: Starten Sie den Agenten nicht über die Windows-Systemsteuerung.
Bestätigen Sie, dass der Agent ausgeführt wird
Um Metriken und Logs zu veröffentlichen, muss der Agent aktiv sein. Führen Sie den folgenden Befehl aus, um zu bestätigen, dass der 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" }
Starten Sie den Agenten neu, nachdem Sie die Agentenkonfiguration aktualisiert haben
Der Agent registriert Änderungen an der Konfigurationsdatei nicht automatisch. Wenn die Agentenkonfiguration aktualisiert wird und neue oder andere Metriken und Logs enthält, müssen Sie 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
Relevanter Inhalt
- AWS OFFICIALAktualisiert vor einem Jahr
- AWS OFFICIALAktualisiert vor 8 Monaten
- AWS OFFICIALAktualisiert vor 7 Monaten
- AWS OFFICIALAktualisiert vor 2 Jahren