Vorsicht
Dies ist die Dokumentation des aktuellen Entwicklungszweigs der CometVisu. Es besteht daher die Möglichkeit, dass einige der hier beschriebenen Features mit dem aktuellsten Release der CometVisu nicht genutzt werden können.
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äßig 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öße 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äßig Werte zusammengefasst werden.
In der Praxis heißt 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äßig 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äßig 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)
CPU load für Linux Systeme - die CPU load (1 Min, 5 Min, 15 Min wird in eine RRD Datenbank geschrieben
Anzahl der Prozess auf Linux System - die Anzahl der laufenden Prozesse wird in eine RRD Datenbank geschrieben
CPU Temperatur für Raspberry Pi - internen Temperatur-Sensor der Raspberry CPU abfragen und im RRD speichern
Temperatur vom KNX mit linknx - Schreiben eines mit Linknx persistent abgelegten KNX-Wertes (hier eine Temperatur eines RTR) in einer RRD Datenbank.
Temperatur vom 1wire (lokale 1wire-Schnittstelle mit owfs) - direktes Lesen eines 1wire-Temperatur-Sensors in eine RRD Datenbank
für fortgeschrittene Anwender (Anpassungen im Script sind wahrscheinlich erforderlich)
Internet-Bandbreite - Internet-Überwachung per SNMP - es sind Anpassungen erforderlich!