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 o comando
gcloud components updatepara obter a versão mais recente. As versões anteriores da CLI gcloud podem não suportar a execução dos comandos neste documento.
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 no modo automático do GKE criados recentemente.
- A métrica
kube_jobset_restartsestá 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 Google Cloud Managed Service for Prometheus 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 as 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 à flag 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 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_byteskube_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_refkube_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_infokube_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_phasekube_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_infokube_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_byteskube_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_phasekube_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 pods
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 pods 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_readykube_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_reasonkube_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_phasekube_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_unschedulablekube_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:
CrashLoopBackOffImagePullBackOffContainerCreating
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_replicaskube_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_availablekube_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_updatedkube_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_replicaskube_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_readykube_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_updatedkube_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_scheduledkube_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_misscheduledkube_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_readykube_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_scheduledkube_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_replicaskube_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 dimensionamento automático,
não pode ser inferior a MinReplicas.
Amostrada a cada 30 segundos.horizontalpodautoscaler: horizontalpodautoscaler.
|
kube_horizontalpodautoscaler_spec_min_replicaskube_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_metrickube_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_conditionkube_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_replicaskube_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_replicaskube_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_replicaskube_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
ScalingLimitede o estado detrueindicam 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
AbleToScalee um estado defalseindicam que o HPA está a ter problemas ao obter ou atualizar as escalas:kube_horizontalpodautoscaler_status_condition{status="false", condition="AbleToScale"} == 1A condição
ScalingActivee um estado defalseindicam 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_replicaskube_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_replicaskube_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_replicaskube_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_replicaskube_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_replicaskube_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_replicaskube_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_conditionkube_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_restartskube_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 de 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 graficamente 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
Failedindica que o JobSet falhou na execução:kube_jobset_status_condition{jobset_name="JOBSET_NAME, condition="Failed"} == 1 - A condição
Suspendedindica 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.