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 liés à la configuration des métriques Prometheus sur les clusters EKS Amazon et Kubernetes.

Étapes générales de résolution des problèmes 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. Remplacez pod-name avec le nom complet de votre pod 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/demande

  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/cluster-name/prométhée

  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 de l' 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 générales de résolution des problèmes 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 d'Amazon EKS ou de 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 CloudWatch fichier agent sont correctes. YAML 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 le journal des événements, vérifiez que la metric_declaration section est correctement configurée dans la config map: prometheus-cwagentconfig section du YAML fichier d'installation de l' CloudWatch agent. Pour de plus amples informations, veuillez consulter Tutoriel pour ajouter une nouvelle cible Prometheus Scrape : Prometheus Server metrics API.