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:
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
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"
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
- Para adicionar 10 MB:
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:
-
No painel de navegação do console do Google Cloud, selecione Kubernetes Engine e, depois, Clusters:
Clique no nome do cluster e selecione a guia Observabilidade.
Selecione Plano de controle na lista de recursos.
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:
-
No painel de navegação do console do Google Cloud, selecione Kubernetes Engine e, depois, Clusters:
Clique no nome do cluster.
Na linha Recursosdenominada Cloud Monitoring, clique no ícone Editar.
Na caixa de diálogo Editar o Cloud Monitoring, confirme se Ativar o Cloud Monitoring está selecionado.
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.
Clique em OK.
Clique em Salvar alterações.
gcloud
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.
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Transmita um ou mais valores
API_SERVER
,SCHEDULER
ouCONTROLLER_MANAGER
à flag--monitoring
dos comandosgcloud container clusters create
ougcloud 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:
Informações sobre como consultar as métricas do plano de controle.
Tabelas de métricas do plano de controle para servidor da API, programador e gerenciador do controlador.
Orientação e práticas recomendadas para usar as métricas do servidor de APIs e as métricas do programador.
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:
- O cluster está executando o GKE 1.27.2-gke.1200 ou mais recente.
- A coleta de métricas do sistema está ativada.
- O cluster tem a coleta gerenciada do Google Cloud Managed Service para Prometheus ativada.
É 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:
-
No painel de navegação do console do Google Cloud, selecione Kubernetes Engine e, depois, Clusters:
Clique no nome do cluster e selecione a guia Observabilidade.
Selecione Estado das cargas de trabalho ou Armazenamento > Permanente na lista de recursos.
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:
-
No painel de navegação do console do Google Cloud, selecione Kubernetes Engine e, em seguida, Cargas de trabalho:
Clique no nome da implantação e selecione a guia Observabilidade.
Selecione Kube State na lista de recursos.
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:
-
No painel de navegação do console do Google Cloud, selecione Kubernetes Engine e, depois, Clusters:
Clique no nome do cluster.
Na linha Recursosdenominada Cloud Monitoring, clique no ícone Editar.
Na caixa de diálogo Editar o Cloud Monitoring, confirme se Ativar o Cloud Monitoring está selecionado.
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
Clique em OK.
Clique em Salvar alterações.
gcloud
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.
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Transmita um ou mais dos seguintes valores para a flag
--monitoring
dos comandosgcloud container clusters create
ougcloud 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,PODO conjunto de valores fornecidos à flag
--monitoring
substitui qualquer configuração anterior. No exemplo anterior, se o cluster tivesse sido configurado anteriormente para coletar métricasDAEMONSET
, 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:
- O cluster está executando o GKE 1.29.2-gke.1368000 ou mais recente.
- A coleta de métricas do sistema está ativada.
- O cluster tem a coleta gerenciada do Google Cloud Managed Service para Prometheus ativada.
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
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.
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Transmita um ou mais dos seguintes valores para a flag
--monitoring
dos comandosgcloud container clusters create
ougcloud 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,KUBELETO conjunto de valores fornecidos à flag
--monitoring
substitui qualquer configuração anterior. No exemplo anterior, se o cluster tiver sido configurado anteriormente para coletar métricasDAEMONSET
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:
-
No painel de navegação do console do Google Cloud, selecione Monitoramento e
Gerenciamento de métricas: - 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:
-
No painel de navegação do console do Google Cloud, selecione Monitoramento e
Gerenciamento de métricas: Na visão geral Amostras faturáveis ingeridas, clique em Visualizar gráficos.
Localize o gráfico Ingestão de volume de namespace e clique em more_vert Mais opções de gráfico.
No campo Métrica, verifique se o recurso e a métrica a seguir estão selecionados:
Metric Ingestion Attribution
eSamples written by attribution id
.Na página Filtros, faça o seguinte:
No campo Rótulo, verifique se o valor é
attribution_dimension
.No campo Comparação, verifique se o valor é
= (equals)
.No campo Valor, selecione
cluster
.
Desmarque a configuração Agrupar por.
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.*
.
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.
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.
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.