Einstieg in RRDtool
Seite 2: Werte in die Datenbank eintragen
Damit wir die CPU-Temperatur in die Datenbank schreiben können, müssen wir sie zunächst einmal ermitteln. Das ist zum Glück recht einfach, denn sie steht in der Datei /sys/class/thermal/thermal_zone0/temp. So sieht es aus, wenn Sie die Temperatur einfach auf der Konsole anzeigen lassen:
cat /sys/class/thermal/thermal_zone0/temp
58376
Sie sehen, dass leider ein Dezimalpunkt fehlt: Der tatsächliche Wert beträgt 58,376 Grad Celsius. Das folgende kleine bash-Script dividiert deshalb die Temperatur durch 1000 und kürzt die Ausgabe auf nur noch eine Nachkommastelle (dafür sorgt \linebreak scale=1). Die Berechnung erfolgt mit dem Kommando bc, das vorweg mit apt-get install bc installiert werden muss. Danach schreibt das Script die Temperatur in die RRD cputemp.rrd, die wir gerade angelegt haben:
#!/bin/bash
# Datei cputemp.sh
# CPU-Temperatur auslesen, formatieren und auf eine
# Nachkommastelle kĂĽrzen
TEMP=$(echo "scale=1;$(cat /sys/class/thermal/thermal_zone0/temp ) / 1000 "|bc -l)
#den ermittelten Wert in die RRD schreiben
rrdtool update cputemp.rrd N:$TEMP
Jeder Eintrag in eine RRD erhält einen Zeitstempel. Dieser Zeitstempel besteht aus einer Zahl, die die Anzahl der Sekunden seit dem 01. 01. 1970 angibt. Das N: in der rrdtool update-Zeile nimmt Ihnen die Arbeit ab, diesen Zeitstempel zu ermitteln. Es steht für Now und fügt automatisch den aktuellen Zeitstempel ein.
Unsere RRD erwartet einen Datenpunkt alle fĂĽnf Minuten, deshalb lassen wir das Script in diesem Intervall per Cron ausfĂĽhren. Die entsprechende Zeile in der crontab sieht so aus:
*/5 * * * * <pfad>/cputemp.sh
Jetzt wird die RRD pĂĽnktlich alle fĂĽnf Minuten mit einem Temperaturwert versorgt.
Graphen erzeugen
Mit dem Kommando rrdtool graph erzeugen Sie aus den Daten in der Datenbank anschauliche Verlaufsgraphen (siehe Abbildung). Schauen Sie sich einmal das folgende Kommando an, das hier wiederum ĂĽber mehrere Zeilen verteilt wurde:
rrdtool graph cputemp.gif --start -24h --title "CPU-Temperatur" --vertical-label "Grad Celsius" DEF:cputemperatur=cputemp.rrd:temp:AVERAGE LINE1:cputemperatur#ff0000:"CPU-Temperatur" ;
Sehen wir uns auch dieses Kommando schrittweise an:
rrtool graph cputemp.gif: Es soll eine Grafik mit dem Namencputemp.giferzeugt werden.--start -24h: Der Startpunkt des Graphen soll 24 Stunden in der Vergangenheit liegen. Als Abkürzungen für die Zeiteinheiten akzeptiert RRDtool auchmfür Minuten unddfür Tage,--start -365erzeugt also einen Graphen über ein Jahr.--title "CPU-Temperatur": Die Überschrift über der Grafik.--vertical-label "Grad Celsius": Die Beschriftung der y-Achse.DEF:temp=cputemp.rrd:temp:AVERAGE: Hier wird definiert (DEF), aus welcher Datenquelle der Graph gezeichnet wird. Es folgt ein Variablenname (cputemperatur), der frei wählbar ist, gefolgt von einem Gleichheitszeichen und dem Dateinamen der RRD. Danach folgt der Name der Datenquelle, wie er imDS-Abschnitt beim Anlegen der RRD vergeben wurde, hier ebenfallstemp. Zum Schluss kommt die KonsolidierungsfunktionAVERAGE. Auch sie muss mit dem übereinstimmen, was Sie beim Anlegen der RRD festgelegt haben.LINE1:temp#ff0000:"CPU-Temperatur": Hier geht es um das Aussehen des Graphen und die Beschriftung der Legende.LINE1bewirkt, dass der Graph als dünne Linie gezeichnet wird. Alternativ gibt esLINE2(dickere Linie) undAREA(gefüllte Fläche). Das nächste Feld ist der Variablenname, den Sie zuvor nach dem SchlüsselwortDEFvergeben haben.
Gleich danach legen Sie die Farbe des Graphen als Hexadezimalwert fest. #ff0000 ist ein zusammengesetzter Wert aus den Grundfarben Rot, Grün und Blau. Die Intensität jedes der drei Farbwerte reicht von 0 bis 255, das ist in hexadezimal 00 bis ff. In unserem Beispiel hat der Wert für die Farbe Rot den Maximalwert ff, Grün und Blau haben dagegen den Wert 00. Das Resultat ist, wie Sie auf dem Bild sehen können, eine knallrote Linie. Das letzte Feld, "CPU-Temperatur", ist der Text, der unterhalb des Graphen in der Legende erscheint.
Wenn Ihnen die Grafik optisch noch nicht gefällt, gibt es noch ein paar Möglichkeiten, Einfluss auf die Gestaltung zu nehmen (siehe Bild unten). Das folgende Beispiel verändert die Höhe und Breite der Grafik (-w 550 -h 220) und ändert die Farben der Gitterlinien (GRID), des Hintergrundes (BACK)
und der umlaufenden Schattierung, die fĂĽr einen leichten 3D-Effekt sorgt (SHADEA und SHADEB).
rrdtool graph cputemp.gif -c GRID#ffffff00 -c BACK#ffffff -c SHADEA#ffffff -c SHADEB#ffffff --start -24h --title "CPU-Temperatur" --vertical-label "Grad Celsius" -w 550 -h 220 DEF:cputemperatur=cputemp.rrd:temp:AVERAGE LINE1:cputemperatur#ff0000:"CPU-Temperatur" ;
Die optische Gestaltung der Grafik ist natürlich in hohem Maße vom persönlichen Geschmack abhängig. Nehmen Sie sich ein paar Minuten Zeit, und spielen Sie mit den verschiedenen Farbwerten, bis das Ergbnis Ihnen zusagt. (dab)
(dab)