Sammeln von Metriken für Istio-Service-Mesh-Add-On-Workloads für Azure Kubernetes Service in Azure Managed Prometheus

In diesem Handbuch wird erläutert, wie Sie Azure Managed Prometheus einrichten und verwenden, um Metriken von Istio-Dienst-Gitter-Add-On-Workloads auf Ihrem Azure Kubernetes-Cluster zu sammeln.

Voraussetzungen

Aktivieren des verwalteten Azure Monitor-Diensts für Prometheus

Azure Monitor verwalteter Dienst für Prometheus sammelt Daten aus Azure Kubernetes-Cluster. Um Azure Monitor verwalteten Dienst für Prometheus zu aktivieren, müssen Sie einen Azure Monitor Arbeitsbereich erstellen, um die Metriken zu speichern:

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)

Aktivieren des Prometheus-Add-Ons

Aktivieren Sie Prometheus-Add-On, um Prometheus-Metriken aus Ihrem Kubernetes-Cluster zu sammeln:

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

Anpassen des Scrapings von Prometheus-Metriken im verwalteten Azure Monitor-Dienst

Erstellen Sie eine Scrape-Konfiguration in einer Datei mit dem Namen prometheus-config, ähnlich dem unten angegebenen Beispiel. Diese Konfiguration aktiviert das auf Pod-Annotationen basierende Scraping, wodurch Prometheus Metriken von Pods mit bestimmten Annotationen automatisch erkennen und erfassen kann.

Von Bedeutung

Die nachstehende Scrape-Konfiguration ist nur ein Beispiel. Wir empfehlen dringend , sie basierend auf Ihren Anforderungen anzupassen. Wenn sie nicht angepasst werden, kann dies zu unerwarteten Kosten aus der häufigen metrischen Sammlung und erhöhtem Datenspeicher führen.

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__ 

Um Pod-Annotation-basiertes Scraping zu aktivieren, erstellen Sie die ConfigMap ama-metrics-prometheus-config, die auf die Datei prometheus-config im Namespace kube-system verweist.

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

Metrikerfassung überprüfen

  1. Zugriffsberechtigungen konfigurieren: Navigieren Sie im Azure Portal zu Ihrem Azure Monitor Arbeitsbereich, und erstellen Sie eine Rollenzuweisung für sich selbst, um der Arbeitsbereichsressource die Rolle "Überwachung des Datenlesers" zu gewähren.

  2. Beispiel-Traffic generieren: Senden Sie einige Anfragen an die zuvor erstellte Produktseite, z. B.:

    curl -s "http://${GATEWAY_URL_EXTERNAL}/productpage" | grep -o "<title>.*</title>"
    
  3. Metriken im Azure-Portal anzeigen/abfragen: Navigieren Sie in Ihrem Azure Monitor-Arbeitsbereich zum Prometheus-Explorer und fragen Sie Metriken ab. Das folgende Beispiel zeigt Ergebnisse für die Abfrage istio_requests_total.

    Diagramm, das die Ausführung von Beispielabfragen im Prometheus-Explorer zeigt.

Löschen von Ressourcen

Wenn Sie das Istio-Dienstmesh und die Eingänge bereinigen (und den Cluster zurücklassen) möchten, führen Sie den folgenden Befehl aus:

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

Wenn Sie alle Ressourcen bereinigen möchten, die in den Istio-Anleitungsdokumenten erstellt wurden, führen Sie den folgenden Befehl aus:

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