ama-metrics). Al finalizar, las métricas de la aplicación Vantage aparecerán junto con sus métricas de infraestructura en el mismo Azure Managed Grafana, recopiladas por un Prometheus en la malla que accede a los endpoints de Vantage a través de Istio mTLS.
Para entender por qué existe este patrón (incluida la restricción de Istio mTLS que lo motiva), consulte Descripción general de la supervisión.
Por qué existe este patrón
ama-metrics implementado por Azure gestiona automáticamente las métricas de infraestructura de Kubernetes (kubelet, cadvisor, kube-state-metrics). También puede recopilar métricas del proxy de Istio, como istio_requests_total, mediante anotaciones de pod, ya que el sidecar de Envoy las expone en puertos de texto no cifrado.
Las métricas de la aplicación Vantage son diferentes: se exponen en el puerto 8080 del container, que es interceptado por el sidecar de Envoy y está sujeto a la aplicación estricta de mTLS. El agente ama-metrics se ejecuta en kube-system sin un sidecar de Istio y no puede presentar certificados mTLS válidos, por lo que no puede recopilar métricas de endpoints de aplicaciones en namespaces integrados en la malla. Microsoft documenta esto como una limitación conocida: “Actualmente no se admite la recopilación de métricas desde una configuración de Istio con autenticación mutua TLS.”
Para recopilar métricas de la aplicación Vantage, implementa una instancia de Prometheus dentro de la malla de Istio. Esta instancia de Prometheus se ejecuta con un sidecar de Istio, exporta los certificados de la malla, los usa para recopilar endpoints de aplicaciones a través de mTLS y envía las métricas mediante remote-write al mismo Azure Monitor Workspace que usa ama-metrics.
Cómo funciona
/metrics-text a través del puerto 8080 del contenedor. Los servicios que exponen métricas llevan la etiqueta abbyy.platform.metrics.text.endpoint: "1".
Prometheus en la malla recopila esas métricas de la siguiente manera:
- Se ejecuta con un sidecar de Istio (
sidecar.istio.io/inject: "true"). - Exporta los certificados mTLS de Istio mediante la anotación de configuración del proxy
OUTPUT_CERTS. - Monta esos certificados en el contenedor de Prometheus en
/etc/prom-certs/. - Configura el
ServiceMonitor(creado por el chartvantage-selfhosteden el Step 6) para recopilar métricas mediantescheme: https, usando el certificado de CA de Istio, el certificado de cliente y la clave.
Arquitectura
Requisitos previos
- clúster de AKS con el complemento de malla de servicios de Istio habilitado (mTLS STRICT).
- Azure Monitor Workspace aprovisionado y vinculado al clúster de AKS.
- Azure Managed Grafana aprovisionado y vinculado a Azure Monitor Workspace.
- agente
ama-metricsen ejecución en el clúster (habilitado mediante AKS Monitor Settings). - emisor OIDC habilitado en el clúster de AKS (necesario para la identidad de carga de trabajo).
- CRD de Prometheus Operator instalados (se incluyen con
ama-metrics).
Paso 1: Aprovisione recursos de Azure
- Azure Monitor Workspace: Portal → “Azure Monitor workspaces” → Create. Use el mismo grupo de recursos y la misma región que su clúster de AKS. Convención de nomenclatura:
amw-<cluster-name>. - Azure Managed Grafana: Portal → “Azure Managed Grafana” → Create. Use el mismo grupo de recursos y la misma región. Vincúlelo al Azure Monitor Workspace durante la creación. Convención de nomenclatura:
amg-<cluster-name>. - Habilitar Prometheus en AKS: Portal → clúster de AKS → Monitoring → Monitor Settings → habilite “Metrics via managed Prometheus” y seleccione el Azure Monitor Workspace y la instancia de Grafana.
ama-metrics estén en ejecución:
Paso 2: Cree el espacio de nombres de observabilidad con la inyección de Istio
Nota: Puede usar cualquier nombre de espacio de nombres, pero algunas funciones opcionales de Vantage (como la compatibilidad con KEDA) dependen de que los servicios de Prometheus estén en el espacio de nombresobservability, por lo que se recomienda usarobservability.
observability:
Paso 3: Recopilar los detalles de ingesta de Azure Monitor Workspace
El grupo de recursos administrado sigue el patrón
MA_<monitor-workspace-name>_<region>_managed.Step 4: Crear una identidad administrada para Prometheus
clientId y principalId que aparecen en la salida.
Asigna el rol Monitoring Metrics Publisher en la regla de recopilación de datos:
Paso 5: Instalar Prometheus Operator
ama-metrics instala los CRD de Prometheus, pero no ejecuta ningún operador que reconcilie los recursos personalizados de Prometheus. Instale únicamente el operador; deshabilite todo lo demás:
Step 6: Aplicar los manifiestos de Prometheus
ServiceMonitor de Vantage se crea por separado mediante el chart vantage-selfhosted (consulte más abajo).
service-account.yaml: Cuenta de servicio de Prometheus con anotación de identidad de carga de trabajo:
rbac.yaml: ClusterRole y vinculación para el descubrimiento de objetivos:
prometheus.yaml: instancia de Prometheus con inyección del sidecar de Istio, exportación de certificados y remote-write a Azure Monitor:
El método de autenticación
azureAd.sdk usa DefaultAzureCredential, que toma el token de identidad de carga de trabajo inyectado por la etiqueta azure.workload.identity/use: "true". Requiere Prometheus v3.60+.Configurar el ServiceMonitor de Vantage
ServiceMonitor de Vantage se crea mediante el chart de Helm vantage-selfhosted, en lugar de aplicarlo manualmente. Instale o actualice el chart con un archivo de valores que configure el ServiceMonitor para recopilar métricas de Vantage a través de Istio mTLS mediante los certificados que exporta Prometheus en la malla:
Step 7: Verifique
prometheus, config-reloader, istio-proxy):
http://localhost:9090/targets. Los targets deberían aparecer como UP, con scraping a través de https en /metrics-text:8080.
Revise los logs de remote-write para detectar errores:
remote-write se realiza correctamente, muestra “Done replaying WAL” sin errores de autenticación.
En Managed Grafana, consulta up{cluster="<cluster-name>"} en la vista Explore con el origen de datos de Managed Prometheus para confirmar que se están recibiendo métricas.
Notas operativas
- El agente
ama-metricssigue ocupándose de las métricas de infraestructura de Kubernetes (kubelet, cadvisor, kube-state-metrics, node-exporter). No lo deshabilite. - Prometheus en la malla solo gestiona las métricas de la aplicación Vantage. Ambos escriben en el mismo Azure Monitor Workspace.
- La autenticación
remote-writedeazureAd.sdkusaDefaultAzureCredential, que obtiene el token de identidad de carga de trabajo proyectado en el pod por el webhook de identidad de carga de trabajo de AKS. Esto requiere la anotaciónazure.workload.identity/client-iden la cuenta de servicio y la etiquetaazure.workload.identity/use: "true"en el pod. - La configuración
azureAd.managedIdentityno funciona en este caso de uso: llama al endpoint IMDS del nodo, y la identidad asignada por el usuario no está asignada al pool de nodos de VMSS. - Los destinos
UNKNOWNen la vista de destinos de Prometheus suelen corresponder a pods en estado Degraded o CrashLooping, no a un problema de scraping. logLevel: debugen el CRD de Prometheus puede cambiarse ainfouna vez verificada la configuración.
