Perché l'agente CloudWatch unificato non invia metriche o eventi di log a CloudWatch?
Ho configurato l'agente Amazon CloudWatch unificato nella mia istanza Amazon Elastic Compute Cloud (Amazon EC2) per pubblicare metriche e log in Amazon CloudWatch. Tuttavia, non riesco a vedere le mie metriche o i miei eventi di log sulla console CloudWatch.
Risoluzione
Controlla i log dell'agente per identificare il problema
Prima di applicare la procedura di risoluzione, controlla il file di log dell'agente per risolvere i problemi relativi al pacchetto agente CloudWatch unificato.
Se l'agente non riesce a connettersi agli endpoint del servizio AWS o agli endpoint Amazon Virtual Private Cloud (Amazon VPC) richiesti, potresti ricevere l'errore "Agent Log Error: No Connectivity to Endpoint".
Se non hai le autorizzazioni necessarie per effettuare chiamate API a CloudWatch, ricevi l'errore "Agent Log Error: Insufficient Permissions".
Esempio di errore "No connectivity":
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.
Esempio di errore "Insufficient permissions":
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
Verifica la connettività agli endpoint CloudWatch
Se il traffico verso CloudWatch passa attraverso endpoint Amazon VPC anziché la rete Internet pubblica, controlla i seguenti parametri:
- Se utilizzi name server privati, verifica che la risoluzione DNS restituisca risposte accurate.
- Verifica che gli endpoint di CloudWatch si risolvano in indirizzi IP privati.
- Verifica il gruppo di sicurezza associato all'endpoint Amazon VPC che consente il traffico in entrata dall'host.
Quindi, per verificare la connettività agli endpoint di CloudWatch, completa i seguenti passaggi:
-
Esegui questo comando telnet per verificare la connettività all'endpoint delle metriche:
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. -
Esegui questo comando telnet per verificare la connettività all'endpoint dei log:
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 -
Esegui questo comando dig per verificare che l'endpoint Amazon VPC si risolva in indirizzi IP privati:
dig monitoring.us-east-1.amazonaws.com +short172.31.11.121 172.31.0.13
Esamina la configurazione dell'agente CloudWatch unificato
Il file di configurazione dell'agente CloudWatch specifica le metriche e i log che l'agente pubblica in CloudWatch. Esamina il file di configurazione dell'agente per verificare che il file includa i log e le metriche che desideri pubblicare.
Verifica che l'host abbia le autorizzazioni per pubblicare metriche e log
Nota: se ricevi errori quando esegui i comandi dell'Interfaccia della linea di comando AWS (AWS CLI), consulta Risoluzione degli errori relativi a AWS CLI. Inoltre, assicurati di utilizzare la versione più recente di AWS CLI.
Le policy gestite da AWS CloudWatchAgentServerPolicy e CloudWatchAgentAdminPolicy definiscono le autorizzazioni necessarie per distribuire l'agente CloudWatch unificato. Utilizza le policy come riferimento per verificare che l'host abbia le autorizzazioni corrette.
Il seguente comando AWS CLI config mostra che all'istanza Amazon EC2 manca il ruolo AWS Identity and Access Management (AWS IAM):
/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!
Il seguente comando AWS CLI config mostra che l'istanza EC2 ha il ruolo IAM errato:
/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!
Il seguente comando get-caller-identity restituisce l'utente o il ruolo IAM associato all'istanza:
aws sts get-caller-identity { "UserId": "AROA123456789012ABCDE:i-0744de7c842d2c2ba", "Account": "123456789012", "Arn": "arn:aws:sts::123456789012:assumed-role/CloudWatchAgentServerRole/i-0744de7c842d2c2ba" }
Verifica che l'agente si avvii correttamente
Per avviare l'agente, esegui questi comandi di avvio validi.
Comandi Linux
Se il file di configurazione è archiviato localmente nell'istanza, esegui questo comando:
sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -s -c file:configuration-file-path
Se il file di configurazione è archiviato in Archivio dei parametri, una funzionalità di AWS Systems Manager, esegui questo comando:
sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -s -c ssm:configuration-parameter-store-name
Comandi Windows
Se il file di configurazione è archiviato localmente nell'istanza, esegui questo comando:
& "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
Se il file di configurazione è archiviato in Archivio dei parametri, esegui questo comando:
& "C:\Program Files\Amazon\AmazonCloudWatchAgent\amazon-cloudwatch-agent-ctl.ps1" -a fetch-config -m ec2 -s -c ssm:configuration-parameter-store-name
Importante: non avviare l'agente dal Pannello di controllo di Windows.
Verifica che l'agente sia in esecuzione
Per pubblicare metriche e log, l'agente deve essere attivo. Per verificare che l'agente CloudWatch sia attivo, esegui questo comando:
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" }
Riavvia l'agente dopo averne aggiornato la configurazione
L'agente non registra automaticamente le modifiche al file di configurazione. Se aggiorni la configurazione dell'agente per includere metriche e log nuovi o diversi, esegui questo comando per riavviarlo:
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
Esegui questo comando per recuperare il file di configurazione aggiornato e riavviare l'agente:
sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -s -c file:/opt/aws/amazon-cloudwatch-agent/bin/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
Nota: sostituisci config.json con il percorso del tuo file di configurazione.
Esegui questo comando per verificare che l'agente sia in esecuzione:
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" }
Nell'output, verifica che lo stato sia in esecuzione. Quando lo stato è in esecuzione, ciò conferma che l'agente CloudWatch è in esecuzione.
Informazioni correlate
- Argomenti
- Management & Governance
- Lingua
- Italiano

Contenuto pertinente
AWS UFFICIALEAggiornata 9 mesi fa
AWS UFFICIALEAggiornata 7 mesi fa