Coletar métricas para cargas de trabalho de complemento de malha de serviço istio para o Serviço de Kubernetes do Azure no Prometheus Gerenciado do Azure

Este guia explica como configurar e usar o Prometheus Gerenciado do Azure para coletar métricas de cargas de trabalho do complemento de malha de serviço do Istio no seu cluster do Azure Kubernetes.

Pré-requisitos

Habilitar o serviço gerenciado do Azure Monitor para Prometheus

O serviço gerenciado do Azure Monitor para Prometheus coleta dados de um cluster do Kubernetes no Azure. Para habilitar o serviço gerenciado do Azure Monitor para Prometheus, você deve criar um workspace do Azure Monitor para armazenar as métricas:

export AZURE_MONITOR_WORKSPACE=<azure-monitor-workspace-name>

export AZURE_MONITOR_WORKSPACE_ID=$(az monitor account create \
    --name $AZURE_MONITOR_WORKSPACE \
    --resource-group $RESOURCE_GROUP \
    --location $LOCATION \
    --query id -o tsv)

Habilitar complemento do Prometheus

Para coletar métricas do Prometheus do seu cluster do Kubernetes, habilite o complemento Prometheus:

az aks update --enable-azure-monitor-metrics --name $CLUSTER --resource-group $RESOURCE_GROUP --azure-monitor-workspace-resource-id $AZURE_MONITOR_WORKSPACE_ID

Personalizar a extração de métricas do Prometheus no serviço gerenciado do Azure Monitor para Prometheus

Crie uma configuração de raspagem em um arquivo chamado prometheus-config, semelhante ao exemplo fornecido abaixo. Essa configuração permite a extração baseada em anotação de pod, que permite ao Prometheus descobrir e raspar automaticamente métricas de pods com anotações específicas.

Importante

A configuração de raspagem abaixo é apenas um exemplo. É altamente recomendável personalizá-lo com base em suas necessidades. Se não for ajustado, poderá levar a custos inesperados da coleta de métricas frequentes e ao aumento do armazenamento de dados.

global: 
  scrape_interval: 30s
scrape_configs: 
- job_name: workload
  scheme: http
  kubernetes_sd_configs:
    - role: endpoints
  relabel_configs:
    - source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_scrape]
      action: keep
      regex: true
    - source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_path]
      action: replace
      target_label: __metrics_path__
      regex: (.+)
    - source_labels: [__address__, __meta_kubernetes_pod_annotation_prometheus_io_port]
      action: replace
      regex: ([^:]+)(?::\d+)?;(\d+)
      replacement: $1:$2
      target_label: __address__ 

Para habilite a extração baseada em anotação de pod, crie um configmap ama-metrics-prometheus-config que referencie o arquivo prometheus-config no namespace kube-system.

kubectl create configmap ama-metrics-prometheus-config --from-file=prometheus-config -n kube-system

Verificar a coleção de métricas

  1. Configure as permissões de acesso: navegue até seu espaço de trabalho do Azure Monitor no portal do Azure e crie uma atribuição de função para si mesmo, concedendo a função "Leitor de Dados de Monitoramento" no recurso do espaço de trabalho.

  2. Gerar tráfego de exemplo: envie algumas solicitações para a página do produto criada anteriormente, por exemplo:

    curl -s "http://${GATEWAY_URL_EXTERNAL}/productpage" | grep -o "<title>.*</title>"
    
  3. Métricas de exibição/consulta no portal do Azure: navegue até o Gerenciador do Prometheus em seu workspace do Azure Monitor e métricas de consulta. O exemplo a seguir mostra os resultados da consulta istio_requests_total.

    Diagrama que mostra a execução de consulta de exemplo no Prometheus Explorer.

Excluir recursos

Se você quiser limpar a malha de serviços do Istio e as entradas (deixando para trás o cluster), execute o comando a seguir:

az aks mesh disable --resource-group ${RESOURCE_GROUP} --name ${CLUSTER}

Se você quiser limpar todos os recursos criados a partir dos documentos de orientação prática do Istio, execute o comando a seguir:

az group delete --name ${RESOURCE_GROUP} --yes --no-wait