Puoi configurare un cluster Google Kubernetes Engine (GKE) per inviare un set selezionato di metriche di stato kube, incluse metriche per pod, deployment e altro ancora, a Cloud Monitoring utilizzando Google Cloud Managed Service per Prometheus. Questo documento descrive come queste metriche vengono formattate quando vengono scritte in Cloud Monitoring e come eseguire query. Questo documento fornisce anche tabelle che elencano le metriche di ogni set e fornisce informazioni su come puoi utilizzarle.
Prima di poter utilizzare le metriche di stato di kube, devi abilitare la relativa raccolta.
Formato delle metriche
Tutte le metriche dello stato kube di Kubernetes scritte in Cloud Monitoring utilizzano il tipo di risorsa
prometheus_target
.
Ogni nome di metrica è preceduto dal prefisso prometheus.googleapis.com/
e ha un suffisso che indica il tipo di metrica Prometheus, ad esempio /gauge
, /histogram
o /counter
. Altrimenti, il nome di ogni metrica è identico
a quello 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 utilizzando Google Cloud Managed Service per Prometheus, è possibile eseguire query sulle metriche di stato kube utilizzando Prometheus Query Language (PromQL). È possibile eseguire query anche utilizzando l'utilizzo di Monitoring Query Language (MQL).
Esecuzione di query sulle metriche
Quando esegui query sulle metriche di stato di Kube, il nome da utilizzare varia a seconda che tu stia utilizzando funzionalità basate su PromQL o Cloud Monitoring come MQL o l' interfaccia basata su menu di Metrics Explorer.
Le seguenti tabelle di metriche di stato kube mostrano due versioni del nome di ogni 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 di Cloud Monitoring Quando utilizzi altre funzionalità di Cloud Monitoring, usa il nome della metrica di Cloud Monitoring nelle tabelle seguenti. Questo nome deve essere preceduto dal 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 come prefisso prometheus.googleapis.com/
. Il prefisso è stato omesso dalle
voci della tabella.
Nome metrica PromQL Nome metrica Cloud Monitoring |
|
---|---|
Tipo, Tipo, Unità
Risorse monitorate Versione di GKE obbligatoria |
Descrizione Etichette |
kube_persistentvolume_capacity_bytes kube_persistentvolume_capacity_bytes/gauge
|
|
GAUGE , DOUBLE , By
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
|
|
GAUGE , DOUBLE , 1
prometheus_target 1.27.2-gke.1200 |
Informazioni sul riferimento dell'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
|
|
GAUGE , DOUBLE , 1
prometheus_target 1.27.2-gke.1200 |
Informazioni sul volume permanente.
Campionamento eseguito ogni 30 secondi.csi_driver : csi_driver.
csi_volume_handle : csi_volume_handle.
local_fs : local_fs.
local_path : local_path.
persistentvolume : volume permanente.
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, associato a una rivendicazione o ritirato da una rivendicazione.
Campionamento eseguito ogni 30 secondi.persistentvolume : volume permanente.
phase : fase.
|
kube_persistentvolumeclaim_info kube_persistentvolumeclaim_info/gauge
|
|
GAUGE , DOUBLE , 1
prometheus_target 1.27.2-gke.1200 |
Informazioni sull'attestazione di volumi permanenti.
Campionamento eseguito ogni 30 secondi.persistentvolumeclaim : richiesta permanentedelvolume.
storageclass : storageclass.
volumename : nomevolume.
|
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 spazio di archiviazione richiesta dalla richiesta di volume permanente.
Campionamento eseguito ogni 30 secondi.persistentvolumeclaim : richiesta permanentedelvolume.
|
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 volumi permanenti.
Campionamento eseguito ogni 30 secondi.persistentvolumeclaim : richiesta permanentedelvolume.
phase : fase.
|
Per ulteriori informazioni, consulta le pagine 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 le risorse di archiviazione e di rete.
Tabella delle metriche dei pod
Le metriche dei pod ti consentono di monitorare e creare avvisi sul comportamento dei pod. La seguente tabella mostra le metriche disponibili nel pacchetto di metriche relative allo stato kube:
I nomi delle metriche di Cloud Monitoring in questa tabella devono avere come prefisso prometheus.googleapis.com/
. Il prefisso è stato omesso dalle
voci della tabella.
Nome metrica PromQL Nome metrica Cloud Monitoring |
|
---|---|
Tipo, Tipo, Unità
Risorse monitorate Versione di GKE obbligatoria |
Descrizione Etichette |
kube_pod_container_status_ready kube_pod_container_status_ready/gauge
|
|
GAUGE , DOUBLE , 1
prometheus_target 1.27.2-gke.1200 |
Descrive se il controllo di idoneità dei container è riuscito.
Campionamento eseguito ogni 30 secondi.container : container.
pod : pod.
uid : uid.
|
kube_pod_container_status_waiting_reason kube_pod_status_container_status_waiting_reason/gauge
|
|
GAUGE , DOUBLE , 1
prometheus_target 1.27.2-gke.1200 |
Descrive il motivo per cui il container è attualmente in stato di attesa.
Campionamento eseguito ogni 30 secondi.container : container.
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 dei 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 dei pod
Per determinare se sono presenti pod non pianificabili, utilizza la seguente espressione PromQL:
sum(kube_pod_status_unschedulable{cluster="CLUSTER", namespace="NAMESPACE"})
Per segnalare un 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 specifico stato di attesa 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 REASON specifica lo stato di attesa del container, 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 quanti container 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 ed avvisi in questa sezione sono state adattate dal file kubernetes-apps.yaml
nel repository dei grafici Kubernetes Helm della community Prometheus su GitHub.
Playbook interattivi
Le metriche di stato kube vengono utilizzate anche nei playbook interattivi GKE per risolvere i problemi dei pod non pianificabili o con arresto anomalo in loop. Per ulteriori informazioni su queste modalità di errore, consulta i seguenti documenti per la risoluzione dei problemi:
Senza il pacchetto di metriche sullo stato kube abilitato, il modo principale per rilevare i problemi di pianificazione dei pod è eseguire una query sugli eventi dei log "Pianificazione non riuscita". Dopo aver abilitato il pacchetto di metriche sullo stato kube, puoi utilizzare la metrica kube_pod_status_unschedulable
, che ha lo stesso scopo, ma è più facile da aggregare e tracciare. Grazie alla 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 loop. La metrica kube_pod_container_status_waiting_reason
indica anche i pod con arresto anomalo in loop e consente di determinare se i pod sono bloccati in stati di attesa diversi da CrashLookBackOff
, ad esempio ImagePullBackOff
e ContainerCreating
.
Per esplorare i playbook interattivi, segui questi passaggi:
-
Nel pannello di navigazione della console Google Cloud, seleziona Monitoring e poi Dashboard:
- Filtra l'elenco delle dashboard facendo clic sulla categoria G C P.
- Fai clic sul nome di una dashboard "playbook interattivo GKE" nell'elenco.
Metriche di deployment
Un deployment è un controller che aggiorna lo stato di risorse come i pod, per gestire eventi come implementazioni e turndown.
Tabella delle metriche di deployment
Le metriche di deployment consentono di monitorare e generare avvisi sul comportamento del controller. La seguente tabella mostra le metriche disponibili nel pacchetto di metriche relative allo stato kube:
I nomi delle metriche di Cloud Monitoring in questa tabella devono avere come prefisso prometheus.googleapis.com/
. Il prefisso è stato omesso dalle
voci della tabella.
Nome metrica PromQL Nome metrica Cloud Monitoring |
|
---|---|
Tipo, Tipo, Unità
Risorse monitorate Versione di GKE obbligatoria |
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 la pagina relativa alle 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 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 segnalare un 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 ed avvisi in questa sezione sono state adattate dal file kubernetes-apps.yaml
nel repository dei grafici Kubernetes Helm della community Prometheus su GitHub.
Metriche StatefulSet
Uno StatefulSet è un controller che gestisce il deployment e la scalabilità 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 consentono di monitorare e creare avvisi sul comportamento del controller. La seguente tabella mostra le metriche disponibili nel pacchetto di metriche relative allo stato kube:
I nomi delle metriche di Cloud Monitoring in questa tabella devono avere come prefisso prometheus.googleapis.com/
. Il prefisso è stato omesso dalle
voci della tabella.
Nome metrica PromQL Nome metrica Cloud Monitoring |
|
---|---|
Tipo, Tipo, Unità
Risorse monitorate Versione di GKE obbligatoria |
Descrizione Etichette |
kube_statefulset_replicas kube_statefulset_replicas/gauge
|
|
GAUGE , DOUBLE , 1
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
|
|
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 la pagina relativa alle 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 dello 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 su 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 segnalare un'implementazione 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 ed avvisi in questa sezione sono state adattate dal file kubernetes-apps.yaml
nel repository dei grafici Kubernetes Helm della community Prometheus su GitHub.
Metriche DaemonSet
Un DaemonSet è un controller che garantisce che un insieme di nodi esegua una copia di un pod. Ad esempio, quando i nodi vengono aggiunti a un cluster, il DaemonSet aggiunge pod. Questo controller è utile per garantire che determinati processi vengano eseguiti su ogni nodo.
Tabella delle metriche DaemonSet
Le metriche DaemonSet consentono di monitorare e creare avvisi sul comportamento del controller. La seguente tabella mostra le metriche disponibili nel pacchetto di metriche relative allo stato kube:
I nomi delle metriche di Cloud Monitoring in questa tabella devono avere come prefisso prometheus.googleapis.com/
. Il prefisso è stato omesso dalle
voci della tabella.
Nome metrica PromQL Nome metrica Cloud Monitoring |
|
---|---|
Tipo, Tipo, Unità
Risorse monitorate Versione di GKE obbligatoria |
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 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
|
|
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, consulta la sezione 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 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 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 segnalare un'implementazione 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 ed avvisi in questa sezione sono state adattate dal file kubernetes-apps.yaml
nel repository dei grafici Kubernetes Helm della community Prometheus su GitHub.
Metriche di HorizontalPodAutoscaler
Un HorizontalPodAutoscaler (HPA) è un controller che modifica periodicamente il numero di pod in un carico di lavoro, ad esempio un Deployment o StatefulSet, in risposta ad alcune metriche come l'utilizzo della CPU o della memoria. La modifica del numero di pod disponibili per un carico di lavoro mantiene il carico di lavoro reattivo, ma efficiente.
Per ulteriori informazioni sugli HPA, consulta Visualizzare i dettagli di un Horizontal Pod Autoscaler.
Tabella delle metriche HPA
Le metriche di HorizontalPodAutoscaler consentono di monitorare e creare avvisi sul comportamento del controller. La seguente tabella mostra le metriche disponibili nel pacchetto di metriche relative allo stato kube:
I nomi delle metriche di Cloud Monitoring in questa tabella devono avere come prefisso prometheus.googleapis.com/
. Il prefisso è stato omesso dalle
voci della tabella.
Nome metrica PromQL Nome metrica Cloud Monitoring |
|
---|---|
Tipo, Tipo, Unità
Risorse monitorate Versione di GKE obbligatoria |
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 per il numero di pod che possono essere impostati dal gestore della scalabilità automatica non può essere inferiore a quello di 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, 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 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
|
|
GAUGE , DOUBLE , 1
prometheus_target 1.27.2-gke.1200 |
Le condizioni del 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 di 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
|
|
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 maggiori informazioni, consulta Horizontal Pod Autoscaler Metrics.
Query di esempio per le metriche HPA
Ad esempio, per determinare se l'HPA sta per raggiungere il numero massimo di repliche, puoi tracciare il rapporto seguente:
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 voler aumentare la specifica per il numero massimo di pod. Puoi utilizzare la seguente espressione PromQL per creare un avviso che ti avvisi 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 c'è una differenza tra il numero di repliche attuale e quello necessario. Una differenza può indicare un vincolo di risorse
nel cluster. La seguente espressione PromQL cerca le differenze tra il numero attuale di repliche e il numero minimo e massimo di repliche necessario, nonché le modifiche nel 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 si verificano in varie modalità di errore. Ad esempio:
- La condizione
ScalingLimited
e lo statotrue
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 uno statofalse
indicano che l'HPA sta riscontrando problemi di recupero o aggiornamento delle scale:kube_horizontalpodautoscaler_status_condition{status="false", condition="AbleToScale"} == 1
La condizione
ScalingActive
e uno statofalse
indicano che l'HPA è disabilitato o non è in grado di calcolare una nuova bilancia:kube_horizontalpodautoscaler_status_condition{status="false", condition="ScalingActive"} == 1
Alcune delle espressioni di query ed avvisi in questa sezione sono state adattate dal file kubernetes-apps.yaml
nel repository dei grafici Kubernetes Helm della community Prometheus su GitHub.