# Métricas para Estados de Objetos do Kubernetes

> kube-state-metrics, um agente complementar para gerar e expor métricas em nível de cluster.

---

LLMS index: [llms.txt](/llms.txt)

---

O estado dos objetos do Kubernetes na API do Kubernetes pode ser exposto como métricas.
Um agente complementar chamado [kube-state-metrics](https://github.com/kubernetes/kube-state-metrics) pode se conectar ao servidor de API do Kubernetes e expor um endpoint HTTP com métricas geradas a partir do estado de objetos individuais no cluster.
Ele expõe diversas informações sobre o estado dos objetos, como rótulos e anotações, tempos de inicialização e término, status ou a fase em que o objeto se encontra atualmente.
Por exemplo, contêineres em execução em pods criam uma métrica `kube_pod_container_info`.
Isso inclui o nome do contêiner, o nome do pod do qual ele faz parte, o <a class='glossary-tooltip' title='Uma abstração utilizada pelo Kubernetes para suportar múltiplos clusters virtuais no mesmo cluster físico.' data-bs-toggle='tooltip' data-bs-placement='top' href='/pt-br/docs/concepts/overview/working-with-objects/namespaces' target='_blank' aria-label='namespace'>namespace</a> no qual o pod está em execução, o nome da imagem do contêiner, o ID da imagem, o nome da imagem a partir da especificação do contêiner, o ID do contêiner em execução e o ID do pod como rótulos.

<div class="alert alert-secondary callout third-party-content" role="note">&#128711; Este item aponta para um projeto ou produto de terceiros que não é parte do Kubernetes. <a class="alert-more-info" href="#third-party-content-disclaimer">Mais informações</a></div>


Um componente externo que seja apto e capaz de coletar o endpoint do kube-state-metrics (por exemplo, via Prometheus) pode agora ser utilizado para habilitar os seguintes casos de uso.

## Exemplo: usando métricas do kube-state-metrics para consultar o estado do cluster {#example-kube-state-metrics-query-1}

As séries de métricas geradas pelo kube-state-metrics são úteis para obter mais informações sobre o cluster, pois podem ser usadas para consultas.

Se você usa o Prometheus ou outra ferramenta que utilize a mesma linguagem de consulta, a seguinte consulta PromQL retorna o número de pods que não estão prontos:

```
count(kube_pod_status_ready{condition="false"}) by (namespace, pod)
```

## Exemplo: alertas baseados no kube-state-metrics {#example-kube-state-metrics-alert-1}

As métricas geradas pelo kube-state-metrics também permitem o disparo de alertas sobre problemas no cluster.

Se você usa o Prometheus ou uma ferramenta similar que utilize a mesma linguagem de regras de alerta, o seguinte alerta será disparado se houver pods em estado `Terminating` por mais de 5 minutos:

```yaml
groups:
- name: Pod state
  rules:
  - alert: PodsBlockedInTerminatingState
    expr: count(kube_pod_deletion_timestamp) by (namespace, pod) * count(kube_pod_status_reason{reason="NodeLost"} == 0) by (namespace, pod) > 0
    for: 5m
    labels:
      severity: page
    annotations:
      summary: Pod {{$labels.namespace}}/{{$labels.pod}} blocked in Terminating state.
```
