Esta página descreve como configurar um cluster do Google Kubernetes Engine (GKE) para enviar um conjunto organizado de kube state, incluindo métricas para pods e implementações, para o Cloud Monitoring através do Google Cloud Managed Service for Prometheus. Esta página também descreve como estas métricas são formatadas quando são escritas no Monitoring e como consultar métricas.
Antes de começar
Antes de começar, certifique-se de que realizou as seguintes tarefas:
- Ative a API Google Kubernetes Engine. Ative a API Google Kubernetes Engine
- Se quiser usar a CLI gcloud para esta tarefa,
instale-a e, em seguida,
inicialize-a. Se instalou anteriormente a CLI gcloud, execute
gcloud components update
para obter a versão mais recente.
Requisitos
Para recolher métricas de estado do kube, o seu cluster do GKE tem de cumprir os seguintes requisitos:
- O cluster tem de estar a executar as seguintes versões com base na métrica que quer ativar:
- Para ativar o pacote de métricas JobSet, o cluster tem de ter a versão 1.32.1-gke.1357001 ou posterior. A partir da versão 1.32.1-gke.1357001, o pacote de métricas JobSet está ativado por predefinição nos clusters padrão e Autopilot do GKE criados recentemente.
- A métrica
kube_jobset_restarts
está disponível em clusters 1.32 a partir de 1.32.4-gke.1767000 e em clusters 1.33 a partir de 1.33.0-gke.1868000. - Para ativar quaisquer outros pacotes de métricas descritos nesta página, o cluster tem de executar o GKE 1.27.2-gke.1200 ou posterior. A partir da versão 1.29.2-gke.2000 para clusters padrão do GKE e da versão 1.27.4-gke.900 para clusters do GKE Autopilot, o pacote de métricas de estado do Kube é ativado por predefinição.
- O cluster tem de ter as métricas do sistema ativadas.
- O cluster tem de ter a recolha gerida do Managed Service for Prometheus da Google Cloud ativada. A recolha gerida do Google Cloud Managed Service for Prometheus está ativada por predefinição para novos clusters.
Configure a recolha de métricas de estado do kube
Pode ativar as métricas de estado do kube através da Google Cloud consola, da CLI gcloud ou do Terraform:
Consola
Pode ativar as métricas de estado do kube no separador Observabilidade para um cluster ou uma implementação num cluster. Também pode pré-visualizar os gráficos e as métricas disponíveis antes de ativar o pacote de métricas.
No separador Observabilidade de um cluster, pode filtrar o conjunto de gráficos para métricas de estado do kube pelos seguintes dois itens:
- Estado das cargas de trabalho: inclui as métricas para recursos de pods, implementações, StatefulSets, DaemonSets e HorizontalPodAutoscaler.
- Armazenamento > Persistente: inclui as métricas para volumes persistentes e reivindicações de volumes persistentes.
Pode ativar um ou ambos os conjuntos de métricas.
Para ativar as métricas de estado do kube no separador Observabilidade de um cluster, faça o seguinte:
-
Na Google Cloud consola, aceda à página Clusters do Kubernetes:
Aceda a Clusters do Kubernetes
Se usar a barra de pesquisa para encontrar esta página, selecione o resultado cujo subtítulo é Kubernetes Engine.
Clique no nome do cluster e, de seguida, selecione o separador Observabilidade.
Selecione Estado das cargas de trabalho ou Armazenamento > Persistente na lista de funcionalidades.
Clique em Ativar pacote.
Se o pacote de métricas de estado do kube já estiver ativado, vê um conjunto de gráficos para métricas de estado do kube.
Para ativar as métricas de estado do kube a partir do separador Observabilidade para uma implementação, faça o seguinte:
-
Na Google Cloud consola, aceda à página Workloads:
Se usar a barra de pesquisa para encontrar esta página, selecione o resultado cujo subtítulo é Kubernetes Engine.
Clique no nome da sua implementação e, de seguida, selecione o separador Observabilidade.
Selecione Kube State na lista de funcionalidades.
Clique em Ativar pacote. O pacote está ativado para todo o cluster.
Se o pacote de métricas de estado do kube já estiver ativado, é apresentado um conjunto de gráficos para métricas de pods, implementações e escaladores automáticos de pods horizontais.
Para configurar as métricas de estado do kube a partir do separador Detalhes do cluster, faça o seguinte:
-
Na Google Cloud consola, aceda à página Clusters do Kubernetes:
Aceda a Clusters do Kubernetes
Se usar a barra de pesquisa para encontrar esta página, selecione o resultado cujo subtítulo é Kubernetes Engine.
Clique no nome do cluster.
Na linha Funcionalidades com a etiqueta Cloud Monitoring, clique no ícone Editar.
Na caixa de diálogo Editar monitorização na nuvem apresentada, confirme que a opção Ativar monitorização na nuvem está selecionada.
No menu pendente Componentes, selecione os componentes de estado do kube a partir dos quais quer recolher métricas.
Clique em OK.
Clique em Guardar alterações.
gcloud
Atualize o cluster para recolher métricas:
gcloud container clusters update CLUSTER_NAME \
--location=COMPUTE_LOCATION \
--enable-managed-prometheus \
--monitoring=SYSTEM,DAEMONSET,DEPLOYMENT,HPA,POD,STATEFULSET,STORAGE
Substitua o seguinte:
CLUSTER_NAME
: o nome do cluster existente.COMPUTE_LOCATION
: a localização do Compute Engine do cluster.
O conjunto de valores fornecido ao parâmetro monitoring
substitui qualquer definição anterior.
Terraform
Para configurar a recolha de métricas de estado do kube através do Terraform, consulte o bloco monitoring_config
no registo do Terraform para google_container_cluster
.
Para informações gerais sobre a utilização do Google Cloud com o Terraform, consulte
Terraform com o Google Cloud.
Quota
As métricas de estado do Kube consomem a quota de pedidos de carregamento de séries cronológicas por minuto da API Cloud Monitoring. Antes de ativar as métricas de estado do kube, verifique a sua utilização máxima recente dessa quota. Se tiver muitos clusters no mesmo projeto ou já se estiver a aproximar desse limite de quota, pode pedir um aumento do limite de quota antes de ativar qualquer um dos pacotes de observabilidade.
Preços
As métricas de estado do Kube usam o Google Cloud Managed Service for Prometheus para carregar métricas no Cloud Monitoring. Os custos do Cloud Monitoring para a ingestão destas métricas baseiam-se no número de amostras ingeridas.
Para mais informações, consulte os preços do Cloud Monitoring.
Formato da métrica
Todas as métricas de estado do kube do Kubernetes escritas no Cloud Monitoring
usam o tipo de recurso
prometheus_target
.
Cada nome de métrica tem o prefixo
prometheus.googleapis.com/
e um sufixo que indica o
tipo de métrica do Prometheus, como /gauge
, /histogram
ou /counter
. Caso contrário, cada nome de métrica é idêntico ao nome de métrica exposto pelo Kubernetes de código aberto.
Exportar a partir do Cloud Monitoring
As métricas de estado do kube podem ser exportadas do Cloud Monitoring através da API Cloud Monitoring. Uma vez que todas as métricas de estado do kube são carregadas através do Google Cloud Managed Service for Prometheus, é possível consultar as métricas de estado do kube através da linguagem de consulta do Prometheus (PromQL). Também podem ser consultados através da linguagem de consulta de monitorização (MQL).
Consultar métricas
Quando consulta métricas de estado do kube, o nome que usa depende de estar a usar o PromQL ou funcionalidades baseadas no Cloud Monitoring, como o MQL ou o Explorador de métricas, a interface orientada por menus.
As tabelas seguintes de métricas de estado do kube mostram duas versões de cada nome de métrica:
- Nome da métrica PromQL: quando usa o PromQL nas páginas do Cloud Monitoring da Google Cloud consola ou nos campos PromQL da API Cloud Monitoring, use o nome da métrica PromQL.
- Nome da métrica do Cloud Monitoring Quando usar outras funcionalidades do Cloud Monitoring, use o nome da métrica do Cloud Monitoring nas tabelas abaixo. Este nome tem de ter o prefixo
prometheus.googleapis.com/
, que foi omitido das entradas na tabela.
Métricas de armazenamento
Os nomes das métricas do Cloud Monitoring nesta tabela têm de ter o prefixo prometheus.googleapis.com/
. Esse prefixo foi omitido das entradas na tabela.
Nome da métrica PromQL Nome da métrica do Cloud Monitoring |
|
---|---|
Kind, Type, Unit
Recursos monitorizados Versão do GKE obrigatória |
Descrição Etiquetas |
kube_persistentvolume_capacity_bytes kube_persistentvolume_capacity_bytes/gauge
|
|
GAUGE , DOUBLE , By
prometheus_target 1.27.2-gke.1200 |
Capacidade do volume persistente em bytes.
Amostrada a cada 30 segundos.persistentvolume : persistentvolume.
|
kube_persistentvolume_claim_ref kube_persistentvolume_claim_ref/gauge
|
|
GAUGE , DOUBLE , 1
prometheus_target 1.27.2-gke.1200 |
Informações sobre a referência da reivindicação de volume persistente.
Amostrada a cada 30 segundos.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 |
Informações sobre o persistentvolume.
Amostrada a cada 30 segundos.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 |
A fase indica se um volume está disponível, associado a uma reivindicação ou
libertado por uma reivindicação.
Amostrada a cada 30 segundos.persistentvolume : persistentvolume.
phase : fase.
|
kube_persistentvolumeclaim_info kube_persistentvolumeclaim_info/gauge
|
|
GAUGE , DOUBLE , 1
prometheus_target 1.27.2-gke.1200 |
Informações sobre a reivindicação de volume persistente.
Amostrada a cada 30 segundos.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 |
A capacidade de armazenamento pedida pela reivindicação de volume persistente.
Amostrada a cada 30 segundos.persistentvolumeclaim : persistentvolumeclaim.
|
kube_persistentvolumeclaim_status_phase kube_persistentvolumeclaim_status_phase/gauge
|
|
GAUGE , DOUBLE , 1
prometheus_target 1.27.2-gke.1200 |
A fase em que a reivindicação de volume persistente se encontra atualmente.
Amostrada a cada 30 segundos.persistentvolumeclaim : persistentvolumeclaim.
phase : fase.
|
Para mais informações, consulte os artigos Métricas de PersistentVolume e Métricas de PersistentVolumeClaim.
Métricas de agrupamento
Um pod é um grupo de um ou mais contentores com uma especificação sobre como executar os contentores, que partilham recursos de armazenamento e de rede.
Tabela de métricas de pods
As métricas de Pod permitem-lhe monitorizar e receber alertas sobre o comportamento dos seus Pods. A tabela seguinte mostra as métricas disponíveis no pacote de métricas kube state.
Os nomes das métricas do Cloud Monitoring nesta tabela têm de ter o prefixo prometheus.googleapis.com/
. Esse prefixo foi omitido das entradas na tabela.
Nome da métrica PromQL Nome da métrica do Cloud Monitoring |
|
---|---|
Kind, Type, Unit
Recursos monitorizados Versão do GKE obrigatória |
Descrição Etiquetas |
kube_pod_container_status_ready kube_pod_container_status_ready/gauge
|
|
GAUGE , DOUBLE , 1
prometheus_target 1.27.2-gke.1200 |
Descreve se a verificação de disponibilidade dos contentores foi bem-sucedida.
Amostrada a cada 30 segundos.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 |
Descreve o motivo pelo qual o contentor se encontra atualmente no estado de espera.
Amostrada a cada 30 segundos.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 |
A fase atual dos pods. Amostrada a cada 30 segundos.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 |
Descreve o estado não agendável do agrupamento.
Amostrada a cada 30 segundos.pod : pod.
uid : uid.
|
Para mais informações, consulte o artigo Métricas de pods.
Exemplos de consultas para métricas de agrupamentos
Para determinar se tem pods não agendáveis, use a seguinte expressão PromQL:
sum(kube_pod_status_unschedulable{cluster="CLUSTER", namespace="NAMESPACE"})
Para receber um alerta sobre um número de agrupamentos não agendáveis num espaço de nomes, pode usar a seguinte expressão PromQL:
sum(kube_pod_status_unschedulable{cluster="CLUSTER", namespace="NAMESPACE"}) > LIMIT
Pode usar a métrica kube_pod_container_status_waiting_reason
para criar um alerta para um contentor bloqueado num estado de espera específico através de uma expressão PromQL, como a seguinte:
max_over_time(kube_pod_container_status_waiting_reason{reason="REASON", cluster="CLUSTER", namespace="NAMESPACE"}[5m]) >= 1
O valor de REASON especifica o estado de espera do contentor, por exemplo:
CrashLoopBackOff
ImagePullBackOff
ContainerCreating
Para criar um alerta para um contentor bloqueado num dos estados de espera, use a seguinte expressão PromQL:
max_over_time(kube_pod_container_status_waiting_reason{cluster="CLUSTER", namespace="NAMESPACE"}[5m]) >= 1
Para determinar quantos contentores estão a falhar nas verificações de disponibilidade, use a seguinte expressão PromQL
sum(kube_pod_container_status_ready) by (pod, container) == 0
Algumas das expressões de consulta e alerta nesta secção foram adaptadas do ficheiro kubernetes-apps.yaml
no repositório de gráficos Helm do Kubernetes da comunidade Prometheus no GitHub.
Guias interativos
As métricas de estado do Kube também são usadas nos manuais interativos do GKE para resolver problemas de pods não agendáveis ou em ciclo de falhas. Para mais informações sobre estes modos de falha, consulte os seguintes documentos de resolução de problemas:
Sem o pacote de métricas de estado do kube ativado, a principal forma de detetar problemas de agendamento de pods é consultar os eventos de registo "Failed Scheduling" (Agendamento falhado). Depois de ativar o pacote de métricas de estado do kube, pode usar a métrica kube_pod_status_unschedulable
, que tem o mesmo objetivo, mas é mais fácil de agregar e representar em gráficos. Ao usar a métrica, pode ver quantos pods não são agendáveis e quando o problema começou.
Da mesma forma, a métrica do sistema do GKE
kubernetes.io/container/restart_count
pode ajudar a detetar pods em crashlooping. A métrica kube_pod_container_status_waiting_reason
também enumera os pods em ciclo de falhas e permite-lhe determinar se os pods estão bloqueados em estados de espera que não sejam CrashLookBackOff
, como ImagePullBackOff
e ContainerCreating
.
Para explorar os manuais interativos, faça o seguinte:
-
Na Google Cloud consola, aceda à página
Painéis de controlo:
Se usar a barra de pesquisa para encontrar esta página, selecione o resultado cujo subtítulo é Monitorização.
- Filtre a lista do painel de controlo clicando na categoria GCP.
- Clique no nome de um painel de controlo "GKE Interactive Playbook" na lista.
Métricas de implementação
Uma implementação é um controlador que atualiza o estado dos recursos, como os pods, para gerir eventos como implementações e desativações.
Tabela de métricas de implementação
As métricas de implementação permitem-lhe monitorizar e receber alertas sobre o comportamento do controlador. A tabela seguinte mostra as métricas disponíveis no pacote kube state metrics:
Os nomes das métricas do Cloud Monitoring nesta tabela têm de ter o prefixo prometheus.googleapis.com/
. Esse prefixo foi omitido das entradas na tabela.
Nome da métrica PromQL Nome da métrica do Cloud Monitoring |
|
---|---|
Kind, Type, Unit
Recursos monitorizados Versão do GKE obrigatória |
Descrição Etiquetas |
kube_deployment_spec_replicas kube_deployment_spec_replicas/gauge
|
|
GAUGE , DOUBLE , 1
prometheus_target 1.27.2-gke.1200 |
Número de pods desejados para uma implementação. Amostrada a cada 30 segundos.deployment : implementação.
|
kube_deployment_status_replicas_available kube_deployment_status_replicas_available/gauge
|
|
GAUGE , DOUBLE , 1
prometheus_target 1.27.2-gke.1200 |
O número de réplicas disponíveis por implementação. Amostrada a cada 30 segundos.deployment : implementação.
|
kube_deployment_status_replicas_updated kube_deployment_status_replicas_updated/gauge
|
|
GAUGE , DOUBLE , 1
prometheus_target 1.27.2-gke.1200 |
O número de réplicas atualizadas por implementação. Amostrada a cada 30 segundos.deployment : implementação.
|
Para mais informações, consulte o artigo Métricas de implementação.
Consultas de exemplo para métricas de implementação
Pode criar gráficos e políticas de alerta para implementações individuais filtrando as métricas de implementação por cluster, espaço de nomes e o nome da implementação.
Por exemplo, para comparar o número de réplicas disponíveis com o número esperado de réplicas numa única implementação, pode usar as seguintes consultas PromQL para representar graficamente ambas as métricas num único gráfico:
kube_deployment_spec_replicas{cluster="CLUSTER", namespace="NAMESPACE", deployment=DEPLOYMENT"}
kube_deployment_status_replicas_available{cluster="CLUSTER", namespace="NAMESPACE", deployment=DEPLOYMENT"}
Para receber um alerta sobre uma implementação com falhas ou em espera, pode usar a seguinte expressão 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 )
Algumas das expressões de consulta e alerta nesta secção foram adaptadas do ficheiro kubernetes-apps.yaml
no repositório de gráficos Helm do Kubernetes da comunidade Prometheus no GitHub.
Métricas do StatefulSet
Um StatefulSet é um controlador que gere a implementação e o dimensionamento de um conjunto de pods para aplicações com estado. Este controlador gere a ordem e a exclusividade dos pods.
Tabela de métricas do StatefulSet
As métricas do StatefulSet permitem-lhe monitorizar e receber alertas sobre o comportamento do controlador. A tabela seguinte mostra as métricas disponíveis no pacote kube state metrics:
Os nomes das métricas do Cloud Monitoring nesta tabela têm de ter o prefixo prometheus.googleapis.com/
. Esse prefixo foi omitido das entradas na tabela.
Nome da métrica PromQL Nome da métrica do Cloud Monitoring |
|
---|---|
Kind, Type, Unit
Recursos monitorizados Versão do GKE obrigatória |
Descrição Etiquetas |
kube_statefulset_replicas kube_statefulset_replicas/gauge
|
|
GAUGE , DOUBLE , 1
prometheus_target 1.27.2-gke.1200 |
Número de agrupamentos desejados para um StatefulSet. Amostrada a cada 30 segundos.statefulset : statefulset.
|
kube_statefulset_status_replicas_ready kube_statefulset_status_replicas_ready/gauge
|
|
GAUGE , DOUBLE , 1
prometheus_target 1.27.2-gke.1200 |
O número de réplicas prontas por StatefulSet. Amostrada a cada 30 segundos.statefulset : statefulset.
|
kube_statefulset_status_replicas_updated kube_statefulset_status_replicas_updated/gauge
|
|
GAUGE , DOUBLE , 1
prometheus_target 1.27.2-gke.1200 |
O número de réplicas atualizadas por StatefulSet. Amostrada a cada 30 segundos.statefulset : statefulset.
|
Para mais informações, consulte o artigo Métricas StatefulSet.
Consultas de exemplo para métricas StatefulSet
Pode criar gráficos e políticas de alerta para StatefulSets individuais filtrando as métricas de StatefulSet por cluster, espaço de nomes e o nome do StatefulSet.
Por exemplo, para comparar o número de réplicas disponíveis com o número esperado de réplicas num único StatefulSet, pode usar as seguintes consultas PromQL para representar graficamente ambas as métricas num único gráfico:
kube_statefulset_replicas{cluster="CLUSTER", namespace="NAMESPACE", statefulset="STATEFULSET"}
kube_statefulset_status_replicas_ready{cluster="CLUSTER", namespace="NAMESPACE", statefulset="STATEFULSET"}
Para receber um alerta sobre uma implementação do StatefulSet com falhas ou em espera, pode usar a seguinte expressão 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 )
Algumas das expressões de consulta e alerta nesta secção foram adaptadas do ficheiro kubernetes-apps.yaml
no repositório de gráficos Helm do Kubernetes da comunidade Prometheus no GitHub.
Métricas de DaemonSet
Um DaemonSet é um controlador que garante que um determinado conjunto de nós executa uma cópia de um pod. Por exemplo, à medida que os nós são adicionados a um cluster, o DaemonSet adiciona pods aos nós. Este controlador é útil para garantir que determinados processos são executados em todos os nós.
Tabela de métricas do DaemonSet
As métricas do DaemonSet permitem-lhe monitorizar e receber alertas sobre o comportamento do controlador. A tabela seguinte mostra as métricas disponíveis no pacote kube state metrics:
Os nomes das métricas do Cloud Monitoring nesta tabela têm de ter o prefixo prometheus.googleapis.com/
. Esse prefixo foi omitido das entradas na tabela.
Nome da métrica PromQL Nome da métrica do Cloud Monitoring |
|
---|---|
Kind, Type, Unit
Recursos monitorizados Versão do GKE obrigatória |
Descrição Etiquetas |
kube_daemonset_status_desired_number_scheduled kube_daemonset_status_desired_number_scheduled/gauge
|
|
GAUGE , DOUBLE , 1
prometheus_target 1.27.2-gke.1200 |
O número de nós que devem estar a executar o pod do daemon.
Amostrada a cada 30 segundos.daemonset : daemonset.
|
kube_daemonset_status_number_misscheduled kube_daemonset_status_number_misscheduled/gauge
|
|
GAUGE , DOUBLE , 1
prometheus_target 1.27.2-gke.1200 |
O número de nós que executam um pod de daemon, mas não deviam. Amostrada a cada 30 segundos.daemonset : daemonset.
|
kube_daemonset_status_number_ready kube_daemonset_status_number_ready/gauge
|
|
GAUGE , DOUBLE , 1
prometheus_target 1.27.2-gke.1200 |
O número de nós que devem estar a executar o pod do daemon e ter
um ou mais pods do daemon em execução e prontos. Amostrada a cada 30 segundos.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 |
O número de nós que estão a executar o pod de daemon atualizado.
Amostrada a cada 30 segundos.daemonset : daemonset.
|
Para mais informações, consulte o artigo Métricas do DaemonSet.
Consultas de exemplo para métricas de DaemonSet
Pode criar gráficos e políticas de alerta para DaemonSets individuais filtrando as métricas de DaemonSet por cluster, espaço de nomes e o nome do DaemonSet.
Por exemplo, para comparar o número de réplicas disponíveis com o número esperado de réplicas num único DaemonSet, pode usar as seguintes consultas PromQL para representar graficamente ambas as métricas num único gráfico:
kube_daemonset_status_updated_number_scheduled{cluster="CLUSTER", namespace="NAMESPACE", daemonsetset=DAEMONSET"}
kube_daemonset_status_desired_number_scheduled{cluster="CLUSTER", namespace="NAMESPACE", daemonset=DAEMONSET"}
Para receber um alerta sobre uma implementação do DaemonSet com falhas ou em espera, pode usar a seguinte expressão 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 )
Algumas das expressões de consulta e alerta nesta secção foram adaptadas do ficheiro kubernetes-apps.yaml
no repositório de gráficos Helm do Kubernetes da comunidade Prometheus no GitHub.
Métricas do HorizontalPodAutoscaler
Um HorizontalPodAutoscaler (HPA) é um controlador que altera periodicamente o número de pods numa carga de trabalho, como uma implementação ou um StatefulSet, em resposta a alguma métrica, como a utilização da CPU ou da memória. Alterar o número de pods disponíveis para uma carga de trabalho mantém a carga de trabalho reativa, mas eficiente.
Para mais informações sobre HPAs, consulte o artigo Ver detalhes sobre um Horizontal Pod Autoscaler.
Tabela de métricas da HPA
As métricas do HorizontalPodAutoscaler permitem-lhe monitorizar e receber alertas sobre o comportamento do controlador. A tabela seguinte mostra as métricas disponíveis no pacote kube state metrics:
Os nomes das métricas do Cloud Monitoring nesta tabela têm de ter o prefixo prometheus.googleapis.com/
. Esse prefixo foi omitido das entradas na tabela.
Nome da métrica PromQL Nome da métrica do Cloud Monitoring |
|
---|---|
Kind, Type, Unit
Recursos monitorizados Versão do GKE obrigatória |
Descrição Etiquetas |
kube_horizontalpodautoscaler_spec_max_replicas kube_horizontalpodautoscaler_spec_max_replicas/gauge
|
|
GAUGE , DOUBLE , 1
prometheus_target 1.27.2-gke.1200 |
Limite superior para o número de pods que podem ser definidos pelo escalador automático,
não pode ser inferior a MinReplicas.
Amostrada a cada 30 segundos.horizontalpodautoscaler : horizontalpodautoscaler.
|
kube_horizontalpodautoscaler_spec_min_replicas kube_horizontalpodautoscaler_spec_min_replicas/gauge
|
|
GAUGE , DOUBLE , 1
prometheus_target 1.27.2-gke.1200 |
Limite inferior para o número de agrupamentos que podem ser definidos pelo escalador automático,
predefinição 1.
Amostrada a cada 30 segundos.horizontalpodautoscaler : horizontalpodautoscaler.
|
kube_horizontalpodautoscaler_spec_target_metric kube_horizontalpodautoscaler_spec_target_metric/gauge
|
|
GAUGE , DOUBLE , 1
prometheus_target 1.27.2-gke.1200 |
As especificações das métricas usadas por este escalador automático ao calcular a quantidade de réplicas desejada.
Amostrada a cada 30 segundos.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 |
A condição deste redimensionador automático.
Amostrada a cada 30 segundos.condition : condição.
horizontalpodautoscaler : horizontalpodautoscaler.
namespace : espaço de nomes.
status : status.
|
kube_horizontalpodautoscaler_status_current_replicas kube_horizontalpodautoscaler_status_status_current_replicas/gauge
|
|
GAUGE , DOUBLE , 1
prometheus_target 1.27.2-gke.1200 |
Número atual de réplicas de pods geridas por este escalador automático.
Amostrada a cada 30 segundos.horizontalpodautoscaler : horizontalpodautoscaler.
|
kube_horizontalpodautoscaler_status_desired_replicas kube_horizontalpodautoscaler_status_desired_replicas/gauge
|
|
GAUGE , DOUBLE , 1
prometheus_target 1.27.2-gke.1200 |
Número desejado de réplicas de pods geridas por este escalador automático.
Amostrada a cada 30 segundos.horizontalpodautoscaler : horizontalpodautoscaler.
|
Para mais informações, consulte o artigo Métricas do redimensionador automático de pods horizontal.
Consultas de exemplo para métricas de HPA
Por exemplo, para determinar se o HPA está a aproximar-se do número máximo de réplicas, pode traçar o seguinte rácio:
kube_horizontalpodautoscaler_status_current_replicas{cluster="CLUSTER", namespace="NAMESPACE", horizontalpodautoscaler="HPA"} / kube_horizontalpodautoscaler_spec_max_replicas{cluster="CLUSTER", namespace="NAMESPACE", horizontalpodautoscaler="HPA"}
Quando o HPA está a ser executado com o número máximo de réplicas, pode querer aumentar a especificação para o número máximo de pods. Pode usar a seguinte expressão PromQL para criar um alerta que lhe envia uma notificação neste caso:
kube_horizontalpodautoscaler_status_current_replicas{cluster="CLUSTER", namespace="NAMESPACE", horizontalpodautoscaler="HPA"} == kube_horizontalpodautoscaler_spec_max_replicas{cluster="CLUSTER", namespace="NAMESPACE", horizontalpodautoscaler="HPA"}
Também pode comparar os valores das métricas kube_horizontalpodautoscaler_status_current_replicas
kube_horizontalpodautoscaler_status_desired_replicas
para determinar se existe uma diferença entre o número atual e o número necessário de réplicas. Uma diferença pode indicar uma restrição de recursos no cluster. A seguinte expressão PromQL procura diferenças entre o número atual de réplicas e os números de réplicas necessários, mínimos e máximos, bem como alterações no número atual de réplicas:
(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
As etiquetas condition
e status
na métrica kube_horizontalpodautoscaler_status_condition
também podem ajudar a detetar quando os HPAs encontram vários modos de falha. Por exemplo:
- A condição
ScalingLimited
e o estado detrue
indicam que o HPA está limitado pelo número de réplicas mínimo ou máximo:kube_horizontalpodautoscaler_status_condition{status="true", condition="ScalingLimited"} == 1
A condição
AbleToScale
e um estado defalse
indicam que o HPA está a ter problemas ao obter ou atualizar as escalas:kube_horizontalpodautoscaler_status_condition{status="false", condition="AbleToScale"} == 1
A condição
ScalingActive
e um estado defalse
indicam que o HPA está desativado ou não consegue calcular uma nova escala:kube_horizontalpodautoscaler_status_condition{status="false", condition="ScalingActive"} == 1
Algumas das expressões de consulta e alerta nesta secção foram adaptadas do ficheiro kubernetes-apps.yaml
no repositório de gráficos Helm do Kubernetes da comunidade Prometheus no GitHub.
Métricas JobSet
Um Jobset é uma API de carga de trabalho que lhe permite gerir um grupo de tarefas do Kubernetes como uma unidade. O exemplo de utilização mais comum de um JobSet é o treino distribuído, mas também o pode usar para executar cargas de trabalho em lote.
Para mais informações sobre JobSets, consulte a documentação do JobSet.
Tabela de métricas do JobSet
As métricas JobSet permitem-lhe monitorizar e receber alertas sobre o comportamento dos seus JobSets. A tabela seguinte mostra as métricas que estão disponíveis no pacote de métricas de estado do kube:
Os nomes das métricas do Cloud Monitoring nesta tabela têm de ter o prefixo prometheus.googleapis.com/
. Esse prefixo foi omitido das entradas na tabela.
Nome da métrica PromQL Nome da métrica do Cloud Monitoring |
|
---|---|
Kind, Type, Unit
Recursos monitorizados Versão do GKE obrigatória |
Descrição Etiquetas |
kube_jobset_specified_replicas kube_jobset_specified_replicas/gauge
|
|
GAUGE , DOUBLE , 1
prometheus_target 1.32.1-gke.1357001 |
O número de réplicas especificadas por tarefas replicadas num JobSet.
Amostrada a cada 30 segundos.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 |
O número de réplicas num estado "PRONTO" por tarefas replicadas num JobSet.
Amostrada a cada 30 segundos.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 |
O número de réplicas num estado "SUCCEEDED" por tarefas replicadas num JobSet.
Amostrada a cada 30 segundos.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 |
O número de réplicas num estado "FAILED" por tarefas replicadas num JobSet.
Amostrada a cada 30 segundos.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 |
O número de réplicas num estado "ACTIVE" por tarefas replicadas num JobSet.
Amostrada a cada 30 segundos.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 |
O número de réplicas num estado "SUSPENDED" por tarefas replicadas num JobSet.
Amostrada a cada 30 segundos.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 |
As condições de estado atuais de um JobSet.
Amostrada a cada 30 segundos.jobset_name : jobset_name.
condition : condição.
|
kube_jobset_restarts kube_jobset_restarts/gauge
|
|
GAUGE , DOUBLE , 1
prometheus_target 1.32.4-gke.1767000 1.33.0-gke.1868000 |
O número de reinícios do JobSet.
Amostrada a cada 30 segundos.jobset_name : jobset_name.
|
Exemplos de consultas para métricas JobSet
Pode criar gráficos e políticas de alerta para JobSets individuais filtrando as métricas de JobSet por cluster, espaço de nomes e o nome do JobSet.
Por exemplo, para comparar o número de réplicas num estado READY
com o número esperado de réplicas num único JobSet, represente ambas as métricas num único gráfico usando as seguintes consultas 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"}
Para receber um alerta sobre uma implementação de JobSet com falhas ou indisponível, pode usar a seguinte expressão 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"}
A etiqueta condition
na métrica kube_jobset_status_condition
também pode ajudar a detetar quando os JobSets entram em vários modos de falha, por exemplo:
- A condição
Failed
indica que o JobSet falhou na execução:kube_jobset_status_condition{jobset_name="JOBSET_NAME, condition="Failed"} == 1
- A condição
Suspended
indica que o JobSet está suspenso:kube_jobset_status_condition{jobset_name="JOBSET_NAME, condition="Suspended"} == 1
Algumas das expressões de consulta e alerta nesta secção foram adaptadas do ficheiro kubernetes-apps.yaml
no repositório de gráficos Helm do Kubernetes da comunidade Prometheus no GitHub.