Diejenigen, die in Grafana Daten aus Icinga abseits der InfluxDB visualisieren möchten, kennen das Problem: wie kommt man an diese Daten heran?
Manche behelfen sich, indem sie die MariaDB direkt abfragen. Das ist nicht ganz unproblematisch und teilweise aus Sicherheits- und Architekturgründen gar nicht möglich. Noch schwieriger wird es, wenn verteilte Icinga-Server Daten in ein Grafana-Dashboard liefern sollen.
Schöner wäre, wenn Grafana das Icinga REST-API abfragen könnte. Das JSON Datasource Plugin klingt anfangs zwar vielversprechend, hilft hier aber leider nicht weiter.
Geht also nicht? Stimmt. Bis jetzt. 😉
Grafinga ist für alle, die das REST-API eines oder mehrerer Icinga-Server in Grafana abfragen wollen. Grafinga ist eine Art Proxy zwischen Grafana und Icinga: es stellt die vier für das Grafana JSON Datasource Plugin verlangten Endpoints zur Verfügung, und sendet die in den Grafana-Panels definierten JSON-Objekte an einen oder mehrere Icinga-Server. Das Ergebnis der Query wird so übersetzt, dass Grafana in der Lage ist, die Daten beispielsweise in einem Table- oder Stats-Panel darzustellen.
Der Screenshot des beispielhaften Grafana-Dashboards zeigt pro Spalte eine Icinga-Server-Instanz. Die kleinere Zahl gibt die ACKknowlegden Dienste an.
Grafinga basiert auf Django, einem High-Level Python Web Framework. Es kann auf einem beliebigen Host laufen und positioniert sich logisch zwischen Grafana und Icinga.
Grafinga ist Open Source und steht unter der Unlicense. Eine ausführliche Beschreibung und Download findet sich auf https://git.linuxfabrik.ch/linuxfabrik/grafinga.
Have fun!