Metriken
Für eine umfassende und skalierbare Überwachungslösung, bietet die Kombination von Prometheus und Grafana erweiterte Möglichkeiten zur Analyse und Visualisierung von Laufzeitdaten. Diese Integration ermöglicht es, Zeitreihendaten effizient zu erfassen, komplexe Abfragen durchzuführen, Alarme zu definieren und benutzerdefinierte Dashboards zu erstellen. Im Gegensatz zur einfachen Speicherung in einem In-Memory-Datenspeicher wie Redis, bietet dieses Setup eine robustere Verwaltung großer Datenmengen und eine flexible Anpassung an unterschiedliche Monitoring-Anforderungen.
Konfiguration
Docker Compose einrichten
Die Engine, in Kombination mit der Monitoring-Extension, benötigt die folgenden Umgebungsvariablen:
environment:
- prometheusExtension__exposeEndpoint=true
- prometheusExtension__port=8001prometheusExtension__exposeEndpointlegt fest, ob die Extension beim Start der Engine geladen werden sollprometheusExtension__portDefiniert den Port unter welchem die Extension ihreGET /metricsHTTP Schnittstelle bereitstellt
Des Weiteren müssen zwei zusätzliche Container hinzugefügt werden: Prometheus und Grafana.
# docker-compose.yaml
# Prometheus Container
prometheus:
image: prom/prometheus:latest
volumes:
- ./.processcube/prometheus/config.yaml:/etc/prometheus/prometheus.yml
ports:
- 9090:9090
# Grafana Container
grafana:
image: grafana/grafana:latest
ports:
- 3000:3000Die Prometheus-Konfigurationsdatei sollte folgendermaßen aussehen:
# config.yaml
global:
scrape_interval: 15s
scrape_configs:
- job_name: 'processcube'
static_configs:
- targets: ['engine:8001']Nutzung
Prometheus
Die Prometheus-Oberfläche ist im Browser unter http://localhost:9090 erreichbar. Hier können Abfragen definiert und Alarme konfiguriert werden.
Um die verfügbaren Daten einzusehen, kann ein curl-Befehl an den Prometheus-Server gesendet werden:
curl http://localhost:9090/api/v1/label/__name__/valuesDie Antwort sieht ungefähr so aus:
{
"status": "success",
"data": [
"flownode_duration_in_ms",
"flownode_duration_in_ms_count",
"flownode_duration_in_ms_sum",
"flownodes_finished",
"process_duration_in_ms",
"process_duration_in_ms_count",
"process_duration_in_ms_sum",
"processes_finished",
"processes_running",
"scrape_duration_seconds",
"scrape_samples_post_metric_relabeling",
"scrape_samples_scraped",
"scrape_series_added",
"up"
]
}Anschließend kann in der Oberfläche beispielsweise die Metrik flownodes_finished abgefragt werden.
Grafana
Die Grafana-Oberfläche ist im Browser unter http://localhost:3000 erreichbar, die Standard-Login-Daten sind admin:admin.
Zunächst muss Prometheus als Datenquelle hinzugefügt werden, in diesem Fall unter http://localhost:9090 .
Anschließend können Dashboards erstellt und spezifische Abfragen, wie beispielsweise flownodes_finished, definiert werden, um die Daten zu visualisieren.
Eine detaillierte Anleitung zur Konfiguration und Nutzung von Grafana ist in den unten verlinkten Ressourcen verfügbar.
Metriken über API Endpunkt auslesen
Über die HTTP Route GET /metrics lassen sich die erfassten Metriken auslesen.
Der Endpunkt ist unter der localhost Adresse erreichbar, für die per Umgebungsvariable ein Port definiert wird.
Wenn beispielsweise der Port prometheusExtension__port=8001 konfiguriert wurde, wäre die Schnittstelle unter folgender Adresse erreichbar:
GET http://localhost:8001/metrics