Solución de problemas de métricas de Prometheus en clústeres de Amazon EKS y de Kubernetes - Amazon CloudWatch

Solución de problemas de métricas de Prometheus en clústeres de Amazon EKS y de Kubernetes

Esta sección proporciona ayuda para solucionar problemas relacionados con la configuración de las métricas de Prometheus en clústeres de Amazon EKS y de Kubernetes.

Pasos generales de solución de problemas en Amazon EKS

Ingrese el siguiente comando para confirmar que el agente de CloudWatch se está ejecutando.

kubectl get pod -n amazon-cloudwatch

En la salida, debería aparecer una fila con el valor cwagent-prometheus-id en la columna NAME y el valor Running en STATUS column.

Para obtener más información sobre el pod en ejecución, escriba el siguiente comando. Sustituya pod-name por el nombre completo del pod que debe comenzar por cw-agent-prometheus.

kubectl describe pod pod-name -n amazon-cloudwatch

Si Información de contenedores de CloudWatch está instalado, puede utilizar Información de registros de CloudWatch para consultar los registros del agente de CloudWatch que recopila las métricas de Prometheus.

Para consultar los registros de la aplicación
  1. Abra la consola de CloudWatch en https://console.aws.amazon.com/cloudwatch/.

  2. En el panel de navegación, elija Información de registros de CloudWatch.

  3. Seleccione el grupo de registros de la aplicación, /aws/containerinsights/nombre-del-clúster/application

  4. Sustituya la expresión de la consulta de búsqueda por la siguiente consulta y elija Ejecutar la consulta.

    fields ispresent(kubernetes.pod_name) as haskubernetes_pod_name, stream, kubernetes.pod_name, log | filter haskubernetes_pod_name and kubernetes.pod_name like /cwagent-prometheus

También se puede confirmar que las métricas y los metadatos de Prometheus se están capturando como eventos de CloudWatch Logs.

Para confirmar que los datos de Prometheus se están ingiriendo
  1. Abra la consola de CloudWatch en https://console.aws.amazon.com/cloudwatch/.

  2. En el panel de navegación, elija Información de registros de CloudWatch.

  3. Seleccione /aws/containerinsights/nombre-del-clúster/prometheus

  4. Sustituya la expresión de la consulta de búsqueda por la siguiente consulta y elija Ejecutar la consulta.

    fields @timestamp, @message | sort @timestamp desc | limit 20

Registro de métricas de Prometheus descartadas

Esta versión no recopila métricas de Prometheus de tipo histograma. Puede utilizar el agente de CloudWatch para verificar si se está descartando alguna métrica de Prometheus porque son de tipo histograma. También puede registrar una lista de las primeras 500 métricas de Prometheus descartadas que no se envían a CloudWatch porque son de tipo histograma.

Para comprobar si se está descartando alguna métrica, ejecute el siguiente comando:

kubectl logs -l "app=cwagent-prometheus" -n amazon-cloudwatch --tail=-1

Si se está descartando alguna métrica, aparecerán las siguientes líneas en el archivo /opt/aws/amazon-cloudwatch-agent/logs/amazon-cloudwatch-agent.log.

I! Drop Prometheus metrics with unsupported types. Only Gauge, Counter and Summary are supported. I! Please enable CWAgent debug mode to view the first 500 dropped metrics

Si ve esas líneas y desea saber qué métricas se están descartando, siga estos pasos.

Para registrar una lista de métricas de Prometheus descartadas
  1. Cambie el agente de CloudWatch al modo de depuración al agregar las siguientes líneas en negrita al archivo prometheus-eks.yaml o prometheus-k8s.yaml, y guarde el archivo.

    { "agent": { "debug": true },

    Esta sección del archivo debería aparecer así:

    cwagentconfig.json: | { "agent": { "debug": true }, "logs": { "metrics_collected": {
  2. Vuelva a instalar el agente de CloudWatch para habilitar el modo de depuración con los siguientes comandos:

    kubectl delete deployment cwagent-prometheus -n amazon-cloudwatch kubectl apply -f prometheus.yaml

    Las métricas descartadas se registran en el pod del agente de CloudWatch.

  3. Para recuperar los registros del pod del agente de CloudWatch, ingrese el siguiente comando:

    kubectl logs -l "app=cwagent-prometheus" -n amazon-cloudwatch --tail=-1

    O bien, si tiene instalado el registro Fluentd de Información de contenedores, los registros también se guardan en el grupo de registro de registros de CloudWatch /aws/containerinsights/cluster_name/application.

    Para consultar estos registros, siga los pasos que se indican en Pasos generales de solución de problemas en Amazon EKS.

¿Dónde se capturan las métricas de Prometheus como eventos de registro de CloudWatch Logs?

El agente de CloudWatch crea un flujo de registros en la configuración de cada trabajo de raspado de Prometheus. Por ejemplo, en los archivos prometheus-eks.yaml y prometheus-k8s.yaml, la línea job_name: 'kubernetes-pod-appmesh-envoy' raspa las métricas de App Mesh. El destino de Prometheus está definido como kubernetes-pod-appmesh-envoy. Por tanto, todas las métricas de Prometheus de App Mesh se ingieren como eventos de CloudWatch Logs en el flujo de registro kubernetes-pod-appmesh-envoy bajo el grupo de registros /aws/containerinsights/cluster-name/Prometheus.

No se pueden ver las métricas de Amazon EKS o de Kubernetes Prometheus en las métricas de CloudWatch

En primer lugar, asegúrese de que las métricas de Prometheus se están ingiriendo como eventos de registro en el grupo de registros /aws/containerInsights/nombre-del-clúster/Prometheus. Utilice la información de ¿Dónde se capturan las métricas de Prometheus como eventos de registro de CloudWatch Logs? para que le ayude a comprobar el flujo de registro de destino. Si el flujo de registro no se ha creado o no hay nuevos eventos de registro en el flujo, compruebe lo siguiente:

  • Compruebe que los puntos de enlace del exportador de métricas de Prometheus están configurados correctamente.

  • Verifique que las configuraciones de raspado de Prometheus incluidas en la sección config map: cwagent-prometheus del archivo YAML del agente de CloudWatch sean correctas. La configuración debe ser la misma que la de un archivo de configuración de Prometheus. Para obtener más información, consulte <scrape_config> en la documentación de Prometheus.

Si las métricas de Prometheus se ingieren correctamente como eventos de registro, compruebe que la configuración de formato de métrica integrado se ha agregado a los eventos de registro para generar las métricas de CloudWatch.

"CloudWatchMetrics":[ { "Metrics":[ { "Name":"envoy_http_downstream_cx_destroy_remote_active_rq" } ], "Dimensions":[ [ "ClusterName", "Namespace" ] ], "Namespace":"ContainerInsights/Prometheus" } ],

Para obtener más información sobre el formato de métrica integrado, consulte Especificación: Formato de métricas integradas.

Si no hay ningún formato de métrica integrada en los eventos de registro, verifique que la sección metric_declaration esté configurada correctamente en la sección config map: prometheus-cwagentconfig del archivo YAML de instalación del agente de CloudWatch. Para obtener más información, consulte Tutorial para agregar un destino de raspado nuevo de Prometheus: métricas del servidor de la API de Prometheus.