Hi,
extra einen Account erstellt hier , war ja auch mal Zeit.
Ich betreibe das Grafana auf ffka.xylou.info - und kann Euch gerne ein paar Antworten geben zu Euren Fragen.
Das Ganze basiert auf Grafana 1.9.1 (noch, update auf 2.0.2 steht bald an) und Graphite als Backend für die Timeseries Daten und zwei kleinen selbstgeschriebenen Python Scripten.
Elastic Search ist auch mit Grafana 1.9.1 kein Muss, da es auch Dashboards aus dem Filesystem ausliefern kann. Elastic Search (ES) braucht man in 1.9.1, wenn man komfortabel Dashboards editeren und speichern will. Die Dasboards, die ihr auf ffka.xylou.info sehen könnt, kommen alle vom Filesystem, ES ist keines installiert. Ich habe das CSS von Grafana leicht angepasst, um Load- und Save-Symbole auszublenden (da Save bei 1.9.1 ES vorraussetzen würde und es sonst zu einer Fehlermeldung kommt, wenn man das Symbol klickt.) Entsprechend brauche ich auch kein „Shield“ vor ES, da es gar keins gibt . Das Ergebnis ist: Niemand (auch ich nicht) kann Dashboards direkt speichern. Wenn ich ein Dashboard ändern möchte, verwende ich dafür ganz normal die Grafana Oberfläche. Wenn es mir gefällt, lasse ich mir das „Dashboard JSON“ anzeigen, copy/paste das per ssh in das Dashboard file auf dem Server. Ja, umständlich
Mit Grafana 2.0.2 ist das dann besser, das bringt eine User- und Rechteverwaltung mit (auf Basis von sqlite) und kann Dashboards in der lokalen sqlite speichern. ES ist dann nicht mehr nötig, um in Grafana Dashboards speichern und laden zu können. 2.0.2 kann auch als Proxy vor den Graphite Ports dienen.
Zu Graphite: Die Graphite Web-Ports müssen von aussen erreichbar bleiben (bei Grafana 1.9.1), da die Daten von den Dashboards per XHR nachgeladen werden. Das sieht man auch, wenn man FireBug mitlaufen lässt. Das ist OK, da für alles außer Metriken abholen ein User/Pass Schutz existiert. Die Ports zum Einliefern in Graphite (also carbon cache etc) sind NICHT von außen erreichbar bei meinem Setup.
Die Daten hole ich alle 5 Minuten vom https://www.freifunk-karlsruhe.de/ als json vom Server ab, wo sie von alfred bereits aufbereitet hingelegt werden (auch alle 5 Minuten, deswegen wäre häufigeres abholen meinerseits sinnlos.) Das ist das selbe JSON File, welches auch verwendet wird um zB https://www.freifunk-karlsruhe.de/map/alfred.html zu erzeugen. Das JSON parse ich dann mit einem selbst geschriebenen python script, welches die relevanten Daten extrahiert und textuell an den carbon-cache von Graphite schickt. Node- und Client-Anzahl, Total-Traffic, Hardware- und Firmware-Infos aggregiere ich bereits beim Parsen und schreibe es als globale Werte ins Graphite. Für jede Node dann noch zusätzlich Traffic, Clientanzahl und Load. Die Metriken der Nodes werden über die MAC der Nodes adressiert.
Zusätzlich erzeugt das Script ein Node-MAC-Adress → Node-Namen Mapping und speichert es ab. Alle 30 Minuten wird daraus das „pernode“ Dashboard neu erzeugt und alle Key-Value Paare des Mappings in der Template Variable des Dashboards ausgegeben. Dadurch können Nodes über ihren Namen in der Drop-Down Liste statt der MAC gefunden werden.
So, das wars erstmal. Bei weiteren Fragen einfach fragen Ich versuche, zeitnah zu antworten.
Viele Grüße,
ffka-xylou