Diejenigen, die in Grafana Daten aus Icinga abseits der InfluxDB visualisieren möchten, kennen das Problem: wie kommt man an diese Daten heran? Mancher behilft sich, indem die MariaDB direkt abgefragt wird. Nicht ganz unproblematisch, und teils auch aus Sicherheits- und Architekturgründen gar nicht möglich. Noch schwieriger wird es, wenn verteilte Icinga-Server in einem Grafana-Dashboard Daten 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
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.
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!