Configurar e exibir métricas da Rede de Aplicativos do Kubernetes do Azure (versão prévia)

Importante

As funcionalidades em versão preliminar do AKS estão disponíveis de forma optativa e por autoatendimento. As versões prévias são fornecidas “no estado em que se encontram” e “conforme disponíveis” e são excluídas dos contratos 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:

A Rede de Aplicativos kubernetes do Azure fornece métricas abrangentes para suas cargas de trabalho e os componentes do plano de dados da Rede de Aplicativos kubernetes do Azure (ZTunnel, Istio CNI e Waypoint) por meio das métricas do Azure Monitor. Este artigo explica como configurar e exibir essas métricas no Azure Monitor.

Limitações

No momento, não há suporte para métricas do plano de controle. No entanto, as métricas do plano de dados estão disponíveis e você pode usá-las para monitorar a integridade e o desempenho de suas cargas de trabalho e componentes da Rede de Aplicativos do Kubernetes do Azure.

Métricas do plano de dados

As métricas do plano de dados incluem métricas de suas cargas de trabalho/aplicativos e do appnet-system namespace. Atualmente, a Rede de Aplicativos kubernetes do Azure fornece suporte apenas para métricas do plano de dados.

Configurar métricas do plano de dados

Opções de configuração do espaço de trabalho para métricas do plano de dados

Ao habilitar a coleção de métricas do Prometheus para clusters de membros da Rede de Aplicativos do Kubernetes do Azure, você terá as seguintes opções para a configuração do workspace:

  • Use um workspace existente do Azure Monitor.
  • Omita o ID do recurso do espaço de trabalho e use o espaço de trabalho padrão criado para o grupo de recursos.
  • Crie um novo espaço de trabalho do Azure Monitor.

Habilitar a coleta de métricas do plano de dados

  1. Habilite a coleta de métricas do Prometheus no cluster membro da Rede de Aplicativos do Azure Kubernetes usando o comando az aks update com o parâmetro --azure-monitor-workspace-resource-id definido como o ID do espaço de trabalho existente. Se as Métricas do Azure Monitor já estiverem habilitadas no cluster de membros, você poderá pular para a próxima etapa.

    az aks update --enable-azure-monitor-metrics \
      --name $CLUSTER_NAME \
      --resource-group $AKS_RG \
      --azure-monitor-workspace-resource-id $WORKSPACE_ID
    
  2. Crie e aplique o seguinte ConfigMap no namespace kube-system usando o comando kubectl apply. Esse ConfigMap habilita a extração de dados de Ztunnel, CNI Istio, ponto de passagem e suas cargas de trabalho/aplicativo.

    kubectl apply -f - <<EOF
    kind: ConfigMap
    apiVersion: v1
    metadata:
      name: ama-metrics-settings-configmap
      namespace: kube-system
    data:
      schema-version: v1
      config-version: ver1
      prometheus-collector-settings: |-
        cluster_alias = ""
        https_config = true
      default-scrape-settings-enabled: |-
        ztunnel = true
        istio-cni = true
      pod-annotation-based-scraping: |-
        podannotationnamespaceregex = ".*"
      default-targets-metrics-keep-list: |-
        ztunnel = ""
        istio-cni = ""
        minimalingestionprofile = true
      default-targets-scrape-interval-settings: |-
        ztunnel = "30s"
        istio-cni = "30s"
        podannotations = "30s"
      debug-mode: |-
        enabled = false
    EOF
    
  3. Adicione anotações aos pods dos aplicativos dos quais extrair dados.

    • prometheus.io/scrape: "true" é necessário para indicar que o pod deve ser extraído.
    • prometheus.io/path opcionalmente é usado para indicar o caminho em que as métricas estão hospedadas. Se omitido, o padrão será /metrics.
    • prometheus.io/port opcionalmente é usado para indicar a porta em que as métricas estão hospedadas. Se for omitido, o Prometheus usará as portas declaradas do contêiner na especificação do pod. Para contêineres sem portas declaradas, o Prometheus cria um destino sem porta (apenas IP), que requer a configuração de nova rotulagem adequada para funcionar com anotações de porta. Recomenda-se especificar explicitamente a porta para garantir uma extração de dados confiável.

    O exemplo a seguir define anotações para um pod que está hospedando métricas em <pod IP>:15020/metrics

    prometheus.io/scrape: "true"
    prometheus.io/port: "15020"
    prometheus.io/path: "/metrics"
    

    Pode levar alguns minutos para que o ReplicaSet de métricas AMA carregue a configuração.

Exibir métricas do plano de dados

  1. Navegue até o workspace do Azure Monitor no portal do Azure para consultar as métricas usando o PromQL.

  2. Gere algum tráfego e selecione consultas nas métricas expostas para exibir métricas. Por exemplo, você pode executar a consulta a seguir para exibir o número total de solicitações manipuladas pelo ponto de passagem:

    # ztunnel
    istio_xds_connection_terminations_total
    
    # waypoint
    istio_requests_total
    
    # istio-cni
    istio_cni_install_ready
    

    A captura de tela a seguir mostra os resultados das consultas de exemplo:

    Captura de tela dos resultados das consultas para exibir o número total de solicitações manipuladas pelo ponto de passagem.

Lista de métricas expostas

Componente Métricas expostas
ZTunnel istio_build
istio_xds_connection_terminations_total
istio_xds_message_total
istio_xds_message_bytes_total
istio_tcp_connections_opened_total
istio_tcp_connections_closed_total
istio_tcp_received_bytes_total
istio_tcp_sent_bytes_total
istio_on_demand_dns
istio_dns_requests_total
istio_dns_upstream_requests
istio_dns_upstream_failures
istio_dns_upstream_request_duration_seconds
workload_manager_active_proxy_count
workload_manager_pending_proxy_count
workload_manager_proxies_started_total
workload_manager_proxies_stopped_total
Istio CNI istio_cni_install_ready
istio_cni_installs_total
nodeagent_reconcile_events_total
ztunnel_connected
Waypoint istio_build
istio_request_bytes_bucket
istio_request_bytes_count
istio_request_bytes_sum
istio_request_duration_milliseconds_bucket
istio_request_duration_milliseconds_count
istio_request_duration_milliseconds_sum
istio_requests_total
istio_response_bytes_bucket
istio_response_bytes_count
istio_response_bytes_sum

Acessar as métricas diretamente de waypoint proxies

Além das métricas de solicitação/resposta do Istio, os proxies de ponto de passagem também emitem métricas do Envoy.

  • Para encontrar uma lista completa de métricas emitidas pelo waypoint, você pode realizar um port-forward para um waypoint proxy em seu namespace e listar as métricas usando os seguintes comandos:

    # Port-forward to waypoint proxy
    kubectl port-forward -n <namespace> deployment/waypoint 15020:15020 &
    
    # List metrics exposed by waypoint
    curl http://localhost:15020/stats/prometheus | grep -v '^#' | grep -v '^$' | awk -F'{' '{print $1}' | sort -u
    

Visualizar métricas com o Grafana no portal do Azure

  1. Importe os painéis da comunidade Istio.

  2. Gere tráfego para seu cluster de membros e navegue até o workspace do Azure Monitor no portal do Azure.

  3. Selecione Monitoramento>Painéis com o Grafana.

    As capturas de tela a seguir mostram exemplos de importação do Painel do Istio Ztunnel:

    Captura de tela mostrando a opção importar painel no workspace do Azure Monitor no portal do Azure.

    Captura de tela mostrando as opções de revisão para importar o painel do Ztunnel no portal do Azure.

    Captura de tela mostrando visualizações do painel do Ztunnel em um Painel do Grafana no portal do Azure.

Se você quiser configurar o Espaço Gerenciado do Azure para Grafana em vez de Painéis com o Grafana, consulte Criar um Espaço Gerenciado do Azure para Grafana usando a CLI do Azure.

Para obter mais informações sobre a observabilidade e o monitoramento da Rede de Aplicativos kubernetes do Azure, consulte os seguintes artigos: