Monitoring von haupia wird nicht nur im Live Betrieb benötigt sondern wird auch von uns intern bei der Entwicklung verwendet. So können wir zum Beispiel beobachten, wie sich der Ressourcengebrauch während eines langen Datengeneratordurchlaufs verhält. Ich nehme das mal als Anlass zu zeigen, wie wir das intern machen.
Wir benutzen dabei intern Prometheus und Grafana. Kurz gesagt ist Prometheus eine Time-Series-Datenbank die aktiv in definierten Zeitabständen einen Endpoint aufruft (in diesem Kontext als 'scrapen' bezeichnet) und die abgerufenen Daten speichert. Grafana wird daraufhin verwendet, um aus diesen Daten Graphen zu erzeugen, die dann ausgewertet werden können. Um hier noch zu bestimmten Ereignissen eine Zeitliche Korrelation zu erstellen verwenden wir noch Kibana zum Auswerten der Logdaten, das ist aber Stoff für einen anderen Blogeintrag.
Seit der Version 2.0.62 gibt es die Möglichkeit, in haupia einen Prometheus-Endpoint zu aktivieren. Die geschieht in der application.yml:
management:
metrics:
export:
prometheus:
enabled: true
Damit kann der Endpoint aufgerufen werden unter:
/actuator/prometheus
Der Endpoint liefert eine Menge von nützlichen Daten, darunter:
- JVM-Messwerte
- Threads
- Statistiken zu den REST Services
Der aktivierte Endpoint ist mit den Userdaten des Hauptusers aus der application.yml gesichert.
Mit diesem Endpoint kann dann der haupia Server in Prometheus registriert werden:
scrape_configs:
- job_name: 'haupia'
metrics_path: '/actuator/prometheus'
scheme: https
basic_auth:
username: USERNAME
password: ******
static_configs:
- targets: ['haupia-server:8181']
Mit einem an Prometheus angebundenen Grafana können dann die erfassten Daten ausgewertet werden. Hier ein Beispiel aus unserem Internen System:
Die im Bild sichtbaren Werte stammen aus einem Testsystem und wären unüblich für einen Live Betrieb.
Man kann aus diesen Daten schon sehr gut den Ressourcengebrauch sehen. Ergänzt haben wir dies in unserem System durch zusätzliche Daten zum Festplattenverbrauch und SOLR-Kenndaten. So können wir im Zuge unserer Testdurchläufe den Ressourcengebrauch im System beobachten und entsprechend Rückschlüsse ziehen.
Derzeit gibt es noch keine haupiaspezifischen Daten im Prometheus-Endpoint, aber das wird sich sicher noch ändern. So sind zum Beispiel Informationen zu Datengeneratoren sowie zu Suchabfragen denkbar.
Wir haben intern sehr gute Erfahrungen mit diesem Setup und können so wertvolle Informationen zum Betrieb von haupia gewinnen. Wenn Sie Fragen dazu haben, kommen Sie gerne auf uns zu.