Raccogli le metriche dei carichi di lavoro del componente aggiuntivo Mesh del servizio Istio per Servizio Azure Kubernetes in Prometheus gestito di Azure

Questa guida illustra come configurare e usare Azure Prometheus gestito per raccogliere le metriche dai carichi di lavoro del componente aggiuntivo mesh di servizi Istio nel cluster Kubernetes Azure.

Prerequisiti

Abilitare il servizio gestito di Monitoraggio di Azure per Prometheus

Monitoraggio di Azure servizio gestito per Prometheus raccoglie i dati dal cluster Kubernetes Azure. Per abilitare Monitoraggio di Azure servizio gestito per Prometheus, è necessario creare un'area di lavoro Monitoraggio di Azure per archiviare le metriche:

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)

Abilitare il componente aggiuntivo Prometheus

Per raccogliere le metriche di Prometheus dal cluster Kubernetes, abilitare il componente aggiuntivo Prometheus:

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

Personalizzare la raccolta delle metriche di Prometheus nel servizio gestito di Monitoraggio di Azure

Creare una configurazione di scrape in un file denominato prometheus-config, simile all'esempio fornito di seguito. Questa configurazione abilita lo scarto basato sulle annotazioni dei pod, che consente a Prometheus di individuare e rimuovere automaticamente le metriche dai pod con annotazioni specifiche.

Importante

La configurazione di scrape seguente è solo un esempio. È consigliabile personalizzarla in base alle proprie esigenze. Se non è stato modificato, potrebbe causare costi imprevisti dalla raccolta frequente delle metriche e dall'aumento dell'archiviazione dei dati.

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__ 

Per abilitare lo scraping basato sulle annotazioni dei pod, crea la configmap ama-metrics-prometheus-config che fa riferimento al file prometheus-config nel namespace kube-system.

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

Verificare la raccolta di metriche

  1. Configurate le autorizzazioni di accesso: passate all'area di lavoro di Monitoraggio di Azure nel portale di Azure e create un'assegnazione di ruolo per voi stessi per concedervi il ruolo "Lettore dati di monitoraggio" sulla risorsa dell'area di lavoro.

  2. Generare traffico di esempio: inviare alcune richieste alla pagina del prodotto creata in precedenza, ad esempio:

    curl -s "http://${GATEWAY_URL_EXTERNAL}/productpage" | grep -o "<title>.*</title>"
    
  3. Visualizza/esegui query sulle metriche nel portale di Azure: vai a Prometheus Explorer nell'area di lavoro di Monitoraggio di Azure ed eseguire query sulle metriche. L'esempio seguente mostra i risultati per la query istio_requests_total.

    Diagramma che mostra l'esecuzione di query di esempio in Prometheus Explorer.

Eliminare risorse

Se si vuole pulire la mesh del servizio Istio e i dati in ingresso (lasciando il cluster), eseguire il comando seguente:

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

Se si desidera pulire tutte le risorse create dai documenti di istruzioni di Istio, eseguire il comando seguente:

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