Monitorar o desempenho do cluster do Kubernetes com os Insights do contêiner

Use as pastas de trabalho, os gráficos de desempenho e o status de integridade nos insights do contêiner para monitorar a carga de trabalho de clusters do Kubernetes hospedados no Serviço de Kubernetes do Azure (AKS), no Azure Stack ou em outro ambiente.

Este artigo ajuda a entender as duas perspectivas e como o Azure Monitor ajuda você a avaliar, investigar e resolver rapidamente os problemas detectados.

Pastas de trabalho

As pastas de trabalho combinam texto, consultas de log, métricas e parâmetros em relatórios avançados e interativos que você pode usar para analisar o desempenho do cluster. Para obter uma descrição das pastas de trabalho disponíveis para os insights do contêiner e como acessá-las, consulte Pastas de trabalho nos insights do contêiner.

Exibição de vários clusters do Azure Monitor

O Azure Monitor oferece uma exibição de vários clusters que mostra o status de integridade de todos os clusters monitorados do Kubernetes implantados nos grupos de recursos de suas assinaturas. Ele também mostra os clusters descobertos em todos os ambientes que não são monitorados pela solução. Com essa exibição, você poderá saber imediatamente a integridade do cluster e fazer drill down até a página de desempenho do nó e do controlador ou navegar para ver gráficos de desempenho do cluster. Para clusters do AKS que foram descobertos e identificados como não monitorados, é possível habilitar o monitoramento a partir da exibição.

Para acessar a exibição de vários clusters, selecione Monitor no painel esquerdo do portal do Azure. Na seção Insights, selecione Contêineres.

Screenshot that shows an Azure Monitor multi-cluster dashboard example.

Você pode filtrar os resultados apresentados na grade para mostrar cluster que sejam:

  • Azure: clusters do AKS e do AKS-Engine hospedados no Serviço de Kubernetes do Azure.
  • Azure Stack (versão prévia): clusters do AKS-Engine hospedados no Azure Stack.
  • Não Azure (versão prévia): clusters do Kubernetes hospedados localmente.
  • Todos: exibir todos os clusters do Kubernetes hospedados no Azure, no Azure Stack e em ambientes locais que estejam integrados aos insights do Contêiner.

Para exibir clusters de um ambiente específico, selecione-o em Ambiente no canto superior esquerdo.

Screenshot that shows an Environment selector example.

Na guia Clusters monitorados, você pode obter as seguintes informações:

  • Quantos clusters estão com estado crítico ou não íntegro, e quantos estão íntegros ou não estão informando um estado (chamado de estado Desconhecido).
  • Se todas as implantações do Mecanismo do Kubernetes do Azure (AKS-Engine) estão íntegras.
  • Quantos nós e pods de usuários e sistemas estão implantados por cluster.

Os status de integridade incluídos são:

  • Integridade: nenhum problema foi detectado para a VM e ela está funcionando conforme a necessidade.
  • Crítico: foram detectados um ou mais problemas críticos, que precisam ser resolvidos para restaurar o estado operacional normal esperado.
  • Aviso: um ou mais problemas são detectados e precisam ser resolvidos ou a condição de integridade poderá se tornar crítica.
  • Desconhecido: se o serviço não conseguir se conectar ao nó ou ao pod, o status mudará para um estado Desconhecido.
  • Não encontrado: o workspace, o grupo de recursos ou a assinatura que contém o workspace dessa solução foram excluídos.
  • Não autorizado: o usuário não tem as permissões necessárias para ler os dados no workspace.
  • Erro: ocorreu um erro ao tentar ler dados do workspace.
  • Mal configurado: os Insights do contêiner não foram configurados corretamente no workspace definido.
  • Nenhum dado: não houve relato de dados ao workspace nos últimos 30 minutos.

O estado de integridade calcula o status geral do cluster como o pior dos três estados com uma exceção. Se um dos três estados for Desconhecido, o estado geral do cluster será mostrado como Desconhecido.

A tabela a seguir fornece um detalhamento do cálculo que controla os estados de integridade de um cluster monitorado na exibição de vários clusters.

Cluster monitorado Status Disponibilidade
Pod de usuários Íntegros
Aviso
Crítico
Unknown
100%
90 – 99%
<90%
Não relatado nos últimos 30 minutos
Pod de sistemas Íntegros
Aviso
Crítico
Unknown
100%
N/D
100%
Não relatado nos últimos 30 minutos
Íntegros
Aviso
Crítico
Unknown
>85%
60 – 84%
<60%
Não relatado nos últimos 30 minutos

Na lista de clusters, você pode fazer drill down na página do cluster selecionando o nome do cluster. Vá para a página de desempenho Nós selecionando o rollup de nós na coluna Nós desse cluster específico. Você também pode fazer drill down na página de desempenho Controladores selecionando o rollup da coluna Pods de usuário ou Pods de sistema.

Exibir desempenho diretamente de um cluster

O acesso aos Insights do contêiner está disponível diretamente em um cluster do AKS com a escolha de Insights>Cluster no painel esquerdo ou com a escolha do cluster na exibição multiclusters. As informações sobre o cluster é organizada em quatro perspectivas:

  • Cluster
  • Nós
  • Controladores
  • Contêineres

Observação

As experiências descritas no restante deste artigo também se aplicam à exibição de desempenho e status de integridade dos clusters do Kubernetes hospedados no Azure Stack ou em outro ambiente quando selecionadas na exibição multiclusters.

A página padrão é aberta e exibe quatro gráficos de desempenho de linha que mostram métricas essenciais de desempenho para o cluster.

Screenshot that shows example performance charts on the Cluster tab.

Os gráficos de desempenho exibem quatro métricas de desempenho:

  • Utilização da CPU do nó%: uma perspectiva agregada da utilização da CPU para todo o cluster. Para filtrar os resultados por intervalo de tempo, selecione Méd, Mín, 50º, 90º, 95º ou Máx no seletor de percentis acima do gráfico. Os filtros podem ser usados individualmente ou em combinação.
  • Utilização de memória do nó%: uma perspectiva agregada da utilização de memória para todo o cluster. Para filtrar os resultados por intervalo de tempo, selecione Méd, Mín, 50º, 90º, 95º ou Máx no seletor de percentis acima do gráfico. Os filtros podem ser usados individualmente ou em combinação.
  • Contagem de nós: uma contagem de nós e o status do Kubernetes. Os status dos nós de cluster representados são Total, Pronto e Não Pronto. Eles podem ser filtrados individualmente ou combinados no seletor acima do gráfico.
  • Contagem de pods ativos: contagem de pods e status do Kubernetes. Os status dos pods representados são Total, Pendente, Em execução, Desconhecido, Com êxito ou Com falha. Eles podem ser filtrados individualmente ou combinados no seletor acima do gráfico.

Use as teclas de seta para a esquerda e para a direita para percorrer cada ponto de dados no gráfico. Use as teclas de seta para cima e para baixo para percorrer as linhas de percentil. Selecione o ícone de pino no canto superior direito de um dos gráficos para fixar o gráfico selecionado no último painel do Azure que você exibiu. No painel, você pode redimensionar e reposicionar o gráfico. A escolha do gráfico no painel o redireciona aos Insights do contêiner e carrega o escopo e a exibição corretos.

Os insights do Contêiner também dão suporte ao Metrics Explorer do Azure Monitor, no qual você pode criar os seus próprios gráficos, correlacionar e investigar tendências e fixar em painéis. No Metrics Explorer, você também pode usar os critérios definidos para visualizar as suas métricas como a base de uma regra de alerta baseada em métrica.

Exibir métricas de contêiner no Metrics Explorer

No Metrics Explorer, você pode ver métricas de uso de nós e pods agregadas dos insights do Contêiner. A tabela a seguir resume os detalhes para ajudar você a entender como usar os gráficos de métricas para visualizar as métricas de contêiner.

Namespace Métrica Descrição
insights.container/nodes
cpuUsageMillicores Medição agregada da utilização da CPU no cluster. É um núcleo de CPU dividido em 1.000 unidades (mili = 1000). Usado par determinar o uso de núcleos em um contêiner quando vários aplicativos possam estar usando um núcleo.
cpuUsagePercentage Utilização média agregada da CPU medida em porcentagem em todo o cluster.
memoryRssBytes Memória RSS do contêiner usada em bytes.
memoryRssPercentage Memória RSS do contêiner usada em percentual.
memoryWorkingSetBytes Memória do conjunto de trabalho do contêiner usada.
memoryWorkingSetPercentage Memória do conjunto de trabalho do contêiner usada em porcentagem.
nodesCount Uma contagem de nós do Kubernetes.
insights.container/pods
PodCount Uma contagem de pods do Kubernetes.

Você pode dividir uma métrica para exibi-la por dimensão e visualizar como os segmentos diferentes se comparam entre si. Em um nó, você pode segmentar o gráfico pela dimensão do host. Em um pod, você pode segmentar pelas seguintes dimensões:

  • Controller
  • Namespace do Kubernetes
  • Fase

Analisar nós, controladores e integridade do contêiner

Quando você alterna para as guias Nós, Controladores e Contêineres, um painel de propriedades é exibido automaticamente no lado direito da página. Ele mostra as propriedades do item selecionado, que inclui rótulos que você definiu para organizar objetos Kubernetes. Quando um nó Linux é selecionado, a seção Capacidade de Disco Local também mostra o espaço em disco disponível e a porcentagem usada para cada disco apresentado ao nó. Selecione o link >> no painel para visualizá-lo ou ocultá-lo.

Como expandir os objetos na hierarquia, as atualizações de painel de propriedades com base no objeto selecionado. No painel, você também pode ver logs de contêiner (stdout/stderror), eventos e métricas de pod do Kubernetes selecionando o link Eventos ao vivo no topo do painel. Para obter mais informações sobre a configuração exigida para conceder e controlar o acesso à exibição desses dados, confira Configurar Dados Dinâmicos.

Enquanto você examina os recursos de cluster, pode ver esses dados no contêiner em tempo real. Para obter mais informações sobre esse recurso, confira Como exibir logs, eventos e métricas de pods do Kubernetes em tempo real.

Para exibir os dados de log do Kubernetes armazenados no seu workspace com base em pesquisas de logs predefinidas, selecione Exibir logs de contêiner na lista suspensa Exibir na análise. Para obter mais informações, confira Como consultar logs nos insights do Contêiner.

Use a opção + Adicionar Filtro no início da página para filtrar os resultados na exibição por Serviço, , Namespace ou Pool do Nó. Depois de selecionar o escopo do filtro, selecione um dos valores mostrados no campo Selecionar valores. Após ser configurado, o filtro será aplicado globalmente ao exibir qualquer perspectiva do cluster do AKS. A fórmula dá suporte apenas ao sinal de igual. Você pode adicionar mais filtros depois do primeiro para restringir ainda mais os resultados. Por exemplo, se você especificar um filtro por , poderá selecionar apenas Serviço ou Namespace como o segundo filtro.

A especificação de um filtro em uma guia continua a ser aplicada quando você seleciona outro. Ele é excluído depois que você seleciona o símbolo x ao lado do filtro especificado.

Alterne para a guia Nós e a hierarquia de linhas seguirá o modelo de objeto do Kubernetes, que começa com um nó no cluster. Expanda o nó para exibir um ou mais pods em execução no nó. Se mais de um contêiner for agrupado em um pod, eles serão exibidos como a última linha na hierarquia. Você também poderá exibir quantas cargas de trabalho não relacionadas a pod estão em execução no host se o host tiver pressão de memória ou processador.

Screenshot that shows an example of the Kubernetes Node hierarchy in the performance view.

Os contêineres do Windows Server que executam o sistema operacional Windows Server 2019 são mostrados depois de todos os nós baseados em Linux na lista. Quando você expande um nó do Windows Server, pode ver um ou mais pods e contêineres que são executados no nó. Depois que um nó é selecionado, o painel de propriedades mostra as informações da versão.

Screenshot that shows an example Node hierarchy with Windows Server nodes listed.

Os Nós Virtuais de Instâncias de Contêiner do Azure que executam o sistema operacional Linux são mostrados após o último nó de cluster do AKS na lista. Quando você expande um nó virtual de Instâncias de Contêiner, pode ver um ou mais pods e contêineres das Instâncias de Contêiner que são executados no nó. As métricas não são coletadas e relatadas para nós, somente para os pods.

Screenshot that shows an example Node hierarchy with Container Instances listed.

Em um nó expandido, é possível fazer drill down do pod ou contêiner em execução no nó até o controlador para exibir dados de desempenho filtrados para esse controlador. Selecione o valor sob a coluna Controlador para o nó específico.

Screenshot that shows the drill-down from node to controller in the performance view.

Selecione controladores ou contêineres na parte superior da página para examinar o status e a utilização de recursos para esses objetos. Para examinar a utilização de memória, na lista suspensa Métrica, selecione RSS de Memória ou Conjunto de trabalho de memória. RSS de Memória só tem suporte para a versão do Kubernetes 1.8 e posteriores. Caso contrário, você exibirá valores para Min % as NaN %, que é um valor de tipo de dados numérico que representa um valor indefinido ou não representável.

Screenshot that shows a Container nodes performance view.

O conjunto de trabalho de memória mostra tanto a memória residente quanto a memória virtual (cache) incluídas e é um total do quanto o aplicativo está usando. RSS de memória mostra apenas a memória principal, que não é nada mais que a memória residente. Essa métrica mostra a capacidade real da memória disponível. Qual é a diferença entre a memória residente e a memória virtual?

  • A memória residente, ou memória principal, é a quantidade real de memória do computador disponível para os nós do cluster.
  • A memória virtual é o espaço reservado em disco rígido (cache) usado pelo sistema operacional para trocar dados da memória para o disco quando sofre pressão de memória e buscá-los novamente para a memória quando necessário.

Por padrão, os dados de desempenho são baseados nas últimas seis horas, mas você pode alterar a janela usando a opção Intervalo de Tempo na parte superior esquerda. Você também pode filtrar os resultados no intervalo de tempo selecionando Mín, Avg, 50º, 90º, 95º, e Máx no seletor de percentil.

Screenshot that shows a percentile selection for data filtering.

Quando você passa o mouse sobre o gráfico de barras na coluna Tendência, cada barra mostra o uso de CPU ou de memória, dependendo de qual métrica está selecionada, em de um período de amostra de 15 minutos. Depois de selecionar o gráfico de tendências em um teclado, use as teclas Alt+Page up ou Alt+Page down para percorrer cada barra individualmente. Você vê os mesmos detalhes que veria se passasse o mouse sobre a barra.

Screenshot that shows a Trend bar chart hover-over example.

No próximo exemplo, para o primeiro nó da lista, aks-nodepool1-, o valor de Contêineres é 25. Esse valor é um valor acumulado do número total de contêineres implantados.

Screenshot that shows a rollup of containers-per-node example.

Essa informação pode ajudá-lo a identificar rapidamente se você tem um equilíbrio adequado de contêineres entre nós no seu cluster.

As informações apresentadas quando você exibe Nós são descritas na tabela a seguir.

Coluna Descrição
Nome O nome do host.
Status Exibição de Kubernetes do status do nó.
Mín %, Méd %, 50th %, 90th %, 95th %, Máx % Percentual médio de nós com base no percentil pela duração selecionada.
Mín, Méd, 50º, 90º, 95º, Máx Valor real de nós médio com base no percentil pela duração de tempo selecionada. O valor médio é medido usando o limite de CPU/memória definido para um nó. Para pods e contêineres, é o valor médio relatado pelo host.
Contêineres Número de contêineres.
Tempo de atividade Representa a hora desde que um nó foi iniciado ou reiniciado.
Controller Somente para os contêineres e pods. Mostra em qual controlador ele reside. Nem todos os pods estão em um controlador, assim, alguns poderão exibir N/D.
Tendência Mín%, Méd%, 50º%, 90º%, 95º%, Máx % Tendência de gráfico de barras representa o percentual médio de métrica de percentil do controlador.

Você poderá notar uma carga de trabalho depois de expandir um nó chamado Outro processo. Ele representa processos não conteinerizados que são executados no seu nó e inclui:

  • Processos de Kubernetes autogerenciados ou gerenciados que não estão em contêineres.
  • Processos de tempo de execução de contêiner.
  • Kubelet.
  • Processos do sistema em execução no seu nó.
  • Outras cargas de trabalho que não são de Kubernetes em execução no hardware do nó ou em uma VM.

É calculado por: Uso total de CAdvisor - Uso de processo conteinerizado.

No seletor, selecione Controladores.

Screenshot that shows selecting Controllers.]

Aqui você pode exibir a integridade do desempenho de seus controladores e controladores de nó virtual das Instâncias de Contêiner ou de pods de nó virtual não conectados a um controlador.

Screenshot that shows a \<Name> controllers performance view.

A hierarquia de linhas começa com um controlador. Quando você expande um controlador, um ou mais pods são exibidos. Expanda um pod e a última linha mostrará o contêiner agrupado para o pod. Em um controlador expandido, é possível fazer drill down até o nó que em que ele está em execução a fim de exibir dados de desempenho filtrados para esse nó. Os pods das Instâncias de Contêiner não conectados a um controlador são listados por último na lista.

Screenshot that shows an example Controllers hierarchy with Container Instances pods listed.

Selecione o valor sob a coluna para o controlador específico.

Screenshot that shows an example drill-down from controller to node in the performance view.

As informações que são exibidas quando você exibe controladores são descritas na tabela a seguir.

Coluna Descrição
Nome O nome do controlador.
Status O status de rollup dos contêineres depois que a execução é concluída com status como OK, Encerrado, Com falha, Parado ou Em pausa. Se o contêiner estiver em execução, mas o status não tiver sido devidamente exibido ou não tiver sido selecionado pelo agente e não tiver respondido por mais de 30 minutos, o status será Desconhecido. Mais detalhes do ícone de status são fornecidos na tabela a seguir.
Mín %, Méd %, 50th %, 90th %, 95th %, Máx % Média de rollup do percentual médio de cada entidade para a métrica e o percentil selecionados.
Mín, Méd, 50º, 90º, 95º, Máx Rollup da média de milinúcleo de CPU ou desempenho da memória do contêiner para o percentil selecionado. O valor médio é medido usando o limite de CPU/memória definido para um pod.
Contêineres Número total de contêineres para o controlador ou pod.
Reinícios Rollup da contagem de reinicialização dos contêineres.
Tempo de atividade Representa o tempo desde o início de um contêiner.
Somente para os contêineres e pods. Mostra em qual controlador ele reside.
Tendência Mín%, Méd%, 50º%, 90º%, 95º%, Máx % A tendência de gráfico de barras representa a métrica percentil do controlador.

Os ícones no campo status indicam o status online dos contêineres.

ícone Status
Ready running status icon.
Waiting or Paused status icon. Aguardando ou em pausa
Last reported running status icon. Relatado pela última vez como em execução, mas sem responder por mais de 30 minutos
Successful status icon. Parou com sucesso ou houve falha ao parar

O ícone de status mostra uma contagem com base no que o pod fornece. Mostra os dois piores estados. Quando você passa o mouse sobre o status, mostra um status de rollup de todos os pods no contêiner. Se não houver um estado pronto, o valor de status mostrará (0).

No seletor, selecione Contêineres.

Screenshot that shows selecting Containers.

Aqui, você pode exibir a integridade de desempenho dos seus contêineres do AKS e das Instâncias de Contêiner.

Screenshot that shows a \<Name> containers performance view.

Em um contêiner, você pode fazer drill down até um pod ou nó para exibir dados de desempenho filtrados para esse objeto. Selecione o valor sob a coluna Pod ou para o contêiner específico.

Screenshot that shows an example drill-down from node to containers in the performance view.

As informações que são exibidas quando você exibe contêineres são descritas na tabela a seguir.

Coluna Descrição
Nome O nome do controlador.
Status Status dos contêineres, se houver. Mais detalhes do ícone de status são fornecidos na tabela a seguir.
Mín %, Méd %, 50th %, 90th %, 95th %, Máx % O rollup do percentual médio de cada entidade para a métrica e o percentil selecionados.
Mín, Méd, 50º, 90º, 95º, Máx O rollup da média do desempenho de memória ou do milinúcleo da CPU do contêiner para o percentual selecionado. O valor médio é medido usando o limite de CPU/memória definido para um pod.
Pod Contêiner no qual reside o pod.
 Nó em que reside o contêiner.
Reinícios Representa o tempo desde o início de um contêiner.
Tempo de atividade Representa a hora desde que um contêiner foi iniciado ou reiniciado.
Tendência Mín%, Méd%, 50º%, 90º%, 95º%, Máx % A tendência de gráfico de barras representa o percentual métrico médio do contêiner.

Os ícones no campo status indicam os status online de pods, conforme descrito na tabela a seguir.

ícone Status
Ready running status icon.
Waiting or Paused status icon. Aguardando ou em pausa
Last reported running status icon. Relatado pela última vez como em execução, mas sem responder por mais de 30 minutos
Terminated status icon. Parou com sucesso ou houve falha ao parar
Failed status icon. Estado com falha

Monitorar e visualizar as configurações de rede

O Gerenciador de Políticas da Rede do Azure inclui métricas Prometheus informativas que podem ser usadas para monitorar e entender melhor as suas configurações de rede. Ele fornece visualizações internas no portal do Azure ou nos Laboratórios do Grafana. Para obter mais informações, confira Monitorar e visualizar as configurações de rede com o Azure npm.

Perguntas frequentes

Esta seção fornece respostas para perguntas comuns.

O que “Outros processos” representam na Exibição de nó?

Os outros processos servem para ajudar você a entender claramente a causa raiz do alto uso de recursos no nó. Essas informações ajudam você a distinguir o uso entre processos conteinerizados e os processos não conteinerizados.

Quais são esses outros processos?

Esses são processos não conteinerizados e são executados em seu nó.

Como calculamos isso?

Outros processos = Uso total do CAdvisor - Uso de processo conteinerizado

Os outros processos incluem:

  • Processos de Kubernetes gerenciados ou autogerenciados não conteinerizados.
  • Processos de tempo de execução de contêiner.
  • Kubelet.
  • Processos do sistema em execução no seu nó.
  • Outras cargas de trabalho que não são de Kubernetes em execução no hardware do nó ou em uma VM.

Próximas etapas