Los ejemplos usan kube-prometheus-stack, pero el enfoque es genérico y se aplica a cualquier implementación de Prometheus. Para conocer las restricciones específicas de cada mesh, consulte Monitoring Overview.
Cómo Vantage expone métricas
Los pods de la aplicación Vantage están instrumentados con SDK de OpenTelemetry y exponen métricas en formato Prometheus en/metrics-text, en el puerto 8080 del contenedor. Los servicios que exponen este endpoint llevan la etiqueta abbyy.platform.metrics.text.endpoint: "1" y asignan un puerto del servicio (normalmente, el 80) al puerto del contenedor con el nombre de puerto http. Prometheus detecta estos servicios y recopila sus métricas mediante un ServiceMonitor; no se necesita un OpenTelemetry Collector independiente para la recopilación de métricas.
Para consultar el concepto completo y las restricciones de la malla de servicios, consulte Monitoring Overview.
Requisitos previos
- Una instalación de Vantage en funcionamiento (operador y cargas de trabajo desplegados).
- Helm 3.
- Acceso al clúster mediante
kubectl. - Si KEDA está habilitado, una instancia de Prometheus accesible en
prometheus-operated.observability.svc.cluster.local:9090.
Configurar Prometheus
Si tiene previsto ingerir métricas de OTLP (consulte OTLP ingestion), habilite la funciónotlp-write-receiver y pase el argumento --web.enable-otlp-receiver a la instancia de Prometheus.
Añada el repositorio de Helm:
observability-values.yaml):
Configurar Prometheus para recopilar métricas de Vantage
El chartvantage-selfhosted puede crear los objetos ServiceMonitor necesarios para supervisar Vantage:
observability está en el nivel superior y no debe anidarse en vantage.
mTLS de Linkerd
Con la política permisiva predeterminada de Linkerd, Prometheus normalmente puede recopilar las métricas de los endpoints de Vantage con proxy de Linkerd mediante texto sin cifrar. Instale Prometheus en el espacio de nombresobservability, habilite el ServiceMonitor de Vantage y confirme que todos los destinos de Vantage aparezcan como UP.
Si una política estricta de autorización de Linkerd bloquea la recopilación, use uno de estos enfoques:
- Habilite la inyección de Linkerd para el espacio de nombres
observabilitypara que Prometheus participe en la malla de servicio. - Configure
observability.prometheus.serviceMonitor.scheme: httpsy untlsConfigque haga referencia a los certificados de cliente que su configuración de Linkerd pone a disposición de Prometheus.
ScaledObject. Consulte Escalado automático con KEDA para ver las consultas de inspección y las comprobaciones de preparación.
Istio mTLS
Cuando Vantage se despliega en una malla de servicio de Istio con mTLS STRICT (lo predeterminado cuandoingress.enabled es true y ingress.type es istio), Prometheus y ServiceMonitor deben configurarse para recopilar métricas de los endpoints mediante mTLS, porque Prometheus usa directamente las IP de los pods en lugar del nombre del servicio.
Configure los pods de Prometheus con las siguientes anotaciones:
volume y volumeMount (los nombres y las rutas se pueden personalizar; en los ejemplos a continuación se usan estos):
vantage-selfhosted para configurar los ServiceMonitor de modo que usen estos certificados:
Compruebe que las métricas se estén enviando
Configure el reenvío de puertos hacia la UI de Prometheus:http://localhost:9090/targets para ver el estado de recopilación de cada uno.
Acceso a Grafana
http://localhost:3000. Las credenciales predeterminadas son admin / la contraseña establecida en el archivo de valores. Prometheus está preconfigurado como fuente de datos.
Métricas disponibles
Las aplicaciones de Vantage exponen métricas de proceso, de cliente y servidor HTTP, y de la plataforma ABBYY a través del SDK de OpenTelemetry, todas etiquetadas conservice, pod, namespace y otel_scope_name. Consulte Métricas disponibles para ver el catálogo completo.
Ingestión de OTLP
La ingestión de OTLP se realiza mediante push y es independiente del flujo
ServiceMonitor basado en scrape descrito arriba. Úsela solo para servicios que envían métricas de OpenTelemetry por push, en lugar de exponer un endpoint de scrape.--web.enable-otlp-receiver), cualquier servicio que envíe métricas OTLP a través de HTTP puede enviarlas a:
