RRDTool
RRDTool ist ein Werkzeug, um Werte in einer Round Robin Database abzuspeichern. Diese zu verwalten und dann auch in Form eines Graphen ausgeben zu lassen. Ein Vorteil der Round Robin Databases ist, dass sie eine feste Größe haben. Damit die Datenbank nicht größer wird, werden ältere Werte zu einem zusammengefasst. Beim Anlegen wird festgelegt, wie viele Werte zu einem zusammengefasst werden.
linux~ # rrdtool create"Datenbankname"start"Startzeit"step"Zeitschritte"DS:var1:DST:heartbeat:Min:Max RRA:CF:XFactor:step:rows
Der Befehl zum Erstellen einer RRD-Datenbank hat folgende Syntax:
- rrdtool - Name des Programms
- create - Option zum Erstellen einer Datenbank
- test.rrd - Name der Datenbank
- Start - Zeitpunkt des ersten Eintrages, man kann auch "now" oder "now-2wk" verwenden (wk = week)
- Step - Mit Step gibt man den Sekundenwert an, nach dem wieder ein Wert erwartet wird
- DS - Dies ist der wichtigste Block. Hier wird definiert, was für Werte angespeichert werden sollen.
- var1 - Beliebig wählbarer Variablenname
- DST - Die Art der gespeicherten Werte
- COUNTER zählt nur noch
- DERIVE zählt hoch und runter und speichert immer nur die Änderung
- GAUGE zählt hoch und runter, jedoch werden hier die absoluten Werte eingetragen
- ABSOLUTE speichert die absoluten Werte dividiert durch den Step ab
- heartbeat - Falls nach einem Step kein Wert erhältlich ist, wird die Zeit des Heartbeat gewartet,
ansonsten wird der Wert "UNKNOWN" eingetragen - min - Minimaler Wert der eingetragen werden kann
- max - Maximaler Wert der eingetragen werden kann
- RRA - Hier wird definiert, wie mit den Werten verfahren wird
- CF - Hier wird angegeben, wie mit den Werten verfahren wird. Es gibt vier Möglichkeiten:
- AVERAGE: Mittelwert wird gebildet
- LAST: immer der letzte Wert wird angezeigt
- MAX: der größte Wert wird angezeigt
- MIN: der kleinste Wert wird angezeigt
- XFactor - Gibt an, wieviele Werte in den Steps vorhanden sein müssen, damit der Eintrag gültig wird
- steps - Anzahl der Werte, die zusammengefasst werden
- rows - Anzahl der zusammengefassten Werte, die gespeichert werden sollen
- CF - Hier wird angegeben, wie mit den Werten verfahren wird. Es gibt vier Möglichkeiten:
Nach dem Erstellen einer RRD-Datenbank können Werte eingetragen werden. Hierfür wird der UNIX-Timestamp und der einzutragende Wert benötigt.
Allgemein ist der Befehl folgendermaßen aufgebaut:
linux~ # rrdtool update"Datenbankname""UNIX-Timestamp":"Wert"
Den UNIX-Timestamp ermittelt man einfach mit dem Befehl
linux~ # date +%s
Dies druckt den aktuellen UNIX-Timestamp auf der Konsole aus.
Zum Auslesen aller Daten einer Datenbank kann die Option "dump" benutzt werden:
linux~ # rrdtool dump "Datenbankname"
Zur Erstellung von Graphen wird folgende Syntax verwendet:
linux~ # rrdtool graph"Bildname"--start"Startzeit"--end"Endzeit"DEF:Var2="Datenbankname":Var1:CF LINE2:Var2#FF0000
- Bildname - Ausgabedatei
- Startzeit - Erster aufzuzeichnender Wert
- Endzeit - Letzter aufzuzeichnender Wert
- DEF - Hier wird definiert, von welchen Werten der Graph erzeugt wird
- Var2 - Frei wählbare Variable
- Datenbankname - Pfad zur .rrd-Datei
- Var1 - Variablenname, der beim Erzeugen der Datenbank zugewiesen wurde
- CF - Beim Erzeugen übergebenes Aufzeichnungsverfahren
- LINE - Definition der zu zeichnenden Line
- LINE2 - Dicke der Line durch Nummern 1-3 wählbar
- Var2 - gleicher Variablenname wie im DEF-Statement
- #FF0000 - RGB-Farbcode; Farbe der Line
Erklärung an einem Beispiel:
Wir betrachten wie viele Kilometer ein Auto gefahren ist. Angenommen, um 12:05 Uhr wäre das Auto 12345 Kilometer gefahren.
Um 12:10 Uhr schaut man erneut auf den Zähler und er zeigt nun 12357. Also sind wir in 5 Minuten 12 Kilometer gefahren.
Weitergedacht kommt man zu diesem Beispiel. Man erstellt sich eine Datenbank (Befehl in einer Zeile):
linux~ # rrdtool create test.rrd \
--start 920804400 \
-- step 300 \
DS:km:COUNTER:600:U:U \
RRA:AVERAGE:0.5:1:24
Nach dem Erstellen, muss die Datenbank mit Werten gefüttert werden.
linux~ # rrdtool update test.rrd 920804700:12345 920805000:12357 920805300:12363 linux~ # rrdtool update test.rrd 920805600:12363 920805900:12363 920806200:12373 linux~ # rrdtool update test.rrd 920806500:12383 920806800:12393 920807100:12399 linux~ # rrdtool update test.rrd 920807400:12405 920807700:12411 920808000:12415 linux~ # rrdtool update test.rrd 920808300:12420 920808600:12422 920808900:12423
Aus Platzgründen wurden immer gleich 3 Updates pro Kommandozeile durchgeführt.
Was man hier sehen kann, unterscheidet sich der Timestamp immer um 300, da dies als "step" eingestellt ist.
Mit dem Befehl "rrdtool dump test.rrd" kann man sich die letzten Werte anzeigen lassen.
Wenn statt eines Wertes "NaN" gedruckt wird, bedeutet dies, dass es für diesem Timestamp und innerhalb des Heartbearts keinen Wert gab.
Um den Graphen als Bild auszugeben, muss folgender Befehl eingegeben werden:
linux~ # rrdtool graph kilometer.png ?start 920804400 ?end 920808000 \
DEF:mykm=test.rrd:km:AVERAGE \
LINE2:mykm#FF0000
Die Ausgabe des Bildes kann noch verfeinert werden, indem eine Legende mit erzeugt wird oder indem mit dem Werten der Datenbank vor Erstellung noch gerechnet wird. Beispielsweise könnte man sich die Durchschnittsgeschwindigkeit im oberen Beispiel ausgeben lassen.
Weiterführende Tutorials sind auf der Seite www.rrdtool.org zu finden.



