ama-metrics Agent). Nach Abschluss werden die Vantage-Anwendungsmetriken zusammen mit Ihren Infrastrukturmetriken im selben Azure Managed Grafana angezeigt und von einem In-mesh Prometheus abgerufen, der die Endpunkte von Vantage über Istio mTLS erreicht.
Hintergrundinformationen dazu, warum dieses Muster verwendet wird (einschließlich der Istio-mTLS-Einschränkung, die es erforderlich macht), finden Sie unter Überwachungsübersicht.
Warum dieses Muster existiert
ama-metrics-Agent verarbeitet Kubernetes-Infrastrukturmetriken (kubelet, cadvisor, kube-state-metrics) automatisch. Über Pod-Annotationen kann er auch Istio-Proxy-Metriken wie istio_requests_total scrapen, da diese vom Envoy-Sidecar auf unverschlüsselten Ports bereitgestellt werden.
Bei den Vantage-Anwendungsmetriken ist das anders: Sie werden über Container-Port 8080 bereitgestellt, der vom Envoy-Sidecar abgefangen wird und der strikten mTLS-Durchsetzung unterliegt. Der ama-metrics-Agent läuft in kube-system ohne Istio-Sidecar und kann keine gültigen mTLS-Zertifikate vorlegen. Deshalb kann er keine Anwendungsmetrik-Endpunkte in Namespaces scrapen, die Teil des Mesh sind. Microsoft dokumentiert dies als bekannte Einschränkung: “Derzeit wird das Sammeln von Metriken aus einem Istio-Setup mit gegenseitiger TLS-Authentifizierung nicht unterstützt.”
Um Vantage-Anwendungsmetriken zu erfassen, stellen Sie eine Prometheus-Instanz innerhalb des Istio-Meshs bereit. Diese Prometheus-Instanz läuft mit einem Istio-Sidecar, exportiert die Mesh-Zertifikate, verwendet sie zum Scrapen der Anwendungs-Endpunkte über mTLS und nutzt Remote-Write an denselben Azure Monitor Workspace, den auch ama-metrics verwendet.
So funktioniert es
/metrics-text über den Container-Port 8080 bereit. Services, die Metriken bereitstellen, tragen das Label abbyy.platform.metrics.text.endpoint: "1".
Der In-mesh Prometheus ruft diese Metriken wie folgt ab:
- Er wird mit einem Istio-Sidecar ausgeführt (
sidecar.istio.io/inject: "true"). - Er exportiert Istios mTLS-Zertifikate über die Proxy-Konfigurationsannotation
OUTPUT_CERTS. - Er bindet diese Zertifikate im Prometheus-Container unter
/etc/prom-certs/ein. - Er konfiguriert den
ServiceMonitor(der vomvantage-selfhostedchart in Schritt 6 erstellt wird) so, dass er überscheme: httpsmithilfe des Istio-CA-Zertifikats, des Client-Zertifikats und des Schlüssels abruft.
Architektur
Voraussetzungen
- AKS-Cluster mit aktiviertem Istio-Service-Mesh-Add-on (STRICT mTLS).
- Azure Monitor Workspace bereitgestellt und mit dem AKS-Cluster verknüpft.
- Azure Managed Grafana bereitgestellt und mit dem Azure Monitor Workspace verknüpft.
ama-metrics-Agent wird im Cluster ausgeführt (aktiviert über AKS Monitor Settings).- OIDC-Issuer auf dem AKS-Cluster aktiviert (erforderlich für Workload Identity).
- Prometheus Operator CRDs installiert (diese sind in
ama-metricsenthalten).
Schritt 1: Azure-Ressourcen bereitstellen
- Azure Monitor Workspace: Portal → “Azure Monitor workspaces” → Erstellen. Verwenden Sie dieselbe Ressourcengruppe und Region wie für Ihren AKS-Cluster. Benennungskonvention:
amw-<cluster-name>. - Azure Managed Grafana: Portal → “Azure Managed Grafana” → Erstellen. Verwenden Sie dieselbe Ressourcengruppe und Region. Verknüpfen Sie die Instanz bei der Erstellung mit dem Azure Monitor Workspace. Benennungskonvention:
amg-<cluster-name>. - Prometheus auf AKS aktivieren: Portal → AKS-Cluster → Überwachung → Monitor Settings → “Metrics via managed Prometheus” aktivieren und den Azure Monitor Workspace sowie die Grafana-Instanz auswählen.
ama-metrics-Pods laufen:
Schritt 2: Erstellen Sie den Namespace observability mit Istio-Injektion
Hinweis: Es kann zwar jeder Namespace-Name verwendet werden, aber bestimmte optionale Vantage-Funktionen (wie die KEDA-Unterstützung) setzen voraus, dass die Prometheus-Service im Namespaceobservabilityausgeführt werden. Daher wird empfohlen,observabilityzu verwenden.
observability-Namespace dasselbe Label zu:
Schritt 3: Details zur Datenerfassung für Azure Monitor Workspace abrufen
Die verwaltete Ressourcengruppe folgt dem Namensschema
MA_<monitor-workspace-name>_<region>_managed.Schritt 4: Eine benutzerzugewiesene verwaltete Identität für Prometheus erstellen
clientId und principalId aus der Ausgabe.
Weisen Sie der Datensammlungsregel die Rolle Monitoring Metrics Publisher zu:
Schritt 5: Den Prometheus Operator installieren
ama-metrics-Agent installiert die Prometheus-CRDs, stellt jedoch keinen Operator bereit, der benutzerdefinierte Prometheus-Ressourcen reconciliiert. Installieren Sie nur den Operator und deaktivieren Sie alles andere:
Schritt 6: Die Prometheus-Manifeste anwenden
ServiceMonitor wird separat durch das vantage-selfhosted-Chart erstellt (siehe unten).
service-account.yaml: Prometheus-Servicekonto mit Annotation für Workload Identity:
rbac.yaml: ClusterRole und Bindung für die Erkennung von Zielen:
prometheus.yaml: Prometheus-Instanz mit Istio-Sidecar-Injektion, Zertifikatexport und remote-write an Azure Monitor:
Die Authentifizierungsmethode
azureAd.sdk verwendet DefaultAzureCredential, das das durch das Label azure.workload.identity/use: "true" eingebundene Workload-Identity-Token verwendet. Erfordert Prometheus v3.60+.Den Vantage ServiceMonitor konfigurieren
ServiceMonitor wird vom Helm-Chart vantage-selfhosted erstellt und nicht manuell angewendet. Installieren oder aktualisieren Sie das Chart mit einer Values-Datei, die den ServiceMonitor so konfiguriert, dass er Vantage über Istio mTLS mithilfe der Zertifikate scrapen kann, die In-mesh Prometheus exportiert:
Schritt 7: Prüfen
prometheus, config-reloader, istio-proxy) läuft:
http://localhost:9090/targets. Die Targets sollten als UP angezeigt werden und über https von /metrics-text:8080 abgerufen werden.
Prüfen Sie die remote-write-Protokolle auf Fehler:
up{cluster="<cluster-name>"} ab, um zu bestätigen, dass Metriken eingehen.
Betriebshinweise
- Der
ama-metrics-Agent verarbeitet weiterhin Kubernetes-Infrastrukturmetriken (kubelet, cadvisor, kube-state-metrics, node-exporter). Deaktivieren Sie ihn nicht. - In-mesh Prometheus verarbeitet nur Vantage-Anwendungsmetriken. Beide schreiben in denselben Azure Monitor Workspace.
- Die
azureAd.sdk-Authentifizierung fürremote-writeverwendetDefaultAzureCredential. Dabei wird das Workload-Identity-Token verwendet, das vom AKS-Workload-Identity-Webhook in den Pod projiziert wird. Dafür sind die Service-Account-Annotationazure.workload.identity/client-idund das Pod-Labelazure.workload.identity/use: "true"erforderlich. - Die Konfiguration
azureAd.managedIdentityfunktioniert für diesen Anwendungsfall nicht: Sie ruft den IMDS-Endpunkt auf dem Knoten auf, und die benutzerseitig zugewiesene Identität ist dem VMSS-Knotenpool nicht zugewiesen. UNKNOWN-Ziele in der Prometheus-Targets-Ansicht sind typischerweise Pods im Status Degraded oder CrashLooping und kein Scraping-Problem.logLevel: debugin der Prometheus-CRD kann nach erfolgreicher Überprüfung des Setups aufinfogeändert werden.
