RRDTool
Auf der Seite MRTG Monitoring wurde schon mehrfach das Programm RRDTOOL aufgeführt worden. Auch andere Programme wie z.B. NTOP, und viele andere (Siehe RRDWorld auf http://people.ee.ethz.ch/~oetiker/webtools/rrdtool/rrdworld/) nutzen RRDTOOL. Also ist es an der Zeit diese Komponente etwas genauer unter die Lupe zu nehmen:
Warum RRDTool ?
Eine der wesentlichen Funktionen von MRTG ist das Wachstum der Datenbank. Die Datenbank bleibt nämlich immer gleich groß, das MRTG bei jedem Durchlauf sehr alte Werte einfach zusammenfasst. So ist eines der größten Probleme umgangen, dass die Festplatte mit Aufzeichnungen voll geschrieben wird. Der Preis dieses Verfahrens ist natürlich, dass Informationen je weiter Sie in der Vergangenheit liegen immer ungenauer werden. Kann MRTG z.B. den letzten Tag noch auf 5 Minuten genau auflösen, so sind Aussagen von Werten vor einigen Monaten ungenauer aber für eine Trendabschätzung vollkommen ausreichend.
Dieses Prinzip von MRTG wurde von Herrn Oetiker weiter entwickelt und steht als RRDTOOL als eigenständige Software bereit. RRDTOOL selbst kann also nicht losgelöst verwendet werden, sondern wird seinerseits in andere Programme eingebunden. Dabei sind im wesentlichen folgende Funktionen verfügbar:
- Anlegen einer Datenbank
- Hinzufügen von Werten
- Erstellen von Grafiken
Um RRDTOOL daher nutzen zu können, müssen Sie entweder eine vorgefertigte Software nutzen oder selbst entsprechende Programme oder Skripte schreiben. RRDTOOL steht dabei als EXE-Programme oder PERL-Modul zur Verfügung. Diese drei wesentlichen Tätigkeiten möchte ich an Hand eines einfachen Beispiels für Windows erläutern:
Anlegen einer Datenbank
Der erste und einmalige Schritt ist die Anlage einer Datenbank. RRDTOOL wird dazu unter Angabe eines Dateinamens gestartet. Zusätzlich müssen die Werte angegeben werden, die in der Datenbank gespeichert werden sollen. In einer Datenbank können problemlos auch mehrere Werte parallel gespeichert werden, so dass Sie zur Ablage von 100 Werten nicht 100 Dateien nutzen müssen. Ein Aufruf könnte z.B.: so aussehen (Alles in einer Zeile):
rrdtool create cpu.rrd --start 1023654125 --step 120
DS:CPULast:GAUGE:240:0:100
RRA:AVERAGE:0.5:12:5
Dabei bedeutet:
- create cpu.rrd
Lege eine Datenbank mit dem Namen CPU.RRD an. - --start xxx --step xxx
Zeit ab wann die Datenbank beginnt (UNIX Ticks) und wie oft ein neuer Wert (120sek) eingetragen wird.
Wenn Sie später häufiger Werte eintragen wollen, ignoriert RRDTOOL diese. Fehlen Werte, so werden diese interpoliert. - DS:"varname":typ:Heartbeat,:min:man
Definition der Variable mit Name, dem Typ, wie viele Sekunden ein Wert ausbleiben muss ehe er als "unbekannt" gespeichert wird und in welchem Bereich (Min/Max) sich der Wert bewegt. - RRA:Konsolidierung:
Hier wird angegeben, wie viele Wert (12) in die nächste Zeile übernommen werden und wie viele dieser Stufen (5) vorgehalten werden. D.h. bei diesem Beispiel wird alle 100 Sekunden ein Wert aufgenommen. Aus 12 Werten wird eine Summe gebildet. Aus 12 Summen dann wieder die nächste Stufe bis die 5te Stufe erreicht ist.
Das klingt alles erst mal schrecklich aber SQL und andere Datenbanken machen es einem auch nicht einfacher.
Werte addieren
Nachdem die Datenbank nun mal erzeugt ist, müssen wir diese mit Daten füllen. Dazu wird ebenfalls wieder RRDTOOL aufgerufen.
RRDTOOL update cpu.rrd N:50
Damit sagen wir RRDTOOL, dass er für den aktuellen Zeitpunkt den Wert 50 eintragen soll. Wir können nun immer wieder (idealer weise alle 100 Sekunden im Beispiel) RRDTOOL aufrufen, um weiter Werte in die Datenbank zu bringen.
Daten extrahieren
Die Daten in der Datenbank können wir auf zwei Arten ausgeben lassen;
- Textausgabe
Dies ist besonders hilfreich, wenn Sie noch am experimentieren sind und eigentlich wissen wollen, welche Zahlen nun in der Datenbank stehen - Grafik
Viel schöner ist die Möglichkeit mit RRDTOOL fertige Grafiken zu erzeugen. In Verbindung mit RRD_CGI können diese sogar on the fly erzeugt werden.
Die Textausgabe können Sie z.B. wie folgt erzeugen:
rrdtool dump cpu.rrd
RRDTool gibt ihnen eine einfache Liste der Werte als XML-Format aus. Die Grafikausgabe ist sehr viel leistungsfähiger. Dazu sollten Sie direkt die Referenz auf http://people.ee.ethz.ch/~oetiker/webtools/rrdtool/manual/rrdgraph.html oder einige Beispiele bestehender Lösungen lesen
Weitere Links
- MRTG Monitoring
- CheckSMTPFlow - RRDTOOL zur Visualisierung von Maillaufzeiten
- Homepage von RRDTool
http://people.ee.ethz.ch/~oetiker/webtools/rrdtool/
Beispiele http://people.ee.ethz.ch/~oetiker/webtools/rrdtool/gallery/index.en.html - Grafiken aus RRD-Datenbanken erzeugen
http://people.ee.ethz.ch/~oetiker/webtools/rrdtool/manual/rrdgraph.html -
Using RRDtool and PowerShell to plot performance graphs
http://www.jume.nl/articles/vmware/165-using-rrdtool-and-powershell-to-plot-performance-graphs - Monitoring IIS with Logparser and the RRDtool
http://geekswithblogs.net/woodenshoe/archive/2005/09/17/54194.aspx - Vortrag von Wolfgang Barth auf der Nagios-Konferenz 2006. Nagios
nutzt RRDTool
http://www.netways.de/de/nagios_konferenz/archiv_2006/programm/rrdtool/ - Monitoring IIS with Logparser and the RRDtool
http://geekswithblogs.net/woodenshoe/archive/2005/09/17/54194.aspx - Cacti
http://www.cacti.net/
Ein auf PHP basiertes WebFrontend für RRDTools - Ein viel besseres Tutorial als mein Versuch hier
http://people.ee.ethz.ch/~oetiker/webtools/rrdtool/tutorial/rrdtutorial.html - PHP Webfrontend zu RRDTOOL
http://www.raxnet.net/products/cacti/ -
http://mrtgconfig.sourceforge.net
Webbasierter Konfigurationsgenerator -
http://www.sins.com.au/nmis
Perl-Programm mit RRDTool als Backend - Munin Perl Client/Server Software, die auf RRDTOOl basiert
http://www.linpro.no/projects/munin/
http://munin.ping.uio.no/ Beispielimplementation - FireDaemon
http://www.firedaemon.com/
Früher FreeWare zum Einrichten von beliebigen Programmen als Dienst. Damit können Sie ein Batch oder VBSCript permanent laufen lassen statt immer wieder zu starten. - D-Trend
Windows Programm, um alles per VBScript, ASP etc. zu bauen
http://home.new.rr.com/edev/DTrend/index.htm - SNMP mit RRDTool
http://www.cacti.net - C++ Implementation als Dienst (Freeware mit Source)
http://guilmard.free.fr/index.php?page=snmpgraph§ion=telecharger&lg=en - Monitoring IIS with Logparser and the RRDtool
http://geekswithblogs.net/woodenshoe/archive/2005/09/17/54194.aspx - RRDTool für SpamSchutz Bilder
http://www.stahl.bau.tu-bs.de/~hildeb/postfix/enterprise_spam_tagging.shtml - PRTG
Einfache SNMP-Überwachung für Windows analog zu MRTG. Bis zu 10 Sensoren kostenfrei









