MRTG steht für Multi Router Traffic Grapher und ist ein Programm zur grafischen Auswertung bzw. Darstellung von Messwerten. Es sammelt Informationen über SNMP oder aus Skripten und erstellt daraus HTML Seiten mit Graphen.
Unter „weiterlesen“ ist ein Tutorial über die Installation und eine grundlegende Konfiguration zu finden.
Dieses Tutorial beschreibt die Installation und Einrichtung der Monitoring Software MRTG auf einem Debian Linux System. Programmnamen, Pfade, etc. können auf anderen Distributionen abweichend sein. Es werden Pakete aus dem stable–Repository installiert, als Editor der Wahl kommt vim zum Einsatz. Für die Bereitstellung als Internetseite muss natürlich ein Webserver wie Apache installiert sein. Die Graphen werden mit einem crontab regelmäßig aktualisiert.
Installation der Kombonenten
Zuerst einmal werden die Pakete mrtg, mrgtutuils, snmpd und ggf. Abhängigkeiten installiert. Dies geschieht mit dem Befehl:
aptitude install mrtg mrtgutils snmp snmpd
Abhängigkeiten werden ggf. automatisch aufgelöst und müssen mit Y bestätigt werden.
Hier wird der snmpd direkt mitinstalliert, damit man Informationen wie den aktuellen Traffic auch von dem Rechner auslesen kann, auf dem MRTG installiert wird.
Die snmpd.conf muss angepasst werden, damit der Dienst Anfragen von MRTG entgegennimmt. Der entsprechende Teil der /etc/snmp/snmpd.conf muss nach dem Bearbeiten wie folgt aussehen:
[...] # sec.name source community #com2sec paranoid default public com2sec readonly default public #com2sec readwrite default private [...]
Nach einem Neustart des Dienstes sollten die Änderungen übernommen sein:
/etc/init.d/snmpd restart
SNMP ist soweit fertig eingerichtet und alle benötigten Komponenten sollten installiert sein.
Konfiguration von MRTG
Die hier beschriebenen Schritte müssen fast ausschließlich als root durchgeführt werden.
Zuerst einmal erstellen wir einen Ordner für MRTG Konfigurationen und Skripte:
mkdir /etc/mrtg/
Dann wird die Konfiguration von MRTG erstellt und mit den Daten des lokalen SNMP Dienstes gefüttert:
cfgmaker public@localhost > /etc/mrtg/mrtg.cfg
Sollten noch weitere Geräte überwacht werden, können diese, soweit sie über SNMP ansprechbar und auslesbar sind, mit dem gleichen Befehl hinzugefügt werden. Jetzt ist aber » anstelle von > zu verwenden, damit die erste Konfiguration nicht überschrieben wird:
cfgmaker public@192.168.0.1 >> /etc/mrtg/mrtg.cfg
192.168.0.1 ist dann durch die IP des zu überwachenden Gerätes zu ersetzen. Dies kann zum Beispiel ein normaler Hardwarerouter sein, der Informationen über die benutze Bandbreite oder die Auslastung des WLAN-Adapters bereitstellt.
Parameter die für cfgmaker zur Verfügung stehen sind der MRTG-Dokumentation:„MRTG(Dokomentation: cfgmaker, englisch)“:http://oss.oetiker.ch/mrtg/doc/cfgmaker.en.html zu entnehmen.
An dieser Stelle sollte der Webordner erstellt werden, der nachher die HTML-Ausgabe beinhaltet:
mkdir /var/www/mrtg/
Unter Debian ist der Wurzelordner des Webservers standardmäßig /var/www/, was sich aber variieren kann. Der erstellte Ordner sollte dann nachher unter http://$serverip/mrgt/ aufzurufen sein.
Ist der Ordner erstellt, kann die mrgt.cfg angepasst werden. Die Konfiguration sollte wie folgt beginnen:
# Created by # /usr/bin/cfgmaker public@localhost ### Global Config Options # for UNIX # WorkDir: /home/http/mrtg # for Debian WorkDir: /var/www/mrtg
WorkDir muss auf den Ordner zeigen, der im Schritt vorher erstellt wurde. Sind der Konfiguration mehrere Geräte hinzugefügt worden, sollten doppelte Einstellungen entfernt werden. Weitere globale Einstellungsmöglichkeiten sind bitte der MRTG Referenz:„MRTG(Reference, englisch)“:http://oss.oetiker.ch/mrtg/doc/mrtg-reference.en.html zu entnehmen.
Jedes abrufbare Device sollte in der mrtg.cfg aufgelistet sein und etwa folgende Strukur haben:
Target[localhost_2]: 2:public@localhost: SetEnv[localhost_2]: MRTG_INT_IP="192.168.0.123" MRTG_INT_DESCR="eth0" MaxBytes[localhost_2]: 12500000 Title[localhost_2]: Traffic Analysis for 2 -- hostname PageTop[localhost_2]: <h1>Traffic Analysis for 2 -- hostname</h1> <table> <tr><td>System:</td> <td>zoidberg in LAN</td></tr> <tr><td>Maintainer:</td> <td>root</td></tr> <tr><td>Description:</td><td>eth0 </td></tr> <tr><td>ifType:</td> <td>ethernetCsmacd (6)</td></tr> <tr><td>ifName:</td> <td></td></tr> <tr><td>Max Speed:</td> <td>12.5 MBytes/s</td></tr> <tr><td>Ip:</td> <td>192.168.0.1 (hostname)</td></tr> </table>
Soll ein Device nicht protokolliert werden, z.B. lo, also Loopback, müssen die entsprechenden Zeilen einfach auskommentiert oder gelöscht werden.
MRTG ausführen
MRTG ist jetzt in den Grundzügen einsatzbereit. Jetzt können zum ersten Mal Daten gesammelt werden, dies geschieht mit folgendem Befehl (3 Mal ausführen!):
mrtg /etc/mrtg/mrtg.cfg
Warnungen bitte missachten.
Da aber hierbei nur die Einzelseiten und Graphen erstellt werden, muss noch eine Indexseite als Übersicht erstellt werden:
indexmaker --output=/var/www/mrtg/index.html /etc/mrtg/mrtg.cfg
Alle nötigen Daten sollten jetzt erstellt sein und unter http://$serverip/mrgt/ abrufbar sein. Der Link zu einer Demo folgt weiter unten.
Es ist möglich, dass die Graphen noch keine Werte anzeigen, also noch auf 0 stehen, was sich nach ein paar weiteren Messungen aber ändern sollte.
MRTG erweitern
Es ist nicht nur möglich Informationen wie die Bandbreite oder den Datendurchsatz über SNMP in MRTG auszuwerten. Es können auch lokal Scripte ausgeführt und die Daten übergeben werden. So lassen sich zum Beispiel CPU load, Speicherauslastung oder die Prozessanzahl mitloggen.
Ein Script sollte so aufgebaut werden, dass es von MRTG ausgeführt werden kann. Es sollte vier Werte zurückgeben. Der erste Wert ist die erste Kurve die im Graphen dargestellt wird. Der Zweite die zweite Kurve. Sollte das Script nur einen Wert ermitteln, z.B. die Prozessanzahl sollte dieser Wert zweimal ausgegeben werden. Als dritter Wert kann die aktuelle Uptime des Systems angezeigt werden. Wert 4 ist der Hostname.
Beispielhaft wird hier das Script stat.pl (von Jon Anhold & Jeremy Weatherford) ausgeführt:
$ ./stat.pl procs zoidberg 76 76 52 days zoidberg
Es wird die Anzahlt der aktuell aktiven Prozesse angezeigt.
Eingebunden in die Auswertung wird die Prozessanzahl jetzt mit folgender Erweiterung in der /etc/mrtg/mrtg.cfg:
Target[localhost.procs]: `/etc/mrtg/stat.pl procs zoidberg` Options[localhost.procs]: nopercent,growright,gauge,nobanner,integer,noinfo Title[localhost.procs]: Process PageTop[localhost.procs]: <h1>Processes</h1> MaxBytes[localhost.procs]: 5000000 YLegend[localhost.procs]: Processes ShortLegend[localhost.procs]: procs LegendI[localhost.procs]: Processes: LegendO[localhost.procs]: Legend1[localhost.procs]: Running Processes
Als Target wird hier jetzt in Bashsyntax das Script ausgeführt und die Ausgabe übergeben. Informationen über die restlichen Parameter sind bitte wieder der MRTG Referenz:„MRTG(Reference, englisch)“:http://oss.oetiker.ch/mrtg/doc/mrtg-reference.en.html zu entnehmen.
Um die &Äuml;nderungen endgültig zu übernehmen muss mrtg wieder 3x ausgeführt werden:
mrtg /etc/mrtg/mrtg.cfg
Warnungen bitte wieder missachten.
Indexseite aktualisieren:
indexmaker --output=/var/www/mrtg/index.html /etc/mrtg/mrtg.cfg
Dieses und weitere Scripte sind hier herunterzuladen. Wie die Scripte in eingebunden werden, ist meiner mrtg.cfg zu entnehmen.
MRTG automatisch ausführen
Mit einem Crontab lässt sich MRTG regelmäßig und selbstständig ausführen. Mit folgendem Befehl lässt sich als root ein passender Crontab erstellen:
crontab -e
Ein Crontab für einen Durchlauf alle 5 Minuten sieht folgendermaßen aus:
*/5 * * * * /usr/bin/mrtg /etc/mrtg/mrtg.cfg 1> /dev/null
Näheres zu crontabs ist der manpage (man crontab) oder auch Wikipedia zu entnehmen.
Downloads
- mrtg.cfg meine Beispielkonfiguration
- ping.sh Pingscript
- stat.pl Systemstats
- uptime.sh Uptimescript
- mrtg-scripts-confs.tar.gz alle Dateien gepackt
- Demoseite vom Entwickler von MRTG
Das war’s für’s Erste. Ich bitte um Feedback!
Sie befinden sich im persönlichen Blog von Felix Triller. Näheres zu seiner Person finden Sie im Menüpunkt 

















Klasse Tutorial! Vielen Dank für die Mühe!
Hallo, super Tutorium. Mein MRTG läuft zwar schon länger wollte es aber einfach mal erweitern und hab gesehen dass du in deiner Config uptime und connetionuptime integriert hast. leider fehlt das connectionuptime.sh Skript. was muss denn da drin stehen?
gruß Flo
Hallo,
vielen Dank für den Starter in Sachen MRTG! Die einzige Schwierigkeit die bei mir auftrat war, dass ich keine smnpd.conf auf meinem System hatte. Die muss wohl bei vorigen Versuchen verloren gegangen sein. Jetzt läuft aber alles prima. Vielen Dank!
Super Tutorial :) Einige der Files am Ende sind zwar (inzwischen) nicht mehr online, macht aber nix.