Configurar a coleta de métricas


O Google Kubernetes Engine (GKE) facilita o envio de métricas para o Cloud Monitoring. No Cloud Monitoring, as métricas podem ser preenchidas com painéis personalizados, gerar alertas, criar objetivos de nível de serviço ou ser buscadas por serviços de monitoramento de terceiros usando a API Cloud Monitoring.

O GKE oferece várias fontes de métricas:

  • Métricas do sistema: métricas de componentes essenciais do sistema, descrevendo recursos de baixo nível, como CPU, memória e armazenamento.
  • Google Cloud Managed Service para Prometheus: permite monitorar e receber alertas sobre cargas de trabalho usando o Prometheus, sem precisar gerenciá-lo e operá-lo manualmente em grande escala.
  • Pacotes de métricas de observabilidade:

    • Métricas do plano de controle: métricas exportadas de determinados componentes do plano de controle, como o servidor de APIs e o programador.
    • Métricas de estado do Kube: um conjunto selecionado de métricas exportadas do serviço de estado do kube, usado para monitorar o estado dos objetos do Kubernetes, como pods, implantações e mais. Para acessar o conjunto completo, consulte Usar métricas de estado do kube.

      O pacote de estado do kube é uma solução gerenciada. Se você precisar de maior flexibilidade, por exemplo, se precisar gerenciar intervalos de raspagem de dados ou outros recursos, implante sua própria instância do serviço de métricas de estado do kube de código aberto. Para mais informações, consulte a documentação do exportador do Google Cloud Managed Service para Prometheus para métricas de estado do Kube.

Métricas do sistema

Quando um cluster é criado, o GKE, por padrão, coleta algumas métricas emitidas por componentes do sistema.

Você tem a opção de enviar ou não métricas do seu cluster do GKE para o Cloud Monitoring. Se você optar por enviar métricas para o Cloud Monitoring, precisará enviar métricas do sistema.

Todas as métricas do sistema do GKE são ingeridas no Cloud Monitoring com o prefixo kubernetes.io.

Preços

O Cloud Monitoring não cobra pela ingestão de métricas do sistema do GKE. Para mais informações, consulte preços do Cloud Monitoring.

Como configurar a coleta de métricas do sistema

Para ativar a coleta de métricas do sistema, transmita o valor SYSTEM para a flag --monitoring dos comandos gcloud container clusters create ou gcloud container clusters update.

Para desativar a coleta de métricas do sistema, use o valor NONE para a flag --monitoring. Se a coleta de métricas do sistema estiver desativada, informações básicas como uso de CPU, uso da memória e uso de disco não estarão disponíveis para um cluster na guia Observabilidade ou na Seção do GKE do console do Google Cloud.

No caso dos clusters do Autopilot do GKE, não é possível desativar a coleta de métricas do sistema.

Consulte Observabilidade do GKE para saber mais detalhes sobre a integração do Cloud Monitoring com o GKE.

Para configurar a coleta de métricas do sistema usando o Terraform, consulte o bloco monitoring_config no registro do Terraform para google_container_cluster. Para informações gerais sobre como usar o Google Cloud com o Terraform, consulte Terraform com o Google Cloud.

Lista de métricas do sistema

As métricas do sistema incluem métricas de componentes essenciais do sistema que são importantes para o Kubernetes. Para ver uma lista dessas métricas, consulte Métricas do sistema do GKE.

Solução de problemas de métricas do sistema

Se as métricas do sistema não estiverem disponíveis no Cloud Monitoring conforme o esperado, veja algumas etapas para solucionar o problema.

Confirmar se o agente de métricas tem memória suficiente

Na maioria dos casos, a alocação padrão de recursos para o agente de métricas do GKE é suficiente. No entanto, se o DaemonSet falhar repetidamente, verifique o motivo do encerramento com as seguintes instruções:

  1. Consiga os nomes dos pods do agente de métricas do GKE:

    kubectl get pods -n kube-system -l component=gke-metrics-agent
    

    Encontre o pod com o status CrashLoopBackOff.

    O resultado será assim:

    NAME                    READY STATUS           RESTARTS AGE
    gke-metrics-agent-5857x 0/1   CrashLoopBackOff 6        12m
    
  2. Descreva o pod com o status CrashLoopBackOff:

    kubectl describe pod POD_NAME -n kube-system
    

    Substitua o POD_NAME pelo nome do pod da etapa anterior.

    Se o motivo do encerramento do pod for OOMKilled, o agente vai precisar de mais memória.

    O resultado será assim:

      containerStatuses:
      ...
      lastState:
        terminated:
          ...
          exitCode: 1
          finishedAt: "2021-11-22T23:36:32Z"
          reason: OOMKilled
          startedAt: "2021-11-22T23:35:54Z"
    
  3. Adicionar um identificador de nó temporário ao nó com o agente de métricas com falha. É possível usar um identificador de nó permanente ou temporário. Recomendamos adicionar 20 MB a mais. Se o agente continuar falhando, execute novamente esse comando, substituindo o rótulo do nó por um que solicite uma quantidade maior de memória.

    Para atualizar um pool de nós com um identificador persistente, execute o seguinte comando:

    gcloud container node-pools update NODEPOOL_NAME \
        --cluster=CLUSTER_NAME \
        --node-labels=ADDITIONAL_MEMORY_NODE_LABEL \
        --location=COMPUTE_LOCATION
    

    Substitua:

    • NODEPOOL_NAME: o nome do pool de nós.
    • CLUSTER_NAME: o nome do cluster existente.
    • ADDITIONAL_MEMORY_NODE_LABEL: um dos outros identificadores de nó de memória, use uma das seguintes opções:
      • Para adicionar 10 MB: cloud.google.com/gke-metrics-agent-scaling-level=10
      • Para adicionar 20 MB: cloud.google.com/gke-metrics-agent-scaling-level=20
      • Para adicionar 50 MB: cloud.google.com/gke-metrics-agent-scaling-level=50
      • Para adicionar 100 MB: cloud.google.com/gke-metrics-agent-scaling-level=100
      • Para adicionar 200 MB: cloud.google.com/gke-metrics-agent-scaling-level=200
      • Para adicionar 500 MB: cloud.google.com/gke-metrics-agent-scaling-level=500
    • COMPUTE_LOCATION: o local do Compute Engine do cluster.

    Como alternativa, adicione um rótulo de nó temporário que não seja mantido após um upgrade usando o seguinte comando:

    kubectl label node/NODE_NAME \
    ADDITIONAL_MEMORY_NODE_LABEL --overwrite
    

    Substitua:

    • NODE_NAME: o nome do nó do agente de métricas afetado.
    • ADDITIONAL_MEMORY_NODE_LABEL: um dos outros identificadores de nó de memória, use um dos valores do exemplo anterior.

Pacote: métricas do plano de controle

É possível configurar um cluster do GKE para enviar determinadas métricas emitidas pelo servidor da API Kubernetes, pelo programador e pelo gerenciador do controlador para o Cloud Monitoring.

Requisitos

O envio de métricas emitidas por componentes do plano de controle do Kubernetes para o Cloud Monitoring exige a versão 1.22.13 ou mais recente do plano de controle do GKE. Além disso, é necessário que a coleta de métricas do sistema esteja ativada.

Como configurar a coleta de métricas do plano de controle

Para ativar as métricas do plano de controle do Kubernetes em um cluster atual do GKE, siga estas etapas:

Console

É possível ativar as métricas do plano de controle de um cluster na guia Observabilidade do cluster ou na guia Detalhes do cluster. Ao usar a guia Observabilidade, é possível visualizar os gráficos e métricas disponíveis antes de ativar o pacote de métricas.

Para ativar as métricas do plano de controle na guia Observabilidade do cluster, faça o seguinte:

  1. No painel de navegação do console do Google Cloud, selecione Kubernetes Engine e, depois, Clusters:

    Acessar os clusters do Kubernetes

  2. Clique no nome do cluster e selecione a guia Observabilidade.

  3. Selecione Plano de controle na lista de recursos.

  4. Clique em Ativar pacote.

    Se as métricas do plano de controle já estiverem ativadas, você verá um conjunto de gráficos para as métricas do plano de controle.

Para ativar as métricas do plano de controle na guia Detalhes do cluster, faça o seguinte:

  1. No painel de navegação do console do Google Cloud, selecione Kubernetes Engine e, depois, Clusters:

    Acessar os clusters do Kubernetes

  2. Clique no nome do cluster.

  3. Na linha Recursosdenominada Cloud Monitoring, clique no ícone Editar.

  4. Na caixa de diálogo Editar o Cloud Monitoring, confirme se Ativar o Cloud Monitoring está selecionado.

  5. No menu suspenso Componentes, selecione os componentes do plano de controle para a coleta de métricas: Servidor de API, Programador ou Gerenciador de controladores.

  6. Clique em OK.

  7. Clique em Salvar alterações.

gcloud

  1. Abra uma janela do terminal com o SDK Google Cloud e a Google Cloud CLI instalados. Uma maneira de fazer isso é usando o Cloud Shell.

  2. No Console do Google Cloud, ative o Cloud Shell.

    Ativar o Cloud Shell

    Na parte inferior do Console do Google Cloud, uma sessão do Cloud Shell é iniciada e exibe um prompt de linha de comando. O Cloud Shell é um ambiente shell com a CLI do Google Cloud já instalada e com valores já definidos para o projeto atual. A inicialização da sessão pode levar alguns segundos.

  3. Transmita um ou mais valores API_SERVER, SCHEDULER ou CONTROLLER_MANAGER à flag --monitoring dos comandos gcloud container clusters create ou gcloud container clusters update

    Por exemplo, para coletar métricas do servidor da API, do programador e do controller manager, execute este comando:

    gcloud container clusters update CLUSTER_NAME \
        --location=COMPUTE_LOCATION \
        --monitoring=SYSTEM,API_SERVER,SCHEDULER,CONTROLLER_MANAGER
    

Terraform

Para configurar a coleta de métricas de plano de controle do Kubernetes usando o Terraform, consulte o bloco monitoring_config no registro do Terraform para google_container_cluster. Para informações gerais sobre como usar o Google Cloud com o Terraform, consulte Terraform com o Google Cloud.

Como usar as métricas do plano de controle

Consulte Usar métricas do plano de controle para:

Painéis para visualizar métricas de plano de controle disponíveis na guia Observabilidade do GKE no console do Google Cloud. Para informações sobre esses painéis, consulte Visualizar métricas de observabilidade.

Pacote: métricas de estado do Kube

É possível configurar um cluster do GKE para enviar um conjunto selecionado de métricas de estado do kube no formato do Prometheus para o Cloud Monitoring. Esse pacote de Kube State Metrics inclui métricas de pods, implantações, StatefulSets, DaemonSets, recursos HorizontalPodAutoscaler, volumes permanentes e declarações de volume permanente.

Para clusters do GKE Standard a partir da versão 1.29.2-gke.2000 e clusters do GKE Autopilot a partir da versão 1.27.4-gke.900, o pacote de métricas de estado do Kube é ativado por padrão.

Requisitos

Para coletar Kube State Metrics, o cluster do GKE precisa atender aos seguintes requisitos:

É possível ativar as métricas do sistema e o Google Cloud Managed Service para Prometheus ao ativar o pacote de Kube State Metrics. A coleta gerenciada do Google Cloud Managed Service para Prometheus é ativada por padrão em novos clusters.

Como configurar a coleta de métricas de estado do kube

Para ativar as métricas de estado do kube em um cluster do GKE, siga estas etapas:

Console

É possível ativar as métricas de estado do kube na guia Observabilidade para um cluster ou uma implantação em um cluster. Também é possível visualizar os gráficos e as métricas disponíveis antes de ativar o pacote de métricas.

Na guia Observabilidade de um cluster, o conjunto de gráficos para métricas de estado do kube é dividido em dois itens no menu de filtro:

  • Estado das cargas de trabalho: inclui as métricas de pods, implantações, StatefulSets, DaemonSets e recursos HorizontalPodAutoscaler.
  • Armazenamento > Permanente: inclui as métricas para volumes permanentes e declarações de volume permanentes.

Você pode ativar um ou ambos os conjuntos de métricas.

Para ativar as métricas de estado do kube a partir da guia Observabilidade de um cluster, faça o seguinte:

  1. No painel de navegação do console do Google Cloud, selecione Kubernetes Engine e, depois, Clusters:

    Acessar os clusters do Kubernetes

  2. Clique no nome do cluster e selecione a guia Observabilidade.

  3. Selecione Estado das cargas de trabalho ou Armazenamento > Permanente na lista de recursos.

  4. Clique em Ativar pacote.

    Se o pacote de métricas de estado do kube já estiverem ativadas, será exibido um conjunto de gráficos para as métricas de estado do kube.

Para ativar as métricas de estado do kube a partir da guia Observabilidade de uma implantação, faça o seguinte:

  1. No painel de navegação do console do Google Cloud, selecione Kubernetes Engine e, em seguida, Cargas de trabalho:

    Acesse Cargas de trabalho do Kubernetes

  2. Clique no nome da implantação e selecione a guia Observabilidade.

  3. Selecione Kube State na lista de recursos.

  4. 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, você verá um conjunto de gráficos para métricas de pods, implantações e escalonadores automáticos horizontais de pods.

Para configurar as métricas de estado do kube a partir da guia Detalhes do cluster, faça o seguinte:

  1. No painel de navegação do console do Google Cloud, selecione Kubernetes Engine e, depois, Clusters:

    Acessar os clusters do Kubernetes

  2. Clique no nome do cluster.

  3. Na linha Recursosdenominada Cloud Monitoring, clique no ícone Editar.

  4. Na caixa de diálogo Editar o Cloud Monitoring, confirme se Ativar o Cloud Monitoring está selecionado.

  5. No menu suspenso Componentes, selecione os componentes de estado do kube para a coleta de métricas:

    • Volume permanente (armazenamento)
    • Pods
    • Implantação
    • StatefulSet
    • DaemonSet
    • Escalonador automático horizontal de pods
  6. Clique em OK.

  7. Clique em Salvar alterações.

gcloud

  1. Abra uma janela do terminal com o SDK Google Cloud e a Google Cloud CLI instalados. Uma maneira de fazer isso é usando o Cloud Shell.

  2. No Console do Google Cloud, ative o Cloud Shell.

    Ativar o Cloud Shell

    Na parte inferior do Console do Google Cloud, uma sessão do Cloud Shell é iniciada e exibe um prompt de linha de comando. O Cloud Shell é um ambiente shell com a CLI do Google Cloud já instalada e com valores já definidos para o projeto atual. A inicialização da sessão pode levar alguns segundos.

  3. Transmita um ou mais dos seguintes valores para a flag --monitoring dos comandos gcloud container clusters create ou gcloud container clusters update:

    • DAEMONSET
    • DEPLOYMENT
    • HPA
    • POD
    • STATEFULSET
    • STORAGE: esta opção inclui métricas para declarações de volume permanente e volume permanente

    Por exemplo, para coletar métricas de implantações e pods em um cluster atual, execute o seguinte comando:

    gcloud container clusters update CLUSTER_NAME \
        --location=COMPUTE_LOCATION \
        --enable-managed-prometheus
        --monitoring=SYSTEM,DEPLOYMENT,POD
    

    O conjunto de valores fornecidos à flag --monitoring substitui qualquer configuração anterior. No exemplo anterior, se o cluster tivesse sido configurado anteriormente para coletar métricas DAEMONSET, o comando de exemplo desativaria a coleta dessas métricas.

Terraform

Para configurar a coleção de métricas de estado do Kube usando o Terraform, consulte o bloco monitoring_config no registro do Terraform para google_container_cluster. Para informações gerais sobre como usar o Google Cloud com o Terraform, consulte Terraform com o Google Cloud.

Como usar métricas de estado do kube

Consulte Como usar métricas de estado do kube para o seguinte:

  • Informações sobre como consultar as métricas de estado do kube.
  • Tabelas de métricas de estado do kube.

Os painéis para visualizar métricas de estado do kube estão disponíveis na guia Observabilidade do GKE no console do Google Cloud. Para informações sobre esses painéis, consulte Visualizar métricas de observabilidade.

Pacote: métricas do cAdvisor/Kubelet

É possível configurar um cluster do GKE para enviar um conjunto selecionado de métricas de cAdvisor/Kubelet no formato do Prometheus para o Cloud Monitoring. O conjunto selecionado de métricas é um subconjunto do grande conjunto de métricas do cAdvisor/Kubelet integrado a todas as implantações do Kubernetes por padrão. O cAdvisor/Kubelet selecionado foi projetado para fornecer as métricas mais úteis, reduzindo o volume de ingestão e os custos associados.

Requisitos

Para coletar métricas do cAdvisor/Kubelet, seu cluster do GKE precisa atender aos seguintes requisitos:

Para novos clusters, a coleta gerenciada do Google Cloud Managed Service para Prometheus é ativada por padrão, e o pacote de métricas cAdvisor/Kubelet é ativado por padrão para o seguinte:

  • clusters do GKE Autopilot começando com a versão 1.29.3-gke.1093000.
  • clusters do GKE Standard começando com a versão 1.29.3-gke.1093000.

Para clusters atuais, é possível ativar as métricas do sistema e o Google Cloud Managed Service para Prometheus ao mesmo tempo que você ativa o pacote de métricas do cAdvisor/Kubelet.

Como configurar a coleção de métricas do cAdvisor/Kubelet

Para ativar as métricas do cAdvisor/Kubelet em um cluster atual do GKE, siga estas etapas:

gcloud

  1. Abra uma janela do terminal com o SDK Google Cloud e a Google Cloud CLI instalados. Uma maneira de fazer isso é usando o Cloud Shell.

  2. No Console do Google Cloud, ative o Cloud Shell.

    Ativar o Cloud Shell

    Na parte inferior do Console do Google Cloud, uma sessão do Cloud Shell é iniciada e exibe um prompt de linha de comando. O Cloud Shell é um ambiente shell com a CLI do Google Cloud já instalada e com valores já definidos para o projeto atual. A inicialização da sessão pode levar alguns segundos.

  3. Transmita um ou mais dos seguintes valores para a flag --monitoring dos comandos gcloud container clusters create ou gcloud container clusters update:

    • CADVISOR
    • KUBELET

    Por exemplo, para coletar apenas as métricas do cAdvisor/Kubelet em um cluster atual, execute o seguinte comando:

    gcloud container clusters update CLUSTER_NAME \
        --location=COMPUTE_LOCATION \
        --enable-managed-prometheus \
        --monitoring=SYSTEM,CADVISOR,KUBELET
    

    O conjunto de valores fornecidos à flag --monitoring substitui qualquer configuração anterior. No exemplo anterior, se o cluster tiver sido configurado anteriormente para coletar métricas DAEMONSET do pacote de estado do kube, o comando do exemplo desativa a coleta dessas métricas.

Terraform

Para configurar a coleção de métricas do cAdvisor/Kubelet usando o Terraform, consulte o bloco monitoring_config no registro do Terraform para google_container_cluster. Para informações gerais sobre como usar o Google Cloud com o Terraform, consulte Terraform com o Google Cloud.

Como usar métricas do cAdvisor/Kubelet

Consulte Usar métricas do cAdvisor/Kubelet para as seguintes informações:

  • Informações sobre como consultar as métricas do cAdvisor/Kubelet.
  • Tabelas de métricas do cAdvisor/Kubelet.

Preços e cotas de pacotes de observabilidade

As informações nesta seção se aplicam aos seguintes pacotes de observabilidade:

As métricas do plano de controle do GKE e as Kube State Metrics usam o Google Cloud Managed Service para Prometheus a fim de carregar métricas no Cloud Monitoring. O Cloud Monitoring cobra pela ingestão dessas métricas com base no número de amostras ingeridas. No entanto, essas métricas são gratuitas para os clusters registrados que pertencem a um projeto com o GKE Enterprise Edition ativado.

Para mais informações, consulte preços do Cloud Monitoring.

Como entender a fatura do Monitoring

É possível usar o Cloud Monitoring para identificar o plano de controle ou as métricas de estado do kube que estão gravando o maior número de amostras. Essas métricas estão contribuindo mais para seus custos. Depois de identificar as métricas mais caras, é possível modificar as configurações de verificação para filtrá-las de maneira adequada.

A página Gerenciamento de métricas do Cloud Monitoring fornece informações que podem ajudar a controlar o valor gasto em métricas sujeitas a cobrança, sem afetar a observabilidade. A página Gerenciamento de métricas mostra as seguintes informações:

  • Volumes de ingestão para faturamento baseado em byte e amostra, em domínios de métricas e para métricas individuais.
  • Dados sobre rótulos e cardinalidade de métricas.
  • Uso de métricas em políticas de alertas e painéis personalizados.
  • Taxa de erros de gravação de métrica.

Para visualizar a página Gerenciamento de métricas, faça o seguinte:

  1. No painel de navegação do console do Google Cloud, selecione Monitoramento e  Gerenciamento de métricas:

    Acesse os Gerenciamento de métricas

  2. Na barra de ferramentas, selecione a janela de tempo. Por padrão, a página Gerenciamento de métricas exibe informações sobre as métricas coletadas no dia anterior.

Para mais informações sobre a página Gerenciamento de métricas, consulte Ver e gerenciar o uso de métricas.

Para identificar quais métricas do plano de controle ou de estado do kube têm o maior número de amostras sendo ingeridas, faça o seguinte:

  1. No painel de navegação do console do Google Cloud, selecione Monitoramento e  Gerenciamento de métricas:

    Acesse os Gerenciamento de métricas

  2. Na visão geral Amostras faturáveis ingeridas, clique em Visualizar gráficos.

  3. Localize o gráfico Ingestão de volume de namespace e clique em  Mais opções de gráfico.

  4. No campo Métrica, verifique se o recurso e a métrica a seguir estão selecionados:
    Metric Ingestion Attribution e Samples written by attribution id.

  5. Na página Filtros, faça o seguinte:

    1. No campo Rótulo, verifique se o valor é attribution_dimension.

    2. No campo Comparação, verifique se o valor é = (equals).

    3. No campo Valor, selecione cluster.

  6. Desmarque a configuração Agrupar por.

  7. Se quiser, filtre apenas determinadas métricas. Por exemplo, todas as métricas do servidor da API de plano de controle incluem "apiserver" como parte do nome da métrica, e as métricas de pod do estado do kube incluem "kube_pod" como parte do nome da métrica. Assim, é possível filtrar por métricas que contêm essas strings:

    • Clique em Adicionar filtro.

    • No campo Identificador, selecione metric_type.

    • No campo Comparação, selecione =~ (equals regex).

    • No campo Valor, insira .*apiserver.* ou .*kube_pod.*.

  8. Opcionalmente, agrupe o número de amostras ingeridas por região ou projeto do GKE:

    • Clique em Agrupar por.

    • Verifique se metric_type está selecionado.

    • Para agrupar por região do GKE, selecione location.

    • Para agrupar por projeto, selecione project_id.

    • Clique em OK.

  9. Opcionalmente, agrupe o número de amostras ingeridas por nome do cluster do GKE:

    • Clique em Agrupar por.

    • Para agrupar pelo nome do cluster do GKE, verifique se attribution_dimension e attribution_id estão selecionados.

    • Clique em OK.

  10. Para conferir o volume de ingestão de cada uma das métricas, alterne para Tabela de gráficos ambos, selecione Ambos. A tabela mostra o volume ingerido de cada métrica na coluna Valor.

    Clique no cabeçalho da coluna Valor duas vezes para classificar as métricas por volume de ingestão decrescente.

Essas etapas mostram as métricas com a maior taxa de amostras ingeridas no Cloud Monitoring. Como as métricas nos pacotes de observabilidade são cobradas de acordo com o número de amostras ingeridas, preste atenção às métricas com a maior taxa de ingestão de amostras.

Cota

As métricas do plano de controle e de estado do kube consomem a cota de "Solicitações de processamento de série temporal por minuto" da API Cloud Monitoring. Antes de ativar os pacotes de métricas, verifique o pico de uso recente dessa cota. Se você tiver muitos clusters no mesmo projeto ou já estiver aproximando-se do limite dessa cota, solicite um aumento no limite de cota antes de ativar qualquer pacote de observabilidade.

Outras métricas

Além das métricas do sistema e dos pacotes de métricas descritos neste documento, as métricas do Istio também estão disponíveis para clusters do GKE. Para informações sobre preços, consulte Preços do Cloud Monitoring.