Einstieg in RRDtool

Seite 2: Werte in die Datenbank eintragen

Inhaltsverzeichnis

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.

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" ;

Verlauf der CPU-Temperatur ĂĽber 24 Stunden.


Sehen wir uns auch dieses Kommando schrittweise an:

  • rrtool graph cputemp.gif: Es soll eine Grafik mit dem Namen cputemp.gif erzeugt werden.
  • --start -24h: Der Startpunkt des Graphen soll 24 Stunden in der Vergangenheit liegen. Als AbkĂĽrzungen fĂĽr die Zeiteinheiten akzeptiert RRDtool auch m fĂĽr Minuten und d fĂĽr Tage, --start -365 erzeugt 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 im DS-Abschnitt beim Anlegen der RRD vergeben wurde, hier ebenfalls temp. Zum Schluss kommt die Konsolidierungsfunktion AVERAGE. 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. LINE1 bewirkt, dass der Graph als dĂĽnne Linie gezeichnet wird. Alternativ gibt es LINE2 (dickere Linie) und AREA (gefĂĽllte Fläche). Das nächste Feld ist der Variablenname, den Sie zuvor nach dem SchlĂĽsselwort DEF vergeben 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" ;

Verlauf der CPU-Temperatur ĂĽber 24 Stunden, Variante2.


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)