Die Beispiele verwenden kube-prometheus-stack, aber das Vorgehen ist allgemein und gilt für jede Prometheus-Bereitstellung. Informationen zu den mesh-spezifischen Einschränkungen finden Sie unter Überwachungsübersicht.
Wie Vantage Metriken offenlegt
Die Anwendungs-Pods von Vantage sind mit OpenTelemetry-SDKs instrumentiert und stellen Metriken im Prometheus-Format unter/metrics-text über den Container-Port 8080 bereit. Services, die diesen Endpunkt bereitstellen, tragen das Label abbyy.platform.metrics.text.endpoint: "1" und ordnen einen Service-Port (in der Regel 80) dem Container-Port mit dem Portnamen http zu. Prometheus erkennt diese Services über einen ServiceMonitor und liest ihre Metriken ab; für die Metrikenerfassung ist kein separater OpenTelemetry Collector erforderlich.
Das vollständige Konzept sowie die Einschränkungen des Service-Mesh finden Sie unter Überwachungsübersicht.
Voraussetzungen
- Eine laufende Vantage-Installation (Operator und Workloads sind bereitgestellt).
- Helm 3.
kubectl-Zugriff auf das Cluster.- Wenn KEDA aktiviert ist, eine Prometheus-Instanz, die unter
prometheus-operated.observability.svc.cluster.local:9090erreichbar ist.
Prometheus konfigurieren
Wenn Sie OTLP-Metriken erfassen möchten (siehe OTLP-Ingestion), aktivieren Sie die Funktionotlp-write-receiver und übergeben Sie das Argument --web.enable-otlp-receiver an die Prometheus-Instanz.
Fügen Sie das Helm-Repository hinzu:
observability-values.yaml):
Prometheus zum Scraping von Vantage konfigurieren
Dasvantage-selfhosted-Chart kann die erforderlichen ServiceMonitor-Objekte erstellen, um Vantage zu überwachen:
observability befindet sich auf oberster Ebene und darf nicht unter vantage verschachtelt werden.
Linkerd mTLS
Mit der standardmäßig permissiven Richtlinie von Linkerd kann Prometheus die von Linkerd proxierten Vantage-Endpunkte normalerweise unverschlüsselt abfragen. Installieren Sie Prometheus im Namespaceobservability, aktivieren Sie den Vantage-ServiceMonitor, und vergewissern Sie sich, dass jedes Vantage-Ziel den Status UP hat.
Wenn eine strikte Linkerd-Autorisierungsrichtlinie das Abfragen blockiert, verwenden Sie einen der folgenden Ansätze:
- Aktivieren Sie die Linkerd-Injektion für den Namespace
observability, damit Prometheus am Mesh teilnimmt. - Konfigurieren Sie
observability.prometheus.serviceMonitor.scheme: httpsund einetlsConfig, die auf die Client-Zertifikate verweist, die Prometheus durch Ihre Linkerd-Konfiguration zur Verfügung gestellt werden.
ScaledObject-Ressourcen verwendet werden. Siehe Autoskalierung mit KEDA für die Prüfabfragen und Readiness-Checks.
Istio mTLS
Wenn Vantage in einem Istio-Mesh mit STRICT mTLS eingesetzt wird (standardmäßig, wenningress.enabled auf true und ingress.type auf istio gesetzt ist), müssen Prometheus und der ServiceMonitor so konfiguriert werden, dass sie Endpoints über mTLS abfragen, da Prometheus Pod-IPs direkt verwendet und nicht den Service-Namen.
Konfigurieren Sie die Prometheus-Pods mit den folgenden Annotationen:
volume und volumeMount (Namen und Pfade sind anpassbar; in den folgenden Beispielen werden sie verwendet):
vantage-selfhosted-Chart, damit die ServiceMonitor(s) für die Verwendung dieser Zertifikate konfiguriert werden:
Prüfen, ob Metriken ankommen
Richten Sie ein Port-Forwarding zur Prometheus-UI ein:http://localhost:9090/targets aufrufen, um den Scrape-Status der einzelnen Targets anzuzeigen.
Zugriff auf Grafana
http://localhost:3000. Die Standard-Anmeldedaten sind admin / das in der values-Datei festgelegte Kennwort. Prometheus ist als Datenquelle vorkonfiguriert.
Verfügbare Metriken
Vantage-Anwendungen stellen über das OpenTelemetry SDK Prozess-, HTTP-Client-/Server- und ABBYY-Plattformmetriken bereit, die alle mitservice, pod, namespace und otel_scope_name gekennzeichnet sind. Die vollständige Liste finden Sie unter Verfügbare Metriken.
OTLP-Ingestion
Die OTLP-Ingestion erfolgt pushbasiert und ist unabhängig vom oben beschriebenen scrape-basierten
ServiceMonitor-Flow. Verwenden Sie sie nur für Services, die OpenTelemetry-Metriken per Push senden, anstatt einen Scrape-Endpunkt bereitzustellen.--web.enable-otlp-receiver), kann jeder Service, der OTLP-Metriken per HTTP pusht, diese an Folgendes senden:
