Steuerebenenmetriken mit Prometheus - Amazon EKS

Steuerebenenmetriken 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 dargestellt, der die /metrics-HTTP-API verwendet. Wie andere Endpunkte wird auch dieser Endpunkt über die -Steuerebene abgebildet. 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

Beispielausgabe:

... # 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 einsetzen. 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 -Cluster konfiguriert haben, können Sie über die folgenden Schritte mit Helm Prometheus bereitstellen.

So stellen Sie Prometheus mit Helm bereit:

  1. Erstellen Sie einen Prometheus-Namespace.

    kubectl create namespace prometheus
  2. Hinzufügen des sprometheus-communityDiagramm-Repository.

    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 den FehlerError: failed to download "stable/prometheus" (hint: running `helm repo update` may help)Wenn Sie diesen Befehl ausführen, führen Siehelm repo update, und versuchen Sie dann erneut, den Befehl Schritt 2 auszuführen.

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

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

    kubectl get pods -n prometheus

    Ausgabe:

    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 aus und wählen Sie dann Execute aus. Wählen Sie die Registerkarte Graph 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 aus.

    
                        Prometheus-Konsole

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