Fehlerbehebung Prometheus Prometheus-Metriken auf Amazon EKS - und Kubernetes-Clustern - Amazon CloudWatch

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Fehlerbehebung Prometheus Prometheus-Metriken auf Amazon EKS - und Kubernetes-Clustern

Dieser Abschnitt enthält Hilfe zur Fehlerbehebung bei der Einrichtung Ihrer Prometheus-Metriken auf Amazon EKS - und Kubernetes-Clustern.

Allgemeine Schritte zur Fehlerbehebung bei Amazon EKS

Geben Sie den folgenden Befehl ein, um zu bestätigen, dass der CloudWatch Agent läuft.

kubectl get pod -n amazon-cloudwatch

Die Ausgabe sollte eine Zeile mit cwagent-prometheus-id in der Spalte NAME und Running in der Spalte STATUS column. sein.

Geben Sie den folgenden Befehl ein, um Details zum laufenden Pod anzuzeigen. Ersetzen pod-name mit dem vollständigen Namen Ihres Pods, dessen Name mit beginntcw-agent-prometheus.

kubectl describe pod pod-name -n amazon-cloudwatch

Wenn Sie CloudWatch Container Insights installiert haben, können Sie Logs Insights verwenden, um die CloudWatch Logs von dem CloudWatch Agenten abzufragen, der die Prometheus-Metriken sammelt.

So fragen Sie die Anwendungsprotokolle ab:
  1. Öffnen Sie die CloudWatch Konsole unter. https://console.aws.amazon.com/cloudwatch/

  2. Wählen Sie im Navigationsbereich CloudWatch Logs Insights aus.

  3. Wählen Sie die Protokollgruppe für die Anwendungsprotokolle, /aws/containerinsights/cluster-name/Anwendung

  4. Ersetzen Sie den Suchabfrageausdruck durch die folgende Abfrage und wählen Sie Run query (Abfrage ausführen)

    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

Sie können auch bestätigen, dass Prometheus-Metriken und -Metadaten als CloudWatch Logs-Ereignisse aufgenommen werden.

So bestätigen Sie, dass Prometheus-Daten aufgenommen werden:
  1. Öffnen Sie die Konsole unter CloudWatch . https://console.aws.amazon.com/cloudwatch/

  2. Wählen Sie im Navigationsbereich CloudWatch Logs Insights aus.

  3. Wählen Sie /aws/containerinsights/cluster-name/prometheus

  4. Ersetzen Sie den Suchabfrageausdruck durch die folgende Abfrage und wählen Sie Run query (Abfrage ausführen)

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

Protokollierung von gelöschten Prometheus-Metriken

In dieser Version werden keine Prometheus-Metriken des Histogrammtyps erfasst. Sie können den CloudWatch Agenten verwenden, um zu überprüfen, ob Prometheus-Metriken gelöscht wurden, da es sich um Histogramm-Metriken handelt. Sie können auch eine Liste der ersten 500 Prometheus-Metriken protokollieren, die gelöscht und nicht an sie gesendet wurden, CloudWatch da es sich um Histogramm-Metriken handelt.

Um festzustellen, ob Metriken gelöscht werden, geben Sie den folgenden Befehl ein:

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

Wenn Metriken gelöscht werden, werden die folgenden Zeilen in der /opt/aws/amazon-cloudwatch-agent/logs/amazon-cloudwatch-agent.log-Datei angezeigt.

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

Wenn Sie diese Zeilen sehen und wissen möchten, welche Metriken gelöscht werden, führen Sie die folgenden Schritte aus.

So protokollieren Sie eine Liste der gelöschten Prometheus-Metriken:
  1. Versetzen Sie den CloudWatch Agenten in den Debug-Modus, indem Sie Ihrer OR-Datei die folgenden fetten Zeilen hinzufügen, und prometheus-eks.yaml speichern Sie die prometheus-k8s.yaml Datei.

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

    Dieser Abschnitt der Datei sollte dann wie folgt aussehen:

    cwagentconfig.json: | { "agent": { "debug": true }, "logs": { "metrics_collected": {
  2. Installieren Sie den CloudWatch Agenten erneut, um den Debug-Modus zu aktivieren, indem Sie die folgenden Befehle eingeben:

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

    Die gelöschten Metriken werden im CloudWatch Agent-Pod protokolliert.

  3. Geben Sie den folgenden Befehl ein, um die Protokolle aus dem CloudWatch Agenten-Pod abzurufen:

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

    Oder, wenn Sie Container Insights Fluentd Logging installiert haben, werden die Protokolle auch in der Logs-Protokollgruppe CloudWatch /aws/containerinsights/ gespeichert cluster_name/Anwendung.

    Um diese Protokolle abzufragen, können Sie die Schritte zum Abfragen der Anwendungsprotokolle in Allgemeine Schritte zur Fehlerbehebung bei Amazon EKS befolgen.

Wo werden die Prometheus-Metriken aufgenommen, wenn Log-Ereignisse CloudWatch protokolliert werden?

Der CloudWatch Agent erstellt einen Protokollstream für jede Prometheus-Scrape-Job-Konfiguration. Beispiel: In den Dateien prometheus-eks.yaml und prometheus-k8s.yaml führt die Zeile job_name: 'kubernetes-pod-appmesh-envoy' das Scraping der App-Mesh-Metriken durch. Das Prometheus-Ziel ist definiert als kubernetes-pod-appmesh-envoy. Daher werden alle App Mesh Prometheus-Metriken als CloudWatch Logs-Ereignisse in den Protokollstream kubernetes-pod-appmesh-envoyunter der Protokollgruppe mit dem Namen/aufgenommen. aws/containerinsights/cluster-name/Prometheus

Ich sehe keine Amazon EKS - oder Kubernetes Prometheus-Metriken in Metriken CloudWatch

Stellen Sie zunächst sicher, dass die Prometheus-Metriken als Protokollereignisse in der Protokollgruppe/aufgenommen werden. aws/containerinsights/cluster-name/Prometheus Verwenden Sie die Informationen in Wo werden die Prometheus-Metriken aufgenommen, wenn Log-Ereignisse CloudWatch protokolliert werden?, um den Zielprotokoll-Stream zu überprüfen. Wenn der Protokoll-Stream nicht erstellt wird oder keine neuen Protokollereignisse im Protokoll-Stream vorhanden sind, überprüfen Sie Folgendes:

  • Überprüfen Sie, ob die Prometheus-Metrik-Exporter-Endpunkte korrekt eingerichtet sind

  • Überprüfen Sie, ob die Prometheus-Scraping-Konfigurationen im config map: cwagent-prometheus Abschnitt der CloudWatch YAML Agentendatei korrekt sind. Die Konfiguration sollte die gleiche sein wie in einer Prometheus-Konfigurationsdatei. Weitere Informationen finden Sie unter <scrape_config> in der Prometheus-Dokumentation.

Wenn die Prometheus-Metriken korrekt als Protokollereignisse aufgenommen wurden, überprüfen Sie, ob die Einstellungen für das eingebettete Metrikformat zu den Protokollereignissen hinzugefügt wurden, um die Metriken zu generieren. CloudWatch

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

Weitere Hinweise zum eingebetteten Metrik-Format finden Sie unter Spezifikation: Eingebettetes Metrikformat.

Wenn die Protokollereignisse kein eingebettetes metrisches Format enthalten, überprüfen Sie, ob der metric_declaration Abschnitt im config map: prometheus-cwagentconfig Abschnitt der CloudWatch Agenteninstallationsdatei korrekt konfiguriert ist. YAML Weitere Informationen finden Sie unter Tutorial zum Hinzufügen eines neuen Prometheus-Scrape-Ziels: Prometheus Server-Metriken API.