Questa pagina descrive come configurare un cluster Google Kubernetes Engine (GKE) per inviare un insieme selezionato di stati di kube, incluse le metriche per pod e deployment, Cloud Monitoring utilizzando Google Cloud Managed Service per Prometheus. Questa pagina descrive anche come vengono formattate queste metriche quando vengono scritte in Monitoring e come eseguire query sulle metriche.
Prima di iniziare
Prima di iniziare, assicurati di aver eseguito le seguenti operazioni:
- Attiva l'API Google Kubernetes Engine. Attiva l'API Google Kubernetes Engine
- Se vuoi utilizzare Google Cloud CLI per questa attività, installala e poi inizializza gcloud CLI. Se hai già installato gcloud CLI, scarica l'ultima versione eseguendo
gcloud components update
.
Requisiti
Per raccogliere le metriche di stato di Kube, il cluster GKE deve soddisfare i seguenti requisiti:
- Il cluster deve eseguire le seguenti versioni in base alla metrica che vuoi attivare:
- Per abilitare il pacchetto delle metriche JobSet, il cluster deve eseguire 1.32.1-gke.1357001 o versioni successive. A partire dalla versione 1.32.1-gke.1357001, il pacchetto di metriche JobSet è abilitato per impostazione predefinita sui cluster GKE Standard e Autopilot appena creati.
- La metrica
kube_jobset_restarts
è disponibile nei cluster 1.32 a partire dalla versione 1.32.4-gke.1767000 e nei cluster 1.33 a partire dalla versione 1.33.0-gke.1868000. - Per abilitare qualsiasi altro pacchetto di metriche descritto in questa pagina, il cluster deve eseguire GKE 1.27.2-gke.1200 o versioni successive. A partire dalla versione 1.29.2-gke.2000 per i cluster GKE Standard e dalla versione 1.27.4-gke.900 per i cluster GKE Autopilot, il pacchetto Kube State Metrics è abilitato per impostazione predefinita.
- Nel cluster devono essere abilitate le metriche di sistema.
- Il cluster deve avere la raccolta gestita di Google Cloud Managed Service per Prometheus abilitata. La raccolta gestita di Google Cloud Managed Service per Prometheus è abilitata per impostazione predefinita per i nuovi cluster.
Configura la raccolta delle metriche di stato di Kube
Puoi abilitare le metriche di stato di kube utilizzando la console Google Cloud , gcloud CLI o Terraform:
Console
Puoi abilitare le metriche di stato di Kube dalla scheda Osservabilità per un cluster o un deployment all'interno di un cluster. Puoi anche visualizzare l'anteprima dei grafici e delle metriche disponibili prima di attivare il pacchetto di metriche.
Nella scheda Osservabilità di un cluster, puoi filtrare l'insieme di grafici per le metriche di stato di kube in base ai seguenti due elementi:
- Stato dei workload: include le metriche per Pod, Deployment, StatefulSet, DaemonSet e risorse HorizontalPodAutoscaler.
- Archiviazione > Permanente: include le metriche per Persistent Volumes e PersistentVolumeClaims.
Puoi attivare uno o entrambi i set di metriche.
Per abilitare Kube State Metrics dalla scheda Osservabilità per un cluster:
-
Nella console Google Cloud , vai alla pagina Cluster Kubernetes:
Se utilizzi la barra di ricerca per trovare questa pagina, seleziona il risultato con il sottotitolo Kubernetes Engine.
Fai clic sul nome del cluster e poi seleziona la scheda Osservabilità.
Seleziona Stato dei carichi di lavoro o Archiviazione > Permanente dall'elenco delle funzionalità.
Fai clic su Attiva pacchetto.
Se il pacchetto Kube State Metrics è già abilitato, vedrai un insieme di grafici per le metriche Kube State Metrics.
Per attivare le metriche di stato di Kube dalla scheda Osservabilità per un deployment:
-
Nella console Google Cloud , vai alla pagina Workload:
Se utilizzi la barra di ricerca per trovare questa pagina, seleziona il risultato con il sottotitolo Kubernetes Engine.
Fai clic sul nome della deployment e seleziona la scheda Osservabilità.
Seleziona Stato Kube dall'elenco delle funzionalità.
Fai clic su Attiva pacchetto. Il pacchetto è abilitato per l'intero cluster.
Se il pacchetto Kube State Metrics è già abilitato, vedrai un insieme di grafici per le metriche di pod, deployment e scalabilità automatica pod orizzontale.
Per configurare le metriche di stato di Kube dalla scheda Dettagli per il cluster, procedi nel seguente modo:
-
Nella console Google Cloud , vai alla pagina Cluster Kubernetes:
Se utilizzi la barra di ricerca per trovare questa pagina, seleziona il risultato con il sottotitolo Kubernetes Engine.
Fai clic sul nome del cluster.
Nella riga Funzionalità con l'etichetta Cloud Monitoring, fai clic sull'icona Modifica.
Nella finestra di dialogo Modifica Cloud Monitoring visualizzata, verifica che sia selezionata l'opzione Abilita Cloud Monitoring.
Nel menu a discesa Componenti, seleziona i componenti kube state da cui vuoi raccogliere le metriche.
Fai clic su OK.
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=SYSTEM,DAEMONSET,DEPLOYMENT,HPA,POD,STATEFULSET,STORAGE
Sostituisci quanto segue:
CLUSTER_NAME
: il nome del cluster esistente.COMPUTE_LOCATION
: la posizione di Compute Engine del cluster.
Il set di valori fornito al flag monitoring
sostituisce qualsiasi impostazione precedente.
Terraform
Per configurare la raccolta delle metriche di stato di kube utilizzando Terraform, consulta il blocco monitoring_config
nel 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 di Kube utilizzano la quota Richieste di importazione di serie temporali al minuto dell'API Cloud Monitoring. Prima di abilitare Kube State Metrics, controlla il picco di utilizzo recente di questa quota. Se hai molti cluster nello stesso progetto o ti stai già avvicinando al limite di quota, puoi richiedere un aumento del limite di quota prima di attivare uno dei due pacchetti di osservabilità.
Prezzi
Le metriche di stato kube utilizzano Google Cloud Managed Service per Prometheus per caricare le metriche in Cloud Monitoring. I costi di Cloud Monitoring per l'importazione di queste metriche si basano sul numero di campioni importati. Tuttavia, queste metriche sono gratuite per i cluster registrati che appartengono a un progetto in cui è abilitata l'edizione GKE Enterprise.
Per maggiori informazioni, consulta la pagina Prezzi di Cloud Monitoring.
Formato metrica
Tutte le metriche di stato kube di Kubernetes scritte in Cloud Monitoring utilizzano il tipo di risorsa prometheus_target
. Ogni nome della metrica ha il prefisso prometheus.googleapis.com/
e un suffisso che indica il tipo di metrica Prometheus, ad esempio /gauge
, /histogram
o /counter
. In caso contrario, ogni nome della metrica è identico al nome della metrica esposto da Kubernetes open source.
Esportazione da Cloud Monitoring
Le metriche dello stato di kube possono essere esportate da Cloud Monitoring utilizzando l'API Cloud Monitoring. Poiché tutte le metriche di stato kube vengono importate utilizzando Google Cloud Managed Service per Prometheus, è possibile eseguire query sulle metriche di stato kube utilizzando Prometheus Query Language (PromQL). Possono anche essere sottoposti a query utilizzando Monitoring Query Language (MQL).
Esecuzione di query sulle metriche
Quando esegui query sulle metriche di stato di kube, il nome che utilizzi dipende dal fatto che tu stia utilizzando PromQL o funzionalità basate su Cloud Monitoring come MQL o l'interfaccia basata su menu di Metrics Explorer.
Le seguenti tabelle delle metriche di stato di Kube mostrano due versioni di ogni nome di metrica:
- Nome della metrica PromQL: quando utilizzi PromQL nelle pagine di Cloud Monitoring della console Google Cloud o nei campi PromQL dell'API Cloud Monitoring, utilizza il nome della metrica PromQL.
- Nome della metrica Cloud Monitoring. Quando utilizzi altre funzionalità di Cloud Monitoring, utilizza il nome della metrica Cloud Monitoring nelle tabelle seguenti. Questo nome deve avere come prefisso
prometheus.googleapis.com/
, che è stato omesso dalle voci della tabella.
Metriche di archiviazione
I nomi delle metriche di Cloud Monitoring in questa tabella devono avere il prefisso prometheus.googleapis.com/
. Questo prefisso è stato omesso dalle voci della tabella.
Nome metrica PromQL Nome metrica Cloud Monitoring | |
---|---|
Tipo, Unità Risorse monitorate Versione GKE richiesta | Descrizione Etichette |
kube_persistentvolume_capacity_bytes kube_persistentvolume_capacity_bytes/gauge | |
GAUGE , DOUBLE , By prometheus_target 1.27.2-gke.1200 | Capacità del PersistentVolume in byte. Campionamento eseguito ogni 30 secondi.persistentvolume : persistentvolume. |
kube_persistentvolume_claim_ref kube_persistentvolume_claim_ref/gauge | |
GAUGE , DOUBLE , 1 prometheus_target 1.27.2-gke.1200 | Informazioni sul riferimento alla richiesta di volume permanente. Campionamento eseguito ogni 30 secondi.claim_name : claim_name. name : nome. persistentvolume : persistentvolume. |
kube_persistentvolume_info kube_persistentvolume_info/gauge | |
GAUGE , DOUBLE , 1 prometheus_target 1.27.2-gke.1200 | Informazioni su persistentvolume. Campionamento eseguito ogni 30 secondi.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 | La fase indica se un volume è disponibile, vincolato a una rivendicazione o rilasciato da una rivendicazione. Campionamento eseguito ogni 30 secondi.persistentvolume : persistentvolume. phase : fase. |
kube_persistentvolumeclaim_info kube_persistentvolumeclaim_info/gauge | |
GAUGE , DOUBLE , 1 prometheus_target 1.27.2-gke.1200 | Informazioni sulla richiesta di volume permanente. Campionamento eseguito ogni 30 secondi.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 | La capacità di archiviazione richiesta dalla richiesta di volume permanente. Campionamento eseguito ogni 30 secondi.persistentvolumeclaim : persistentvolumeclaim. |
kube_persistentvolumeclaim_status_phase kube_persistentvolumeclaim_status_phase/gauge | |
GAUGE , DOUBLE , 1 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 : persistentvolumeclaim. 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 eseguire i container, che condividono risorse di archiviazione e di rete.
Tabella delle metriche pod
Le metriche dei pod ti consentono di monitorare e ricevere avvisi sul comportamento dei tuoi pod. La tabella seguente mostra le metriche disponibili nel pacchetto kube state metrics.
I nomi delle metriche di Cloud Monitoring in questa tabella devono avere il prefisso prometheus.googleapis.com/
. Questo prefisso è stato omesso dalle voci della tabella.
Nome metrica PromQL Nome metrica Cloud Monitoring | |
---|---|
Tipo, Unità Risorse monitorate Versione GKE richiesta | Descrizione Etichette |
kube_pod_container_status_ready kube_pod_container_status_ready/gauge | |
GAUGE , DOUBLE , 1 prometheus_target 1.27.2-gke.1200 | Indica 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 | |
GAUGE , DOUBLE , 1 prometheus_target 1.27.2-gke.1200 | Descrive il motivo per cui il contenitore si trova attualmente nello 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 | |
GAUGE , DOUBLE , 1 prometheus_target 1.27.2-gke.1200 | La fase attuale del pod. Campionamento eseguito ogni 30 secondi.phase : fase. pod : pod. uid : uid. |
kube_pod_status_unschedulable kube_pod_status_unschedulable/gauge | |
GAUGE , DOUBLE , 1 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, consulta Metriche dei pod.
Query di esempio per le metriche pod
Per determinare se hai pod non pianificabili, utilizza la seguente espressione PromQL:
sum(kube_pod_status_unschedulable{cluster="CLUSTER", namespace="NAMESPACE"})
Per generare un avviso in base al numero di pod non pianificabili in uno spazio dei nomi, puoi utilizzare la 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 per un container bloccato in uno stato di attesa specifico utilizzando un'espressione PromQL come la seguente:
max_over_time(kube_pod_container_status_waiting_reason{reason="REASON", cluster="CLUSTER", namespace="NAMESPACE"}[5m]) >= 1
Il valore di REASON specifica lo stato di attesa del contenitore, ad esempio:
CrashLoopBackOff
ImagePullBackOff
ContainerCreating
Per creare un avviso per un container bloccato in uno degli stati di attesa, utilizza la seguente espressione PromQL:
max_over_time(kube_pod_container_status_waiting_reason{cluster="CLUSTER", namespace="NAMESPACE"}[5m]) >= 1
Per determinare il numero di container che non superano i controlli di idoneità, utilizza la seguente espressione PromQL:
sum(kube_pod_container_status_ready) by (pod, container) == 0
Alcune delle espressioni di query e avviso in questa sezione sono state adattate dal file kubernetes-apps.yaml
nel repository Prometheus community Kubernetes Helm Charts su GitHub.
Playbook interattivi
Le metriche di stato di Kube vengono utilizzate anche nei playbook interattivi GKE per la risoluzione dei problemi relativi ai pod non pianificabili o in crashloop. Per saperne di più su queste modalità di errore, consulta i seguenti documenti per la risoluzione dei problemi:
Se il pacchetto Kube State Metrics non è abilitato, il modo principale per rilevare i problemi di pianificazione dei pod è eseguire query sugli eventi di log "Pianificazione non riuscita". Dopo aver abilitato il pacchetto Kube State Metrics, puoi utilizzare la metrica kube_pod_status_unschedulable
, che ha lo stesso scopo, ma è più facile da aggregare e rappresentare graficamente. Utilizzando la metrica, puoi vedere quanti pod non sono pianificabili e quando è iniziato il problema.
Allo stesso modo, la metrica di sistema GKE kubernetes.io/container/restart_count
può aiutarti a rilevare i pod in crashlooping. La metrica kube_pod_container_status_waiting_reason
enumera anche i pod in crashlooping e ti consente di determinare se i pod sono bloccati in stati di attesa diversi da CrashLookBackOff
, come ImagePullBackOff
e ContainerCreating
.
Per esplorare i playbook interattivi:
-
Nella console Google Cloud , vai alla pagina
Dashboard:
Se utilizzi la barra di ricerca per trovare questa pagina, seleziona il risultato con il sottotitolo Monitoring.
- Filtra l'elenco delle dashboard facendo clic sulla categoria GCP.
- Fai clic sul nome di un dashboard "GKE Interactive Playbook" nell'elenco.
Metriche di deployment
Un deployment è un controller che aggiorna lo stato delle risorse come i pod, per gestire eventi come implementazioni e spegnimenti.
Tabella delle metriche di deployment
Le metriche di Deployment ti consentono di monitorare e inviare avvisi sul comportamento del controller. La tabella seguente mostra le metriche disponibili nel pacchetto kube-state-metrics:
I nomi delle metriche di Cloud Monitoring in questa tabella devono avere il prefisso prometheus.googleapis.com/
. Questo prefisso è stato omesso dalle voci della tabella.
Nome metrica PromQL Nome metrica Cloud Monitoring | |
---|---|
Tipo, Unità Risorse monitorate Versione GKE richiesta | Descrizione Etichette |
kube_deployment_spec_replicas kube_deployment_spec_replicas/gauge | |
GAUGE , DOUBLE , 1 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 | |
GAUGE , DOUBLE , 1 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 | |
GAUGE , DOUBLE , 1 prometheus_target 1.27.2-gke.1200 | Il numero di repliche aggiornate per deployment. Campionamento eseguito ogni 30 secondi.deployment : deployment. |
Per ulteriori informazioni, consulta 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 del deployment.
Ad esempio, per confrontare il numero di repliche disponibili con il numero previsto di repliche in un singolo deployment, puoi utilizzare le seguenti query PromQL per tracciare entrambe le metriche in un unico grafico:
kube_deployment_spec_replicas{cluster="CLUSTER", namespace="NAMESPACE", deployment=DEPLOYMENT"}
kube_deployment_status_replicas_available{cluster="CLUSTER", namespace="NAMESPACE", deployment=DEPLOYMENT"}
Per ricevere un avviso in caso di deployment non riuscito o bloccato, puoi utilizzare la seguente 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 avviso in questa sezione sono state adattate dal file kubernetes-apps.yaml
nel repository Prometheus community Kubernetes Helm Charts su GitHub.
Metriche StatefulSet
Uno StatefulSet è un controller che gestisce il deployment e lo scaling di un insieme di pod per le applicazioni stateful. Questo controller gestisce l'ordine e l'univocità dei pod.
Tabella delle metriche StatefulSet
Le metriche StatefulSet ti consentono di monitorare e inviare avvisi sul comportamento del controller. La tabella seguente mostra le metriche disponibili nel pacchetto kube-state-metrics:
I nomi delle metriche di Cloud Monitoring in questa tabella devono avere il prefisso prometheus.googleapis.com/
. Questo prefisso è stato omesso dalle voci della tabella.
Nome metrica PromQL Nome metrica Cloud Monitoring | |
---|---|
Tipo, Unità Risorse monitorate Versione GKE richiesta | Descrizione Etichette |
kube_statefulset_replicas kube_statefulset_replicas/gauge | |
GAUGE , DOUBLE , 1 prometheus_target 1.27.2-gke.1200 | Numero di pod desiderati per un StatefulSet. Campionamento eseguito ogni 30 secondi.statefulset : statefulset. |
kube_statefulset_status_replicas_ready kube_statefulset_status_replicas_ready/gauge | |
GAUGE , DOUBLE , 1 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 | |
GAUGE , DOUBLE , 1 prometheus_target 1.27.2-gke.1200 | Il numero di repliche aggiornate per StatefulSet. Campionamento eseguito ogni 30 secondi.statefulset : statefulset. |
Per ulteriori informazioni, consulta Metriche StatefulSet.
Query di esempio per le metriche StatefulSet
Puoi creare grafici e criteri di avviso per singoli StatefulSet filtrando le metriche di StatefulSet per cluster, spazio dei nomi e nome di StatefulSet.
Ad esempio, per confrontare il numero di repliche disponibili con il numero previsto di repliche in un singolo StatefulSet, puoi utilizzare le seguenti query PromQL per tracciare entrambe le metriche in un unico grafico:
kube_statefulset_replicas{cluster="CLUSTER", namespace="NAMESPACE", statefulset="STATEFULSET"}
kube_statefulset_status_replicas_ready{cluster="CLUSTER", namespace="NAMESPACE", statefulset="STATEFULSET"}
Per generare un avviso in caso di implementazione di StatefulSet non riuscita o bloccata, puoi utilizzare la seguente 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 avviso in questa sezione sono state adattate dal file kubernetes-apps.yaml
nel repository Prometheus community Kubernetes Helm Charts su GitHub.
Metriche DaemonSet
Un DaemonSet è un controller che garantisce che un insieme di nodi esegua una copia di un pod. Ad esempio, man mano che i nodi vengono aggiunti a un cluster, DaemonSet aggiunge i pod ai nodi. Questo controller è utile per garantire che determinati processi vengano eseguiti su ogni nodo.
Tabella delle metriche DaemonSet
Le metriche DaemonSet ti consentono di monitorare e inviare avvisi sul comportamento del controller. La tabella seguente mostra le metriche disponibili nel pacchetto kube-state-metrics:
I nomi delle metriche di Cloud Monitoring in questa tabella devono avere il prefisso prometheus.googleapis.com/
. Questo prefisso è stato omesso dalle voci della tabella.
Nome metrica PromQL Nome metrica Cloud Monitoring | |
---|---|
Tipo, Unità Risorse monitorate Versione GKE richiesta | Descrizione Etichette |
kube_daemonset_status_desired_number_scheduled kube_daemonset_status_desired_number_scheduled/gauge | |
GAUGE , DOUBLE , 1 prometheus_target 1.27.2-gke.1200 | Il numero di nodi che dovrebbero eseguire il pod del daemon. Campionamento eseguito ogni 30 secondi.daemonset : daemonset. |
kube_daemonset_status_number_misscheduled kube_daemonset_status_number_misscheduled/gauge | |
GAUGE , DOUBLE , 1 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 | |
GAUGE , DOUBLE , 1 prometheus_target 1.27.2-gke.1200 | Il numero di nodi che dovrebbero eseguire il pod del daemon e che hanno uno o più pod del daemon in esecuzione e pronti. Campionamento eseguito ogni 30 secondi.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 | 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 di DaemonSet per cluster, spazio dei nomi e nome del DaemonSet.
Ad esempio, per confrontare il numero di repliche disponibili con il numero previsto di repliche in un singolo DaemonSet, puoi utilizzare le seguenti query PromQL per tracciare entrambe le metriche in un unico grafico:
kube_daemonset_status_updated_number_scheduled{cluster="CLUSTER", namespace="NAMESPACE", daemonsetset=DAEMONSET"}
kube_daemonset_status_desired_number_scheduled{cluster="CLUSTER", namespace="NAMESPACE", daemonset=DAEMONSET"}
Per generare un avviso in caso di implementazione di DaemonSet non riuscita o bloccata, puoi utilizzare la seguente 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 avviso in questa sezione sono state adattate dal file kubernetes-apps.yaml
nel repository Prometheus community Kubernetes Helm Charts su GitHub.
Metriche HorizontalPodAutoscaler
Un HorizontalPodAutoscaler (HPA) è un controller che modifica periodicamente il numero di pod in un workload, ad esempio un deployment o un StatefulSet, in risposta a una metrica come l'utilizzo di CPU o memoria. La modifica del numero di pod disponibili per un workload mantiene il workload reattivo ed efficiente.
Per saperne di più sugli HPA, consulta Visualizzare i dettagli di un Horizontal Pod Autoscaler.
Tabella delle metriche HPA
Le metriche di HorizontalPodAutoscaler consentono di monitorare e inviare avvisi sul comportamento del controller. La tabella seguente mostra le metriche disponibili nel pacchetto kube-state-metrics:
I nomi delle metriche di Cloud Monitoring in questa tabella devono avere il prefisso prometheus.googleapis.com/
. Questo prefisso è stato omesso dalle voci della tabella.
Nome metrica PromQL Nome metrica Cloud Monitoring | |
---|---|
Tipo, Unità Risorse monitorate Versione GKE richiesta | Descrizione Etichette |
kube_horizontalpodautoscaler_spec_max_replicas kube_horizontalpodautoscaler_spec_max_replicas/gauge | |
GAUGE , DOUBLE , 1 prometheus_target 1.27.2-gke.1200 | Il limite superiore del numero di pod che può essere impostato dallo strumento di scalabilità automatica non può essere inferiore a MinReplicas. Campionamento eseguito ogni 30 secondi.horizontalpodautoscaler : horizontalpodautoscaler. |
kube_horizontalpodautoscaler_spec_min_replicas kube_horizontalpodautoscaler_spec_min_replicas/gauge | |
GAUGE , DOUBLE , 1 prometheus_target 1.27.2-gke.1200 | Limite inferiore per il numero di pod che possono essere impostati dal gestore della scalabilità automatica, valore predefinito 1. Campionamento eseguito ogni 30 secondi.horizontalpodautoscaler : horizontalpodautoscaler. |
kube_horizontalpodautoscaler_spec_target_metric kube_horizontalpodautoscaler_spec_target_metric/gauge | |
GAUGE , DOUBLE , 1 prometheus_target 1.27.2-gke.1200 | Le specifiche delle metriche utilizzate da questo gestore della scalabilità automatica per il calcolo del 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 | |
GAUGE , DOUBLE , 1 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 | |
GAUGE , DOUBLE , 1 prometheus_target 1.27.2-gke.1200 | Numero attuale di repliche dei pod gestiti da questo autoscaler. Campionamento eseguito ogni 30 secondi.horizontalpodautoscaler : horizontalpodautoscaler. |
kube_horizontalpodautoscaler_status_desired_replicas kube_horizontalpodautoscaler_status_desired_replicas/gauge | |
GAUGE , DOUBLE , 1 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, consulta Metriche di scalabilità automatica orizzontale dei pod.
Query di esempio per le metriche HPA
Ad esempio, per determinare se HPA si sta avvicinando al numero massimo 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 HPA è in esecuzione con il numero massimo di repliche, potresti voler aumentare la specifica per il numero massimo di pod. Puoi utilizzare la seguente espressione PromQL per creare un avviso che ti informi di questo caso:
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 delle metriche kube_horizontalpodautoscaler_status_current_replicas
e kube_horizontalpodautoscaler_status_desired_replicas
per determinare se esiste una differenza tra il numero attuale e quello necessario di repliche. Una differenza potrebbe indicare un vincolo di risorse nel cluster. La seguente espressione PromQL cerca le differenze tra il numero attuale di repliche e il numero necessario, minimo e massimo di repliche, nonché le modifiche al 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 metrica kube_horizontalpodautoscaler_status_condition
possono anche aiutarti a rilevare quando gli HPA riscontrano varie modalità di errore. Ad esempio:
- La condizione
ScalingLimited
e lo statotrue
indicano che HPA è vincolato dal numero minimo o massimo di repliche:kube_horizontalpodautoscaler_status_condition{status="true", condition="ScalingLimited"} == 1
La condizione
AbleToScale
e lo statofalse
indicano che 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 statofalse
indicano che HPA è disattivato o non è in grado di calcolare una nuova scalabilità:kube_horizontalpodautoscaler_status_condition{status="false", condition="ScalingActive"} == 1
Alcune delle espressioni di query e avviso in questa sezione sono state adattate dal file kubernetes-apps.yaml
nel repository Prometheus community Kubernetes Helm Charts su GitHub.
Metriche JobSet
Un Jobset è un'API per i carichi di lavoro che ti consente di gestire un gruppo di job Kubernetes come un'unica unità. Il caso d'uso più comune per un JobSet è l'addestramento distribuito, ma puoi utilizzarlo anche per eseguire workload batch.
Per ulteriori informazioni sui JobSet, consulta la documentazione di JobSet.
Tabella delle metriche JobSet
Le metriche JobSet ti consentono di monitorare e creare avvisi sul comportamento dei tuoi JobSet. La seguente tabella mostra le metriche disponibili nel pacchetto kube-state-metrics:
I nomi delle metriche di Cloud Monitoring in questa tabella devono avere il prefisso prometheus.googleapis.com/
. Questo prefisso è stato omesso dalle voci della tabella.
Nome metrica PromQL Nome metrica Cloud Monitoring | |
---|---|
Tipo, Unità Risorse monitorate Versione GKE richiesta | Descrizione Etichette |
kube_jobset_specified_replicas kube_jobset_specified_replicas/gauge | |
GAUGE , DOUBLE , 1 prometheus_target 1.32.1-gke.1357001 | Il numero di repliche specificate per i job replicati in un set di job. Campionamento eseguito ogni 30 secondi.jobset_name : jobset_name. replicated_job_name : replicated_job_name. |
kube_jobset_ready_replicas kube_jobset_ready_replicas/gauge | |
GAUGE , DOUBLE , 1 prometheus_target 1.32.1-gke.1357001 | Il numero di repliche con stato "READY" per i job replicati in un JobSet. Campionamento eseguito ogni 30 secondi.jobset_name : jobset_name. replicated_job_name : replicated_job_name. |
kube_jobset_succeeded_replicas kube_jobset_succeeded_replicas/gauge | |
GAUGE , DOUBLE , 1 prometheus_target 1.32.1-gke.1357001 | Il numero di repliche con stato "SUCCEEDED" per i job replicati in un JobSet. Campionamento eseguito ogni 30 secondi.jobset_name : jobset_name. replicated_job_name : replicated_job_name. |
kube_jobset_failed_replicas kube_jobset_failed_replicas/gauge | |
GAUGE , DOUBLE , 1 prometheus_target 1.32.1-gke.1357001 | Il numero di repliche con stato "FAILED" per i job replicati in un JobSet. Campionamento eseguito ogni 30 secondi.jobset_name : jobset_name. replicated_job_name : replicated_job_name. |
kube_jobset_active_replicas kube_jobset_active_replicas/gauge | |
GAUGE , DOUBLE , 1 prometheus_target 1.32.1-gke.1357001 | Il numero di repliche nello stato "ACTIVE" per i job replicati in un JobSet. Campionamento eseguito ogni 30 secondi.jobset_name : jobset_name. replicated_job_name : replicated_job_name. |
kube_jobset_suspended_replicas kube_jobset_suspended_replicas/gauge | |
GAUGE , DOUBLE , 1 prometheus_target 1.32.1-gke.1357001 | Il numero di repliche in stato "SUSPENDED" per i job replicati in un JobSet. Campionamento eseguito ogni 30 secondi.jobset_name : jobset_name. replicated_job_name : replicated_job_name. |
kube_jobset_status_condition kube_jobset_status_condition/gauge | |
GAUGE , DOUBLE , 1 prometheus_target 1.32.1-gke.1357001 | Le condizioni di stato attuali di un JobSet. Campionamento eseguito ogni 30 secondi.jobset_name : jobset_name. condition : condizione. |
kube_jobset_restarts kube_jobset_restarts/gauge | |
GAUGE , DOUBLE , 1 prometheus_target 1.32.4-gke.1767000 1.33.0-gke.1868000 | Il numero di riavvii del JobSet. Campionamento eseguito ogni 30 secondi.jobset_name : jobset_name. |
Query di esempio per le metriche JobSet
Puoi creare grafici e criteri di avviso per singoli JobSet filtrando le metriche JobSet per cluster, spazio dei nomi e nome del JobSet.
Ad esempio, per confrontare il numero di repliche in uno stato READY
con il numero previsto di repliche in un singolo JobSet, traccia entrambe le metriche in un unico grafico utilizzando le seguenti query PromQL:
kube_jobset_specified_replicas{cluster="CLUSTER", namespace="NAMESPACE", jobset_name="JOBSET_NAME"}
kube_jobset_ready_replicas{cluster="CLUSTER", namespace="NAMESPACE", jobset_name="JOBSET_NAME"}
Per ricevere un avviso in caso di implementazione di JobSet non riuscita o non disponibile, puoi utilizzare la seguente espressione PromQL:
kube_jobset_specified_replicas{cluster="CLUSTER", namespace="NAMESPACE", jobset_name="JOBSET_NAME"} > kube_jobset_ready_replicas{cluster="CLUSTER", namespace="NAMESPACE", jobset_name="JOBSET_NAME"}
L'etichetta condition
nella metrica kube_jobset_status_condition
può anche aiutarti a rilevare quando i JobSet riscontrano varie modalità di errore, ad esempio:
- La condizione
Failed
indica che l'esecuzione di JobSet non è riuscita:kube_jobset_status_condition{jobset_name="JOBSET_NAME, condition="Failed"} == 1
- La condizione
Suspended
indica che il JobSet è sospeso:kube_jobset_status_condition{jobset_name="JOBSET_NAME, condition="Suspended"} == 1
Alcune delle espressioni di query e avviso in questa sezione sono state adattate dal file kubernetes-apps.yaml
nel repository Prometheus community Kubernetes Helm Charts su GitHub.