In diesem Dokument wird beschrieben, wie Sie Google Cloud Managed Service for Prometheus konfigurieren, um bestimmte Kubernetes-Messwerte aus Google Kubernetes Engine-Clustern (GKE) und -Arbeitslasten zu filtern und zu erfassen.
Sie sollten bereits mit Folgendem vertraut sein:
Messwerterfassung in GKE
Systemkomponenten in GKE-Clustern geben Prometheus-Messwerte aus und stellen sie zur Verfügung. Standardmäßig werden in allen Clustern Systemmesswerte erfasst, die speziell für GKE gelten. Zusätzliche integrierte Messwertpakete sind verfügbar, um kuratierte Sammlungen von Messwerten für verschiedene Komponenten zu erfassen.
Unabhängig von den integrierten GKE-Messwertpaketen können Sie Google Cloud Managed Service for Prometheus manuell so konfigurieren, dass bestimmte Prometheus-Messwerte aufgenommen werden. Diese benutzerdefinierte Konfiguration eignet sich gut für Anwendungsfälle wie die folgenden:
- Überwachen Sie bestimmte Signale in Ihrem Cluster und Ihren Arbeitslasten.
- Sie können die Kosten optimieren, indem Sie Messwertpakete deaktivieren, die Sie nicht benötigen, und nur eine Teilmenge von Messwerten erfassen.
- Messwerte erfassen, die von Komponenten ausgegeben werden, aber nicht in einem Messwertepaket enthalten sind.
Für Operatoren sind möglicherweise Knotenmesswerte nützlich, die vom kubelet-Prozess auf jedem Knoten ausgegeben werden, um Arbeitslasten und Knoten auf bestimmte Signale zu überwachen.
Benutzerdefinierte Ressourcen für die Messwerterfassung
Wenn Sie einen bestimmten Messwert filtern und aufnehmen möchten, konfigurieren Sie Prometheus-Regeln für das Neuzuweisen von Labels in einer der folgenden benutzerdefinierten Ressourcen:
PodMonitoring: Konfigurieren Sie die Messwerterfassung von Pods in einem bestimmten Namespace.ClusterPodMonitoring: Konfigurieren Sie die Erfassung von Messwerten aus Pods in einem beliebigen Namespace.ClusterNodeMonitoring: Konfigurieren Sie die Erfassung von Messwerten von Knotenkomponenten wiekubeletund cAdvisor.
Duplizierte Messwerte
Wenn Sie nach einem Messwert filtern, der auch in einem aktiven Messwertpaket für einen Cluster enthalten ist, wird der Messwert mehrmals in Google Cloud Managed Service for Prometheus angezeigt. Wenn in Ihrem Cluster beispielsweise das Messwertpaket KUBELET aktiviert ist und Sie die Erfassung des Messwerts kubelet_running_containers konfigurieren, werden doppelte Werte angezeigt.
Prüfen Sie, ob die von Ihnen erfassten Messwerte nicht in einem der aktiven Messwertpakete enthalten sind, um Duplikate zu vermeiden. Weitere Informationen zu den enthaltenen Messwerten finden Sie in den folgenden Messwertpaketen:
- GKE-Systemmesswerte
- Messwerte der Steuerungsebene
- Kubernetes-Objektstatusmesswerte
- cAdvisor- und
kubelet-Messwerte - NVIDIA DCGM-Messwerte
Hinweis
Führen Sie die folgenden Aufgaben aus, bevor Sie beginnen:
- Aktivieren Sie die Google Kubernetes Engine API. Google Kubernetes Engine API aktivieren
- Wenn Sie die Google Cloud CLI für diese Aufgabe verwenden möchten, müssen Sie die gcloud CLI installieren und dann initialisieren. Wenn Sie die gcloud CLI bereits installiert haben, rufen Sie die neueste Version mit dem Befehl
gcloud components updateab. Ältere gcloud CLI-Versionen unterstützen möglicherweise nicht die Ausführung der Befehle in diesem Dokument.
- Prüfen Sie, ob Sie die Berechtigungen haben, die für dieses Dokument erforderlich sind.
- Verwenden Sie einen vorhandenen GKE-Cluster oder erstellen Sie einen neuen Cluster.
Erforderliche Rollen
Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen für das Projekt zuzuweisen, damit Sie die nötigen Berechtigungen zum Erheben und Aufrufen von Messwerten haben:
-
Kubernetes-Ressourcen in Ihrem Cluster erstellen:
Kubernetes Engine-Entwickler (
roles/container.developer) -
Messwerte in Monitoring ansehen:
Monitoring-Betrachter (
roles/monitoring.viewer)
Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.
Sie können die erforderlichen Berechtigungen auch über benutzerdefinierte Rollen oder andere vordefinierte Rollen erhalten.
Google Cloud Managed Service for Prometheus aktivieren
Google Cloud Managed Service for Prometheus ist in allen GKE-Clustern standardmäßig aktiviert und kann in Autopilot-Clustern nicht deaktiviert werden. Wenn Sie einen Autopilot-Cluster verwenden, fahren Sie mit dem Abschnitt Messwerterfassung konfigurieren fort.
Wählen Sie eine der folgenden Optionen aus, um zu prüfen, ob Google Cloud Managed Service for Prometheus in Ihrem Standardcluster aktiviert ist:
Console
Rufen Sie in der Google Cloud Console die Seite Kubernetes-Cluster auf.
Klicken Sie in der Zeile für den Cluster, den Sie prüfen möchten, auf Aktionen > Bearbeiten. Die Seite Clusterdetails wird geöffnet.
Prüfen Sie im Abschnitt Features den Wert im Feld Managed Service for Prometheus. Wenn der Wert Aktiviert ist, fahren Sie mit dem Abschnitt Messwerterfassung konfigurieren fort. Wenn der Wert Deaktiviert lautet, aktivieren Sie Google Cloud Managed Service for Prometheus:
- Klicken Sie auf Managed Service for Prometheus bearbeiten. Das Dialogfeld Managed Service for Prometheus bearbeiten wird geöffnet.
- Klicken Sie auf das Kästchen Managed Service for Prometheus aktivieren.
- Klicken Sie auf Änderungen speichern.
gcloud
Prüfen Sie, ob Google Cloud Managed Service for Prometheus im Cluster aktiviert ist:
gcloud container clusters describe CLUSTER_NAME \
--location=CONTROL_PLANE_LOCATION \
--format='value(monitoringConfig.managedPrometheusConfig.enabled)'
Ersetzen Sie Folgendes:
CLUSTER_NAME: Der Name Ihres Standardclusters.CONTROL_PLANE_LOCATION: Die Region oder Zone der Cluster-Steuerungsebene, z. B.us-central1oderus-central1-a.
Wenn die Ausgabe True ist, ist Google Cloud Managed Service for Prometheus aktiviert.
Wenn die Ausgabe False ist, aktivieren Sie Google Cloud Managed Service for Prometheus:
gcloud container clusters update CLUSTER_NAME \
--location=CONTROL_PLANE_LOCATION \
--enable-managed-prometheus
Messwerterfassung konfigurieren
Wenn Sie Google Cloud Managed Service for Prometheus so konfigurieren möchten, dass ein bestimmter ausgegebener Messwert aufgenommen wird, benötigen Sie die folgenden Informationen zum Messwert:
- Der Name des Messwerts, z. B.
kubelet_working_pods. - Der Endpunkt, der den Messwert bereitstellt, z. B.
/metrics/cadvisoroder/metrics.
So finden Sie Messwerte und konfigurieren die Erfassung:
Suchen Sie in der Referenzdokumentation für die jeweilige Komponente nach einem Messwert. Sie können beispielsweise die folgenden Ressourcen verwenden, um einen Knotenmesswert zu finden:
Aktive Messwertpakete für den Cluster prüfen:
gcloud container clusters describe CLUSTER_NAME \ --location=CONTROL_PLANE_LOCATION \ --flatten=monitoringConfig.componentConfig \ --format='value(enableComponents)'Die Ausgabe sieht etwa so aus:
SYSTEM_COMPONENTS;STORAGE;POD;DEPLOYMENT;STATEFULSET;DAEMONSET;HPA;JOBSET;CADVISOR;KUBELET;DCGMPrüfen Sie anhand der Informationen unter Verfügbare Messwerte, ob der Messwert, den Sie erfassen möchten, in einem dieser aktiven Pakete enthalten ist. Wenn Ihr Messwert in einem aktiven Messwertpaket enthalten ist, werden möglicherweise doppelte Messwerte in Monitoring angezeigt. Wenn sich Ihre Messwerte nicht in einem aktiven Messwertepaket befinden, fahren Sie mit dem nächsten Schritt fort.
Optional: Wenn Sie prüfen möchten, ob der Messwert am Messwertendpunkt verfügbar ist, fragen Sie den Endpunkt mit dem Befehl
kubectl get --rawab. Mit dem folgenden Befehl wird beispielsweise der/metrics-Endpunkt für den Messwertkubelet_working_podsabgefragt:kubectl get --raw "/api/v1/nodes/NODE_NAME/proxy/metrics" | grep "kubelet_working_pods"Ersetzen Sie
NODE_NAMEdurch den Namen des abzufragenden Knotens.Die Ausgabe sieht in etwa so aus. Das bedeutet, dass die Messwert verfügbar ist:
# HELP kubelet_working_pods [ALPHA] Number of pods the kubelet is actually running, broken down by lifecycle phase, whether the pod is desired, orphaned, or runtime only (also orphaned), and whether the pod is static. An orphaned pod has been removed from local configuration or force deleted in the API and consumes resources that are not otherwise visible. # TYPE kubelet_working_pods gauge kubelet_working_pods{config="desired",lifecycle="sync",static=""} 8 kubelet_working_pods{config="desired",lifecycle="sync",static="true"} 1 kubelet_working_pods{config="desired",lifecycle="terminated",static=""} 0 kubelet_working_pods{config="desired",lifecycle="terminated",static="true"} 0 kubelet_working_pods{config="desired",lifecycle="terminating",static=""} 0 kubelet_working_pods{config="desired",lifecycle="terminating",static="true"} 0Nachdem Sie den Messwert identifiziert haben, den Sie erfassen möchten, verwenden Sie eine Prometheus-Regel zur Neukennzeichnung in einer benutzerdefinierten PodMonitoring-, ClusterPodMonitoring- oder ClusterNodeMonitoring-Ressource, um nach diesem Messwert zu filtern. Die benutzerdefinierte Ressource, die Sie verwenden, hängt von den Eigenschaften des Messwerts ab, wie im Abschnitt Benutzerdefinierte Ressourcen für die Messwerterfassung beschrieben.
Sehen Sie sich beispielsweise das folgende ClusterNodeMonitoring-Manifest an:
apiVersion: monitoring.googleapis.com/v1 kind: ClusterNodeMonitoring metadata: name: kubelet-pod-counts spec: selector: matchLabels: {} endpoints: - path: "/metrics" scheme: "https" interval: "30s" tls: insecureSkipVerify: true # metricRelabeling specifies the metrics to ingest. The metrics must be # available at the specified endpoint. metricRelabeling: - action: keep sourceLabels: [__name__] regex: kubelet_(active|working)_podsDieses Manifest hat folgende Attribute:
- Das Feld
selector.matchLabelsist ein leerer Satz ({}), der mit allen Knoten übereinstimmt. - Das Feld
endpoints.pathgibt den zu erfassenden Messwert-Endpunkt an. - Im Feld
metricRelabelingwerden die zu erfassenden Messwerte angegeben. In diesem Beispiel erfasst Google Cloud Managed Service for Prometheus Messwerte mit den Namenkubelet_active_podsundkubelet_working_podsvom Endpunkt.
- Das Feld
Wenn Sie die benutzerdefinierte Ressource bereitstellen, nimmt Google Cloud Managed Service for Prometheus Messwerte auf, die Ihrer angegebenen Konfiguration entsprechen. Sie können diese Messwerte mit denselben Methoden aufrufen und abfragen, die Sie für andere Messwerte verwenden, z. B. Cloud Monitoring.
Messwerterfassung für einen Beispielmesswert prüfen
In den folgenden Schritten wird beschrieben, wie Sie Google Cloud Managed Service for Prometheus so konfigurieren, dass der Messwert kubelet_runtime_operations_errors_total aus kubelet erfasst wird.
In diesen Beispielschritten prüfen Sie, ob der Messwert derzeit erfasst wird, erstellen ein ClusterNodeMonitoring-Objekt (da kubelet eine Knotenkomponente ist) und prüfen dann, ob der Messwert in Monitoring angezeigt wird.
Prüfen Sie, ob der Messwert
kubelet_runtime_operations_errors_totalnicht bereits in Monitoring vorhanden ist:Wechseln Sie in der Google Cloud Console zur Seite Metrics Explorer.
Versuchen Sie, im Abschnitt Abfragen im Feld Messwert den Messwert
prometheus/kubelet_runtime_operations_errors_total/counterauszuwählen. Wenn Sie kein Suchergebnis sehen, wird der Messwert nicht erfasst.
Erstellen Sie ein ClusterNodeMonitoring, um nach dem Messwert
kubelet_runtime_operations_errors_totalzu filtern:Speichern Sie das folgende ClusterNodeMonitoring-Manifest als
kubelet-runtime-errors-collector.yaml:apiVersion: monitoring.googleapis.com/v1 kind: ClusterNodeMonitoring metadata: name: kubelet-runtime-errors-collector spec: selector: matchLabels: {} endpoints: - path: /metrics scheme: https interval: 30s tls: insecureSkipVerify: true metricRelabeling: - action: keep sourceLabels: [__name__] regex: kubelet_runtime_operations_errors_totalErstellen Sie das ClusterNodeMonitoring:
kubectl apply -f kubelet-runtime-errors-collector.yaml
Es kann bis zu 10 Minuten dauern, bis der Messwert im Monitoring angezeigt wird.
Prüfen Sie in der Google Cloud Console, ob der Messwert im Monitoring angezeigt wird:
Rufen Sie die Seite Metrics Explorer auf.
Wählen Sie im Bereich Abfragen im Feld Messwert den Messwert
prometheus/kubelet_runtime_operations_errors_total/counteraus.Optional: Wählen Sie im Drop-down-Menü Filter Ihren Cluster aus.
Im Abschnitt Ergebnisse wird ein Diagramm mit dem erfassten Messwert angezeigt.
Nächste Schritte
- Verfügbare Messwertpakete in GKE ansehen
- Automatische Anwendungsüberwachung für Arbeitslasten konfigurieren
- Benutzerdefinierte Monitoring-Dashboards erstellen und verwalten