Steuerebene-Metriken mit Prometheus - Amazon EKS

Steuerebene-Metriken mit Prometheus

Der Kubernetes-API-Server stellt eine Reihe von Metriken zur Verfügung, die für die Überwachung und Analyse hilfreich sind. Diese Metriken werden intern durch einen Metriken-Endpunkt exponiert, der die /metrics-HTTP-API verwendet. Wie andere Endpunkte wird auch dieser Endpunkt über die Amazon-EKS-Steuerebene exponiert. In diesem Thema werden einige der Möglichkeiten erläutert, über die Sie diesen Endpunkt zur Anzeige und Analyse der Aktivitäten Ihres Clusters nutzen können.

Anzeigen der Rohmetriken

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

Die Beispielausgabe lautet wie folgt.

... # 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 Metriken werden in einem Prometheus-Format dargestellt. Dieses Format ermöglicht es dem API-Server, verschiedene Metriken nach Zeilen aufgeschlüsselt darzustellen. Jede Zeile enthält einen Metriknamen, Tags und einen Wert.

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

Dieser Endpunkt ist bei der Suche nach einer bestimmten Metrik hilfreich. In der Regel möchten Sie diese Metriken jedoch über einen bestimmten Zeitraum analysieren. Dazu können Sie Prometheus in Ihrem Cluster bereitstellen. Prometheus ist eine Überwachungs- und Zeitreihendatenbank, die exponierte Endpunkte entfernt und Daten aggregiert, sodass Sie die Ergebnisse filtern, grafisch darstellen und abfragen können.

Bereitstellung von Prometheus

Dieses Thema hilft Ihnen, Prometheus mit Helm V3 in Ihrem Cluster bereitzustellen. Wenn Sie Helm bereits installiert haben, können Sie Ihre Version mit dem helm version-Befehl ü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 damit die folgenden Schritte ausführen, um Prometheus bereitzustellen.

So stellen Sie Prometheus mit Helm 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 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

    Die Beispielausgabe lautet wie folgt.

    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. Rufen Sie in einem Webbrowser localhost:9090 auf, 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 Bild 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.

Speichern Sie Ihre Prometheus-Metriken in Amazon Managed Service for Prometheus

Amazon Managed Service for Prometheus ist ein Prometheus-kompatibler Überwachungs- und Warndienst, der es einfach macht, containerisierte Anwendungen und Infrastruktur im großen Maßstab zu überwachen. 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-Sicherheits-Services 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 finden Sie unter Erste Schritte mit Amazon Managed Service for Prometheus.