Kube State Metrics erfassen und ansehen


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:

  1. Rufen Sie in der Google Cloud Console die Seite mit den Kubernetes-Clustern auf.

    Zur Seite Kubernetes-Cluster

    Wenn Sie diese Seite über die Suchleiste finden, wählen Sie das Ergebnis aus, dessen Zwischenüberschrift Kubernetes Engine lautet.

  2. Klicken Sie auf den Namen Ihres Clusters und wählen Sie dann den Tab Beobachtbarkeit aus.

  3. Wählen Sie entweder Arbeitslaststatus oder Speicher > Nichtflüchtig aus der Liste der Features aus.

  4. 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:

  1. Rufen Sie in der Google Cloud Console die Seite Arbeitslasten auf:

    Zu Arbeitslasten

    Wenn Sie diese Seite über die Suchleiste finden, wählen Sie das Ergebnis aus, dessen Zwischenüberschrift Kubernetes Engine lautet.

  2. Klicken Sie auf den Namen Ihrer Bereitstellung und wählen Sie dann den Tab Beobachtbarkeit aus.

  3. Wählen Sie in der Liste der Funktionen Kube State aus.

  4. 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:

  1. Rufen Sie in der Google Cloud Console die Seite mit den Kubernetes-Clustern auf.

    Zur Seite Kubernetes-Cluster

    Wenn Sie diese Seite über die Suchleiste finden, wählen Sie das Ergebnis aus, dessen Zwischenüberschrift Kubernetes Engine lautet.

  2. Klicken Sie auf den Namen Ihres Clusters.

  3. Klicken Sie in der Zeile Funktionen mit der Bezeichnung Cloud Monitoring auf das Symbol Bearbeiten.

  4. Prüfen Sie im angezeigten Dialogfeld Cloud Monitoring bearbeiten, ob Cloud Monitoring aktivieren ausgewählt ist.

  5. Wählen Sie im Drop-down-Menü Komponenten die Kubernetes-Statuskomponenten aus, für die Sie Messwerte erfassen möchten.

  6. Klicken Sie auf OK.

  7. 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:

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
GAUGEDOUBLEBy
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
GAUGEDOUBLE1
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
GAUGEDOUBLE1
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
GAUGEDOUBLE1
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
GAUGEDOUBLE1
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
GAUGEDOUBLEBy
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
GAUGEDOUBLE1
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
GAUGEDOUBLE1
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
GAUGEDOUBLE1
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
GAUGEDOUBLE1
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
GAUGEDOUBLE1
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:

  1. Rufen Sie in der Google Cloud Console die Seite Dashboards auf.

    Dashboards aufrufen

    Wenn Sie diese Seite über die Suchleiste suchen, wählen Sie das Ergebnis aus, dessen Zwischenüberschrift Monitoring ist.

  2. Filtern Sie die Dashboard-Liste, indem Sie auf die Kategorie G C P klicken.
  3. 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
GAUGEDOUBLE1
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
GAUGEDOUBLE1
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
GAUGEDOUBLE1
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"}
und
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
GAUGEDOUBLE1
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
GAUGEDOUBLE1
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
GAUGEDOUBLE1
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"}
und
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
GAUGEDOUBLE1
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
GAUGEDOUBLE1
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
GAUGEDOUBLE1
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
GAUGEDOUBLE1
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"}
und
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
GAUGEDOUBLE1
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
GAUGEDOUBLE1
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
GAUGEDOUBLE1
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
GAUGEDOUBLE1
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
GAUGEDOUBLE1
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
GAUGEDOUBLE1
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 Status true 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 Status false 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 Status false 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.