Kube State Metrics verwenden


Sie können einen GKE-Cluster (Google Kubernetes Engine) so konfigurieren, dass eine Gruppe ausgewählter Kube State Metrics, einschließlich Messwerten für Pods, Deployments usw. an Cloud Monitoring mit Google Cloud Managed Service for Prometheus gesendet wird. In diesem Dokument wird beschrieben, wie diese Messwerte formatiert werden, wenn sie in Cloud Monitoring geschrieben und abgefragt werden. Dieses Dokument enthält auch Tabellen, in denen die Messwerte in jedem Satz aufgeführt sind und wie Sie die Messwerte verwenden können.

Bevor Sie Kube State Metrics verwenden können, müssen Sie ihre Sammlung aktivieren.

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

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