Compartilhar via


Monitorar o Serviço de Kubernetes do Azure

Este artigo descreve:

  • Os tipos de dados de monitoramento que você pode coletar para esse serviço.
  • Maneiras de analisar esses dados.

Observação

Se já estiver familiarizado com esse serviço e/ou com o Azure Monitor e apenas quiser saber como analisar os dados de monitoramento, confira a seção Analisar ao final deste artigo.

Quando seus aplicativos e processos de negócios críticos dependem de recursos do Azure, você precisa monitorar e receber alertas para o seu sistema. O serviço do Azure Monitor coleta e agrega métricas e logs de cada componente do seu sistema. O Azure Monitor lhe fornece uma exibição da disponibilidade, desempenho e resiliência e notifica você em caso de problemas. Você pode usar o portal do Azure, o PowerShell, a CLI do Azure, a API REST ou as bibliotecas de cliente para configurar e exibir dados de monitoramento.

Importante

O Kubernetes é um sistema distribuído complexo com muitas partes móveis. É obrigatório o monitoramento em vários níveis. 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.

Insights

Alguns serviços no Azure têm um painel de monitoramento integrado no portal do Azure que fornece um ponto de partida para monitorar seu serviço. Esses painéis são chamados de insights e você pode encontrá-los no Hub de Insights do Azure Monitor no portal do Azure.

O Container insights do Azure Monitor coleta métricas personalizadas de nós, pods, contêineres e volumes persistentes. Para mais informações, consulte Métricas coletadas pelo Conteiner insights.

O Application Insights do Azure Monitor é usado para APM. Para habilitar o Application Insights com alterações de código, consulte Habilitar o OpenTelemetry do Azure Monitor. Para habilitar o Application Insights sem alterações de código, consulte a Autoinstrumentação do AKS. Para obter mais detalhes sobre instrumentação, consulte as noções básicas sobre coleta de dados.

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.

Diagrama de coleta de dados de monitoramento do 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 seu cluster, o serviço gerenciado Azure Monitor para Prometheus coleta métricas do Prometheus e as armazena em um workspace 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. Para analisar com outros dados de log, envie o Log de Atividades para um workspace do Log Analytics.
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 O Container insights coleta vários logs e dados de desempenho de um cluster, incluindo fluxos stdout/stderr, e os armazena em um workspace do Log Analytics e em 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.
Application insights O Application Insights do Azure Monitor coleta logs, métricas e rastreamentos distribuídos. Essa telemetria é armazenada em um workspace do Log Analytics para análise no portal do Azure.

Tipos de recurso

O Azure usa o conceito de tipos de recursos e IDs para identificar tudo em uma assinatura. Os tipos de recurso também fazem parte das IDs de recursos para cada recurso em execução no Azure. Por exemplo, um tipo de recurso para uma máquina virtual é Microsoft.Compute/virtualMachines. Para obter uma lista de serviços e os tipos de recursos associados a eles, confira Provedores de recursos.

O Azure Monitor organiza os principais dados de monitoramento de maneira similar em métricas e logs com base em tipos de recursos, também chamados de namespaces. Métricas e logs diferentes estão disponíveis para diferentes tipos de recursos. Seu serviço pode estar associado a mais de um tipo de recurso.

Para mais informações sobre os tipos de recurso do AKS, consulte Referência de dados de monitoramento do Serviço de Kubernetes do Azure.

Armazenamento de dados

Para o Azure Monitor:

  • Os dados de métricas são armazenados no banco de dados de métricas do Azure Monitor.
  • Os dados de log são armazenados no repositório de logs do Azure Monitor. O Log Analytics é uma ferramenta no portal do Azure que pode consultar esse repositório.
  • O log de atividades do Azure é um repositório separado com uma interface própria no portal do Azure.

Opcionalmente, você pode rotear dados de log de métricas e atividades para o armazenamento de logs do Azure Monitor. Em seguida, você pode usar o Log Analytics para consultar os dados e correlacioná-los com outros dados de log.

Muitos serviços podem usar configurações de diagnóstico para enviar dados de métricas e logs para outros locais de armazenamento fora do Azure Monitor. Os exemplos incluem o Armazenamento do Azure, sistemas de parceiros hospedados e sistemas de parceiros não Azure, usando Hubs de Eventos.

Para obter informações detalhadas sobre como o Azure Monitor armazena dados, confira Plataforma de dados do Azure Monitor.

Métricas de plataforma do Azure Monitor

O Azure Monitor fornece métricas de plataforma para a maioria dos serviços. Essas métricas são:

  • Definidas individualmente para cada namespace.
  • Armazenadas no banco de dados de métricas da série temporal do Azure Monitor.
  • Leves e capazes de dar suporte a alertas quase em tempo real.
  • Usadas para acompanhar o desempenho de um recurso ao longo do tempo.

Coleta: O Azure Monitor coleta as métricas da plataforma automaticamente. Nenhuma configuração é necessária.

Roteamento: Você também pode rotear algumas métricas da plataforma para Logs do Azure Monitor / Log Analytics para que você possa consultá-las com outros dados de log. Verifique a configuração de exportação de DS para cada métrica para ver se você pode usar uma configuração de diagnóstico para rotear a métrica para Logs do Azure Monitor / Log Analytics.

Para obter uma lista de todas as métricas que é possível coletar para todos os recursos no Azure Monitor, confira Métricas com suporte no Azure Monitor.

Para uma lista das métricas disponíveis para o AKS, consulte Referência de dados de monitoramento do Serviço de Kubernetes do Azure.

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 Prometheus Gerenciado do Azure para coletar métricas de contêiner e métricas de objeto do Kubernetes, como o estado do objeto de Implantações. Para mais informações, consulte Coletar métricas do Prometheus de um cluster do AKS.

O AKS também expõe métricas de componentes críticos do Plano de Controle, como o servidor de API, ETCD, Agendador, através do Prometheus Gerenciado pelo Azure. Esse recurso está atualmente na visualização. Para mais informações, consulte Monitorar métricas do plano de controle do Serviço de Kubernetes do Azure (AKS) (versão prévia).

Métricas não baseadas no Azure Monitor

Esse serviço fornece outras métricas que não estão incluídas no banco de dados de métricas do Azure Monitor.

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 gerar custos, portanto, consulte as informações de preço de cada um antes de habilitá-los.

Serviço/Recurso Descrição
Insights do contêiner Utiliza uma versão conteinerizada do agente do Azure Monitor para coletar logs stdout/stderr e eventos do Kubernetes de cada nó em seu cluster. O recurso dá suporte a uma variedade cenários de monitoramento para clusters do AKS. Você pode habilitar o monitoramento para um cluster do AKS quando ele for criado, usando a CLI do Azure, Azure Policy, o portal do Azure ou o 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.

O Container insights armazena a maior parte de seus dados em um workspace do Log Analytics, e você normalmente usa o mesmo workspace de log analytics que os logs de recurso do seu 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 nativa da nuvem da Cloud Native Compute Foundation. É a ferramenta mais comum usada para coletar e analisar dados de métricas 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 seu cluster, consulte Vincular um workspace do Grafana. Você pode vinculá-lo ao seu workspace do Azure Monitor para que ele tenha acesso às métricas do Prometheus do seu cluster.

Monitorar métricas do plano de controle do AKS (versão prévia)

Esta seção mostra como usar o recurso de métricas do plano de controle (versão prévia). Coletar métricas do plano de controle e visualizar a telemetria no Azure Monitor. O recurso de métricas do plano de controle é totalmente compatível com o Prometheus e o Grafana. O recurso oferece mais visibilidade sobre a disponibilidade e o desempenho dos componentes do plano de controle, como o servidor de API, ETCD, Agendador, Dimensionador Automático e o gerenciador de controladores. Você pode usar essas métricas para maximizar a observabilidade geral e manter a excelência operacional do cluster do AKS.

Pré-requisitos e limitações

Instalar a extensão aks-preview

Importante

As versões prévias do recurso AKS estão disponíveis em uma base de autoatendimento e aceitação. As visualizações são fornecidas "como estão" e "conforme disponíveis" e estão excluídas dos acordos de nível de serviço e da garantia limitada. As versões prévias do AKS são parcialmente cobertas pelo suporte ao cliente em uma base de melhor esforço. Dessa forma, esses recursos não são destinados ao uso em produção. Para obter mais informações, consulte os seguintes artigos:

  • Instale ou atualize a extensão da CLI do Azure do aks-preview usando o comando az extension add ou az extension update.

    # Install the aks-preview extension
    az extension add --name aks-preview
    
    # Update the aks-preview extension
    az extension update --name aks-preview
    

Registrar o sinalizador AzureMonitorMetricsControlPlanePreview

  1. Registre o sinalizador de recurso AzureMonitorMetricsControlPlanePreview usando o comando az feature register.

    az feature register --namespace "Microsoft.ContainerService" --name "AzureMonitorMetricsControlPlanePreview"
    

    Demora alguns minutos para o status exibir Registrado.

  2. Verifique o status do registro usando o comando az feature show.

    az feature show --namespace "Microsoft.ContainerService" --name "AzureMonitorMetricsControlPlanePreview"
    
  3. Quando o status reflete Registrado, atualize o registro do provedor de recursos Microsoft.ContainerService usando o comando az provider register.

    az provider register --namespace "Microsoft.ContainerService"
    

Habilitar métricas do painel de controle em seu cluster do AKS

Você pode habilitar as métricas do painel de controle com o complemento do serviço gerenciado do Azure Monitor para o Prometheus ao criar um novo cluster ou atualizar um cluster existente.

Habilitar métricas do plano de controle em um novo cluster do AKS:

Para coletar métricas do Prometheus do cluster do Kubernetes, consulte Habilitar o Prometheus e o Grafana para clusters do AKS e siga as etapas na guia CLI para um cluster do AKS.

Habilitar métricas do painel de controle em um cluster do AKS existente

  • Se o cluster já tiver o complemento do Prometheus, atualize o cluster para garantir que ele comece a coletar métricas do plano de controle usando o comando az aks update.

    az aks update --name $CLUSTER_NAME --resource-group $RESOURCE_GROUP
    

Observação

Ao contrário das métricas coletadas de nós de cluster, as métricas do painel de controle são coletadas por um componente que não faz parte do complemento ama-metrics. Habilitar o sinalizador de recurso AzureMonitorMetricsControlPlanePreview e o complemento gerenciado do Prometheus garante que as métricas do plano de controle sejam coletadas. Depois de habilitar a coleta de métricas, pode levar vários minutos para que os dados apareçam no workspace.

Métricas do plano de controle de consulta

As métricas do painel de controle são armazenadas em um workspace do Azure Monitor na região do cluster. Você pode consultar as métricas diretamente do workspace ou por meio da instância do Grafana gerenciada do Azure conectada ao workspace.

Exiba as métricas do painel de controle no workspace do Azure Monitor usando as seguintes etapas:

  1. No portal do Azure, navegue até o cluster do AKS.

  2. Em Monitoramento, selecione Insights.

    Captura de tela do workspace do Azure Monitor.

Observação

O AKS fornece modelos do painel de controle para ajudá-lo a exibir e analisar os dados de telemetria do painel de controle em tempo real. Se você estiver usando o Grafana gerenciado pelo Azure para visualizar os dados, poderá importar os seguintes painéis:

Personalizar métricas do painel de controle

O AKS inclui um conjunto pré-configurado de métricas a serem coletadas e armazenadas para cada componente. API server e etcd estão habilitados por padrão. Você pode personalizar essa lista por meio do ama-settings-configmap.

Os alvos padrão incluem os seguintes valores:

controlplane-apiserver = true
controlplane-cluster-autoscaler = false
controlplane-kube-scheduler = false
controlplane-kube-controller-manager = false
controlplane-etcd = true

Todos os ConfigMaps devem ser aplicados ao namespace kube-system para qualquer cluster.

Para obter mais informações sobre métricas de perfil minimal-ingestion, consulte Perfil de ingestão mínimo para métricas do plano de controle no Prometheus gerenciado.

  • Ingerir apenas métricas mínimas de destinos padrão

    Ao definir default-targets-metrics-keep-list.minimalIngestionProfile="true", somente o conjunto mínimo de métricas é assimilado para cada um dos destinos padrão: controlplane-apiserver e controlplane-etcd.

  • Ingerir todas as métricas de todos os destinos

    Colete todas as métricas de todos os destinos no cluster usando as seguintes etapas:

    1. Baixe o arquivo ConfigMap ama-metrics-settings-configmap.yaml e renomeie-o para configmap-controlplane.yaml.

    2. Defina minimalingestionprofile = false.

    3. Em default-scrape-settings-enabled, verifique se os destinos que você deseja extrair estão definidos como true. Os únicos destinos que você pode especificar são: controlplane-apiserver, controlplane-cluster-autoscaler, controlplane-kube-scheduler, controlplane-kube-controller-manager e controlplane-etcd.

    4. Aplique ConfigMap usando o comando kubectl apply.

      kubectl apply -f configmap-controlplane.yaml
      

      Depois que a configuração for aplicada, leva vários minutos até que as métricas dos destinos especificados raspados do painel de controle apareçam no workspace do Azure Monitor.

  • Ingerir algumas outras métricas além das métricas mínimas

    A configuração minimal ingestion profile ajuda a reduzir o volume de ingestão de métricas, pois coleta apenas métricas usadas por painéis padrão, regras de gravação padrão e alertas padrão são coletados. Para personalizar essa configuração, use as seguintes etapas:

    1. Baixe o arquivo ConfigMap ama-metrics-settings-configmap e renomeie-o para configmap-controlplane.yaml.

    2. Defina minimalingestionprofile = true.

    3. Em default-scrape-settings-enabled, verifique se os destinos que você deseja extrair estão definidos como true. Os únicos destinos que você pode especificar são: controlplane-apiserver, controlplane-cluster-autoscaler, controlplane-kube-scheduler, controlplane-kube-controller-manager e controlplane-etcd.

    4. Em default-targets-metrics-keep-list, especifique a lista de métricas para os destinos true. Por exemplo:

      controlplane-apiserver= "apiserver_admission_webhook_admission_duration_seconds| apiserver_longrunning_requests"
      
    5. Aplique ConfigMap usando o comando kubectl apply.

      kubectl apply -f configmap-controlplane.yaml
      

    Depois que a configuração for aplicada, leva vários minutos até que as métricas dos destinos especificados raspados do painel de controle apareçam no workspace do Azure Monitor.

  • Ingerir apenas métricas específicas de alguns destinos

    1. Baixe o arquivo ConfigMap ama-metrics-settings-configmap e renomeie-o para configmap-controlplane.yaml.

    2. Defina minimalingestionprofile = false.

    3. Em default-scrape-settings-enabled, verifique se os destinos que você deseja extrair estão definidos como true. Os únicos destinos que você pode especificar aqui são controlplane-apiserver, controlplane-cluster-autoscaler, controlplane-kube-scheduler,controlplane-kube-controller-manager e controlplane-etcd.

    4. Em default-targets-metrics-keep-list, especifique a lista de métricas para os destinos true. Por exemplo:

      controlplane-apiserver= "apiserver_admission_webhook_admission_duration_seconds| apiserver_longrunning_requests"
      
    5. Aplique ConfigMap usando o comando kubectl apply.

      kubectl apply -f configmap-controlplane.yaml
      

      Depois que a configuração for aplicada, leva vários minutos até que as métricas dos destinos especificados raspados do painel de controle apareçam no workspace do Azure Monitor.

Solucionar problemas de métricas do painel de controle

Verifique se o sinalizador de recurso AzureMonitorMetricsControlPlanePreview está habilitado e se os pods ama-metrics estão em execução.

Observação

Os métodos de solução de problemas para o serviço gerenciado do Azure Prometheus não são traduzidos diretamente aqui, pois os componentes que extraem o painel de controle não estão presentes no complemento gerenciado do Prometheus.

  • Formatação do ConfigMap

    Verifique se você está usando a formatação adequada no ConfigMap e se os campos, especificamente default-targets-metrics-keep-list, minimal-ingestion-profile e default-scrape-settings-enabled, estão preenchidos corretamente com os valores pretendidos.

  • Isolar o plano de controle do plano de dados

    Comece definindo algumas métricas relacionadas ao nó para true e verifique se as métricas estão sendo encaminhadas para o workspace. Isso ajuda a determinar se o problema é específico para extração das métricas do painel de controle.

  • Eventos ingeridos

    Depois de aplicar as alterações, você pode abrir o gerenciador de métricas na página Visão geral do Azure Monitor ou na seção Monitoramento o cluster selecionado e verificar se há um aumento ou diminuição no número de eventos ingeridos por minuto. Ele deve ajudá-lo a determinar se uma métrica específica está ausente ou se todas as métricas estão ausentes.

  • A métrica específica não é exposta

    Existem casos em que as métricas estão documentadas, mas não são expostas pelo alvo e não são encaminhadas para o workspace do Azure Monitor. Nesse caso, é necessário verificar se outras métricas estão sendo encaminhadas para o workspace.

  • Sem acesso ao workspace do Azure Monitor

    Ao habilitar o complemento, você pode especificar um workspace existente ao qual você não tem acesso. Nesse caso, pode parecer que as métricas não estão sendo coletadas e encaminhadas. Crie um novo workspace ao habilitar o complemento ou ao criar o cluster.

Desabilitar métricas do painel de controle em seu cluster do AKS

Você pode desabilitar as métricas do plano de controle a qualquer momento desabilitando o complemento gerenciado do Prometheus e cancelando o registro do sinalizador de recurso AzureMonitorMetricsControlPlanePreview.

  1. Remova o complemento de métricas que extrai as métricas do Prometheus usando o comando az aks update.

    az aks update --disable-azure-monitor-metrics --name $CLUSTER_NAME --resource-group $RESOURCE_GROUP
    
  2. Desabilite a extração de métricas do painel de controle no cluster do AKS cancelando o registro do sinalizador de recurso AzureMonitorMetricsControlPlanePreview usando o comando az feature unregister.

    az feature unregister "Microsoft.ContainerService" --name "AzureMonitorMetricsControlPlanePreview"
    

Perguntas frequentes

  • Posso extrair métricas do plano de controle com o Prometheus auto-hospedado?

    Não, atualmente você não pode extrair métricas do plano de controle com o Prometheus auto-hospedado. O Prometheus auto-hospedado só pode extrair a instância única, dependendo do balanceador de carga. As métricas não são confiáveis, pois geralmente há várias réplicas das métricas do plano de controle que só são visíveis por meio do Prometheus gerenciado

  • Por que o agente do usuário não está disponível nas métricas do plano de controle?

    As métricas do plano de controle no Kubernetes não têm o agente do usuário. O agente do usuário só está disponível por meio dos logs do plano de controle disponíveis nas configurações de diagnóstico.

Logs de recursos do Azure Monitor

Os logs de recursos fornecem insights sobre as operações que foram executadas por um recurso do Azure. Os logs são gerados automaticamente, mas você precisa encaminhá-los para os logs do Azure Monitor para serem salvos ou consultados. Os logs são organizados em categorias. Um determinado namespace pode ter várias categorias de logs de recursos.

Coleta: Os logs de recursos não serão coletados nem armazenados enquanto você não criar uma configuração de diagnóstico e encaminhar os logs para um ou mais locais. Ao criar uma configuração de diagnóstico, você especifica quais categorias de logs coletar. Há várias maneiras de criar e manter configurações de diagnóstico, incluindo o portal do Azure, programaticamente e por meio do Azure Policy.

Encaminhamento: O padrão sugerido é encaminhar os logs de recursos para os logs do Azure Monitor para que você possa consultá-los com outros dados de logs. Também estão disponíveis outros locais, como o Armazenamento do Microsoft Azure, os Hubs de Eventos do Azure e determinados parceiros de monitoramento da Microsoft. Para obter mais informações, confira Logs de recursos do Azure e Destinos de logs de recursos.

Para obter informações detalhadas sobre como coletar, armazenar e encaminhar logs de recursos, confira Configurações de diagnóstico no Azure Monitor.

Para obter uma lista de todas as categorias de logs de recursos disponíveis no Azure Monitor, confira Logs de recursos com suporte no Azure Monitor.

Todos os logs de recursos no Azure Monitor têm os mesmos campos de cabeçalho, seguidos de campos específicos do serviço. O esquema comum está descrito em Esquema do log de recursos do Azure Monitor.

Para as categorias de logs de recurso disponíveis, suas tabelas associadas no Log Analytics e os esquemas de logs para AKS, consulte Referência de dados de monitoramento do Serviço de Kubernetes do Azure.

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. Você normalmente os envia para um workspace do Log Analytics, onde a maior parte dos dados do Container insights é 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 de recursos conforme descrito aqui e configure AKSAudit tabela 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.

O AKS dá suporte ao modo de diagnóstico do Azure ou ao modo específico do recurso para logs de recursos. Este modo 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

Também é possível definir as configurações de diagnóstico por meio da CLI. Nesses casos, não é garantido que esse procedimento funcione bem, pois ele não verifica o estado de provisionamento do cluster. Certifique-se de verificar as configurações de diagnóstico do cluster para estarem de acordo depois de configurá-lo.

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

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. O plano de dados de log básico permite economizar nos custos de ingestão e armazenamento de logs detalhados de alto volume em seu workspace do Log Analytics para depuração, solução de problemas e auditoria. Isso não afeta os custos para análises 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.

Log de atividades do Azure

O log de atividades contém eventos de nível de assinatura que acompanham as operações de cada recurso do Azure, conforme visto fora desse recurso, por exemplo, criar um recurso ou iniciar uma máquina virtual.

Coleta: Os eventos do log de Atividades são gerados e coletados automaticamente em um repositório separado para serem vistos no portal do Azure.

Roteamento: você pode enviar dados de log de atividades para os logs do Azure Monitor para analisá-los junto com outros dados de log. Também estão disponíveis outros locais, como o Armazenamento do Microsoft Azure, os Hubs de Eventos do Azure e determinados parceiros de monitoramento da Microsoft. Para obter mais informações sobre como encaminhar o log de atividades, confira Visão geral do log de atividades do Azure.

Exibir logs de contêiner, eventos e métricas de pod do AKS (Serviço de Kubernetes do Azure) em tempo real

Nesta seção, você aprenderá como usar o recurso dados dinâmicos no Container insights para visualizar logs de contêineres do Serviço de Kubernetes do Azure (AKS), eventos e métricas de pods em tempo real. Esse recurso fornece acesso direto a kubectl logs -c, eventos kubectl get e kubectl top pods para ajudá-lo a solucionar problemas em tempo real.

Observação

O AKS usa arquiteturas de log no nível do cluster do Kubernetes. Os logs do contêiner estão localizados dentro /var/log/containers no nó. Para acessar um nó, confira Conectar-se aos nós de cluster do AKS (Serviço de Kubernetes do Azure).

Para obter ajuda com a configuração do recurso dados dinâmicos, consulte Configurar dados dinâmicos no Container Insights. Esse recurso acessa diretamente a API do Kubernetes. Para obter mais informações sobre o modelo de autenticação, consulte API do Kubernetes.

Exibir logs dinâmicos de recursos do AKS

Observação

Para acessar os logs de um cluster privado, você precisa estar em uma máquina na mesma rede privada que o cluster.

  1. No portal do Azure, navegue até o cluster do AKS.

  2. Em Recursos do Kubernetes, selecione Cargas de trabalho.

  3. Selecione Implantação, Pod, Conjunto de Réplicas, Conjunto com Estado, Trabalho ou Trabalho Cron para os quais deseja visualizar logs e, em seguida, selecione Logs Dinâmicos.

  4. Selecione o recurso para o qual você deseja exibir os logs.

    O exemplo a seguir mostra os logs de um recurso Pod:

    Captura de tela que mostra a implantação de logs dinâmicos.

Exibir logs em tempo real

Você pode visualizar dados de logs em tempo real à medida que o mecanismo de contêiner os gera no Cluster, Nós, Controladores ou Contêineres.

  1. No portal do Azure, navegue até o cluster do AKS.

  2. Em Monitoramento, selecione Insights.

  3. Selecione a guia Cluster, Nós, Controladores ou Contêineres e selecione o objeto para o qual você deseja exibir os logs.

  4. No recurso Visão geral, selecione Logs ao vivo.

    Observação

    Para exibir os dados do workspace do Log Analytics, selecione Exibir Logs no Log Analytics. Para saber mais sobre como exibir logs históricos, eventos e métricas, consulte Como consultar logs do Container Insights.

    Após uma autenticação bem-sucedida, se os dados puderem ser recuperados, eles começarão a ser transmitidos para a guia Logs Dinâmicos. Você pode exibir dados de log aqui em um fluxo contínuo. A imagem a seguir mostra os logs de um recurso Container:

    Captura de tela que mostra a opção de dados de exibição de Logs Dinâmicos do contêiner.

Ver eventos ao vivo

Você pode visualizar dados de eventos em tempo real à medida que o mecanismo de contêiner os gera no Cluster, Nós, Controladores ou Contêineres.

  1. No portal do Azure, navegue até o cluster do AKS.

  2. Em Monitoramento, selecione Insights.

  3. Selecione a guia Cluster, Nós, Controladores ou Contêineres e selecione o objeto para o qual você deseja exibir eventos.

  4. Na página Visão geral do recurso, selecione Eventos ao vivo.

    Observação

    Para exibir os dados do workspace do Log Analytics, selecione Exibir Eventos no Log Analytics. Para saber mais sobre como exibir logs históricos, eventos e métricas, consulte Como consultar logs do Container Insights.

    Após uma autenticação bem-sucedida, se os dados puderem ser recuperados, eles começarão a serem transmitidos para a guia Eventos Ao Vivo. A imagem a seguir mostra os eventos de um recurso Container:

    Captura de tela que mostra a opção de exibição de dados de Eventos ao Vivo do contêiner.

Métricas de exibição

Você pode visualizar dados de métricas em tempo real à medida que o mecanismo de contêiner os gera nos Nós ou Controladores selecionando um recurso Pod.

  1. No portal do Azure, navegue até o cluster do AKS.

  2. Em Monitoramento, selecione Insights.

  3. Selecione a guia Nós ou Controladores e, em seguida, selecione o objeto Pod para o qual você deseja exibir métricas.

  4. Na página Visão geral do recurso, selecione Métricas ao vivo.

    Observação

    Para exibir os dados do workspace do Log Analytics, selecione Exibir Eventos no Log Analytics. Para saber mais sobre como exibir logs históricos, eventos e métricas, consulte Como consultar logs do Container Insights.

    Após a autenticação bem-sucedida, se os dados puderem ser recuperados, eles começarão a ser transmitidos para a guia Métricas ao vivo. A imagem a seguir mostra as métricas de um recurso Pod:

    Captura de tela que mostra a opção de exibição de dados do pod Live Metrics.

Analisar dados de monitoramento

Existem várias ferramentas para analisar os dados de monitoramento.

Ferramentas do Azure Monitor

O Azure Monitor dá suporte às seguintes ferramentas básicas:

As ferramentas que permitem uma visualização mais complexa incluem:

  • Painéis, que permitem que você combine diferentes tipos de dados em um único painel no portal do Azure.
  • Pastas de Trabalho, relatórios personalizáveis que você pode criar no portal do Azure. As pastas de trabalho podem incluir texto, métricas e consultas de log.
  • Grafana, uma ferramenta de plataforma aberta que oferece excelência em termos de painéis operacionais. Você pode usar o Grafana para criar painéis que incluem dados de várias fontes além do Azure Monitor.
  • Power BI, um serviço de análises corporativas que fornece visualizações interativas nas diversas fontes de dados. Você pode configurar o Power BI para importar dados de log automaticamente do Azure Monitor a fim de aproveitar essas visualizações.

Ferramentas de exportação do Azure Monitor

Você pode obter dados do Azure Monitor em outras ferramentas usando os seguintes métodos:

Para começar a usar a API REST do Azure Monitor, confira o Passo a passo da API REST de monitoramento do Azure.

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

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

A guia Monitoramento também inclui links para insights do Prometheus Gerenciado e Insights de Contêiner para o cluster. Se você precisar habilitar essas ferramentas, poderá habilitá-las aqui. Você também pode ver uma faixa na parte superior da tela recomendando que você habilite outros recursos para aprimorar o monitoramento do cluster.

Dica

Você pode acessar recursos de monitoramento para todos os clusters do AKS em sua assinatura selecionando Azure Monitor na home page do portal do Azure.

Consultas do Kusto

Analise os dados de monitoramento nos logs do Azure Monitor/no repositório do Log Analytics usando o KQL (Linguagem de Consulta Kusto).

Importante

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

Para obter uma lista de consultas comuns para qualquer serviço, confira a Interface de consultas do Log Analytics.

Alertas

Os alertas do Azure Monitor o notificam proativamente quando condições específicas são encontradas em seus dados de monitoramento. Os alertas permitem que você identifique e resolva problemas no seu sistema antes que os clientes os percebam. Para saber mais, confira Alertas do Azure Monitor.

Existem muitas fontes de alertas comuns para os recursos do Azure. Para obter exemplos de alertas comuns para recursos do Azure, confira Amostra de consultas de alerta de logs. O site Alertas de Linha de Base do Azure Monitor (AMBA) fornece um método semiautomatizado de implementação de alertas, painéis e diretrizes importantes de métrica de plataforma. O site se aplica a um subconjunto de serviços do Azure em contínua expansão, incluindo todos os serviços que fazem parte da Zona de Destino do Azure (ALZ).

O esquema de alerta comum padroniza a consumo do Azure Monitor para notificações de alerta no Azure. Para obter mais informações, confira Esquema de alertas comuns.

Tipos de alertas

Você pode receber alertas sobre qualquer fonte de dados de log ou métrica na plataforma de dados do Azure Monitor. Existem muitos tipos diferentes de alertas dependendo dos serviços que você está monitorando e dos dados de monitoramento que você está coletando. Diferentes tipos de alertas têm diversos benefícios e desvantagens. Para obter mais informações, confira Escolha o tipo de alerta de monitoramento correto para você.

A lista a seguir descreve os tipos de alertas do Azure Monitor que você pode criar:

  • Os Alertas de métricas avaliam as métricas de recursos a intervalos regulares. As métricas podem ser métricas de plataforma, métricas personalizadas, logs do Azure Monitor convertidos em métricas ou métricas do Application Insights. Os alertas de métrica também podem aplicar várias condições e limites dinâmicos.
  • Os Alertas de logs permitem que os usuários usem uma consulta do Log Analytics para avaliar os logs de recursos com uma frequência predefinida.
  • Os Alertas do log de atividades são disparados quando ocorre um novo evento de log de atividades que corresponda às condições definidas. Os alertas do Resource Health e da Integridade do Serviço são alertas do log de atividades que relatam a integridade do serviço e do recurso.

Alguns serviços do Azure também dão suporte a alertas de detecção inteligentes, alertas do Prometheus ou regras de alerta recomendadas.

No caso de alguns serviços, você pode monitorar em larga escala aplicando a mesma regra de alerta de métricas a vários recursos do mesmo tipo que existem na mesma região do Azure. Notificações individuais são enviadas para cada recurso monitorado. Para ver os serviços e as nuvens do Azure com suporte, confira Monitorar vários recursos com uma regra de alerta.

Para alguns serviços do Azure, você pode habilitar as regras de alerta prontas para uso recomendadas.

O sistema compila uma lista de regras de alerta recomendadas com base em:

  • O conhecimento do provedor de recursos sobre sinais e limites importantes para monitorar o recurso.
  • Dados que informam sobre o que os clientes costumam alertar para esse recurso.

Observação

As regras de alerta recomendadas estão disponíveis para:

  • Máquinas virtuais
  • Recursos do AKS (Serviço de Kubernetes do Azure)
  • Workspaces do Log Analytics

Alertas baseados em métricas do Prometheus

Quando você habilita a coleta de métricas do Prometheus para seu cluster, você pode fazer o download um conjunto de regras de alerta do Prometheus recomendadas. Esse download inclui as seguintes regras:

Nível Alertas
Nível do cluster KubeCPUQuotaOvercommit
KubeMemoryQuotaOvercommit
KubeContainerOOMKilledCount
KubeClientErrors
KubePersistentVolumeFillingUp
KubePersistentVolumeInodesFillingUp
KubePersistentVolumeErrors
KubeContainerWaiting
KubeDaemonSetNotScheduled
KubeDaemonSetMisScheduled
KubeQuotaAlmostFull
Nível do nó KubeNodeUnreachable
KubeNodeReadinessFlapping
Nível do pod KubePVUsageHigh
KubeDeploymentReplicasMismatch
KubeStatefulSetReplicasMismatch
KubeHpaReplicasMismatch
KubeHpaMaxedOut
KubePodCrashLooping
KubeJobStale
KubePodContainerRestart
KubePodReadyStateLow
KubePodFailedState
KubePodNotReadyByController
KubeStatefulSetGenerationMismatch
KubeJobFailed
KubeContainerAverageCPUHigh
KubeContainerAverageMemoryHigh
KubeletPodStartUpLatencyHigh

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.

Regras de alerta do AKS

A tabela a seguir lista algumas regras de alerta sugeridas para o AKS. Esses alertas são apenas exemplos. Você pode definir alertas para qualquer métrica, entrada de log ou entrada do log de atividades listada na Referência de dados de monitoramento do Serviço de Kubernetes do Azure.

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.

Recomendações do Assistente

Para alguns serviços, se ocorrerem condições críticas ou alterações iminentes durante operações de recurso, um alerta será exibido na página de Visão geral do serviço no portal. Você pode encontrar mais informações e correções recomendadas para o alerta nas Recomendações do assistente em Monitoramento no menu à esquerda. Durante as operações normais, nenhuma recomendação do assistente será exibida.

Para obter mais informações sobre o Assistente do Azure, confira Visão geral do Assistente do Azure.

Observação

Se você estiver criando ou executando um aplicativo que é executado no seu serviço, o Azure Monitor Application Insights poderá oferecer mais tipos de alertas.

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.