Monitorar o Serviço de Kubernetes do Azure (AKS)

Quando você tem aplicativos e processos de negócios críticos que dependem de recursos do Azure, recomendamos monitorar a disponibilidade, o desempenho e a operação desses recursos. Este artigo descreve os dados de monitoramento gerados pelo AKS e analisados com o Azure Monitor. Se você não estiver familiarizado com os recursos do Azure Monitor comuns a todos os serviços do Azure que o usam, leia Monitoramento de recursos do Azure com o Azure Monitor.

Importante

O Kubernetes é um sistema distribuído complexo com muitas partes móveis, portanto, o monitoramento em vários níveis é necessário. Embora o AKS seja um serviço gerenciado do Kubernetes, o mesmo rigor em relação ao monitoramento em vários níveis ainda é necessário. Este artigo fornece informações de alto nível e práticas recomendadas para monitorar um cluster do AKS. Consulte o seguinte para obter detalhes adicionais.

Dados de monitoramento

O AKS gera os mesmos tipos de dados de monitoramento que outros recursos do Azure descritos em Monitoramento de dados dos recursos do Azure. Confira a referência de dados de monitoramento do AKS para obter informações detalhadas sobre as métricas e os logs criados pelo AKS. Outros serviços e recursos do Azure coletar outros dados e habilitar outras opções de análise, conforme mostrado no diagrama e na tabela a seguir.

Diagram of collection of monitoring data from AKS.

Fonte Descrição
Métricas de plataforma As métricas de plataforma são coletadas automaticamente para clusters do AKS sem custo. Você pode analisar essas métricas com o Metrics Explorer ou usá-las para alertas de métrica.
Métricas do Prometheus Quando você habilita a extração de métricas para o cluster, as métricas do Prometheus são coletadas pelo serviço gerenciado do Azure Monitor para Prometheus e armazenadas em um espaço de trabalho do Azure Monitor. Analise-os com painéis predefinidos no Grafana Gerenciado do Azure e com alertas do Prometheus.
Logs de atividades O log de atividades é coletado automaticamente para clusters do AKS sem custo. Esses logs acompanham informações como quando um cluster é criado ou tem uma alteração de configuração. Envie o log de atividades para um workspace do Log Analytics para analisá-lo com seus outros dados de log.
Logs de recursos Os logs do painel de controle para AKS são implementados como logs de recursos. Crie uma configuração de diagnóstico para enviá-las para o workspace do Log Analytics, onde você pode analisá-las e alertá-las com consultas de log no Log Analytics.
Insights do contêiner Os insights de contêiner coletam vários logs e dados de desempenho de um cluster, incluindo fluxos stdout/stderr, e os armazenam em um workspace do Log Analytics e nas Métricas do Azure Monitor. Analise esses dados com exibições e pastas de trabalho incluídas com insights de contêiner ou com o Log Analytics e o Metrics Explorer.

Página de visão geral de monitoramento no portal do Azure

A guia Monitoramento na página Visão geral oferece uma maneira rápida de começar a exibir dados de monitoramento no portal do Azure para cada cluster do AKS. Isso inclui grafos com métricas comuns para o cluster separado por pool de nós. Clique em qualquer um desses grafos para analisar ainda mais os dados no Metrics Explorer.

A página Visão geral também inclui links para insights do Prometheus Gerenciado e insights de contêiner para o cluster atual. Se você ainda não habilitou essas ferramentas, será solicitado que você faça isso. Você também pode ver uma faixa na parte superior da tela recomendando que você habilite outros recursos para melhorar o monitoramento do cluster.

Screenshot of AKS overview page.

Dica

Acesse recursos de monitoramento para todos os clusters do AKS em sua assinatura no menu Monitoramento no portal do Azure, ou para um único cluster do AKS na seção Monitorar do menu Serviços do Kubernetes.

Integrações

Os seguintes serviços e recursos do Azure Monitor podem ser usados para monitoramento extra de seus clusters do Kubernetes. Você pode habilitar esses recursos durante a criação do cluster do AKS na guia Integrações no portal do Azure, na CLI do Azure, no Terraform, no Azure Policy ou integrar o cluster a eles posteriormente. Cada um desses recursos pode incorrer em custo, portanto, consulte as informações de preços de cada um antes de habilitá-los.

Serviço/Recurso Descrição
Insights do contêiner Usa uma versão em contêineres da agente do Azure Monitor para coletar logs stdout/stderr e eventos do Kubernetes de cada nó em seu cluster, dando suporte a uma variedade de cenários de monitoramento para clusters do AKS. Você pode habilitar o monitoramento para um cluster do AKS quando ele for criado usando CLI do Azure, Azure Policy, portal do Azure ou Terraform. Se você não habilitar os insights de contêiner ao criar o seu cluster, confira Habilitar insights de contêiner para o cluster do Serviço de Kubernetes do Azure (AKS) para obter outras opções para habilitá-lo.

Os insights de contêiner armazenam a maioria de seus dados em um workspace do Log Analytics e você normalmente usará o mesmo que os logs de recursos do cluster. Confira Criar uma arquitetura de workspace do Log Analytics para obter diretrizes sobre quantos workspaces você deve usar e onde localizá-los.
Serviço Gerenciado do Azure Monitor para Prometheus O Prometheus é uma solução de métricas nativas de nuvem do Cloud Native Compute Foundation e a ferramenta mais comum usada para coletar e analisar dados de métrica de clusters do Kubernetes. O serviço gerenciado do Azure Monitor para Prometheus é uma solução de monitoramento totalmente gerenciada compatível com Prometheus no Azure. Se você não habilitar o Prometheus gerenciado ao criar o seu cluster, confira Coletar métricas do Prometheus de um cluster do AKS para obter outras opções para habilitá-lo.

O serviço gerenciado do Azure Monitor para Prometheus armazena seus dados em um workspace do Azure Monitor, que está vinculado a um workspace do Grafana para que você possa analisar os dados com o Espaço Gerenciado do Azure para Grafana.
Espaço Gerenciado do Azure para Grafana Implementação totalmente gerenciada do Grafana, que é uma plataforma de visualização de dados de software livre comumente usada para apresentar dados do Prometheus. Vários painéis predefinidos do Grafana estão disponíveis para monitorar o Kubernetes e a solução de problemas de pilha completa. Se você não habilitar o Grafana gerenciado ao criar o seu cluster, confira Vincular detalhes de um workspace do Grafana sobre como vinculá-lo ao workspace do Azure Monitor para que ele possa acessar as métricas do Prometheus para o seu cluster.

Métrica

As métricas desempenham um papel importante no monitoramento de cluster, na identificação de problemas e na otimização do desempenho nos clusters do AKS. As métricas de plataforma são capturadas usando o servidor de métricas pronto para uso instalado no namespace do sistema kube, que raspa periodicamente as métricas de todos os nós do Kubernetes atendidos pelo Kubelet. Você também deve habilitar as métricas do Azure Managed Prometheus para coletar métricas de contêiner e métricas de objeto do Kubernetes, como o estado do objeto de Implantações. Consulte Coletar métricas do Prometheus de um cluster do AKS para enviar dados para o serviço Gerenciado do Azure para Prometheus.

Screenshot of enabling Managed Prometheus for existing cluster.

Logs

Plano de controle do AKS/logs de recursos

Os logs do painel de controle para clusters do AKS são implementados como logs de recursos no Azure Monitor. Os logs de recursos não são coletados e armazenados até que você crie uma configuração de diagnóstico para roteá-los para um ou mais locais. Normalmente, você os envia para um workspace do Log Analytics, que é onde a maioria dos dados para os insights de contêiner é armazenada.

Confira Criar configurações de diagnóstico para obter o processo detalhado de criação de uma configuração de diagnóstico usando o portal do Azure, a CLI ou o PowerShell. Ao criar uma configuração de diagnóstico, você especifica quais categorias de logs coletar. As categorias do AKS são listadas na referência de dados de monitoramento do AKS.

Importante

Pode haver um custo substancial ao coletar logs de recursos para o AKS, especialmente para logs do kube-audit. Considere as seguintes recomendações para reduzir a quantidade de dados coletados:

  • Desabilite o registro em log kube-audit quando não for necessário.
  • Habilite a coleta de kube-audit-admin, que exclui os eventos de auditoria get e list.
  • Habilite logs específicos do recurso conforme descrito abaixo e configure a tabela AKSAudit como logs básicos.

Consulte Monitorar clusters do Kubernetes usando ferramentas nativas de nuvem e serviços do Azure para obter mais recomendações. Confira Otimização de custos e Azure Monitor para obter mais estratégias para reduzir os custos de monitoramento.

Screenshot of AKS diagnostic setting dialog box.

O AKS dá suporte ao modo de diagnóstico do Azure ou ao modo específico do recurso para logs de recursos. Isso especifica as tabelas no workspace do Log Analytics para onde os dados são enviados. O modo diagnóstico do Azure envia todos os dados para a tabela AzureDiagnostics, enquanto o modo específico do recurso envia dados parac a Auditoria do AKS, Administração de Auditoria do AKS e Painel de Controle do AKS, conforme mostrado na tabela em Logs de recursos.

O modo específico do recurso é recomendado para o AKS pelos seguintes motivos:

  • Os dados são mais fáceis de consultar porque estão em tabelas individuais dedicadas ao AKS.
  • Dá suporte à configuração como logs básicos para uma economia significativa de custos.

Para obter mais informações sobre a diferença entre os modos de coleta, incluindo como alterar uma configuração existente, consulte Selecione o modo de coleção.

Observação

A capacidade de selecionar o modo de coleta ainda não está disponível no portal do Azure em todas as regiões. Para as regiões em que ainda não está disponível, use a CLI para criar a configuração de diagnóstico com um comando como o seguinte:

az monitor diagnostic-settings create --name AKS-Diagnostics --resource /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/myresourcegroup/providers/Microsoft.ContainerService/managedClusters/my-cluster --logs '[{""category"": ""kube-audit"",""enabled"": true}, {""category"": ""kube-audit-admin"", ""enabled"": true}, {""category"": ""kube-apiserver"", ""enabled"": true}, {""category"": ""kube-controller-manager"", ""enabled"": true}, {""category"": ""kube-scheduler"", ""enabled"": true}, {""category"": ""cluster-autoscaler"", ""enabled"": true}, {""category"": ""cloud-controller-manager"", ""enabled"": true}, {""category"": ""guard"", ""enabled"": true}, {""category"": ""csi-azuredisk-controller"", ""enabled"": true}, {""category"": ""csi-azurefile-controller"", ""enabled"": true}, {""category"": ""csi-snapshot-controller"", ""enabled"": true}]'  --workspace /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcegroups/myresourcegroup/providers/microsoft.operationalinsights/workspaces/myworkspace --export-to-resource-specific true

Consultas de log de amostra

Importante

Quando você seleciona Logs no menu para um cluster do AKS, o Log Analytics é aberto com o escopo de consulta definido para o cluster atual. Isso significa que as consultas de log incluirão apenas os dados desse recurso. Se quiser executar uma consulta que inclua dados de outros clusters ou dados de outros serviços do Azure, selecione Logs no menu Azure Monitor. Confira Escopo da consulta de log e intervalo de tempo no Log Analytics do Azure Monitor para obter detalhes.

Se a configuração de diagnóstico do cluster usar o modo diagnóstico do Azure, os logs de recursos do AKS serão armazenados na tabela AzureDiagnostics. É possível distinguir diferentes logs com a coluna de Categoria. Para obter uma descrição de cada categoria, consulte Logs de recursos de referência do AKS.

Descrição Consulta de log
Contar logs para cada categoria
(Modo de diagnóstico do Azure)
AzureDiagnostics
| where ResourceType == "MANAGEDCLUSTERS"
| resumir count() por categoria
Todos os logs do servidor da API
(Modo de diagnóstico do Azure)
AzureDiagnostics
| where Category == "kube-apiserver"
Todos os logs kube-audit em um intervalo de tempo
(Modo de diagnóstico do Azure)
let starttime = datetime("2023-02-23");
let endtime = datetime("2023-02-24");
AzureDiagnostics
| where TimeGenerated between(starttime..endtime)
| where Category == "kube-audit"
| extend event = parse_json(log_s)
| extend HttpMethod = tostring(event.verb)
| extend User = tostring(event.user.username)
| extend Apiserver = pod_s
| extend SourceIP = tostring(event.sourceIPs[0])
| project TimeGenerated, Category, HttpMethod, User, Apiserver, SourceIP, OperationName, event
Todos os logs de auditoria
(modo específico de recurso)
AKSAudit
Todos os logs de auditoria, excluindo os eventos de auditoria get e list
(modo específico de recurso)
AKSAuditAdmin
Todos os logs do servidor da API
(modo específico de recurso)
AKSControlPlane
| where Category == "kube-apiserver"

Para acessar um conjunto de consultas predefinidas no workspace do Log Analytics, confira a interface de consultas do Log Analytics e selecione o tipo de recurso Serviços do Kubernetes. Para obter uma lista de consultas comuns para insights de contêiner, confira Consultas de insights de contêiner.

Logs do plano de dados do AKS/Container Insights

O Container Insights coleta vários tipos de dados de telemetria de contêineres e clusters do Kubernetes para ajudá-lo a monitorar, solucionar problemas e obter insights sobre seus aplicativos em contêineres em execução nos clusters do AKS. Para obter uma lista de tabelas e suas descrições detalhadas usadas pelos insights do Contêiner, confira a Referência de tabela do Azure Monitor. Todas essas tabelas estão disponíveis para consultas de log.

Configurações de otimização de custo permitem personalizar e controlar os dados de métricas coletados por meio do agente de insights de contêiner. Esse recurso dá suporte às configurações de coleta de dados para seleção de tabela individual, intervalos de coleta de dados e namespaces para excluir a coleta de dados por meio de DCR (regras de coleta de dados) do Azure Monitor. Essas configurações controlam o volume de ingestão e reduzem os custos de monitoramento de insights de contêiner. Os dados coletados de insights do contêiner podem ser personalizados por meio do portal do Azure, usando as opções a seguir. Selecionar todas as opções diferentes de Todos (Padrão) faz com que a experiência de insights do contêiner fique indisponível.

Agrupamento Tabelas Observações
Todos (padrão) Todas as tabelas de insights do contêiner padrão É necessário para habilitar as visualizações de insights de contêiner padrão
Desempenho Perf, InsightsMetrics
Logs e eventos ContainerLog oruContainerLogV2, KubeEvents, KubePodInventory Recomendado se você habilitou as métricas gerenciadas do Prometheus
Cargas de trabalho, implantações e HPAs InsightsMetrics, KubePodInventory, KubeEvents, ContainerInventory, ContainerNodeInventory, KubeNodeInventory, KubeServices
Volumes persistentes InsightsMetrics, KubePVInventory

Screenshot of AKS data plane logs collection configuration page.

Os Logs e eventos agrupamento capturam os logs do ContainerLog ou ContainerLogV2, kubeEvents, tabelas kubePodInventory, mas não as métricas. O caminho recomendado para coletar métricas é habilitar serviço gerenciado do Azure Monitor Prometheus para Prometheus do cluster do AKS e usar o Espaço Gerenciado do Azure para Grafana para visualização de dados. Para obter mais informações, consulte Gerenciar um workspace do Azure Monitor.

Esquema do ContainerLogV2

O Azure Monitor Container Insights fornece um esquema para logs de contêineres conhecido como ContainerLogV2, que é a opção recomendada. Esse formato inclui os seguintes campos para facilitar consultas comuns para exibir dados relacionados aos clusters Kubernetes habilitados para AKS e Azure Arc:

  • ContainerName
  • PodName
  • PodNamespace

Além disso, esse esquema é compatível com os Logs Básicos, o que oferece uma alternativa de baixo custo para os logs de análise padrão. A configuração do plano de dados de log Básico permite que você economize no custo de armazenamento dos logs detalhados de alto volume que você usa para depuração, solução de problemas e auditoria, mas não para análise e alertas. Para obter mais informações, consulte Gerenciar tabelas em um workspace do Log Analytics. ContainerLogV2 é a abordagem recomendada e é o esquema padrão para clientes que integram insights de contêiner com Autenticação de Identidade Gerenciada usando ARM, Bicep, Terraform, Policy e portal do Azure. Para obter mais informações sobre como habilitar ContainerLogV2 por meio da DCR (Regra de Coleta de Dados) ou do ConfigMap do cluster, consulte Habilitar o esquema ContainerLogV2.

Visualização

A visualização de dados é um conceito essencial que torna mais fácil para os administradores do sistema e engenheiros operacionais consumirem as informações coletadas. Em vez de examinar dados brutos, eles podem usar representações visuais, que exibem rapidamente os dados e revelam tendências que podem estar ocultas ao examinar dados brutos. Você pode usar Painéis do Grafana ou pastas de trabalho nativas do Azure para visualização de dados.

Espaço Gerenciado do Azure para Grafana

A maneira mais comum de analisar e apresentar dados do Prometheus é com um painel do Grafana. O Espaço Gerenciado do Azure para Grafana inclui painéis predefinidos para monitorar clusters do Kubernetes, incluindo vários que apresentam informações semelhantes às exibições de insights do contêiner. Há também vários painéis criados pela comunidade para visualizar vários aspectos de um cluster Kubernetes das métricas coletadas pelo Prometheus.

Screenshot of Grafana.

Pastas de trabalho

As pastas de trabalho do Azure Monitor é um recurso no Azure Monitor que fornece uma tela flexível para análise de dados e criação de relatórios visuais avançados. As Pastas de Trabalho ajudam você a criar relatórios visuais que ajudam na análise de dados. Os relatórios dos Insights de Contêiner são recomendados como prontos para uso em pastas de trabalho do Azure. O Azure fornece pastas de trabalho internas para cada serviço, incluindo o AKS (Serviço de Kubernetes do Azure), que você pode acessar no portal do Azure. No menu do Azure Monitor no portal do Azure, selecione Contêineres. Na seção Monitoramento , selecione Insights, escolha um cluster específico e, em seguida, selecione a guia Relatórios . Você também pode exibi-los na galeria de pastas de trabalho no Azure Monitor.

Por exemplo, a Pasta de trabalho de Otimização de Cluster fornece vários analisadores que fornecem uma visão rápida da integridade e do desempenho do cluster do Kubernetes. Ela tem vários analisadores que fornecem informações diferentes relacionadas ao cluster. A pasta de trabalho não exigirá nenhuma configuração depois que os insights de Contêiner estiverem habilitados no cluster. As funcionalidades salientes incluem a capacidade de detectar falhas de investigação de atividade e suas frequências, identificar e agrupar anomalias de eventos que indicam aumentos recentes no volume de eventos para uma análise mais acessível e identificar contêineres com limites e solicitações de CPU e memória altos ou baixos, juntamente com valores de limite e solicitação sugeridos para esses contêineres em execução em seus clusters do AKS. Para obter mais informações sobre essas pastas de trabalho, consulte Relatórios em insights de Contêiner.

Alertas

Os alertas do Azure Monitor ajudam você a detectar e resolver problemas antes que os usuários notem, notificando-os proativamente quando os dados do Azure Monitor indicam que pode haver um problema com a infraestrutura ou o aplicativo. Eles permitem que você identifique e resolva problemas no seu sistema antes que os clientes os percebam. Você pode definir alertas em métricas, logs e log de atividades. Os diferentes tipos de alertas têm benefícios e desvantagens.

Há dois tipos de regras de métrica usadas por insights de contêiner com base nas métricas do Prometheus ou nas métricas da plataforma.

Alertas baseados em métricas do Prometheus

Ao habilitar a coleção de métricas do Prometheus para o seu cluster, você pode baixar uma coleção de regras de alerta recomendadas do Prometheus. Isso inclui as seguintes regras:

Nível Alertas
Nível do pod KubePodCrashLooping
O trabalho não foi concluído a tempo
Contêiner de pod reiniciado na última hora
O estado pronto dos pods é inferior a 80%
O número de pods com estado de falha é maior que 0
KubePodNotReadyByController
KubeStatefulSetGenerationMismatch
KubeJobNotCompleted
KubeJobFailed
O uso médio da CPU por contêiner é maior que 95%
O uso médio de memória por contêiner é maior que 95%
KubeletPodStartUpLatencyHigh
Nível do cluster O uso médio de PV é maior que 80%
KubeDeploymentReplicasMismatch
KubeStatefulSetReplicasMismatch
KubeHpaReplicasMismatch
KubeHpaMaxedOut
KubeCPUQuotaOvercommit
KubeMemoryQuotaOvercommit
KubeVersionMismatch
KubeClientErrors
CPUThrottlingHigh
KubePersistentVolumeFillingUp
KubePersistentVolumeInodesFillingUp
KubePersistentVolumeErrors
Nível do nó A utilização média da CPU do nó é maior que 80%
A memória do conjunto de trabalho para um nó é maior que 80%
O número de contêineres encerrados por OOM é maior que 0
KubeNodeUnreachable
KubeNodeNotReady
KubeNodeReadinessFlapping
KubeContainerWaiting
KubeDaemonSetNotScheduled
KubeDaemonSetMisScheduled
KubeletPlegDurationHigh
KubeletServerCertificateExpiration
KubeletClientCertificateRenewalErrors
KubeletServerCertificateRenewalErrors
KubeQuotaAlmostFull
KubeQuotaFullyUsed
KubeQuotaExceeded

Alertas baseados em métrica de plataforma

A tabela a seguir lista as regras de alerta de métrica recomendadas para clusters do AKS. Esses alertas são baseados em métricas de plataforma para o cluster.

Condição Descrição
Percentual de Uso da CPU > 95 É acionado quando o uso médio da CPU em todos os nós excede o limite.
Porcentagem do conjunto de trabalho de memória > 100 É acionado quando o conjunto de trabalho médio em todos os nós excede o limite.

Alertas baseados em log

Os alertas do log permitem que você alerte os logs do plano de dados e do plano de controle. Execute consultas em intervalos predefinidos e crie um alerta com base nos resultados. Você pode verificar a contagem de determinados registros ou executar cálculos com base em colunas numéricas.

Consulte Como criar alertas de log do Contêiner Insights e Como consultar logs do Contêiner Insights. Os alertas do log podem medir duas coisas diferentes, que podem ser usadas para monitorar em cenários diferentes:

  • Contagem de resultados: conta o número de linhas retornadas pela consulta e pode ser usado para trabalhar com eventos como logs de eventos do Windows, Syslog e exceções de aplicativo.
  • Cálculo de um valor: faz um cálculo com base em uma coluna numérica e pode ser usado para incluir qualquer número de recursos. Um exemplo é o percentual de CPU.

Dependendo do cenário de alerta necessário, as consultas de log precisam ser criadas comparando um DateTime com a hora atual usando o operador now e voltando uma hora. Para saber como criar alertas baseados em log, consulte Criar alertas de log de insights de contêiner.

Observabilidade de Rede

A observabilidade de rede é uma parte importante da manutenção de um cluster Kubernetes íntegro e com desempenho. Ao coletar e analisar dados sobre o tráfego de rede, você pode obter insights sobre como o cluster está operando e identificar possíveis problemas antes que eles causem interrupções ou degradação do desempenho.

Quando o complemento Observabilidade de Rede estiver habilitado, ele coletará e converterá métricas úteis no formato Prometheus, que podem ser visualizadas no Grafana. Quando habilitadas, as métricas coletadas são ingeridas automaticamente no serviço gerenciado do Azure Monitor para Prometheus. Um painel do Grafana está disponível no repositório do painel público do Grafana para visualizar as métricas de observabilidade de rede coletadas pelo Prometheus. Para obter mais informações, consulte configuração de Observabilidade de Rede para obter instruções detalhadas.

Próximas etapas