Raccogli e visualizza metriche di stato kube


Questa pagina descrive come configurare un cluster Google Kubernetes Engine (GKE) per invia un insieme selezionato di stati kube, incluse le metriche per i pod deployment, Cloud Monitoring tramite Google Cloud Managed Service per Prometheus. Questa pagina descrive anche come vengono formattate queste metriche quando vengono scritte Monitoraggio e come eseguire query sulle metriche.

Prima di iniziare

Prima di iniziare, assicurati di aver eseguito le seguenti attività:

  • Attiva l'API Google Kubernetes Engine.
  • Abilita l'API Google Kubernetes Engine .
  • Se vuoi utilizzare Google Cloud CLI per questa attività, install e poi initialize con gcloud CLI. Se hai già installato gcloud CLI, scarica la versione più recente eseguendo gcloud components update.

Requisiti

Per raccogliere metriche di stato kube, il cluster GKE deve devono soddisfare i seguenti requisiti:

  • Il cluster deve eseguire GKE 1.27.2-gke.1200 o versioni successive. Per i cluster GKE Standard che iniziano con la versione 1.29.2-gke.2000 e GKE Autopilot che viene avviato con la versione 1.27.4-gke.900, il pacchetto delle metriche di stato Kube è abilitata per impostazione predefinita.
  • Il cluster deve avere metriche di sistema in un bucket con il controllo delle versioni attivo.
  • Il cluster deve avere Raccolta gestita di Google Cloud Managed Service per Prometheus in un bucket con il controllo delle versioni attivo. La raccolta gestita di Google Cloud Managed Service per Prometheus è abilitata da predefinito per i nuovi cluster.

Configura la raccolta di metriche di stato kube

Puoi abilitare le metriche di stato kube utilizzando la console Google Cloud, gcloud CLI, o Terraform:

Console

Puoi abilitare le metriche di stato Kubernetes Scheda Osservabilità per un cluster o un deployment all'interno di un cluster. Puoi anche visualizzare l'anteprima i grafici e le metriche disponibili prima di abilitare il pacchetto di metriche.

Nella scheda Osservabilità di un cluster, puoi filtrare l'insieme di grafici per le metriche di stato kube dai seguenti due elementi:

  • Stato carichi di lavoro: include le metriche per pod, Deployment, StatefulSet, DaemonSet e HorizontalPodAutoscaler Google Cloud.
  • Spazio di archiviazione > Persistente: include le metriche per Persistente di volumi permanenti e attestazioni di volumi permanenti.

Puoi attivare uno o entrambi gli insiemi di metriche.

Per abilitare le metriche di stato Kubernetes dalla scheda Observability: per un cluster, segui questi passaggi:

  1. Nella console Google Cloud, vai alla pagina Cluster Kubernetes:

    Vai a Cluster Kubernetes

    Se utilizzi la barra di ricerca per trovare questa pagina, seleziona il risultato con il sottotitolo Kubernetes Engine.

  2. Fai clic sul nome del cluster e seleziona Osservabilità .

  3. Seleziona Stato carichi di lavoro o Spazio di archiviazione > Persistente nell'elenco delle funzionalità.

  4. Fai clic su Abilita pacchetto.

    Se il pacchetto di metriche di stato kube è già abilitato, un insieme di grafici per le metriche di stato kube.

Per abilitare le metriche di stato Kubernetes dalla scheda Observability: per un deployment, segui questi passaggi:

  1. Nella console Google Cloud, vai alla pagina Carichi di lavoro:

    Vai a Carichi di lavoro

    Se utilizzi la barra di ricerca per trovare questa pagina, seleziona il risultato con il sottotitolo Kubernetes Engine.

  2. Fai clic sul nome del deployment, quindi seleziona Osservabilità .

  3. Seleziona Kube State dall'elenco delle funzionalità.

  4. Fai clic su Abilita pacchetto. Il pacchetto è abilitato per l'intero in un cluster Kubernetes.

    Se il pacchetto di metriche di stato kube è già abilitato, un insieme di grafici per le metriche di pod, deployment e Horizontal Pod Autoscaler.

Per configurare le metriche di stato Kubernetes dalla scheda Dettagli per , segui questi passaggi:

  1. Nella console Google Cloud, vai alla pagina Cluster Kubernetes:

    Vai a Cluster Kubernetes

    Se utilizzi la barra di ricerca per trovare questa pagina, seleziona il risultato con il sottotitolo Kubernetes Engine.

  2. Fai clic sul nome del cluster.

  3. Nella riga Funzionalità con etichetta Cloud Monitoring, Fai clic sull'icona Modifica.

  4. Nella finestra di dialogo Modifica Cloud Monitoring visualizzata, verifica che L'opzione Abilita Cloud Monitoring è selezionata.

  5. Nel menu a discesa Componenti, seleziona Componenti dello stato kube da cui raccogliere le metriche.

  6. Fai clic su OK.

  7. Fai clic su Salva modifiche.

gcloud

Aggiorna il cluster per raccogliere le metriche:

gcloud container clusters update CLUSTER_NAME \
    --location=COMPUTE_LOCATION \
    --enable-managed-prometheus \
    --monitoring=METRICS_LIST

Sostituisci quanto segue:

  • CLUSTER_NAME: il nome del cluster esistente.
  • COMPUTE_LOCATION: il valore Località di Compute Engine nel cluster.
  • METRICS_LIST: un elenco di metriche separate da virgole, che possono includere uno qualsiasi dei seguenti elementi:
    • DAEMONSET
    • DEPLOYMENT
    • HPA
    • POD
    • STATEFULSET
    • STORAGE: metriche per volumi permanenti e attestazioni di volumi permanenti.

L'insieme di valori fornito al flag monitoring sostituisce qualsiasi precedente dell'ambientazione.

Terraform

Per configurare la raccolta di metriche di stato kube mediante Terraform, vedi il blocco monitoring_config nella Registro Terraform per google_container_cluster. Per informazioni generali sull'utilizzo di Google Cloud con Terraform, consulta Terraform con Google Cloud.

Quota

Le metriche di stato kube utilizzano Quota per le richieste di importazione di serie temporali al minuto di Cloud Monitoring API. Prima di abilitare le metriche di stato kube, controllare l'utilizzo massimo recente di quella quota. Se hai molti cluster nello stesso progetto o sono già che stai per raggiungere il limite della quota, puoi richiedere un aumento del limite della quota prima di abilitare uno dei due pacchetti di osservabilità.

Prezzi

Utilizzo delle metriche di stato kube Google Cloud Managed Service per Prometheus da caricare in Cloud Monitoring. Cloud Monitoring addebita i costi per l'importazione di queste metriche si basano sul numero di campioni importati. Tuttavia, questi metriche sono gratuite per il registrato in cluster che appartengono a un progetto Versione di GKE Enterprise in un bucket con il controllo delle versioni attivo.

Per ulteriori informazioni, vedi Prezzi di Cloud Monitoring.

Formato metrica

Tutte le metriche di stato kube di Kubernetes scritte in Cloud Monitoring utilizza il tipo di risorsa prometheus_target. Ogni nome della metrica è preceduto dal prefisso prometheus.googleapis.com/ e ha un suffisso che indica Tipo di metrica Prometheus, ad esempio /gauge, /histogram, o /counter. In caso contrario, il nome di ogni metrica identico al nome della metrica esposto da Kubernetes open source.

Esportazione da Cloud Monitoring

Le metriche di stato kube possono essere esportate da Cloud Monitoring utilizzando l'API Cloud Monitoring. Poiché tutte le metriche di stato kube vengono importate tramite Google Cloud Managed Service per Prometheus, È possibile eseguire query su metriche di stato kube utilizzando Prometheus Query Language (PromQL). Possono anche essere interrogate tramite utilizzando Monitoring Query Language (MQL).

Esecuzione di query sulle metriche

Quando esegui una query sulle metriche di stato kube, il nome che utilizzi dipende se usi PromQL o funzionalità basate su Cloud Monitoring, MQL o Metrics Explorer basata su menu.

Le seguenti tabelle delle metriche di stato kube mostrano due versioni nome di ogni metrica:

  • Nome metrica PromQL: quando utilizzando PromQL nelle pagine di Cloud Monitoring della console Google Cloud o nei campi PromQL della API Cloud Monitoring, utilizza il nome della metrica PromQL.
  • Nome metrica di Cloud Monitoring Quando si utilizzano altri Funzionalità di Cloud Monitoring; utilizza il nome della metrica di Cloud Monitoring disponibili nelle tabelle seguenti. Questo nome deve essere preceduto dal prefisso prometheus.googleapis.com/, che è stata omessa dalla tabella. le voci nella tabella.

Metriche di archiviazione

I nomi delle metriche di Cloud Monitoring in questa tabella devono essere preceduti dal prefisso prometheus.googleapis.com/. Questo prefisso è stato omesso dalla le voci nella tabella.

Nome metrica PromQL
Nome metrica di Cloud Monitoring
Tipo, Tipo, Unità
Risorse monitorate
Versione GKE richiesta
Descrizione
Etichette
kube_persistentvolume_capacity_bytes
kube_persistentvolume_capacity_bytes/gauge
GAUGEDOUBLEBy
prometheus_target
1.27.2-gke.1200
Capacità del volume permanente in byte. Campionamento eseguito ogni 30 secondi.

persistentvolume: volume permanente.
kube_persistentvolume_claim_ref
kube_persistentvolume_claim_ref/gauge
GAUGEDOUBLE1
prometheus_target
1.27.2-gke.1200
Informazioni sul riferimento all'attestazione di volumi permanenti. Campionamento eseguito ogni 30 secondi.

claim_name: claim_name.
name: nome.
persistentvolume: volume permanente.
kube_persistentvolume_info
kube_persistentvolume_info/gauge
GAUGEDOUBLE1
prometheus_target
1.27.2-gke.1200
Informazioni sul volume permanente. Campionamento eseguito ogni 30 secondi.

csi_driver: driver_csi.
csi_volume_handle: csi_volume_handle.
local_fs: local_fs.
local_path: percorso_locale.
persistentvolume: volume permanente.
storageclass: storageclass.
kube_persistentvolume_status_phase
kube_persistentvolume_status_phase/gauge
GAUGEDOUBLE1
prometheus_target
1.27.2-gke.1200
La fase indica se un volume è disponibile, associato a una richiesta o ritirato in seguito a una rivendicazione. Campionamento eseguito ogni 30 secondi.

persistentvolume: volume permanente.
phase: fase.
kube_persistentvolumeclaim_info
kube_persistentvolumeclaim_info/gauge
GAUGEDOUBLE1
prometheus_target
1.27.2-gke.1200
Informazioni sulla richiesta di volume permanente. Campionamento eseguito ogni 30 secondi.

persistentvolumeclaim: volumeclaim permanente.
storageclass: storageclass.
volumename: nome volume.
kube_persistentvolumeclaim_resource_requests_storage_bytes
kube_persistentvolumeclaim_resource_requests_storage_bytes/gauge
GAUGEDOUBLEBy
prometheus_target
1.27.2-gke.1200
La capacità di archiviazione richiesta dalla richiesta di volume permanente. Campionamento eseguito ogni 30 secondi.

persistentvolumeclaim: volumeclaim permanente.
kube_persistentvolumeclaim_status_phase
kube_persistentvolumeclaim_status_phase/gauge
GAUGEDOUBLE1
prometheus_target
1.27.2-gke.1200
La fase in cui si trova attualmente la richiesta di volume permanente. Campionamento eseguito ogni 30 secondi.

persistentvolumeclaim: volumeclaim permanente.
phase: fase.

Per ulteriori informazioni, vedi Metriche PersistentVolume e Metriche PersistentVolumeClaim.

Metriche pod

Un pod è un gruppo di uno o più container con una specifica su come per eseguire i container, che condividono le risorse di rete e di archiviazione.

Tabella delle metriche dei pod

Le metriche dei pod ti consentono di monitorare il comportamento dei pod e generare avvisi sul loro comportamento. La tabella seguente mostra le metriche disponibili nello stato kube pacchetto delle metriche:

I nomi delle metriche di Cloud Monitoring in questa tabella devono essere preceduti dal prefisso prometheus.googleapis.com/. Questo prefisso è stato omesso dalla le voci nella tabella.

Nome metrica PromQL
Nome metrica di Cloud Monitoring
Tipo, Tipo, Unità
Risorse monitorate
Versione GKE richiesta
Descrizione
Etichette
kube_pod_container_status_ready
kube_pod_container_status_ready/gauge
GAUGEDOUBLE1
prometheus_target
1.27.2-gke.1200
Descrive se il controllo di idoneità dei container è riuscito. Campionamento eseguito ogni 30 secondi.

container: contenitore.
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
Descrive il motivo per cui il container è attualmente in stato In attesa. Campionamento eseguito ogni 30 secondi.

container: contenitore.
pod: pod.
reason: motivo.
uid: uid.
kube_pod_status_phase
kube_pod_status_phase/gauge
GAUGEDOUBLE1
prometheus_target
1.27.2-gke.1200
La fase attuale dei pod. Campionamento eseguito ogni 30 secondi.

phase: fase.
pod: pod.
uid: uid.
kube_pod_status_unschedulable
kube_pod_status_unschedulable/gauge
GAUGEDOUBLE1
prometheus_target
1.27.2-gke.1200
Descrive lo stato non pianificabile del pod. Campionamento eseguito ogni 30 secondi.

pod: pod.
uid: uid.

Per ulteriori informazioni, vedi Metriche dei pod.

Query di esempio per le metriche dei pod

Per determinare se hai pod non pianificabili, utilizza il seguente PromQL :

sum(kube_pod_status_unschedulable{cluster="CLUSTER", namespace="NAMESPACE"})

Per inviare avvisi su un numero di pod non pianificabili in uno spazio dei nomi, puoi utilizzare seguente espressione PromQL:

sum(kube_pod_status_unschedulable{cluster="CLUSTER", namespace="NAMESPACE"}) > LIMIT

Puoi utilizzare la metrica kube_pod_container_status_waiting_reason per creare un avviso relativo a un container bloccato in uno stato di attesa specifico utilizzando un prompt PromQL come la seguente:

max_over_time(kube_pod_container_status_waiting_reason{reason="REASON", cluster="CLUSTER", namespace="NAMESPACE"}[5m]) >= 1

Il valore REASON specifica lo stato di attesa del container, Ad esempio:

  • CrashLoopBackOff
  • ImagePullBackOff
  • ContainerCreating

Per creare un avviso per un container bloccato in uno stato di attesa, utilizza la seguente espressione PromQL:

max_over_time(kube_pod_container_status_waiting_reason{cluster="CLUSTER", namespace="NAMESPACE"}[5m]) >= 1

Per determinare quanti container non superano i controlli di idoneità, utilizza il metodo che segue l'espressione PromQL

sum(kube_pod_container_status_ready) by (pod, container) == 0

Alcune delle espressioni di query e di avviso sono stati adattati file kubernetes-apps.yaml nel repository dei grafici Helm della community Prometheus su GitHub.

Playbook interattivi

Le metriche di stato kube vengono utilizzate anche in GKE playbook interattivi per la risoluzione di problemi relativi a loop non pianificabili o arresti anomali di pod. Per ulteriori informazioni su queste modalità di errore, consulta quanto segue: documenti per la risoluzione dei problemi:

Senza il pacchetto di metriche di stato kube abilitato, il modo principale rilevare problemi di pianificazione dei pod è eseguire una query su "Failed Scheduling" (Pianificazione non riuscita) log degli eventi. Dopo il giorno puoi abilitare il pacchetto di metriche di stato kube, puoi utilizzare kube_pod_status_unschedulable, che ha lo stesso scopo, ma è più facile aggregare e creare grafici. Utilizzando la metrica, puoi vedere quante I pod non sono pianificabili e quando il problema è stato avviato.

Analogamente, la metrica di sistema di GKE kubernetes.io/container/restart_count può aiutarti a rilevare i pod in loop degli arresti anomali. La La metrica kube_pod_container_status_waiting_reason elenca anche gli arresti anomali oltre a determinare se i pod sono bloccati in stati di attesa. di CrashLookBackOff, come ImagePullBackOff e ContainerCreating.

Per esplorare i playbook interattivi, segui questi passaggi:

  1. Nella console Google Cloud, vai alla pagina Dashboard :

    Vai a Dashboard

    Se utilizzi la barra di ricerca per trovare questa pagina, seleziona il risultato con il sottotitolo Monitoraggio.

  2. Filtra l'elenco delle dashboard facendo clic sull'icona Categoria G C P.
  3. Fai clic sul nome di un "Playbook interattivo di GKE" dashboard nell'elenco.

Metriche di deployment

Un deployment è un controller che aggiorna lo stato di risorse come pod, per gestire eventi come implementazioni e disattivazioni.

Tabella delle metriche di deployment

Le metriche di deployment ti consentono di monitorare il comportamento e creare avvisi sul comportamento del titolare. La tabella seguente mostra le metriche disponibili nella Pacchetto di metriche di stato kube:

I nomi delle metriche di Cloud Monitoring in questa tabella devono essere preceduti dal prefisso prometheus.googleapis.com/. Questo prefisso è stato omesso dalla le voci nella tabella.

Nome metrica PromQL
Nome metrica di Cloud Monitoring
Tipo, Tipo, Unità
Risorse monitorate
Versione GKE richiesta
Descrizione
Etichette
kube_deployment_spec_replicas
kube_deployment_spec_replicas/gauge
GAUGEDOUBLE1
prometheus_target
1.27.2-gke.1200
Numero di pod desiderati per un deployment. Campionamento eseguito ogni 30 secondi.

deployment: deployment.
kube_deployment_status_replicas_available
kube_deployment_status_replicas_available/gauge
GAUGEDOUBLE1
prometheus_target
1.27.2-gke.1200
Il numero di repliche disponibili per deployment. Campionamento eseguito ogni 30 secondi.

deployment: deployment.
kube_deployment_status_replicas_updated
kube_deployment_status_replicas_updated/gauge
GAUGEDOUBLE1
prometheus_target
1.27.2-gke.1200
Il numero di repliche aggiornate per deployment. Campionamento eseguito ogni 30 secondi.

deployment: deployment.

Per ulteriori informazioni, vedi Metriche di deployment.

Query di esempio per le metriche di deployment

Puoi creare grafici e criteri di avviso per singoli deployment filtrando le metriche di deployment per cluster, spazio dei nomi e nome per il deployment.

Ad esempio, per confrontare il numero di repliche disponibili con di repliche desiderato in un singolo deployment, puoi usare quanto segue Query PromQL per tracciare entrambe le metriche in un singolo grafico:

kube_deployment_spec_replicas{cluster="CLUSTER", namespace="NAMESPACE", deployment=DEPLOYMENT"}
e
kube_deployment_status_replicas_available{cluster="CLUSTER", namespace="NAMESPACE", deployment=DEPLOYMENT"}

Per inviare un avviso relativo a un deployment non riuscito o bloccato, puoi utilizzare quanto segue Espressione PromQL:

(
  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
)

Alcune delle espressioni di query e di avviso sono stati adattati file kubernetes-apps.yaml nel repository dei grafici Helm della community Prometheus su GitHub.

Metriche StatefulSet

Uno StatefulSet è un controller che gestisce il deployment e la scalabilità di un di pod per le applicazioni stateful. Questo controller gestisce l'ordine e l'univocità dei pod.

Tabella delle metriche StatefulSet

Le metriche StatefulSet consentono di monitorare il comportamento e generare avvisi sul comportamento del titolare. La tabella seguente mostra le metriche disponibili nella Pacchetto di metriche di stato kube:

I nomi delle metriche di Cloud Monitoring in questa tabella devono essere preceduti dal prefisso prometheus.googleapis.com/. Questo prefisso è stato omesso dalla le voci nella tabella.

Nome metrica PromQL
Nome metrica di Cloud Monitoring
Tipo, Tipo, Unità
Risorse monitorate
Versione GKE richiesta
Descrizione
Etichette
kube_statefulset_replicas
kube_statefulset_replicas/gauge
GAUGEDOUBLE1
prometheus_target
1.27.2-gke.1200
Numero di pod desiderati per uno StatefulSet. Campionamento eseguito ogni 30 secondi.

statefulset: statefulset.
kube_statefulset_status_replicas_ready
kube_statefulset_status_replicas_ready/gauge
GAUGEDOUBLE1
prometheus_target
1.27.2-gke.1200
Il numero di repliche pronte per StatefulSet. Campionamento eseguito ogni 30 secondi.

statefulset: statefulset.
kube_statefulset_status_replicas_updated
kube_statefulset_status_replicas_updated/gauge
GAUGEDOUBLE1
prometheus_target
1.27.2-gke.1200
Il numero di repliche aggiornate per StatefulSet. Campionamento eseguito ogni 30 secondi.

statefulset: statefulset.

Per ulteriori informazioni, vedi Metriche StatefulSet.

Query di esempio per le metriche StatefulSet

Puoi creare grafici e criteri di avviso per singoli StatefulSet filtrando le metriche statefulset per cluster, spazio dei nomi e nome l'oggetto StatefulSet.

Ad esempio, per confrontare il numero di repliche disponibili con di repliche desiderato in un singolo StatefulSet, puoi usare: Query PromQL per tracciare entrambe le metriche in un singolo grafico:

kube_statefulset_replicas{cluster="CLUSTER", namespace="NAMESPACE", statefulset="STATEFULSET"}
e
kube_statefulset_status_replicas_ready{cluster="CLUSTER", namespace="NAMESPACE", statefulset="STATEFULSET"}

Per inviare un avviso relativo a un'implementazione StatefulSet non riuscita o bloccata, puoi usare quanto segue Espressione PromQL:

(
  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
)

Alcune delle espressioni di query e di avviso sono stati adattati file kubernetes-apps.yaml nel repository dei grafici Helm della community Prometheus su GitHub.

Metriche DaemonSet

Un DaemonSet è un controller che garantisce che alcuni insiemi di nodi eseguano una copia di un pod. Ad esempio, quando i nodi vengono aggiunti a un cluster, il DaemonSet aggiunge ai nodi. Questo controller è utile per garantire che vengono eseguiti su ogni nodo.

Tabella delle metriche DaemonSet

Le metriche DaemonSet consentono di monitorare e creare avvisi sul comportamento del titolare. La tabella seguente mostra le metriche disponibili nella Pacchetto di metriche di stato kube:

I nomi delle metriche di Cloud Monitoring in questa tabella devono essere preceduti dal prefisso prometheus.googleapis.com/. Questo prefisso è stato omesso dalla le voci nella tabella.

Nome metrica PromQL
Nome metrica di Cloud Monitoring
Tipo, Tipo, Unità
Risorse monitorate
Versione GKE richiesta
Descrizione
Etichette
kube_daemonset_status_desired_number_scheduled
kube_daemonset_status_desired_number_scheduled/gauge
GAUGEDOUBLE1
prometheus_target
1.27.2-gke.1200
Il numero di nodi su cui deve essere eseguito il pod del daemon. Campionamento eseguito ogni 30 secondi.

daemonset: daemonset.
kube_daemonset_status_number_misscheduled
kube_daemonset_status_number_misscheduled/gauge
GAUGEDOUBLE1
prometheus_target
1.27.2-gke.1200
Il numero di nodi che eseguono un pod del daemon, ma che non dovrebbero farlo. Campionamento eseguito ogni 30 secondi.

daemonset: daemonset.
kube_daemonset_status_number_ready
kube_daemonset_status_number_ready/gauge
GAUGEDOUBLE1
prometheus_target
1.27.2-gke.1200
Il numero di nodi che dovrebbero eseguire il pod del daemon e uno o più pod del daemon sono in esecuzione e pronti. Campionamento eseguito ogni 30 secondi.

daemonset: daemonset.
kube_daemonset_status_updated_number_scheduled
kube_daemonset_status_updated_number_scheduled/gauge
GAUGEDOUBLE1
prometheus_target
1.27.2-gke.1200
Il numero di nodi che eseguono il pod del daemon aggiornato. Campionamento eseguito ogni 30 secondi.

daemonset: daemonset.

Per ulteriori informazioni, vedi Metriche DaemonSet.

Query di esempio per le metriche DaemonSet

Puoi creare grafici e criteri di avviso per singoli DaemonSet filtrando le metriche del daemonset per cluster, spazio dei nomi e nome DaemonSet.

Ad esempio, per confrontare il numero di repliche disponibili con previsto di repliche in un singolo DaemonSet, puoi usare il seguente Query PromQL per tracciare entrambe le metriche in un singolo grafico:

kube_daemonset_status_updated_number_scheduled{cluster="CLUSTER", namespace="NAMESPACE", daemonsetset=DAEMONSET"}
e
kube_daemonset_status_desired_number_scheduled{cluster="CLUSTER", namespace="NAMESPACE", daemonset=DAEMONSET"}

Per inviare un avviso relativo a un'implementazione DaemonSet non riuscita o bloccata, puoi usare quanto segue Espressione PromQL:

(
  (
    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
)

Alcune delle espressioni di query e di avviso sono stati adattati file kubernetes-apps.yaml nel repository dei grafici Helm della community Prometheus su GitHub.

Metriche HorizontalPodAutoscaler

Un HorizontalPodAutoscaler (HPA) è un controller che cambia periodicamente il numero di pod in un carico di lavoro, ad esempio un oggetto Deployment in risposta ad alcune metriche come l'utilizzo della CPU o della memoria. Modifica del numero dei pod disponibili per un carico di lavoro lo mantiene efficiente ma reattivo.

Per ulteriori informazioni sugli HPA, consulta Visualizzazione dei dettagli su un pod orizzontale Gestore della scalabilità automatica.

Tabella delle metriche HPA

Le metriche HorizontalPodAutoscaler consentono di monitorare il comportamento e generare avvisi sul comportamento del titolare. La tabella seguente mostra le metriche disponibili nella Pacchetto di metriche di stato kube:

I nomi delle metriche di Cloud Monitoring in questa tabella devono essere preceduti dal prefisso prometheus.googleapis.com/. Questo prefisso è stato omesso dalla le voci nella tabella.

Nome metrica PromQL
Nome metrica di Cloud Monitoring
Tipo, Tipo, Unità
Risorse monitorate
Versione GKE richiesta
Descrizione
Etichette
kube_horizontalpodautoscaler_spec_max_replicas
kube_horizontalpodautoscaler_spec_max_replicas/gauge
GAUGEDOUBLE1
prometheus_target
1.27.2-gke.1200
Limite superiore per il numero di pod che possono essere impostati dal gestore della scalabilità automatica, non può essere minore di MinReplicas. Campionamento eseguito ogni 30 secondi.

horizontalpodautoscaler: Horizontalpodautoscaler.
kube_horizontalpodautoscaler_spec_min_replicas
kube_horizontalpodautoscaler_spec_min_replicas/gauge
GAUGEDOUBLE1
prometheus_target
1.27.2-gke.1200
Limite inferiore per il numero di pod che possono essere impostati dal gestore della scalabilità automatica, predefinito 1. Campionamento eseguito ogni 30 secondi.

horizontalpodautoscaler: Horizontalpodautoscaler.
kube_horizontalpodautoscaler_spec_target_metric
kube_horizontalpodautoscaler_spec_target_metric/gauge
GAUGEDOUBLE1
prometheus_target
1.27.2-gke.1200
Le specifiche delle metriche utilizzate da questo gestore della scalabilità automatica per calcolare il numero di repliche desiderato. Campionamento eseguito ogni 30 secondi.

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
La condizione di questo gestore della scalabilità automatica. Campionamento eseguito ogni 30 secondi.

condition: condizione.
horizontalpodautoscaler: Horizontalpodautoscaler.
namespace: spazio dei nomi.
status: stato.
kube_horizontalpodautoscaler_status_current_replicas
kube_horizontalpodautoscaler_status_status_current_replicas/gauge
GAUGEDOUBLE1
prometheus_target
1.27.2-gke.1200
Numero attuale di repliche dei pod gestiti da questo gestore della scalabilità automatica. Campionamento eseguito ogni 30 secondi.

horizontalpodautoscaler: Horizontalpodautoscaler.
kube_horizontalpodautoscaler_status_desired_replicas
kube_horizontalpodautoscaler_status_desired_replicas/gauge
GAUGEDOUBLE1
prometheus_target
1.27.2-gke.1200
Numero desiderato di repliche dei pod gestiti da questo gestore della scalabilità automatica. Campionamento eseguito ogni 30 secondi.

horizontalpodautoscaler: Horizontalpodautoscaler.

Per ulteriori informazioni, vedi Metriche di Horizontal Pod Autoscaler.

Query di esempio per le metriche HPA

Ad esempio, per determinare se l'HPA si sta avvicinando al numero massimo di di repliche, puoi tracciare il seguente rapporto:

kube_horizontalpodautoscaler_status_current_replicas{cluster="CLUSTER", namespace="NAMESPACE", horizontalpodautoscaler="HPA"} /
kube_horizontalpodautoscaler_spec_max_replicas{cluster="CLUSTER", namespace="NAMESPACE", horizontalpodautoscaler="HPA"}

Quando l'HPA è in esecuzione con il numero massimo di repliche, potresti volere aumenta la specifica per il numero massimo di pod. Puoi utilizzare le seguenti opzioni Espressione PromQL per creare un avviso che ti avvisi di questa richiesta:

kube_horizontalpodautoscaler_status_current_replicas{cluster="CLUSTER", namespace="NAMESPACE", horizontalpodautoscaler="HPA"}
  ==
kube_horizontalpodautoscaler_spec_max_replicas{cluster="CLUSTER", namespace="NAMESPACE", horizontalpodautoscaler="HPA"}

Puoi anche confrontare i valori kube_horizontalpodautoscaler_status_current_replicas e le metriche kube_horizontalpodautoscaler_status_desired_replicas per determinare se c'è una differenza tra lo stato attuale e quello necessario di repliche. Una differenza potrebbe indicare un vincolo della risorsa nel cluster. La seguente espressione PromQL cerca differenze tra il numero attuale di repliche e i valori necessari, minimi e massimi di repliche, nonché le variazioni del numero attuale di repliche:

(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

Le etichette condition e status nella Anche la metrica kube_horizontalpodautoscaler_status_condition può aiutarti rilevare quando gli HPA si imbattono in varie modalità di errore. Ad esempio:

  • La condizione ScalingLimited e lo stato di true indicano che l'HPA è vincolato dal numero minimo o massimo di repliche:
    kube_horizontalpodautoscaler_status_condition{status="true", condition="ScalingLimited"} == 1
  • La condizione AbleToScale e lo stato false indicano che l'HPA riscontra problemi durante il recupero o l'aggiornamento delle scale:

    kube_horizontalpodautoscaler_status_condition{status="false", condition="AbleToScale"} == 1

  • La condizione ScalingActive e lo stato false indicano che l'HPA è disabilitato o non è in grado di calcolare una nuova scala:

    kube_horizontalpodautoscaler_status_condition{status="false", condition="ScalingActive"} == 1

Alcune delle espressioni di query e di avviso sono stati adattati file kubernetes-apps.yaml nel repository dei grafici Helm della community Prometheus su GitHub.