Grafana ist ein weitverbreitetes Tool zum Monitoren von Applikationen und Infrastrukturen. Es bietet neben der Visualisierung von Metriken in Dashboards auch Funktionen für das Alerting.
Wir arbeiten seit vielen Jahren sehr erfolgreich mit Grafana als Monitoringlösung in unseren Kundenprojekten. Häufig wird aber unterschätzt, wie viel Aufwand in den Aufbau von auf den Kunden abgestimmten Inhalten wie Dashboards und Alerts investiert wird.
Wir haben in GitHub mit dem Grafana-Content-Manager ein OpenSource-Projekt gestartet, mit dem die Entwicklung und die Sicherung der Grafana-Contents wie Dashboards, Unified Alerting aber auch Data Sources unterstützt wird.
Sie finden das Projekt unter github.com/yotron/grafana-content-manager
Hoher Aufwand merkt man erst bei Verlust
Den hohen Aufwand, den man in das Monitoring investiert hat, merkt man häufig erst nach einem Verlust der Grafana-Inhalte bei der Wiederherstellung, vor allem dann wenn Sicherung der Inhalte fehlen.
Kaum Unterstützung bei der Entwicklung von Dashboards
Die Entwicklung von Dashboards und Alerts kann als kontinuierlicher Prozess während des Aufbaus und des Betriebs einer Applikation oder Infrastruktur angesehen werden. Dies kann auch im Rahmen eines normalen Entwicklungsprozesses auf einer Entwicklungsumgebung mit nachträglicher Migration in eine produktive Umgebung erfolgen. Hier merkt man sehr schnell, dass Grafana dies nur unzureichend unterstützt und viel manuelle Anpassung benötigt.
Schwachstellen bei Grafana
Diese Problematiken sind eindeutig Schwachstellen, die bei Grafana immer nur ergänzend gelöst werden können.
-
Es gibt out-of-the-box kein Grafana-natives Tool, das die Sicherung der Inhalte durchführt, welches im Falle eines Total-Desasters bei Grafana greift und die Wiederherstellung erlaubt.
-
Es gibt out-of-the-box keine Funktionalität in Grafana mit der man Dashboards schnell und einfach von einer Instanz von Grafana auf eine andere Instanz von Grafana migrieren kann.
Bei einer häufig zu beobachtenden Trennungen der Instanzen zwischen Entwicklung und Produktion ist der Entwicklungsprozess daher sehr umständlich.
Lösung Grafana-Content-Manager
Mit dem Grafana-Content-Manager haben wir in GitHub ein OpenSource-Projekt gestartet um diese Schwachstellen zu beseitigen.
Mit dem Projekt können
- Dashboards, das Unified Alerting und Data Sources im nativen json-Format von Grafana in einem Git automatisiert backupt werde. Von dort können die Inhalte fur eine Point-in-time Recovery oder auch im Falle eines Totalverlustes per Knopfdruck wiederhergestellt werden.
- Dashboards von einer Grafana-Instanz auf eine andere Grafana Instanz per Knopfdruck migriert werden.
Ziel ist es, dass eine Wiederherstellung immer sofort nutzbar ist, sprich in den Dashboards auch die wiederhergestellten Data Sources angebunden sind, sodass man ohne manuelle Anpassung auch die Inhalte der Dashboards sofort visualisiert bekommt.
Die einzige manuelle Anpassung sind Passwörter oder andere Secrets in den Data Sources, die in einem Backup über Git nicht gespeichert werden und daher immer manuell nachgetragen werden müssen.
Man erhält mit Git zudem eine völlige Transparenz in den Inhalten des backups. Man sieht immer alle Teile im Backup und erhält automatisch eine Versionierung der Änderungen in den Dashboards, Alerts usw. .