Prometheus-Metriken - Amazon EKS

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.

Prometheus-Metriken

Prometheus ist eine Überwachungs- und Zeitreihendatenbank, die Endpunkte durchsucht. Sie bietet die Möglichkeit, gesammelte Daten abzufragen, zu aggregieren und zu speichern. Sie können sie auch für Warnungen und für die Aggregation von Warnungen verwenden. In diesem Thema wird erklärt, wie Sie Prometheus als verwaltete oder als Open-Source-Option einrichten. Die Überwachung der Metriken der Amazon-EKS-Steuerebene ist ein häufiger Anwendungsfall.

Amazon Managed Service für Prometheus ist ein Prometheus-kompatibler Überwachungs- und Warnungsservice, der die Überwachung von containerisierten Anwendungen und Infrastrukturen in großem Umfang vereinfacht. Es ist ein vollständig verwalteter Service, der die Aufnahme, Speicherung, Abfrage und Warnung Ihrer Metriken automatisch skaliert. Es lässt sich auch in - AWS Sicherheitsservices integrieren, um einen schnellen und sicheren Zugriff auf Ihre Daten zu ermöglichen. Sie können die Open-Source-PromQL-Abfragesprache verwenden, um Ihre Metriken abzufragen und darauf zu warnen.

Weitere Informationen zur Verwendung der aktivierten Prometheus-Metriken finden Sie im Benutzerhandbuch von Amazon Managed Service für Prometheus.

Aktivieren von Prometheus-Metriken beim Erstellen eines Clusters

Wichtig

Ressourcen von Amazon Managed Service for Prometheus liegen außerhalb des Cluster-Lebenszyklus und müssen unabhängig vom Cluster gewartet werden. Wenn Sie Ihren Cluster löschen, stellen Sie sicher, dass Sie auch alle entsprechenden Scraper löschen, um die geltenden Kosten zu beenden. Weitere Informationen finden Sie unter Suchen und Löschen von Scrapern im Amazon Managed Service for Prometheus-Benutzerhandbuch.

Wenn Sie einen neuen Cluster erstellen, können Sie die Option aktivieren, Metriken an Prometheus zu senden. In der befindet sich AWS Management Console diese Option im Schritt Beobachtbarkeit konfigurieren zum Erstellen eines neuen Clusters. Weitere Informationen finden Sie unter Erstellen eines Amazon-EKS-Clusters.

Prometheus erkennt und sammelt Metriken aus Ihrem Cluster über ein Pull-basiertes Modell namens Scraping. Scraper sind dafür eingerichtet, Daten aus Ihrer Cluster-Infrastruktur und containerisierten Anwendungen zu sammeln.

Wenn Sie die Option zum Senden von Prometheus-Metriken aktivieren, bietet Amazon Managed Service für Prometheus einen vollständig verwalteten agentenlosen Scraper. Verwenden Sie die folgenden erweiterten Konfigurationsoptionen, um den Standard-Scraper nach Bedarf anzupassen.

Scraper-Alias

(Optional) Geben Sie einen eindeutigen Alias für den Scraper ein.

Bestimmungsort

Wählen Sie einen Workspace für Amazon Managed Service für Prometheus aus. Ein Workspace ist ein logischer Bereich für die Speicherung und Abfrage von Prometheus-Metriken. In diesem Workspace können Sie die Prometheus-Metriken aller Konten einsehen, die Zugriff darauf haben. Die Option Neuen Workspace erstellen weist Amazon EKS an, unter Verwendung des von Ihnen angegebenen Workspace-Alias einen Workspace in Ihrem Namen zu erstellen. Mit der Option Bestehenden Workspace auswählen können Sie einen vorhandenen Workspace aus einer Dropdown-Liste auswählen. Weitere Informationen zu Workspaces finden Sie unter Workspaces verwalten im Benutzerhandbuch von Amazon Managed Service für Prometheus.

Zugriff auf Services

In diesem Abschnitt werden die Berechtigungen zusammengefasst, die Sie beim Senden von Prometheus-Metriken gewähren:

  • Zulassen, dass Amazon Managed Service für Prometheus den gescrapten Amazon-EKS-Cluster beschreibt

  • Remote-Schreiben in den Workspace von Amazon Managed Prometheus

Wenn AmazonManagedScraperRole bereits vorhanden ist, verwendet der Scraper diese Rolle. Wählen Sie den AmazonManagedScraperRole-Link aus, um die Berechtigungsdetails anzuzeigen. Falls AmazonManagedScraperRole noch nicht vorhanden ist, wählen Sie den Link Berechtigungsdetails anzeigen aus, um die spezifischen Berechtigungen zu sehen, die Sie durch das Senden von Prometheus-Metriken gewähren.

Subnetze

Sehen Sie sich die Subnetze an, die der Scraper übernimmt. Wenn Sie sie ändern müssen, kehren Sie zum Schritt Netzwerk angeben der Cluster-Erstellung zurück.

Sicherheitsgruppen

Sehen Sie sich die Sicherheitsgruppen an, die der Scraper übernimmt. Wenn Sie sie ändern müssen, kehren Sie zum Schritt Netzwerk angeben der Cluster-Erstellung zurück.

Scraper-Konfiguration

Ändern Sie die Scraper-Konfiguration nach Bedarf im YAML-Format. Verwenden Sie dazu das Formular oder laden Sie eine YAML-Ersatzdatei hoch. Weitere Informationen finden Sie unter Scraper-Konfiguration im Benutzerhandbuch von Amazon Managed Service für Prometheus.

Amazon Managed Service für Prometheus bezieht sich auf den agentenlosen Scraper, der zusammen mit dem Cluster als verwalteter AWS -Sammler erstellt wird. Weitere Informationen zu AWS verwalteten Kollektoren finden Sie unter AWS Von verwaltete Kollektoren im Benutzerhandbuch zu Amazon Managed Service for Prometheus.

Wichtig

Sie müssen Ihre aws-auth ConfigMap so einrichten, dass der Scraper Cluster-interne Berechtigungen erhält. Weitere Informationen finden Sie unter Konfigurieren Ihres Amazon-EKS-Clusters im Benutzerhandbuch von Amazon Managed Service für Prometheus.

Anzeigen von Prometheus-Scraper-Details

Nachdem Sie einen Cluster erstellt haben, bei dem Prometheus-Metriken aktiviert sind, können Sie Ihre Prometheus-Scraper-Details anzeigen. Wenn Sie Ihren Cluster in der anzeigen AWS Management Console, wählen Sie die Registerkarte Beobachtbarkeit. Eine Tabelle zeigt eine Liste der Scraper für den Cluster, einschließlich Informationen wie Scraper-ID, Alias, Status und Erstellungsdatum.

Um weitere Details zum Scraper anzuzeigen, wählen Sie einen Scraper-ID-Link aus. Beispielsweise können Sie die Scraper-Konfiguration, den Amazon-Ressourcennamen (ARN), die Remote-Schreib-URL und Netzwerkinformationen anzeigen. Sie können die Scraper-ID als Eingabe für Operationen in der Amazon-Managed-Service-für-Prometheus-API wie DescribeScraper und DeleteScraper verwenden. Sie können die API auch zum Erstellen weiterer Scraper verwenden.

Weitere Informationen zur Verwendung der Prometheus-API finden Sie in der API-Referenz zu Amazon Managed Service für Prometheus.

Bereitstellen von Prometheus mit Helm

Alternativ können Sie Prometheus mit Helm V3 in Ihrem Cluster bereitstellen. Wenn Sie Helm bereits installiert haben, können Sie Ihre Version mit dem Befehl helm version überprüfen. Helm ist ein Paketmanager für Kubernetes-Cluster. Weitere Informationen zu Helm und zur Installation finden Sie unter Verwendung von Helm mit Amazon EKS.

Nachdem Sie Helm für Ihren Amazon-EKS-Cluster konfiguriert haben, können Sie es verwenden, um Prometheus mit den folgenden Schritten bereitzustellen.

Prometheus stellen Sie mit Helm wie folgt bereit:
  1. Erstellen Sie einen Prometheus-Namespace.

    kubectl create namespace prometheus
  2. Fügen Sie das prometheus-community-Diagramm-Repository hinzu.

    helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
  3. Stellen Sie Prometheus bereit.

    helm upgrade -i prometheus prometheus-community/prometheus \ --namespace prometheus \ --set alertmanager.persistentVolume.storageClass="gp2",server.persistentVolume.storageClass="gp2"
    Anmerkung

    Wenn Sie bei der Ausführung dieses Befehls die Fehlermeldung Error: failed to download "stable/prometheus" (hint: running `helm repo update` may help) erhalten, führen Sie helm repo update prometheus-community aus, und versuchen Sie dann erneut, den Befehl aus Schritt 2 auszuführen.

    Wenn Sie die Fehlermeldung Error: rendered manifests contain a resource that already exists erhalten, führen Sie helm uninstall your-release-name -n namespace aus, und versuchen Sie dann, den Befehl aus Schritt 3 erneut auszuführen.

  4. Stellen Sie sicher, dass alle Pods im prometheus-Namespace den Status READY haben.

    kubectl get pods -n prometheus

    Eine Beispielausgabe sieht wie folgt aus.

    NAME READY STATUS RESTARTS AGE prometheus-alertmanager-59b4c8c744-r7bgp 1/2 Running 0 48s prometheus-kube-state-metrics-7cfd87cf99-jkz2f 1/1 Running 0 48s prometheus-node-exporter-jcjqz 1/1 Running 0 48s prometheus-node-exporter-jxv2h 1/1 Running 0 48s prometheus-node-exporter-vbdks 1/1 Running 0 48s prometheus-pushgateway-76c444b68c-82tnw 1/1 Running 0 48s prometheus-server-775957f748-mmht9 1/2 Running 0 48s
  5. Verwenden Sie kubectl, um die Prometheus-Konsole auf Ihren lokalen Computer weiterzuleiten.

    kubectl --namespace=prometheus port-forward deploy/prometheus-server 9090
  6. Richten Sie einen Webbrowser auf http://localhost:9090, um die Prometheus-Konsole anzuzeigen.

  7. Wählen Sie eine Metrik aus dem Menü - insert metric at cursor (Metrik bei Cursor eingeben) und danach Execute (Ausführen). Wählen Sie die Registerkarte Graph (Diagramm) aus, um die Metrik im Zeitverlauf anzuzeigen. Das folgende Image zeigt container_memory_usage_bytes im Zeitverlauf.

    
                        Prometheus-Metriken
  8. Wählen Sie in der oberen Navigationsleiste Status, dann Targets (Ziele).

    
                        Prometheus-Konsole

    Es werden alle Kubernetes-Endpunkte angezeigt, die über die Service-Erkennung mit Prometheus verbunden sind.

Anzeigen von Rohmetriken der Steuerebene

Als Alternative zur Bereitstellung von Prometheus gibt der Kubernetes-API-Server eine Reihe von Metriken frei, die in einem Prometheus-Format dargestellt werden. Diese Metriken sind für die Überwachung und Analyse hilfreich. Sie werden intern durch einen Metrikendpunkt freigegeben, der die /metrics-HTTP-API referenziert. Wie andere Endpunkte wird auch dieser Endpunkt über die Amazon-EKS-Steuerebene exponiert. Dieser Endpunkt ist in erster Linie nützlich, um sich eine bestimmte Metrik anzusehen. Um Metriken im Laufe der Zeit zu analysieren, empfehlen wir die Bereitstellung von Prometheus.

Um die Ausgabe der Rohmetriken anzuzeigen, verwenden Sie kubectl mit dem Flag --raw. Mit diesem Befehl können Sie einen beliebigen HTTP-Pfad übergeben und die Rohantwort zurückgeben.

kubectl get --raw /metrics

Eine Beispielausgabe sieht wie folgt aus.

[...]
# HELP rest_client_requests_total Number of HTTP requests, partitioned by status code, method, and host.
# TYPE rest_client_requests_total counter
rest_client_requests_total{code="200",host="127.0.0.1:21362",method="POST"} 4994
rest_client_requests_total{code="200",host="127.0.0.1:443",method="DELETE"} 1
rest_client_requests_total{code="200",host="127.0.0.1:443",method="GET"} 1.326086e+06
rest_client_requests_total{code="200",host="127.0.0.1:443",method="PUT"} 862173
rest_client_requests_total{code="404",host="127.0.0.1:443",method="GET"} 2
rest_client_requests_total{code="409",host="127.0.0.1:443",method="POST"} 3
rest_client_requests_total{code="409",host="127.0.0.1:443",method="PUT"} 8
# HELP ssh_tunnel_open_count Counter of ssh tunnel total open attempts
# TYPE ssh_tunnel_open_count counter
ssh_tunnel_open_count 0
# HELP ssh_tunnel_open_fail_count Counter of ssh tunnel failed open attempts
# TYPE ssh_tunnel_open_fail_count counter
ssh_tunnel_open_fail_count 0

Diese Rohausgabe zeigt exakt das, was der API-Server bereitstellt. Die verschiedenen Metriken werden zeilenweise aufgelistet, wobei jede Zeile einen Metriknamen, Tags und einen Wert enthält.

metric_name{"tag"="value"[,...]}
            value