¿Por qué el agente de CloudWatch unificado no envía mis métricas ni mis eventos de registro a CloudWatch?
He configurado el agente de Amazon CloudWatch unificado en mi instancia de Amazon Elastic Compute Cloud (Amazon EC2) para insertar métricas y registros en Amazon CloudWatch. Sin embargo, no puedo ver mis métricas ni mis registros en la consola de CloudWatch. Quiero ver mis métricas y eventos de registro en CloudWatch
Breve descripción
Hay varias razones por las que el agente unificado de CloudWatch podría no enviar sus métricas o registros a CloudWatch. Por ejemplo, es posible que tenga un error de permisos o conectividad que impide que el agente publique sus métricas. Al revisar los registros del agente de CloudWatch unificados, es posible que vea un error como el siguiente:
- Agent Log Error: No Connectivity to Endpoint
- Agent Log Error: Insufficient Permissions
Resolución
Nota: Si se muestran errores al ejecutar comandos de la Interfaz de la línea de comandos de AWS (AWS CLI), consulte Troubleshoot AWS CLI errors. Además, asegúrese de utilizar la versión más reciente de la AWS CLI.
Revisar los registros de agentes de CloudWatch unificados
Puede usar el archivo de registro del agente para ayudar a solucionar los problemas que encuentre con el paquete de agente unificado de CloudWatch.
Es posible que experimente uno de los siguientes problemas:
- Tiene problemas de conectividad con los puntos de enlace de servicio de AWS o los puntos de enlace de Amazon Virtual Private Cloud (Amazon VPC) requeridos.
- No tiene los permisos correctos para realizar llamadas a la API de soporte a CloudWatch.
Es posible que vea uno de estos errores en los siguientes registros.
Agent Log Error: No Connectivity to 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.
Agent Log Error: 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
Confirmar la conectividad con los puntos de enlace de CloudWatch
Si el tráfico a CloudWatch no pasa por la Internet pública, puede usar los puntos de enlace de VPC de Amazon. Si usa puntos de enlace de VPC de Amazon, compruebe los siguientes parámetros:
- Si utiliza servidores de nombres privados, confirme que la resolución de DNS proporcionó respuestas precisas.
- Confirme que los puntos de enlace de CloudWatch se resuelven en direcciones IP privadas.
- Confirme el grupo de seguridad asociado con el punto de enlace de VPC de Amazon que permite el tráfico entrante desde el host.
Para confirmar la conectividad con los puntos de enlace de CloudWatch, siga estos pasos:
-
Para comprobar la conectividad con el punto de enlace de las métricas, ejecute el siguiente 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 comprobar la conectividad con el punto de enlace de los registros, ejecute el siguiente 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 comprobar que el punto de enlace de VPC de Amazon se resuelve en direcciones IP privadas, ejecute el siguiente comando:
$ dig monitoring.us-east-1.amazonaws.com +short172.31.11.121 172.31.0.13
Revisar la configuración del agente de CloudWatch unificado
El archivo de configuración del agente detalla las métricas y los registros que se publican en CloudWatch. Revise el archivo de configuración del agente para confirmar que se incluyen los registros y las métricas que desea publicar.
Confirmar que el host tiene permisos para publicar métricas y registros
Las políticas gestionadas de AWS CloudWatchAgentServerPolicy y CloudWatchAgentAdminPolicy pueden ayudarlo a implementar el agente de CloudWatch unificado. Las políticas también pueden ayudar a comprobar que se tienen los permisos correctos. Utilice estas políticas como referencia para asegurarse de que el host tiene los permisos correctos.
Los resultados de la AWS CLI de estos ejemplos muestran permisos insuficientes.
El siguiente comando de config de la AWS CLI muestra que falta el rol de AWS Identity and Access Management (IAM) asociado a la instancia de 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: 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!
El siguiente comando config de la AWS CLI muestra que el rol de IAM incorrecto está asociado a la instancia de 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!
El siguiente comando get-caller-identity devuelve el usuario o rol de IAM asociado a la instancia:
$ aws sts get-caller-identity { "UserId": "AROA123456789012ABCDE:i-0744de7c842d2c2ba", "Account": "123456789012", "Arn": "arn:aws:sts::123456789012:assumed-role/CloudWatchAgentServerRole/i-0744de7c842d2c2ba" }
Confirmar que el agente se inicia correctamente
Puede usar la AWS CLI con el archivo de configuración transferido como argumento para iniciar el agente. Para iniciar el agente, ejecute los siguientes comandos de inicio válidos.
Para Linux, ejecute los siguientes comandos:
- `$ 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, ejecute los siguientes 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: No inicie el agente desde el Panel de control de Windows.
Confirmar que el agente se está ejecutando
Para publicar métricas y registros, el agente debe estar activo. Para confirmar que el agente está activo, ejecute el siguiente 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 el agente después de actualizar la configuración del agente
El agente no registra automáticamente los cambios en el archivo de configuración. Si la configuración del agente se actualiza para incluir métricas y registros nuevos o diferentes, debe usar el siguiente comando para reiniciar el 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" }
Información relacionada
Contenido relevante
- OFICIAL DE AWSActualizada hace 2 años
- OFICIAL DE AWSActualizada hace un año
- OFICIAL DE AWSActualizada hace 7 meses
- OFICIAL DE AWSActualizada hace 2 años