Auf dieser Seite wird beschrieben, wie Sie einen GKE-Cluster (Google Kubernetes Engine) so konfigurieren, dass eine Gruppe ausgewählter Kube State-Messwerte, einschließlich Messwerten für Pods und Deployments, an Cloud Monitoring mit Google Cloud Managed Service for Prometheus gesendet wird. Auf dieser Seite wird auch beschrieben, wie diese Messwerte formatiert werden, wenn sie in Monitoring geschrieben und abgefragt werden.
Hinweise
Führen Sie die folgenden Schritte durch, 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
gcloud components update
ab.
Voraussetzungen
Zum Erfassen von Kube State Metrics muss Ihr GKE-Cluster die folgenden Anforderungen erfüllen:
- Auf dem Cluster muss GKE 1.27.2-gke.1200 oder höher ausgeführt werden. Für GKE-Standardcluster ab Version 1.29.2-gke.2000 und GKE Autopilot-Cluster ab Version 1.27.4-gke.900 ist das Kube-Statusmesswerte-Paket standardmäßig aktiviert.
- Für den Cluster müssen Systemmesswerte aktiviert sein.
- Im Cluster muss die von Google Cloud Managed Service for Prometheus-verwaltete Erfassung aktiviert sein. Die von Google Cloud Managed Service for Prometheus verwaltete Sammlung ist für neue Cluster standardmäßig aktiviert.
Erfassung von Kube State Metrics konfigurieren
Sie können Kube State Metrics mit der Google Cloud Console, der gcloud CLI oder Terraform aktivieren:
Console
Sie können Kube State Metrics auf dem Tab Beobachtbarkeit entweder für einen Cluster oder ein Deployment innerhalb eines Clusters aktivieren. Sie können sich auch eine Vorschau der verfügbaren Diagramme und Messwerte ansehen, bevor Sie das Messwertpaket aktivieren.
Auf dem Tab Beobachtbarkeit für einen Cluster können Sie die Diagramme für Kube State Metrics nach den folgenden beiden Elementen filtern:
- Arbeitslaststatus: Enthält die Messwerte für Pods, Deployments, StatefulSets, DaemonSets und HorizontalPodAutoscaler-Ressourcen.
- Speicher > Nichtflüchtig: Enthält die Messwerte für PersistentVolumes und Ansprüche auf nichtflüchtige Volumes.
Sie können einen oder beide Messwertsätze aktivieren.
So aktivieren Sie Kube State Metrics auf dem Tab Beobachtbarkeit für einen Cluster:
-
Rufen Sie in der Google Cloud Console die Seite mit den Kubernetes-Clustern auf.
Wenn Sie diese Seite über die Suchleiste finden, wählen Sie das Ergebnis aus, dessen Zwischenüberschrift Kubernetes Engine lautet.
Klicken Sie auf den Namen Ihres Clusters und wählen Sie dann den Tab Beobachtbarkeit aus.
Wählen Sie entweder Arbeitslaststatus oder Speicher > Nichtflüchtig aus der Liste der Features aus.
Klicken Sie auf Paket aktivieren.
Wenn Kube State Metrics bereits aktiviert ist, werden stattdessen eine Reihe von Diagrammen für Kube State Metrics angezeigt.
So aktivieren Sie Kube State Metrics auf dem Tab Beobachtbarkeit für ein Deployment:
-
Rufen Sie in der Google Cloud Console die Seite Arbeitslasten auf:
Wenn Sie diese Seite über die Suchleiste finden, wählen Sie das Ergebnis aus, dessen Zwischenüberschrift Kubernetes Engine lautet.
Klicken Sie auf den Namen Ihrer Bereitstellung und wählen Sie dann den Tab Beobachtbarkeit aus.
Wählen Sie in der Liste der Funktionen Kube State aus.
Klicken Sie auf Paket aktivieren. Das Paket ist für den gesamten Cluster aktiviert.
Wenn Kube State Metrics bereits aktiviert ist, werden stattdessen eine Reihe von Diagrammen für Messwerte von Pods, Deployments und horizontalen Pod-Autoscalings angezeigt.
So konfigurieren Sie Kube State Metrics auf dem Tab Details für den Cluster:
-
Rufen Sie in der Google Cloud Console die Seite mit den Kubernetes-Clustern auf.
Wenn Sie diese Seite über die Suchleiste finden, wählen Sie das Ergebnis aus, dessen Zwischenüberschrift Kubernetes Engine lautet.
Klicken Sie auf den Namen Ihres Clusters.
Klicken Sie in der Zeile Funktionen mit der Bezeichnung Cloud Monitoring auf das Symbol Bearbeiten.
Prüfen Sie im angezeigten Dialogfeld Cloud Monitoring bearbeiten, ob Cloud Monitoring aktivieren ausgewählt ist.
Wählen Sie im Drop-down-Menü Komponenten die Kubernetes-Statuskomponenten aus, für die Sie Messwerte erfassen möchten.
Klicken Sie auf OK.
Klicken Sie auf Änderungen speichern.
gcloud
Aktualisieren Sie Ihren Cluster, um Messwerte zu erfassen:
gcloud container clusters update CLUSTER_NAME \
--location=COMPUTE_LOCATION \
--enable-managed-prometheus \
--monitoring=SYSTEM,DAEMONSET,DEPLOYMENT,HPA,POD,STATEFULSET,STORAGE
Ersetzen Sie Folgendes:
CLUSTER_NAME
den Namen des vorhandenen Clusters.COMPUTE_LOCATION
: der Compute Engine-Standort des Clusters.
Die für das Flag monitoring
angegebenen Werte überschreiben alle vorherigen Einstellungen.
Terraform
Informationen zum Konfigurieren der Sammlung von Kube State Metrics mit Terraform finden Sie im Block monitoring_config
in der Terraform-Registry für google_container_cluster
.
Allgemeine Informationen zur Verwendung von Google Cloud mit Terraform finden Sie unter Terraform mit Google Cloud.
Kontingent
Kube State Metrics verbrauchen das Kontingent Zeitachsenaufnahmeanfragen pro Minute der Cloud Monitoring API. Bevor Sie Kube State Metrics aktivieren, prüfen Sie die letzte Spitzennutzung dieses Kontingents. Wenn sich viele Cluster im selben Projekt befinden oder sich dem Limit dieses Kontingents nähern, können Sie eine Erhöhung des Kontingentlimits beantragen, bevor Sie ein Beobachtbarkeitspaket aktivieren.
Preise
Kube State Metrics verwenden Google Cloud Managed Service for Prometheus, um Messwerte in Cloud Monitoring zu laden. In Cloud Monitoring fallen Gebühren für die Aufnahme dieser Messwerte basierend auf der Anzahl der aufgenommenen Stichproben an. Für registrierte Cluster, die zu einem Projekt gehören, bei denen GKE Enterprise-Edition aktiviert ist, fallen keine Kosten an.
Weitere Informationen finden Sie unter Cloud Monitoring-Preise.
Messwertformat
Alle in Cloud Monitoring geschriebenen Kube State Metrics von Kubernetes verwenden den Ressourcentyp
prometheus_target
.
Jeder Messwertname hat das Präfix prometheus.googleapis.com/
und ein Suffix, das den Prometheus-Messwerttyp angibt, z. B. /gauge
, /histogram
oder /counter
. Andernfalls ist jeder Messwertname mit dem Messwert von Open-Source-Kubernetes identisch.
Aus Cloud Monitoring exportieren
Die Kube State Metrics können mithilfe der Cloud Monitoring API aus Cloud Monitoring exportiert werden. Da alle Kube State Metrics mithilfe von Google Cloud Managed Service for Prometheus aufgenommen werden, können Kube State Metrics mit der Prometheus-Abfragesprache (PromQL) abgefragt werden. Eine Abfrage ist auch mit Monitoring Query Language (MQL) möglich.
Messwerte abfragen
Wenn Sie Kube State Metrics abfragen, hängt der Name davon ab, ob Sie PromQL- oder Cloud Monitoring-basierte Features wie MQL oder die menügesteuerte Oberfläche des Metrics Explorer verwenden.
Die folgenden Tabellen der Kube State Metrics zeigen zwei Versionen jedes Messwertnamens:
- PromQL-Messwertname: Bei der Verwendung von PromQL auf Cloud Monitoring-Seiten der Google Cloud Console oder in PromQL-Feldern des Cloud Monitoring API verwenden Sie den PromQL-Messwertnamen.
- Name des Cloud Monitoring-Messwerts: Verwenden Sie in den folgenden Tabellen den Cloud Monitoring-Messwertnamen, wenn Sie andere Cloud Monitoring-Features verwenden. Dieser Name muss das Präfix
prometheus.googleapis.com/
haben, das in den Einträgen der Tabelle weggelassen wurde.
Speichermesswerte
Die Cloud Monitoring-Messwertnamen in dieser Tabelle müssen das Präfix prometheus.googleapis.com/
haben. Dieses Präfix wurde in den Einträgen der Tabelle weggelassen.
PromQL-Messwertname Cloud Monitoring-Messwertname |
|
---|---|
Art, Typ, Einheit
Überwachte Ressourcen Erforderliche GKE-Version |
Beschreibung Labels |
kube_persistentvolume_capacity_bytes kube_persistentvolume_capacity_bytes/gauge
|
|
GAUGE , DOUBLE , By
prometheus_target 1.27.2-gke.1200 |
Kapazität von Persistentvolume in Byte.
Alle 30 Sekunden wird eine Stichprobe erstellt.persistentvolume : persistentvolume.
|
kube_persistentvolume_claim_ref kube_persistentvolume_claim_ref/gauge
|
|
GAUGE , DOUBLE , 1
prometheus_target 1.27.2-gke.1200 |
Informationen zur Referenz zum Anspruch auf nichtflüchtige Volumes.
Alle 30 Sekunden wird eine Stichprobe erstellt.claim_name : claim_name.
name : Name.
persistentvolume : persistentvolume.
|
kube_persistentvolume_info kube_persistentvolume_info/gauge
|
|
GAUGE , DOUBLE , 1
prometheus_target 1.27.2-gke.1200 |
Informationen zum persistentvolume.
Alle 30 Sekunden wird eine Stichprobe erstellt.csi_driver : csi_driver.
csi_volume_handle : csi_volume_handle.
local_fs : local_fs.
local_path : local_path.
persistentvolume : persistentvolume.
storageclass : storageclass.
|
kube_persistentvolume_status_phase kube_persistentvolume_status_phase/gauge
|
|
GAUGE , DOUBLE , 1
prometheus_target 1.27.2-gke.1200 |
Die Phase gibt an, ob ein Volume verfügbar ist, an einen Anspruch gebunden ist oder durch einen Anspruch freigegeben wird.
Alle 30 Sekunden wird eine Stichprobe erstellt.persistentvolume : persistentvolume.
phase : phase.
|
kube_persistentvolumeclaim_info kube_persistentvolumeclaim_info/gauge
|
|
GAUGE , DOUBLE , 1
prometheus_target 1.27.2-gke.1200 |
Informationen zum Anspruch auf nichtflüchtiges Volume.
Alle 30 Sekunden wird eine Stichprobe erstellt.persistentvolumeclaim : persistentvolumeclaim.
storageclass : storageclass.
volumename : volumename.
|
kube_persistentvolumeclaim_resource_requests_storage_bytes kube_persistentvolumeclaim_resource_requests_storage_bytes/gauge
|
|
GAUGE , DOUBLE , By
prometheus_target 1.27.2-gke.1200 |
Die Kapazität des vom Persistent Volume Claim angeforderten Speichers.
Alle 30 Sekunden wird eine Stichprobe erstellt.persistentvolumeclaim : persistentvolumeclaim.
|
kube_persistentvolumeclaim_status_phase kube_persistentvolumeclaim_status_phase/gauge
|
|
GAUGE , DOUBLE , 1
prometheus_target 1.27.2-gke.1200 |
Die Phase, in der sich der Anspruch auf nichtflüchtiges Volume derzeit befindet.
Alle 30 Sekunden wird eine Stichprobe erstellt.persistentvolumeclaim : persistentvolumeclaim.
phase : phase.
|
Weitere Informationen finden Sie unter PersistentVolume-Messwerte und PersistentVolumeClaim-Messwerte.
Pod-Messwerte
Ein Pod ist eine Gruppe von einem oder mehreren Containern mit einer Spezifikation zum Ausführen der Container, die Speicher- und Netzwerkressourcen gemeinsam nutzen.
Tabelle der Pod-Messwerte
Mit den Pod-Messwerten können Sie das Verhalten Ihrer Pods beobachten und melden. Die folgende Tabelle zeigt die im Kube State Metrics-Paket verfügbaren Messwerte:
Die Cloud Monitoring-Messwertnamen in dieser Tabelle müssen das Präfix prometheus.googleapis.com/
haben. Dieses Präfix wurde in den Einträgen der Tabelle weggelassen.
PromQL-Messwertname Cloud Monitoring-Messwertname |
|
---|---|
Art, Typ, Einheit
Überwachte Ressourcen Erforderliche GKE-Version |
Beschreibung Labels |
kube_pod_container_status_ready kube_pod_container_status_ready/gauge
|
|
GAUGE , DOUBLE , 1
prometheus_target 1.27.2-gke.1200 |
Beschreibt, ob die Bereitschaftsprüfung der Container erfolgreich war.
Alle 30 Sekunden wird eine Stichprobe erstellt.container : container.
pod : pod.
uid : uid.
|
kube_pod_container_status_waiting_reason kube_pod_status_container_status_waiting_reason/gauge
|
|
GAUGE , DOUBLE , 1
prometheus_target 1.27.2-gke.1200 |
Beschreibt, warum sich der Container derzeit im Wartestatus befindet.
Alle 30 Sekunden wird eine Stichprobe erstellt.container : container.
pod : pod.
reason : reason.
uid : uid.
|
kube_pod_status_phase kube_pod_status_phase/gauge
|
|
GAUGE , DOUBLE , 1
prometheus_target 1.27.2-gke.1200 |
Die aktuelle Phase der Pods. Alle 30 Sekunden wird eine Stichprobe erstellt.phase : phase.
pod : pod.
uid : uid.
|
kube_pod_status_unschedulable kube_pod_status_unschedulable/gauge
|
|
GAUGE , DOUBLE , 1
prometheus_target 1.27.2-gke.1200 |
Beschreibt den Status „Nicht planbar“ für den Pod.
Alle 30 Sekunden wird eine Stichprobe erstellt.pod : pod.
uid : uid.
|
Weitere Informationen finden Sie unter Pod-Messwerte.
Beispielabfragen für Pod-Messwerte
Mit dem folgenden PromQL-Ausdruck können Sie feststellen, ob nicht planbare Pods vorhanden sind:
sum(kube_pod_status_unschedulable{cluster="CLUSTER", namespace="NAMESPACE"})
Für eine Benachrichtigung bei einer Reihe nicht planbarer Pods in einem Namespace können Sie den folgenden PromQL-Ausdruck verwenden:
sum(kube_pod_status_unschedulable{cluster="CLUSTER", namespace="NAMESPACE"}) > LIMIT
Sie können den Messwert kube_pod_container_status_waiting_reason
verwenden, um eine Benachrichtigung für einen Container zu erstellen, der in einem bestimmten Wartestatus hängen bleibt. Dazu verwenden Sie einen PromQL-Ausdruck wie den folgenden:
max_over_time(kube_pod_container_status_waiting_reason{reason="REASON", cluster="CLUSTER", namespace="NAMESPACE"}[5m]) >= 1
Der Wert von REASON gibt den Wartestatus des Containers an. Beispiel:
CrashLoopBackOff
ImagePullBackOff
ContainerCreating
Verwenden Sie den folgenden PromQL-Ausdruck, um eine Benachrichtigung für einen Container zu erstellen, der in einem der Wartestatus hängen bleibt:
max_over_time(kube_pod_container_status_waiting_reason{cluster="CLUSTER", namespace="NAMESPACE"}[5m]) >= 1
Verwenden Sie den folgenden PromQL-Ausdruck, um festzustellen, wie viele Container die Bereitschaftsprüfungen nicht bestehen:
sum(kube_pod_container_status_ready) by (pod, container) == 0
Einige Abfrage- und Benachrichtigungsausdrücke in diesem Abschnitt wurden aus der Datei kubernetes-apps.yaml
im Repository der Prometheus-Community-Kubernetes-Helm-Diagramme auf GitHub übernommen.
Interaktive Playbooks
Die Kube-Statusmesswerte werden auch in den interaktiven GKE-Playbooks zur Fehlerbehebung von nicht planbaren oder Absturzschleifen-Pods verwendet. Weitere Informationen zu diesen Fehlermodi finden Sie in den folgenden Dokumenten zur Fehlerbehebung:
Wenn das Messwertpaket für Kube-State nicht aktiviert ist, besteht die primäre Möglichkeit zum Erkennen von Problemen mit der Pod-Planung darin, "Fehlgeschlagene Planung"-Protokollereignisse abzufragen. Nachdem Sie das Kube-State-Messwertpaket aktiviert haben, können Sie den kube_pod_status_unschedulable
-Messwert verwenden, der denselben Zweck erfüllt, aber einfacher zu aggregieren und grafisch darzustellen. Anhand des Messwerts können Sie sehen, wie viele Pods nicht planbar sind und wann das Problem begann.
Ebenso können Sie mit dem GKE-Systemmesswert kubernetes.io/container/restart_count
Pods mit Absturzschleifen erkennen. Der Messwert kube_pod_container_status_waiting_reason
listet auch Pods in Absturzschleifen auf und ermöglicht Ihnen außerdem, festzustellen, ob Pods in einem anderen Zustand als CrashLookBackOff
hängen bleiben, z. B. ImagePullBackOff
und ContainerCreating
.
So entdecken Sie die interaktiven Playbooks:
-
Rufen Sie in der Google Cloud Console die Seite Dashboards auf.
Wenn Sie diese Seite über die Suchleiste suchen, wählen Sie das Ergebnis aus, dessen Zwischenüberschrift Monitoring ist.
- Filtern Sie die Dashboard-Liste, indem Sie auf die Kategorie G C P klicken.
- Klicken Sie in der Liste auf den Namen eines "Interaktiven GKE-Playbooks".
Deployment-Messwerte
Ein Deployment ist ein Controller, der den Status von Ressourcen wie Pods aktualisiert, um Ereignisse wie Rollouts und Deaktivierungen zu verwalten.
Tabelle der Deployment-Messwerte
Mit den Deployment-Messwerten können Sie das Verhalten des Controllers überwachen und melden. Die folgende Tabelle zeigt die im Kube State Metrics-Paket verfügbaren Messwerte:
Die Cloud Monitoring-Messwertnamen in dieser Tabelle müssen das Präfix prometheus.googleapis.com/
haben. Dieses Präfix wurde in den Einträgen der Tabelle weggelassen.
PromQL-Messwertname Cloud Monitoring-Messwertname |
|
---|---|
Art, Typ, Einheit
Überwachte Ressourcen Erforderliche GKE-Version |
Beschreibung Labels |
kube_deployment_spec_replicas kube_deployment_spec_replicas/gauge
|
|
GAUGE , DOUBLE , 1
prometheus_target 1.27.2-gke.1200 |
Anzahl der gewünschten Pods für eine Bereitstellung. Alle 30 Sekunden wird eine Stichprobe erstellt.deployment : deployment.
|
kube_deployment_status_replicas_available kube_deployment_status_replicas_available/gauge
|
|
GAUGE , DOUBLE , 1
prometheus_target 1.27.2-gke.1200 |
Die Anzahl der verfügbaren Replikate pro Bereitstellung. Alle 30 Sekunden wird eine Stichprobe erstellt.deployment : deployment.
|
kube_deployment_status_replicas_updated kube_deployment_status_replicas_updated/gauge
|
|
GAUGE , DOUBLE , 1
prometheus_target 1.27.2-gke.1200 |
Die Anzahl der aktualisierten Replikate pro Bereitstellung. Alle 30 Sekunden wird eine Stichprobe erstellt.deployment : deployment.
|
Weitere Informationen finden Sie unter Bereitstellungsmesswerte.
Beispielabfragen für Deployment-Messwerte
Sie können Diagramme und Benachrichtigungsrichtlinien für einzelne Deployments erstellen, indem Sie Deployment-Messwerte nach Cluster, Namespace und Namen des Deployments filtern.
Wenn Sie beispielsweise die Anzahl der verfügbaren Replikate mit der erwarteten Anzahl von Replikaten in einem einzelnen Deployment vergleichen möchten, können Sie die folgenden PromQL-Abfragen verwenden, um beide Messwerte in einem einzelnen Diagramm grafisch darzustellen:
kube_deployment_spec_replicas{cluster="CLUSTER", namespace="NAMESPACE", deployment=DEPLOYMENT"}
kube_deployment_status_replicas_available{cluster="CLUSTER", namespace="NAMESPACE", deployment=DEPLOYMENT"}
Wenn Sie eine Benachrichtigung über ein fehlgeschlagenes oder angehaltenes Deployment senden möchten, können Sie den folgenden PromQL-Ausdruck verwenden:
( kube_deployment_spec_replicas{cluster="CLUSTER", namespace="NAMESPACE", deployment="DEPLOYMENT"} > kube_deployment_status_replicas_available{cluster="CLUSTER", namespace="NAMESPACE", deployment="DEPLOYMENT"} ) and ( changes(kube_deployment_status_replicas_updated{cluster="CLUSTER", namespace="NAMESPACE", deployment="DEPLOYMENT"}[10m]) == 0 )
Einige Abfrage- und Benachrichtigungsausdrücke in diesem Abschnitt wurden aus der Datei kubernetes-apps.yaml
im Repository der Prometheus-Community-Kubernetes-Helm-Diagramme auf GitHub übernommen.
StatefulSet-Messwerte
Ein StatefulSet ist ein Controller, der die Bereitstellung und Skalierung einer Reihe von Pods für zustandsorientierte Anwendungen verwaltet. Mit diesem Controller werden die Reihenfolge und Eindeutigkeit von Pods verwaltet.
Tabelle der StatefulSet-Messwerte
Mit den StatefulSet-Messwerten können Sie das Verhalten des Controllers beobachten und melden. Die folgende Tabelle zeigt die im Kube State Metrics-Paket verfügbaren Messwerte:
Die Cloud Monitoring-Messwertnamen in dieser Tabelle müssen das Präfix prometheus.googleapis.com/
haben. Dieses Präfix wurde in den Einträgen der Tabelle weggelassen.
PromQL-Messwertname Cloud Monitoring-Messwertname |
|
---|---|
Art, Typ, Einheit
Überwachte Ressourcen Erforderliche GKE-Version |
Beschreibung Labels |
kube_statefulset_replicas kube_statefulset_replicas/gauge
|
|
GAUGE , DOUBLE , 1
prometheus_target 1.27.2-gke.1200 |
Anzahl der gewünschten Pods für ein StatefulSet. Alle 30 Sekunden wird eine Stichprobe erstellt.statefulset : statefulset.
|
kube_statefulset_status_replicas_ready kube_statefulset_status_replicas_ready/gauge
|
|
GAUGE , DOUBLE , 1
prometheus_target 1.27.2-gke.1200 |
Die Anzahl der Replikate pro StatefulSet, die bereit sind. Alle 30 Sekunden wird eine Stichprobe erstellt.statefulset : statefulset.
|
kube_statefulset_status_replicas_updated kube_statefulset_status_replicas_updated/gauge
|
|
GAUGE , DOUBLE , 1
prometheus_target 1.27.2-gke.1200 |
Die Anzahl der aktualisierten Replikate pro StatefulSet. Alle 30 Sekunden wird eine Stichprobe erstellt.statefulset : statefulset.
|
Weitere Informationen finden Sie unter StatefulSet-Messwerte.
Beispielabfragen für StatefulSet-Messwerte
Sie können Diagramme und Benachrichtigungsrichtlinien für einzelne StatefulSets erstellen, wenn Sie zustandsorientierte Messwerte nach Cluster, Namespace und Namen des StatefulSets filtern.
Wenn Sie beispielsweise die Anzahl der verfügbaren Replikate mit der erwarteten Anzahl von Replikaten in einem einzelnen StatefulSet vergleichen möchten, können Sie die folgenden PromQL-Abfragen verwenden, um beide Messwerte in einem einzelnen Diagramm grafisch darzustellen.
kube_statefulset_replicas{cluster="CLUSTER", namespace="NAMESPACE", statefulset="STATEFULSET"}
kube_statefulset_status_replicas_ready{cluster="CLUSTER", namespace="NAMESPACE", statefulset="STATEFULSET"}
Wenn Sie eine Benachrichtigung über einen fehlgeschlagenen oder angehaltenen StatefulSet-Rollout senden möchten, können Sie den folgenden PromQL-Ausdruck verwenden:
( kube_statefulset_replicas{cluster="CLUSTER", namespace="NAMESPACE", statefulset="STATEFULSET"} > kube_statefulset_status_replicas_ready{cluster="CLUSTER", namespace="NAMESPACE", statefulset="STATEFULSET"} ) and ( changes(kube_statefulset_status_replicas_updated{cluster="CLUSTER", namespace="NAMESPACE", statefulset="STATEFULSET"}[10m]) == 0 )
Einige Abfrage- und Benachrichtigungsausdrücke in diesem Abschnitt wurden aus der Datei kubernetes-apps.yaml
im Repository der Prometheus-Community-Kubernetes-Helm-Diagramme auf GitHub übernommen.
DaemonSet-Messwerte
Ein DaemonSet ist ein Controller, der dafür sorgt, dass eine Reihe von Knoten eine Kopie eines Pods ausführt. Wenn einem Cluster beispielsweise Knoten hinzugefügt werden, fügt das DaemonSet den Knoten Pods hinzu. Dieser Controller ist nützlich, um dafür zu sorgen, dass bestimmte Prozesse auf jedem Knoten ausgeführt werden.
Tabelle mit DaemonSet-Messwerten
Mit den DaemonSet-Messwerten können Sie das Verhalten des Controllers beobachten und melden. Die folgende Tabelle zeigt die im Kube State Metrics-Paket verfügbaren Messwerte:
Die Cloud Monitoring-Messwertnamen in dieser Tabelle müssen das Präfix prometheus.googleapis.com/
haben. Dieses Präfix wurde in den Einträgen der Tabelle weggelassen.
PromQL-Messwertname Cloud Monitoring-Messwertname |
|
---|---|
Art, Typ, Einheit
Überwachte Ressourcen Erforderliche GKE-Version |
Beschreibung Labels |
kube_daemonset_status_desired_number_scheduled kube_daemonset_status_desired_number_scheduled/gauge
|
|
GAUGE , DOUBLE , 1
prometheus_target 1.27.2-gke.1200 |
Die Anzahl der Knoten, auf denen der Daemon-Pod ausgeführt werden soll.
Alle 30 Sekunden wird eine Stichprobe erstellt.daemonset : daemonset.
|
kube_daemonset_status_number_misscheduled kube_daemonset_status_number_misscheduled/gauge
|
|
GAUGE , DOUBLE , 1
prometheus_target 1.27.2-gke.1200 |
Die Anzahl der Knoten, auf denen ein Daemon-Pod ausgeführt wird, aber nicht ausgeführt werden sollte. Alle 30 Sekunden wird eine Stichprobe erstellt.daemonset : daemonset.
|
kube_daemonset_status_number_ready kube_daemonset_status_number_ready/gauge
|
|
GAUGE , DOUBLE , 1
prometheus_target 1.27.2-gke.1200 |
Die Anzahl der Knoten, auf denen der Daemon-Pod ausgeführt werden soll und auf denen mindestens ein Daemon-Pod ausgeführt werden soll. Alle 30 Sekunden wird eine Stichprobe erstellt.daemonset : daemonset.
|
kube_daemonset_status_updated_number_scheduled kube_daemonset_status_updated_number_scheduled/gauge
|
|
GAUGE , DOUBLE , 1
prometheus_target 1.27.2-gke.1200 |
Die Anzahl der Knoten, auf denen ein aktualisierter Daemon-Pod ausgeführt wird.
Alle 30 Sekunden wird eine Stichprobe erstellt.daemonset : daemonset.
|
Weitere Informationen finden Sie unter DaemonSet-Messwerte.
Beispielabfragen für DaemonSet-Messwerte
Sie können Diagramme und Benachrichtigungsrichtlinien für einzelne DaemonSets erstellen, indem Sie DaemonSet-Messwerte nach Cluster, Namespace und Namen des DaemonSets filtern.
Wenn Sie beispielsweise die Anzahl der verfügbaren Replikate mit der erwarteten Anzahl von Replikaten in einem einzelnen DaemonSet vergleichen möchten, können Sie die folgenden PromQL-Abfragen verwenden, um beide Messwerte in einem einzelnen Diagramm grafisch darzustellen:
kube_daemonset_status_updated_number_scheduled{cluster="CLUSTER", namespace="NAMESPACE", daemonsetset=DAEMONSET"}
kube_daemonset_status_desired_number_scheduled{cluster="CLUSTER", namespace="NAMESPACE", daemonset=DAEMONSET"}
Wenn Sie eine Benachrichtigung über einen fehlgeschlagenen oder angehaltenen DaemonSet-Rollout senden möchten, können Sie den folgenden PromQL-Ausdruck verwenden:
( ( kube_daemonset_status_number_misscheduled{cluster="CLUSTER", namespace="NAMESPACE", daemonset="DAEMONSET"} != 0 ) or ( kube_daemonset_status_updated_number_scheduled{cluster="CLUSTER", namespace="NAMESPACE", daemonset="DAEMONSET"} != kube_daemonset_status_desired_number_scheduled{cluster="CLUSTER", namespace="NAMESPACE", daemonset="DAEMONSET"} ) ) and ( changes(kube_daemonset_status_updated_number_scheduled{cluster="CLUSTER", namespace="NAMESPACE", daemonset="DAEMONSET"}[5m]) == 0 )
Einige Abfrage- und Benachrichtigungsausdrücke in diesem Abschnitt wurden aus der Datei kubernetes-apps.yaml
im Repository der Prometheus-Community-Kubernetes-Helm-Diagramme auf GitHub übernommen.
HorizontalPodAutoscaler-Messwerte
Ein HorizontalPodAutoscaler (HPA) ist ein Controller, der als Reaktion auf einen bestimmten Messwert wie die CPU- oder Arbeitsspeicherauslastung regelmäßig die Anzahl der Pods in einer Arbeitslast ändert, z. B. ein Deployment oder StatefulSet. Wenn Sie die Anzahl der für eine Arbeitslast verfügbaren Pods ändern, bleibt die Arbeitslast reaktionsschnell, aber effizient.
Weitere Informationen zu HPAs finden Sie unter Details zu einem horizontalen Pod-Autoscaling ansehen.
Tabelle der HPA-Messwerte
Mit den HorizontalPodAutoscaler-Messwerten können Sie das Verhalten des Controllers überwachen und melden. Die folgende Tabelle zeigt die im Kube State Metrics-Paket verfügbaren Messwerte:
Die Cloud Monitoring-Messwertnamen in dieser Tabelle müssen das Präfix prometheus.googleapis.com/
haben. Dieses Präfix wurde in den Einträgen der Tabelle weggelassen.
PromQL-Messwertname Cloud Monitoring-Messwertname |
|
---|---|
Art, Typ, Einheit
Überwachte Ressourcen Erforderliche GKE-Version |
Beschreibung Labels |
kube_horizontalpodautoscaler_spec_max_replicas kube_horizontalpodautoscaler_spec_max_replicas/gauge
|
|
GAUGE , DOUBLE , 1
prometheus_target 1.27.2-gke.1200 |
Obergrenze für die Anzahl der Pods, die vom Autoscaling festgelegt werden können. Sie darf nicht kleiner als MinReplicas sein.
Alle 30 Sekunden wird eine Stichprobe erstellt.horizontalpodautoscaler : horizontalpodautoscaler.
|
kube_horizontalpodautoscaler_spec_min_replicas kube_horizontalpodautoscaler_spec_min_replicas/gauge
|
|
GAUGE , DOUBLE , 1
prometheus_target 1.27.2-gke.1200 |
Unteres Limit für die Anzahl der Pods, die vom Autoscaling festgelegt werden können (Standardeinstellung: 1).
Alle 30 Sekunden wird eine Stichprobe erstellt.horizontalpodautoscaler : horizontalpodautoscaler.
|
kube_horizontalpodautoscaler_spec_target_metric kube_horizontalpodautoscaler_spec_target_metric/gauge
|
|
GAUGE , DOUBLE , 1
prometheus_target 1.27.2-gke.1200 |
Die Messwertspezifikationen, die von diesem Autoscaling bei der Berechnung der gewünschten Replikatanzahl verwendet werden.
Alle 30 Sekunden wird eine Stichprobe erstellt.horizontalpodautoscaler : horizontalpodautoscaler.
metric_name : metric_name.
metric_target_type : metric_target_type.
|
kube_horizontalpodautoscaler_status_condition kube_horizontalpodautoscaler_status_condition/gauge
|
|
GAUGE , DOUBLE , 1
prometheus_target 1.27.2-gke.1200 |
Die Bedingung dieses Autoscalings.
Alle 30 Sekunden wird eine Stichprobe erstellt.condition : condition.
horizontalpodautoscaler : horizontalpodautoscaler.
namespace : namespace.
status : status.
|
kube_horizontalpodautoscaler_status_current_replicas kube_horizontalpodautoscaler_status_status_current_replicas/gauge
|
|
GAUGE , DOUBLE , 1
prometheus_target 1.27.2-gke.1200 |
Aktuelle Anzahl der Replikate der Pods, die durch dieses Autoscaling verwaltet werden.
Alle 30 Sekunden wird eine Stichprobe erstellt.horizontalpodautoscaler : horizontalpodautoscaler.
|
kube_horizontalpodautoscaler_status_desired_replicas kube_horizontalpodautoscaler_status_desired_replicas/gauge
|
|
GAUGE , DOUBLE , 1
prometheus_target 1.27.2-gke.1200 |
Gewünschte Anzahl von Replikaten von Pods, die durch dieses Autoscaling verwaltet werden.
Alle 30 Sekunden wird eine Stichprobe erstellt.horizontalpodautoscaler : horizontalpodautoscaler.
|
Weitere Informationen finden Sie unter Messwerte für horizontales Pod-Autoscaling.
Beispielabfragen für HPA-Messwerte
Wenn Sie beispielsweise feststellen möchten, ob das HPA die maximale Anzahl an Replikaten fast erreicht hat, können Sie das folgende Verhältnis grafisch darstellen:
kube_horizontalpodautoscaler_status_current_replicas{cluster="CLUSTER", namespace="NAMESPACE", horizontalpodautoscaler="HPA"} / kube_horizontalpodautoscaler_spec_max_replicas{cluster="CLUSTER", namespace="NAMESPACE", horizontalpodautoscaler="HPA"}
Wenn das HPA mit der maximalen Anzahl von Replikaten ausgeführt wird, sollten Sie die Spezifikation für die maximale Anzahl von Pods erhöhen. Mit dem folgenden PromQL-Ausdruck können Sie eine Benachrichtigung über diesen Fall erstellen:
kube_horizontalpodautoscaler_status_current_replicas{cluster="CLUSTER", namespace="NAMESPACE", horizontalpodautoscaler="HPA"} == kube_horizontalpodautoscaler_spec_max_replicas{cluster="CLUSTER", namespace="NAMESPACE", horizontalpodautoscaler="HPA"}
Sie können auch die Werte der Messwerte kube_horizontalpodautoscaler_status_current_replicas
und kube_horizontalpodautoscaler_status_desired_replicas
vergleichen, um festzustellen, ob es eine Differenz zwischen der aktuellen und der erforderlichen Anzahl von Replikaten gibt. Ein Unterschied kann auf eine Ressourceneinschränkung im Cluster hinweisen. Der folgende PromQL-Ausdruck sucht nach Unterschieden zwischen der aktuellen Anzahl von Replikaten und der erforderlichen, minimalen und maximalen Anzahl von Replikaten sowie Änderungen in der aktuellen Anzahl von Replikaten:
(kube_horizontalpodautoscaler_status_desired_replicas{job="kube-state-metrics", namespace=~"NAMESPACE"} != kube_horizontalpodautoscaler_status_current_replicas{job="kube-state-metrics", namespace=~"NAMESPACE"}) and (kube_horizontalpodautoscaler_status_current_replicas{job="kube-state-metrics", namespace=~"NAMESPACE"} > kube_horizontalpodautoscaler_spec_min_replicas{job="kube-state-metrics", namespace=~"NAMESPACE"}) and (kube_horizontalpodautoscaler_status_current_replicas{job="kube-state-metrics", namespace=~"NAMESPACE"} < kube_horizontalpodautoscaler_spec_max_replicas{job="kube-state-metrics", namespace=~"NAMESPACE"}) and changes(kube_horizontalpodautoscaler_status_current_replicas{job="kube-state-metrics", namespace=~"NAMESPACE"}[15m]) == 0
Anhand der Labels condition
und status
für den Messwert kube_horizontalpodautoscaler_status_condition
können Sie auch erkennen, wann HPAs in verschiedenen Fehlermodi ausgeführt werden. Beispiel:
- Die Bedingung
ScalingLimited
und der Statustrue
geben an, dass das HPA entweder an die minimale oder maximale Replikatanzahl gebunden ist:kube_horizontalpodautoscaler_status_condition{status="true", condition="ScalingLimited"} == 1
Die Bedingung
AbleToScale
und der Statusfalse
geben an, dass das HPA Probleme beim Abrufen oder Aktualisieren von Skalierungen hat:kube_horizontalpodautoscaler_status_condition{status="false", condition="AbleToScale"} == 1
Die Bedingung
ScalingActive
und der Statusfalse
geben an, dass das HPA deaktiviert ist oder keine neue Skalierung berechnen kann:kube_horizontalpodautoscaler_status_condition{status="false", condition="ScalingActive"} == 1
Einige Abfrage- und Benachrichtigungsausdrücke in diesem Abschnitt wurden aus der Datei kubernetes-apps.yaml
im Repository der Prometheus-Community-Kubernetes-Helm-Diagramme auf GitHub übernommen.