Monitorar o Serviço Kubernetes do Azure (AKS)

Quando tem aplicações críticas e processos de negócio que dependem dos recursos do Azure, deverá querer monitorizar esses recursos quanto à disponibilidade, ao desempenho e à operação. 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 Monitorando 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 Kubernetes gerenciado, o mesmo rigor em torno do 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 AKS. Consulte o seguinte para obter detalhes adicionais.

Monitorizar dados

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

Diagram of collection of monitoring data from AKS.

Source Description
Métricas de plataforma As métricas da plataforma são coletadas automaticamente para clusters AKS sem nenhum custo. Você pode analisar essas métricas com o explorador de métricas ou usá-las para alertas de métricas.
Métricas Prometheus Quando você habilita a raspagem de métricas para seu 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 pré-criados no Azure Managed Grafana e com alertas Prometheus.
Registos de atividade O registro de atividades é coletado automaticamente para clusters AKS sem nenhum custo. Esses logs rastreiam informações como quando um cluster é criado ou tem uma alteração de configuração. Envie o registro de atividades para um espaço de trabalho do Log Analytics para analisá-lo com seus outros dados de log.
Registos do recurso Os logs de plano de controle para AKS são implementados como logs de recursos. Crie uma configuração de diagnóstico para enviá-los ao espaço de trabalho do Log Analytics, onde você pode analisá-los e alertá-los com consultas de log no Log Analytics.
Informações de contentores O Container insights coleta vários logs e dados de desempenho de um cluster, incluindo fluxos stdout/stderr, e os armazena em um espaço de trabalho do Log Analytics e no Azure Monitor Metrics. Analise esses dados com exibições e pastas de trabalho incluídas no Container insights ou com o Log Analytics e o explorador de métricas.

Página de visão geral do 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 AKS. Isso inclui gráficos com métricas comuns para o cluster separados por pool de nós. Clique em qualquer um desses gráficos para analisar melhor os dados no explorador de métricas.

A página Visão geral também inclui links para insights do Managed Prometheus e do Container para o cluster atual. Se ainda não tiver ativado estas ferramentas, ser-lhe-á pedido que o faça. Você também pode ver um banner na parte superior da tela recomendando que você habilite outros recursos para melhorar o monitoramento do cluster.

Screenshot of AKS overview page.

Gorjeta

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

Integrações

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

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

O Container insights armazena a maioria de seus dados em um espaço de trabalho do Log Analytics e, normalmente, você usará o mesmo espaço de trabalho de análise de log que os logs de recursos para seu cluster. Consulte Criar uma arquitetura de espaço de trabalho do Log Analytics para obter orientação sobre quantos espaços de trabalho você deve usar e onde localizá-los.
Serviço gerenciado do Azure Monitor para Prometheus O Prometheus é uma solução de métricas nativa da nuvem da Cloud Native Compute Foundation e a ferramenta mais comum usada para coletar e analisar dados métricos de clusters 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 seu cluster, consulte Coletar métricas do Prometheus de um cluster AKS para obter outras opções para habilitá-lo.

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

Métricas

As métricas desempenham um papel importante no monitoramento de clusters, identificando problemas e otimizando o desempenho nos clusters AKS. As métricas da plataforma são capturadas usando o servidor de métricas pronto para uso instalado no namespace kube-system, que periodicamente raspa 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 AKS para enviar dados para o serviço gerenciado do Azure para Prometheus.

Screenshot of enabling Managed Prometheus for existing cluster.

Registos

Registos de planos/recursos de controlo AKS

Os logs de plano de controle para clusters 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 enviará para um espaço de trabalho do Log Analytics, que é onde a maioria dos dados do Container insights é armazenada.

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

Importante

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

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

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

Screenshot of AKS diagnostic setting dialog box.

O AKS suporta o modo de diagnóstico do Azure ou o modo específico de recursos para logs de recursos. Isso especifica as tabelas no espaço de trabalho do Log Analytics para onde os dados são enviados. O modo de diagnóstico do Azure envia todos os dados para a tabela AzureDiagnostics, enquanto o modo específico de recursos envia dados para AKS Audit, AKS Audit Admin e AKS Control Plane, 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.
  • Suporta configuração como logs básicos para economias de custos significativas.

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

Nota

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 onde 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 exemplo

Importante

Quando você seleciona Logs no menu para um cluster AKS, o Log Analytics é aberto com o escopo da consulta definido para o cluster atual. Isso significa que as consultas de log incluirão apenas 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 . Consulte Escopo e intervalo de tempo da consulta de log no Azure Monitor Log Analytics para obter detalhes.

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

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

Para acessar um conjunto de consultas pré-criadas no espaço de trabalho do Log Analytics, consulte a interface de consultas do Log Analytics e selecione o tipo de recurso Kubernetes Services. Para obter uma lista de consultas comuns para insights de contêiner, consulte Consultas de insights de contêiner.

Planos de dados AKS/logs do Container Insights

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

As configurações de otimização de custos 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 das Regras de Coleta de Dados (DCR) do Azure Monitor. Essas configurações controlam o volume de ingestão e reduzem os custos de monitoramento de insights de contêineres. Informações do contêiner Os dados coletados podem ser personalizados por meio do portal do Azure, usando as seguintes opções. A seleção de quaisquer opções diferentes de Todas (Padrão) faz com que a experiência de insights do contêiner fique indisponível.

Agrupamento Tabelas Notas
Tudo (padrão) Todas as tabelas de insights de 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 ou ContainerLogV2, KubeEvents, KubePodInventory Recomendado se você ativou 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.

O agrupamento Logs e eventos captura os logs das tabelas ContainerLog ou ContainerLogV2, KubeEvents, KubePodInventory, mas não as métricas. O caminho recomendado para coletar métricas é habilitar o serviço gerenciado do Azure Monitor Prometheus for Prometheus do seu cluster AKS e usar o Azure Managed Grafana para visualização de dados. Para obter mais informações, consulte Gerenciar um espaço de trabalho do Azure Monitor.

Esquema ContainerLogV2

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

  • ContainerName
  • PodName
  • PodNamespace

Além disso, esse esquema é compatível com o plano de dados Basic Logs , que oferece uma alternativa de baixo custo aos logs de análise padrão. O plano de dados de log básico permite economizar no custo de ingestão e armazenamento de logs detalhados de alto volume em seu espaço de trabalho do Log Analytics para depuração, solução de problemas e auditoria, mas não para análises e alertas. Para obter mais informações, consulte Gerenciar tabelas em um espaço de trabalho do Log Analytics. ContainerLogV2 é a abordagem recomendada e é o esquema padrão para clientes integrando informações de contêiner com Managed Identity Auth usando ARM, Bicep, Terraform, Policy e portal do Azure. Para obter mais informações sobre como habilitar o ContainerLogV2 por meio da Regra de Coleta de Dados (DCR) 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 de sistemas e engenheiros operacionais consumirem as informações coletadas. Em vez de olhar para dados brutos, eles podem usar representações visuais, que exibem rapidamente os dados e revelam tendências que podem estar ocultas ao olhar para dados brutos. Você pode usar Painéis Grafana ou pastas de trabalho nativas do Azure para visualização de dados.

Azure Managed Grafana

A maneira mais comum de analisar e apresentar dados do Prometheus é com um Grafana Dashboard. O Azure Managed Grafana inclui painéis pré-criados 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 aspetos de um cluster Kubernetes a partir das métricas coletadas pelo Prometheus.

Screenshot of Grafana.

Livros

As Pastas de Trabalho do Azure Monitor são um recurso do 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 a criar relatórios visuais que ajudam na análise de dados. Os relatórios em Insights de contêiner são recomendados prontos para uso para pastas de trabalho do Azure. O Azure fornece pastas de trabalho internas para cada serviço, incluindo o Serviço Kubernetes do Azure (AKS), que você pode acessar no portal do Azure. No menu Azure Monitor no portal do Azure, selecione Contêineres. Na seção Monitoramento, selecione Insights, escolha um cluster específico e 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 oferecem uma visão rápida da integridade e do desempenho do cluster Kubernetes. Ele tem vários analisadores que fornecem informações diferentes relacionadas ao seu cluster. A pasta de trabalho não requer configuração quando o Container insights estiver habilitado no cluster. Os recursos salientes incluem a capacidade de detetar falhas de sonda de vivacidade 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 limites sugeridos e valores de solicitação para esses contêineres em execução em seus clusters 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 detetar e resolver problemas antes que os usuários percebam, notificando-o proativamente quando os dados coletados do Azure Monitor indicam que pode haver um problema com sua infraestrutura de nuvem ou aplicativo. Permitem-lhe identificar e resolver problemas no seu sistema antes que os seus clientes reparem neles. Você pode definir alertas em métricas, logs e no registro de atividades. Diferentes tipos de alertas têm vantagens e desvantagens.

Há dois tipos de regras métricas usadas pelos insights do Container com base nas métricas do Prometheus ou nas métricas da plataforma.

Alertas baseados em métricas Prometheus

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

Nível Alertas
Nível do pod KubePodCrashLooping
O trabalho não foi concluído a tempo
Recipiente de pod reiniciado na última 1 hora
O estado de prontidão das cápsulas é inferior a 80%
Número de cápsulas em 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 energia fotovoltaica é superior a 80%
KubeDeploymentReplicasMismatch
KubeStatefulSetReplicasIncompatibilidade
KubeHpaReplicasIncompatibilidade
KubeHpaMaxedOut
KubeCPUQuotaOvercommit
KubeMemoryQuotaOvercommit
KubeVersionIncompatibilidade
KubeClientErrors
CPUThrottlingHigh
KubePersistentVolumeFillingUp
KubePersistentVolumeInodesFillingUp
KubePersistentVolumeErrors
Nível do nó A utilização média da CPU do nó é superior a 80%
A memória do conjunto de trabalho para um nó é maior que 80%
O número de contentores mortos OOM é superior a 0
KubeNodeInacessível
KubeNodeNotReady
KubeNodeReadinessFlapping
KubeContainerWaiting
KubeDaemonSetNotScheduled
KubeDaemonSetMisScheduled
KubeletPlegDurationHigh
KubeletServerCertificateExpiration
KubeletClientCertificateRenewalErrors
KubeletServerCertificateRenewalErrors
KubeQuotaQuaseCheio
KubeQuotaFullyUsed
KubeQuotaExcedido

Alertas baseados em métricas da plataforma

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

Condição Description
Percentagem > de utilização 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 de registo permitem-lhe alertar no seu plano de dados e controlar os registos do plano. Execute consultas em intervalos predefinidos e crie um alerta com base nos resultados. Você pode verificar a contagem de certos registros ou executar cálculos com base em colunas numéricas.

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

  • Contagem de resultados: Conta o número de linhas retornadas pela consulta e pode ser usada para trabalhar com eventos como logs de eventos do Windows, Syslog e exceções de aplicativos.
  • 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 é a percentagem de CPU.

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

Observabilidade da Rede

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

Quando o complemento Network Observability está ativado, ele coleta e converte métricas úteis no formato Prometheus, que pode ser visualizado 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 da rede coletadas pelo Prometheus. Para obter mais informações, consulte Configuração da observabilidade de rede para obter instruções detalhadas.

Próximos passos