Monitorar métricas do plano de controle do Serviço Kubernetes do Azure (AKS) (visualização)

A integridade do plano de controle do Serviço Kubernetes do Azure (AKS) é crítica para o desempenho e a confiabilidade do cluster. As métricas do plano de controle (visualização) fornecem mais visibilidade sobre sua disponibilidade e desempenho, permitindo maximizar a observabilidade geral e manter a excelência operacional. Essas métricas são totalmente compatíveis com Prometheus e Grafana, e podem ser personalizadas para armazenar apenas o que você considerar necessário. Com essas novas métricas, você pode coletar todas as métricas do servidor de API, ETCD, Scheduler, Autoscaler e controller manager.

Este artigo ajuda você a entender esse novo recurso, como implementá-lo e como observar a telemetria coletada.

Pré-requisitos e limitações

Instalar ou atualizar a extensão da CLI do aks-preview Azure

Importante

Os recursos de visualização do AKS estão disponíveis em uma base de autosserviço e opt-in. As visualizações prévias são fornecidas "como estão" e "conforme disponíveis" e são excluídas dos contratos de nível de serviço e da garantia limitada. As visualizações do AKS são parcialmente cobertas pelo suporte ao cliente com base no melhor esforço. Como tal, estas funcionalidades não se destinam a utilização em produção. Para obter mais informações, consulte os seguintes artigos de suporte:

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

az extension add --name aks-preview

Se você precisar atualizar a versão da extensão, você pode fazer isso usando o az extension update comando.

az extension update --name aks-preview

Registrar o sinalizador de recurso 'AzureMonitorMetricsControlPlanePreview'

Registre o AzureMonitorMetricsControlPlanePreview sinalizador de recurso usando o comando az feature register , conforme mostrado no exemplo a seguir:

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

Leva alguns minutos para que o status mostre Registrado. Verifique o status do registro usando o comando az feature show :

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

Quando o status refletir Registrado, atualize o registro do provedor de recursos Microsoft.ContainerService usando o comando az provider register :

az provider register --namespace "Microsoft.ContainerService"

Habilite as métricas do plano de controle em seu cluster AKS

Você pode habilitar métricas de plano de controle com o serviço gerenciado do Azure Monitor para o complemento Prometheus durante a criação do cluster ou para um cluster existente. Para coletar métricas do Prometheus do seu cluster Kubernetes, consulte Habilitar o Prometheus e o Grafana para clusters do Kubernetes e siga as etapas na guia CLI para um cluster AKS. Na linha de comando, certifique-se de incluir os parâmetros --generate-ssh-keys e --enable-managed-identity.

Se o cluster já tiver o complemento Prometheus implantado, você pode simplesmente executar um az aks update para garantir que o cluster seja atualizado para começar a coletar métricas do plano de controle.

az aks update -n <cluster-name> -g <resource-group>

Nota

Ao contrário das métricas coletadas dos nós do cluster, as métricas do plano de controle são coletadas por um componente que não faz parte do complemento ama-metrics . Ativar o AzureMonitorMetricsControlPlanePreview sinalizador de recurso e o complemento prometheus gerenciado 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 espaço de trabalho.

Consultando métricas do plano de controle

As métricas do plano de controle são armazenadas em um espaço de trabalho do monitor do Azure na região do cluster. Eles podem ser consultados diretamente do espaço de trabalho ou por meio da instância do Azure Managed Grafana conectada ao espaço de trabalho. Para localizar o espaço de trabalho do Azure Monitor associado ao cluster, no painel esquerdo do cluster AKS selecionado, navegue até a seção Monitoramento e selecione Insights. Na página Informações do Contêiner do cluster, selecione Configurações do Monitor.

Captura de ecrã da área de trabalho do Azure Monitor.

Se estiver a utilizar o Azure Managed Grafana para visualizar os dados, pode importar os seguintes dashboards. O AKS fornece modelos de painel para ajudá-lo a visualizar e analisar os dados de telemetria do seu plano de controle em tempo real.

Personalizar métricas do plano de controle

Por padrão, os AKs incluem um conjunto pré-configurado de métricas para coletar e armazenar para cada componente. API server e etcd estão habilitados por padrão. Esta lista pode ser personalizada através do ama-settings-configmap. A lista de métricas de minimal-ingestion perfil está disponível aqui.

A seguir estão listados os destinos padrão:

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

As várias opções são semelhantes ao Azure Managed Prometheus listado aqui.

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

Ingerir apenas métricas mínimas para os destinos padrão

Este é o comportamento padrão com a configuração default-targets-metrics-keep-list.minimalIngestionProfile="true". Somente as métricas listadas posteriormente neste artigo são ingeridas para cada um dos destinos padrão, que neste caso é controlplane-apiserver e controlplane-etcd.

Ingerir todas as métricas de todos os alvos

Execute as etapas a seguir para coletar todas as métricas de todos os destinos no cluster.

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

  2. Defina minimalingestionprofile = false e verifique se os destinos sob default-scrape-settings-enabled os quais você deseja raspar 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-managere controlplane-etcd.

  3. Aplique o ConfigMap executando o comando kubectl apply .

    kubectl apply -f configmap-controlplane.yaml
    

    Depois que a configuração é aplicada, leva vários minutos até que as métricas dos destinos especificados raspadas do plano de controle apareçam no espaço de trabalho do Azure Monitor.

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

Minimal ingestion profile é uma configuração que ajuda a reduzir o volume de ingestão de métricas, pois apenas métricas usadas por painéis padrão, regras de registro padrão ou alertas padrão são coletados. Execute as etapas a seguir para personalizar esse comportamento.

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

  2. Defina minimalingestionprofile = true e verifique se os destinos sob default-scrape-settings-enabled os quais você deseja raspar 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-managere controlplane-etcd.

  3. default-targets-metrics-keep-listEm , especifique a lista de métricas para as true metas. Por exemplo,

    controlplane-apiserver= "apiserver_admission_webhook_admission_duration_seconds| apiserver_longrunning_requests"
    
  • Aplique o ConfigMap executando o comando kubectl apply .

    kubectl apply -f configmap-controlplane.yaml
    

    Depois que a configuração é aplicada, leva vários minutos até que as métricas dos destinos especificados raspadas do plano de controle apareçam no espaço de trabalho do Azure Monitor.

Ingerir apenas métricas específicas de alguns alvos

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

  2. Defina minimalingestionprofile = false e verifique se os destinos sob default-scrape-settings-enabled os quais você deseja raspar 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.

  3. default-targets-metrics-keep-listEm , especifique a lista de métricas para as true metas. Por exemplo,

    controlplane-apiserver= "apiserver_admission_webhook_admission_duration_seconds| apiserver_longrunning_requests"
    
  • Aplique o ConfigMap executando o comando kubectl apply .

    kubectl apply -f configmap-controlplane.yaml
    

    Depois que a configuração é aplicada, leva vários minutos até que as métricas dos destinos especificados raspadas do plano de controle apareçam no espaço de trabalho do Azure Monitor.

Solucionar problemas de métricas do plano de controle

Certifique-se de verificar se o sinalizador AzureMonitorMetricsControlPlanePreview de recurso está ativado e se os ama-metrics pods estão em execução.

Nota

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

Formatação ou erros do ConfigMap

Certifique-se de verificar novamente a formatação do ConfigMap e se os campos estão preenchidos corretamente com os valores pretendidos. Especificamente o default-targets-metrics-keep-list, minimal-ingestion-profile, e default-scrape-settings-enabled.

Isolar o plano de controle do problema do plano de dados

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

Acontecimentos ingeridos

Depois de aplicar as alterações, você pode abrir o explorador de métricas na página de visão geral do Azure Monitor ou na seção Monitoramento do cluster selecionado. No portal do Azure, selecione Métricas. Verifique se há um aumento ou diminuição no número de eventos ingeridos por minuto. Ele deve ajudá-lo a determinar se a métrica específica está faltando ou todas as métricas estão faltando.

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

Houve casos em que as métricas são documentadas, mas não expostas a partir do destino e não foram encaminhadas para o espaço de trabalho do Azure Monitor. Nesse caso, é necessário verificar se outras métricas estão sendo encaminhadas para o espaço de trabalho.

Sem acesso ao espaço de trabalho do Azure Monitor

Ao habilitar o complemento, você pode ter especificado um espaço de trabalho existente ao qual não tem acesso. Nesse caso, pode parecer que as métricas não estão sendo coletadas e encaminhadas. Certifique-se de criar um novo espaço de trabalho ao habilitar o complemento ou ao criar o cluster.

Desative as métricas do plano de controle em seu cluster AKS

Você pode desativar as métricas do plano de controle a qualquer momento, desativando o sinalizador de recurso, desativando o Prometheus gerenciado ou excluindo o cluster AKS.

Sinalizador de visualização ativado após a configuração do Managed Prometheus

Se o sinalizador de visualização(AzureMonitorMetricsControlPlanePreview) foi habilitado em um cluster Managed Prometheus existente, será necessário forçar uma atualização para que o cluster emita métricas de plano de controle

Você pode executar uma atualização az aks para garantir que o cluster seja atualizado para começar a coletar métricas do plano de controle.

az aks update -n <cluster-name> -g <resource-group>

Nota

Esta ação não remove quaisquer dados existentes armazenados na sua área de trabalho do Azure Monitor.

Execute o seguinte comando para remover o complemento de métricas que raspa as métricas do Prometheus.

az aks update --disable-azure-monitor-metrics -n <cluster-name> -g <cluster-resource-group>

Execute o seguinte comando para desativar a raspagem de métricas do plano de controle no cluster AKS cancelando o registro do AzureMonitorMetricsControlPlanePreview sinalizador de recurso usando o comando az feature unregister .

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

FAQs

  • Essas métricas podem ser raspadas com prometheus auto-hospedado?

    • As métricas do plano de controle atualmente não podem ser raspadas com prometheus auto-hospedado. O prometheus auto-hospedado será capaz de raspar a única instância dependendo do balanceador de carga. Essas métricas não são precisas, pois muitas vezes há várias réplicas das métricas do plano de controle que só serão visíveis através do Managed Prometheus
  • Por que o agente do usuário não está disponível por meio das métricas do plano de controle?

Próximos passos

Depois de avaliar este recurso de visualização, compartilhe seus comentários. Estamos interessados em ouvir o que você pensa.

  • Saiba mais sobre a lista de métricas padrão para o plano de controle AKS.