10/07/2020

Grafana Dashboards für mehr Agilität – Teil 1

Die Architektur

In einer agilen Welt ist es nicht immer einfach, alles im Blick zu haben, denn ständig prasseln neue Informationen auf das Dev-Team ein. Wie schafft man es trotz der Informationsflut, dass die wichtigen Informationen nicht untergehen?

Hier hat sich in der Praxis bewährt, Monitore in den Gängen aufzuhängen, welche die wichtigsten Kennzahlen so übersichtlich zusammenfassen, dass man sie quasi im vorbeigehen erfassen kann.

Eines der besten Tools um Dashboards zu erzeugen ist Grafana mit seiner modularen Plugin-Architektur. Grafana kommt von Haus aus mit vielen Plugins z.B. für AWS CloudWatch, welche vom Hersteller selber gewartet werden. Darüberhinaus gibt es eine starke Community, welche noch viel mehr Plugins anbietet.

Eine große Herausforderung in diesem Kontext ist das Thema Security. Für das Ansteuern der Monitore eignet sich Raspberry Pi, aber die Daten darauf sind nicht sicher. Man muss die Architektur also derart gestalten, dass die Raspberry Pis als „untrusted devices“ angesehen werden.

Aus diesen Sicherheitsgründen kann man Grafana nicht direkt auf dem Raspberry Pi installieren. Stattdessen installiert man dort nur einen Firefox Browser, welcher einen Microservice aufruft, welcher wiederum die HTML Seiten mit den Grafana-Bildern generiert.

In unserer Situation hatten wir uns konkret dazu entschieden, zwei Spring Boot Microservices zu bauen, nämlich einen, der die HTML Seiten mit den Bildern ausgibt, und einen anderen der in regelmäßigen Abständen die Screenshots von den Grafana-Dashboards in einem headless Firefox Browser macht. Beide Microservices laufen auf Kubernetes. Als Datenspeicher für die Bilder haben wir uns für AWS S3 entschieden.

Die gesamte Architektur sieht dann wie folgt aus: