Configurar e visualizar métricas Azure Kubernetes Application Network (pré-visualização)

Importante

Os recursos de pré-visualização do AKS estão disponíveis numa base de autosserviço e adesão voluntária. 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 versões de teste do AKS são parcialmente cobertas pelo suporte ao cliente numa base de melhor esforço. Assim sendo, estas funcionalidades não se destinam ao uso em produção. Para obter mais informações, consulte os seguintes artigos de suporte:

O Azure Kubernetes Application Network fornece métricas abrangentes para as suas cargas de trabalho e para os componentes do plano de dados da Azure Kubernetes Application Network (ZTunnel, Istio CNI e Waypoint) através das métricas Azure Monitor. Este artigo explica como configurar e visualizar estas métricas no Azure Monitor.

Limitações

As métricas do plano de controlo não são atualmente suportadas. No entanto, existem métricas do plano de dados disponíveis, e pode usá-las para monitorizar a saúde e o desempenho das suas cargas de trabalho e dos componentes da Azure Kubernetes Application Network.

Métricas do plano de dados

As métricas do plano de dados incluem métricas das suas cargas de trabalho/aplicações e do appnet-system namespace. Atualmente, a Azure Kubernetes Application Network oferece suporte apenas para métricas de plano de dados.

Configurar métricas do plano de dados

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

Quando ativa a recolha de métricas Prometheus para clusters membros da Azure Kubernetes Application Network, tem as seguintes opções para a configuração do espaço de trabalho:

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

Permitir a recolha de métricas do plano de dados

  1. Ative a recolha de métricas Prometheus no seu cluster membro da Azure Kubernetes Application Network usando o comando az aks update com o parâmetro --azure-monitor-workspace-resource-id definido para o seu ID de espaço de trabalho existente. Se o Azure Monitor Metrics já estiver ativado no seu cluster de membros, pode saltar para o passo seguinte.

    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 kube-system namespace usando o kubectl apply comando. Este ConfigMap permite o scraping do Ztunnel, Istio CNI, waypoint e da sua aplicação/cargas de trabalho.

    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 das aplicações que deseja raspar.

    • prometheus.io/scrape: "true" é necessário indicar que a cápsula deve ser raspada.
    • prometheus.io/path é opcionalmente usado para indicar o caminho onde as métricas são alojadas. Se for omitido, o valor por omissão é /metrics.
    • prometheus.io/port é opcionalmente usado para indicar a porta onde as métricas são alojadas. Se for omitido, o Prometheus usará as portas declaradas do contentor da especificação do pod. Para contentores sem portas declaradas, o Prometheus cria um alvo sem portas (apenas IP), que requer uma configuração adequada de reetiquetagem para funcionar com anotações de portas. Recomenda-se especificar explicitamente a porta para garantir uma raspagem fiável.

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

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

    Pode demorar alguns minutos para o ReplicaSet das métricas AMA carregar esta configuração.

Visualizar métricas do plano de dados

  1. Navegue até ao seu espaço de trabalho Azure Monitor no portal Azure para consultar as métricas usando PromQL.

  2. Gera algum tráfego e depois selecione consultas das métricas expostas para visualizar as métricas. Por exemplo, pode executar a seguinte consulta para ver o número total de pedidos tratados pelo waypoint:

    # ztunnel
    istio_xds_connection_terminations_total
    
    # waypoint
    istio_requests_total
    
    # istio-cni
    istio_cni_install_ready
    

    A captura de ecrã seguinte mostra os resultados das consultas de exemplo:

    Captura de ecrã dos resultados das consultas para ver o número total de pedidos tratados pelo waypoint.

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
Ponto de Passagem 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

Aceder diretamente às métricas a partir de proxies de ponto de passagem

Para além das métricas de pedido/resposta do Istio, os proxies de waypoint também geram métricas do Envoy.

  • Para encontrar uma lista completa das métricas emitidas pelo waypoint, pode fazer port-forward para um waypoint proxy no 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
    

Visualize métricas com o Grafana no Portal do Azure

  1. Importa os dashboards da comunidade do Istio.

  2. Gera tráfego para o teu cluster de membros e depois navega até ao teu espaço de trabalho Azure Monitor no portal Azure.

  3. Selecione Dashboards de Monitorização>com o Grafana.

    As capturas de ecrã seguintes mostram exemplos de importação do Painel do Istio Ztunnel:

    Captura de ecrã que mostra a opção de importação do painel no espaço de trabalho Azure Monitor no portal Azure.

    Captura de ecrã a mostrar as opções de análise para importar o painel do Ztunnel no portal Azure.

    Captura de ecrã a mostrar visualizações do painel Ztunnel num Grafana Dashboard no portal Azure.

Se quiser configurar o Azure Managed Grafana em vez de Dashboards com o Grafana, veja Criar um espaço de trabalho Azure Managed Grafana usando a Azure CLI.

Para mais informações sobre a observabilidade e monitorização da Azure Kubernetes Application Network, consulte os seguintes artigos: