Por que o agente unificado do CloudWatch não envia minhas métricas nem registra eventos para o CloudWatch?
Configurei o agente unificado do Amazon CloudWatch na minha instância do Amazon Elastic Compute Cloud (Amazon EC2) para publicar métricas e logs no Amazon CloudWatch. Mas não consigo ver minhas métricas ou logs no console do CloudWatch. Quero ver minhas métricas e registrar eventos no CloudWatch
Breve descrição
Pode haver vários motivos pelos quais o agente unificado do CloudWatch não envia suas métricas ou logs para o CloudWatch. Por exemplo, você pode ter um erro de permissão ou conectividade que impede o agente de publicar suas métricas. Quando você revisa os logs unificados do agente CloudWatch, um dos seguintes erros pode aparecer:
- Erro de log do agente: Sem conectividade com o endpoint
- Erro de log do agente: Permissões insuficientes
Resolução
Observação: se você receber erros ao executar comandos da AWS Command Line Interface (AWS CLI), consulte Solucionar erros da AWS CLI. Além disso, verifique se está usando a versão mais recente da AWS CLI.
Analisar os logs unificados do agente do CloudWatch
Você pode usar o arquivo de log do agente para ajudar a solucionar problemas que encontra com o pacote unificado de agentes do CloudWatch.
Você pode enfrentar um dos seguintes problemas:
- Problemas de conectividade com os endpoints de serviço da AWS necessários ou com os endpoints do Amazon Virtual Private Cloud (Amazon VPC).
- Você não tem as permissões corretas para fazer chamadas de API de suporte para o CloudWatch.
Você pode ver um desses erros nos logs a seguir.
Erro de log do agente: sem conectividade com o endpoint
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.
Erro de log do agente: permissões insuficientes
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
Confirmar a conectividade com os endpoints do CloudWatch
Se o tráfego para o CloudWatch não passar pela Internet pública, você poderá usar os endpoints do Amazon VPC. Se usa endpoints do Amazon VPC, verifique os seguintes parâmetros:
- Se usa servidores de nomes privados, confirme se a resolução do DNS forneceu respostas precisas.
- Confirme se os endpoints do CloudWatch são resolvidos para endereços IP privados.
- Confirme o grupo de segurança associado ao endpoint do Amazon VPC que permite o tráfego de entrada do host.
Para confirmar a conectividade com os endpoints do CloudWatch, conclua as seguintes etapas:
-
Para verificar a conectividade com o endpoint de métricas, execute o seguinte comando:
$ 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.
-
Para verificar a conectividade com o endpoint de logs, execute o seguinte comando:
$ 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
-
Para verificar se o endpoint do Amazon VPC está resolvido para endereços IP privados, execute o seguinte comando:
$ dig monitoring.us-east-1.amazonaws.com +short172.31.11.121 172.31.0.13
Analisar a configuração unificada do agente CloudWatch
O arquivo de configuração do agente detalha as métricas e os logs publicados no CloudWatch. Examine o arquivo de configuração do agente para confirmar se os logs e as métricas que deseja publicar estão incluídos.
Confirmar se o host tem permissões para publicar métricas e logs
As políticas gerenciadas da AWS CloudWatchAgentServerPolicy e CloudWatchAgentAdminPolicy podem ajudar a implantar o agente unificado do CloudWatch. As políticas também podem ajudar a verificar se você tem as permissões corretas. Use essas políticas como referência para garantir que seu anfitrião tenha as permissões corretas.
Os resultados da AWS CLI nesses exemplos mostram permissões insuficientes.
O comando config da CLI da AWS a seguir mostra que a função AWS Identity and Access Management (IAM) anexada à instância do EC2 está ausente:
$ /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!
O comando config da CLI da AWS a seguir mostra que a função incorreta do IAM está anexada à instância do EC2:
$ /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!
O comando get-caller-identity a seguir retorna o usuário ou a função do IAM que está associado à instância:
$ aws sts get-caller-identity { "UserId": "AROA123456789012ABCDE:i-0744de7c842d2c2ba", "Account": "123456789012", "Arn": "arn:aws:sts::123456789012:assumed-role/CloudWatchAgentServerRole/i-0744de7c842d2c2ba" }
Confirmar se o agente inicia corretamente
Você pode usar o AWS CLI com o arquivo de configuração passado como argumento para iniciar o agente. Para iniciar o agente, execute os seguintes comandos de inicialização válidos.
Para Linux, use o seguinte comando:
- `$ 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`
Para Windows, execute os seguintes comandos:
- `& "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`
Importante: Não inicie o agente a partir do Painel de Controle do Windows.
Confirmar se o agente está em execução
Para publicar métricas e logs, o agente deve estar ativo. Para confirmar se o agente está ativo, execute o seguinte 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" }
Reiniciar o agente depois de atualizar a configuração do agente
O agente não registra automaticamente as alterações no arquivo de configuração. Se a configuração do agente for atualizada para incluir métricas e logs novos ou diferentes, você deverá usar o seguinte comando para reiniciar o agente:
$ 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" }
Informações relacionadas
Conteúdo relevante
- AWS OFICIALAtualizada há 9 meses
- AWS OFICIALAtualizada há 2 anos
- AWS OFICIALAtualizada há 2 anos