Résolution des problèmes liés aux métriques Prometheus sur les clusters Amazon EKS et Kubernetes - Amazon CloudWatch

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Résolution des problèmes liés aux métriques Prometheus sur les clusters Amazon EKS et Kubernetes

Cette section fournit de l'aide pour résoudre les problèmes de configuration des métriques Prometheus sur les clusters Amazon EKS et Kubernetes.

Étapes de résolution des problèmes générales sur Amazon EKS

Pour vérifier que l' CloudWatch agent est en cours d'exécution, entrez la commande suivante.

kubectl get pod -n amazon-cloudwatch

La sortie doit inclure une ligne avec cwagent-prometheus-id dans la colonne NAME et Running dans la colonne STATUS column.

Pour afficher des détails sur le pod en cours d'exécution, entrez la commande suivante. pod-nameRemplacez-le par le nom complet de votre module dont le nom commence parcw-agent-prometheus.

kubectl describe pod pod-name -n amazon-cloudwatch

Si CloudWatch Container Insights est installé, vous pouvez utiliser CloudWatch Logs Insights pour interroger les journaux de l' CloudWatch agent qui collecte les métriques Prometheus.

Pour interroger les journaux d'application
  1. Ouvrez la CloudWatch console à l'adresse https://console.aws.amazon.com/cloudwatch/.

  2. Dans le volet de navigation, sélectionnez CloudWatch Logs Insights.

  3. Sélectionnez le groupe de journaux pour les journaux des applications, /aws/containerinsights/ cluster-name /application

  4. Remplacez l'expression de requête de recherche par la requête suivante, puis choisissez Exécuter la requête

    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

Vous pouvez également confirmer que les métriques et les métadonnées de Prometheus sont CloudWatch ingérées sous forme d'événements Logs.

Pour vérifier que les données Prometheus sont ingérées
  1. Ouvrez la CloudWatch console à l'adresse https://console.aws.amazon.com/cloudwatch/.

  2. Dans le volet de navigation, sélectionnez CloudWatch Logs Insights.

  3. Sélectionnez le fichier /aws/containerinsights/ /prometheus cluster-name

  4. Remplacez l'expression de requête de recherche par la requête suivante, puis choisissez Exécuter la requête

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

Journalisation des métriques Prometheus ignorées

Cette version ne collecte pas les métriques Prometheus de type histogramme. Vous pouvez utiliser l' CloudWatch agent pour vérifier si des métriques Prometheus sont supprimées car il s'agit de métriques d'histogrammes. Vous pouvez également enregistrer une liste des 500 premières métriques Prometheus supprimées et non envoyées car il s'agit de métriques CloudWatch d'histogrammes.

Pour voir si des métriques sont ignorées, entrez la commande suivante :

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

Si des métriques sont ignorées, les lignes suivantes s'affichent dans le fichier /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 ces lignes s'affichent et si vous souhaitez savoir quelles métriques sont ignorées, procédez comme suit.

Pour enregistrer une liste des métriques Prometheus ignorées
  1. Passez l' CloudWatch agent en mode de débogage en ajoutant les lignes en gras suivantes à votre prometheus-k8s.yaml fichier prometheus-eks.yaml ou en enregistrant le fichier.

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

    Cette section du fichier doit alors ressembler à ceci :

    cwagentconfig.json: | { "agent": { "debug": true }, "logs": { "metrics_collected": {
  2. Réinstallez l' CloudWatch agent pour activer le mode de débogage en saisissant les commandes suivantes :

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

    Les métriques supprimées sont enregistrées dans le module de l' CloudWatch agent.

  3. Pour récupérer les journaux depuis le module CloudWatch agent, entrez la commande suivante :

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

    Ou, si la journalisation Fluentd de Container Insights est installée, les journaux sont également enregistrés dans le groupe de journaux Logs CloudWatch /aws/containerinsights/ cluster_name /application.

    Pour interroger ces journaux, vous pouvez suivre les étapes nécessaires pour interroger les journaux d'application dans Étapes de résolution des problèmes générales sur Amazon EKS.

Où sont ingérées CloudWatch les métriques Prometheus lorsque Logs enregistre les événements ?

L' CloudWatch agent crée un flux de journal pour chaque configuration de tâche Prometheus Scrape. Par exemple, dans les fichiers prometheus-eks.yaml et prometheus-k8s.yaml, la ligne job_name: 'kubernetes-pod-appmesh-envoy' récupère les métriques App Mesh. La cible Prometheus est définie en tant que kubernetes-pod-appmesh-envoy. Ainsi, toutes les métriques App Mesh Prometheus sont ingérées sous forme d'événements Logs dans le kubernetes-pod-appmesh-envoyflux de journaux CloudWatch sous le groupe de journaux nommé/. aws/containerinsights/cluster-name/Prometheus

Je ne vois pas les métriques Amazon EKS ou Kubernetes Prometheus dans les métriques CloudWatch

Tout d'abord, assurez-vous que les métriques Prometheus sont ingérées sous forme d'événements de journal dans le groupe de journaux/. aws/containerinsights/cluster-name/Prometheus Utilisez les informations de Où sont ingérées CloudWatch les métriques Prometheus lorsque Logs enregistre les événements ? pour vous aider à vérifier le flux de journaux cible. Si le flux de journaux n'est pas créé ou s'il n'y a pas de nouveaux événements de journaux dans le flux de journaux, vérifiez les points suivants :

  • Vérifiez que les points de terminaison de l'exportateur de métriques Prometheus sont correctement configurés

  • Vérifiez que les configurations de scraping de Prometheus dans config map: cwagent-prometheus la section du fichier YAML de CloudWatch l'agent sont correctes. La configuration doit être la même que dans un fichier de configuration Prometheus. Pour plus d'informations, consultez <scrape_config> dans la documentation Prometheus.

Si les métriques Prometheus sont correctement ingérées sous forme d'événements de journal, vérifiez que les paramètres de format de métrique intégrés sont ajoutés aux événements du journal pour générer les métriques. CloudWatch

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

Pour plus d'informations sur le format de métrique intégrée, consultez Spécifications : format de métrique intégrée.

Si aucun format métrique n'est intégré dans les événements du journal, vérifiez que la metric_declaration section est correctement configurée dans la config map: prometheus-cwagentconfig section du fichier YAML d'installation de l' CloudWatch agent. Pour de plus amples informations, veuillez consulter Didacticiel pour l'ajout d'une nouvelle cible de récupération Prometheus : métrique du serveur d'API Prometheus.