Seit einiger Zeit wird das PRTG Plugin für Grafana nicht mehr unterstützt und auch nicht weiterentwickelt. Doch es gibt eine Möglichkeit auf die PRTG Messpunkte zuzugreifen, wenn gleich es auch etwas umständlich zu realisieren ist.
Das Grafana-Plugin, mit dem man ansetzen kann, ist Infinity. Mit diesem kann man XML, JSON sowie CSV Datenströme einlesen, konvertieren und visualisieren. Allerdings muss man gerade bei PRTG ein paar Sachen berücksichtigen:
- Zum Beispiel, dass Zeitangabenformatierungen davon abhängig sind, wie die Betriebssystemeinstellungen aussehen. Hat man z. B. die Regionseinstellungen auf Deutschland eingestellt, kommt auch das in Deutschland übliche Format. Das kann Grafana so aber nicht verarbeiten.
- Außerdem hängt vom ausgewählten Ausgabeformat auch ab, welche Bezeichner verwendet werden. Sehr speziell ist, dass bei PRTG bei der Auswahl von JSON und XML die Werte standardmäßig alle gleichermaßen mit
value
undvalue_raw
bezeichnet werden. Auch die Abfragezeit. Beim XML-Format wird hier immerhin noch der Kanal als Eigenschaft mitgegeben. Beim JSON-Format nicht. Deshalb ist für mich CSV die richtige Wahl. Auch wenn die Bezeichner wieder von der Betriebssystemsprache abhängen, bzw. von den Kanaleinstellungen in PRTG. Bei Deutsch werden z. B. auch deutsche Begriffe verwendet, wie auf den Bildschirmfotos zu sehen ist.
Vorbereitung
Zuerst muss man sich die Sensoren-IDs und am Besten auch gleich die Bezeichnungen der Werte heraussuchen. Das geht am Besten mit dem API-Modul table.xml
mit dem Parameter content=sensortree
. Hier ein Beispiel:
http://yourserver/api/table.xml?content=sensortree
Wichtig hierbei zu beachten ist, dass man natürlich auch die Authentifizierung mitgeben muss. Also z. B. username=benutzer
und auch passhash=kennwort-hash
bzw. password=kennwort
Oder auch, statt diesen Angaben, apikey=xyz
. Also wäre dann z. B. mit Benutzernamen und Passwort-Hash ein Aufruf wie folgt:
http://yourserver/api/table.xml?content=sensortree&username=benutzer&passwordhash=kennworthash
Das am Besten direkt in einem Browser aufrufen. Es wird ein XML als Download angeboten. Das kann man dann mit einem Texteditor seiner Wahl auslesen und nach den entspr. Sensoren suchen.
Grafana
Jetzt brauchen wir PRTG schon gar nicht mehr für das weitere Vorgehen. In Grafana wird nun eine Datenquelle angelegt. Als Plugin wählen wir Infinity. Sollte das nicht installiert sein, geht das auch ganz einfach. Die Einstellungen sollten in etwa so aussehen:
Dann kann es schon zum Dashboard gehen. Wir legen ein Panel an und wählen die entsprechende Datenquelle aus. Die Abfrage geht gegen das API-Modul historicdata.csv
. Es wird die ID des Sensors übergeben. Die Abfrage und weitere Einstellungen sehen in etwa so aus:
Es ist anzumerken, dass die API von PRTG immer ein Start- und Enddatum mit Uhrzeit benötigt. Glücklicherweise bietet Grafana mit den globalen Variablen ein nützliches Tool dafür, wobei man sogar die Formatierung der Zeitangaben festlegen kann:
${__from:date:YYYY-MM-DD-HH-mm-ss} ${__to:date:YYYY-MM-DD-HH-mm-ss}
Die obige Abfrage als Beispiel zum Kopieren:
http://yourserver/api/historicdata.csv?id=<ID>&sdate=${__from:date:YYYY-MM-DD-HH-mm-ss}&edate=${__to:date:YYYY-MM-DD-HH-mm-ss}
Und ganz wichtig: Die Daten müssen noch transformiert werden. Und zwar in etwa so:
Wenn das alles eingestellt ist, sollten die Daten visualisiert werden. In meinem konkreten Fall geht es um die Temperatur eines Computers. Der fertige Graph sieht so aus:
Ich hoffe, dass ich damit ein paar Administratoren, die PRTG als Monitoring Tool im Einsatz haben und das in Grafana visualisieren wollen, helfen konnte.