Grafisch aufbereitet sind auch trockene Statistikdaten, die SNMP-Agenten bereitstellen, auf einen Blick zu erfassen. Der Multi Router Traffic Grapher (MRTG)[1] von Tobias Oetiker ist der Klassiker auf diesem Gebiet. Das unter der GPL stehende Tool überwacht die Auslastung des Netzwerks, fragt Router und Switches ab und erzeugt aus den gewonnenen Daten übersichtliche Grafiken, die es in eine Webseite einbindet. MRTG kann aber noch mehr, etwa Fehlermeldungen von Netzwerkschnittstellen abfragen oder die Auslastung einer Festplatte überwachen.
Als Beispiel dient im Folgenden ein Linux-Router unter SuSE Linux 7.3, der mit zwei Netzwerkkarten und einer Festplatte ausgestattet ist. MRTG soll nicht nur den Netzwerkverkehr überwachen, sondern auch die Fehler auf den Netzwerkkarten und die Kapazität einer Festplatten-Partition.
Viele Linux-Distributionen enthalten MRTG und die zusätzlich benötigten Programme und Bibliotheken bereits. Ist das ausnahmsweise nicht der Fall, ist auch das manuelle Installieren kein Problem. Voraussetzungen sind Perl, ein C-Compiler sowie die GD-Bibliothek von Thomas Boutell. Letztere verlangt ihrerseits die Bibliotheken Libpng und Zlib. Alle Komponenten laufen unter Linux, Unix und sogar Windows.
Auto-Konfiguration
Für jedes überwachte Gerät erhält MRTG je eine Konfigurationsdatei. Sie lässt sich auch automatisch generieren: Das Programm »cfgmaker« aus dem MRTG-Paket schreibt eine Konfiguration, mit der MRTG die Netzwerklast beobachtet. »indexmaker« erzeugt eine HTML-Startseite, die alle überwachten Geräte verzeichnet.
Mit dem standardisierten Konfigurationsfile, das »cfgmaker« erzeugt hat, überwacht MRTG die Netzwerkschnittstellen eines Geräts über SNMP. Ob es sich dabei um einen Server mit einem einzelnen Netz-Interface handelt oder um einen Router oder Switch mit vielen Schnittstellen, ist nicht wichtig. Das zu überwachende Gerät muss seine Daten über SNMP zur Verfügung stellen und MRTG muss das Leserecht für SNMP auf dem Gerät haben.
In den Kommandozeilen-Parametern von »cfgmaker« sind folgende Informationen anzugeben:
- IP-Adresse oder DNS-Name des zu überwachenden Geräts, im folgenden Beispiel »192.168.33.1«,
- Community-String: »geheim«,
- Name der zu erstellenden Konfig- Datei: »/usr/local/mrtg/linux.cfg«,
- Speicherort für die HTML-Seiten: »/usr/local/mrtg/html«
- sowie die zusätzlichen Optionen: »growright«.
Im Verzeichnis für die HTML-Seiten legt MRTG auch die Grafiken sowie alle gesammelten Daten ab. Wenn ein Webserver die Seiten ausliefern soll, muss er dieses Verzeichnis lesen dürfen.
In der Grundeinstellung sind die neuesten Werte in der grafischen Darstellung auf der linken Seite enthalten, die Option »growright« legt die neuesten Daten nach rechts. Der Seitenhintergrund soll in einem hellen Grau erscheinen. Als beschreibender Text dient der Name der Schnittstelle, etwa »eth0«, nicht die laufende Nummer, wie es die Default-Einstellung ist:
cfgmaker
--output=/usr/local/mrtg/linux.cfg
--global "workdir:/usr/local/mrtg/html"
--global "Language:german"
--global "options[_]: growright"
--global "Background[_]: #eeeeee"
--ifdesc=descr
geheim@192.168.33.1
Das Ergebnis des Aufrufs ist in der Datei »/usr/local/mrtg/linux.cfg« zu finden. Der Name dieser Datei wird als erster Parameter an MRTG übergeben: »mrtg /usr/local/mrtg/linux.cfg«. Im Verzeichnis »/usr/local/mrtg/html/« entstehen mit diesem Aufruf eine HTML-Seite für jedes Interface, die Logfiles mit den Werten, außerdem die Grafiken. Das Verzeichnis muss allerdings vorher schon existieren. Alte Dateien löscht MRTG automatisch - beim ersten Aufruf führt das zwar zu Fehlermeldungen, die kann man aber ignorieren. Das Ergebnis ist in Abbildung 1 zu sehen.
Ein Cron-Job muss das MRTG-Kommando alle fünf Minuten aufrufen. Der Zeitabstand ist entscheidend, damit MRTG die Durchschnittswerte korrekt berechnet. Wie groß das Intervall ist, lässt sich in der Konfiguration ändern.
Abbildung 1: Der MRTG-Graph zeigt: Die Leitung hat noch genügend Reserven. In der Spitze ist sie nur zu 1,7 Prozent ausgelastet (Wert links unten, »Maximal Herein«).
Manuelle Konfiguration
Sind andere SNMP-Variablen als das übertragene Datenvolumen gewünscht, muss man eine Konfigurationsdatei von Hand erstellen. Das Beispiel in Listing 1 fragt die Fehler ab, die auf einem Netzwerk-Interface auftreten. Die globalen Optionen entsprechen denen für den Datentransfer, die weiteren Felder erklärt Tabelle 1. Der Aufruf, wieder Cron-gesteuert, sollte alle fünf Minuten erfolgen.