RRD Einführung & Beispiele

Hinweis

Dieser Abschnitt kann ignoriert werden, wenn ein openHAB-Backend benutzt wird. Hilfe bei der Anzeige von Diagrammen mit dem openHAB-Backend sind in der Dokumentation des Diagram-Plugins zu finden.

Allgemeine Infos über RRD

Die CometVisu-Diagramme werden über RRD generiert.

Diese werden üblicherweise im Verzeichnis /var/www/rrd abgelegt.

Allgemeine Infos zu RRD findet man auf englisch hier und natürlich bei Wikipedia

Infos zum Erzeugen von RRD Datenbanken findet man auf englisch hier

Infos zum Aktualisieren/Befüllen von RRD-Datenbanken findet man auf englisch hier

RRD und die CometVisu

Zum Anzeigen eines Diagramms in der CometVisu ist nötig:

  • CometVisu-Diagramm-Plugin
  • RRD Datei
  • auf CometVisu abgestimmtes rrdtool (entweder ein zusätzliches Script oder ein RRDtool mit Patches)

(beides ist auf dem wiregate und auf dem Raspberry Pi image standardmässig verfügbar)

root@Traumhaus:/var/www/rrd# cat /etc/crontab
# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the 'crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user  command

# etliche Zeilen entfernt, bitte NICHT diese Datei per copy&paste nutzen sondern die RRD-Crons unten an die bestehende Datei anhängen!!!``

*/5 *   * * *   root    /var/www/rrd/cputemp
*/5 *   * * *   root    /var/www/rrd/processes
*/5 *   * * *   root    /var/www/rrd/cpuload
*/5 *   * * *   root    /var/www/rrd/cpuload15

*/5 * * * * bedeutet hierbei das der Job jederzeit alle 5 Minuten ausgeführt wird. Der kleinste Zeitabstand der mit der crontab realisierbar ist ist */1, also jede Minute.

Der Aktualisierungsabstand sollte zur RRD Datenbank passen!

Anlegen der RRD-Datenbank

Die RRD Datei/Datenbank muss zunächst angelegt werden.

Hierfür muss man sich beim Anlegen der Datenbank überlegen wie viele Datensätze gespeichert werden sollen. Die Datenbank wird dann erstellt und mit “NaN” (Not A Number - kein Wert vorhanden) Werten gefüllt. Die Grösse der Datenbank ändert sich dann nicht mehr.

Dies bedeutet das wenn die maximale Anzahl Datensätze in einer Tabelle erreicht sind wird mit dem Eintragen eines neues Wertes der älteste verworfen. Dies ist jedoch kein Problem da regelmässig Werte zusammengefasst werden.

In der Praxis heisst das das die Auflösung der Werte mit zunehmendem Zeitabstand zu “jetzt” geringer wird. (z.B. minütliche Werte für die letzten 7 Tage, stündliche Werte für die letzten 4 Wochen, tägliche Werte für die letzten 2 Jahre etc...)

“Befüllen” der RRD-Datenbank

Die RRD Datei/Datenbank muss regelmässig mit Daten befüllt werden - wenn dies nicht geschieht erkennt RRD das und trägt automatische NaN ein - damit bleiben die Zusammenfassungen korrekt.

Hierfür ruft man das das rrdtool auf mit dem Parameter “update” und übergibt einen Zeitstempel (oder N für “Now”, also aktuelle Zeit) sowie die Werte die in die Datenbank aufgenommen werden sollen.

Am, einfachsten lässt sich dieses über ein kurzes Shellscript erledigen, das man dann per cron regelmässig ausführen lässt.

Fehlersuche

wenn RRD basierte Daten nicht wie vorgesehen angezeigt werden kann man direkt in die Datenbank schauen ob überhaupt (sinnvolle) Werte vorhanden sind. Hierfür gibt es das

rrdtool dump

Kommando. Dieses stellt die Datenbank als Text dar. Man sollte dann Zeilen mit NaN (Not a Number = Kein Wert vorhanden) ausfiltern sowie nur Daten-Zeilen mit anschauen. Dies kann man z.B. mit dem grep-Kommando machen:

rrdtool dump NAMEDERDATENBANK.rrd | grep row | grep -v NaN

Beispiele für RRDs

Hinweis

Diese Beispiele funktionieren nicht mit openHAB

(die Beispiel-Scripte erzeugen beim ersten Aufruf die RRD Datenbank, danach aktualisieren sie die Datenbank)

für fortgeschrittene Anwender (Anpassungen im Script sind wahrscheinlich erforderlich)