ADMIN-Magazin

MRTG überwacht Netzwerk-Performance

Die graphische Darstellung von Server-Leistungsdaten hilft dem Admin, schnell einen Überblick Performance-Engpässe und andere Ausnahmesituationen zu bekommen. Das freie Paket MRTG sammelt solche Daten über SNMP und macht daraus übersichtliche Diagramme.

Matthew D. Sacks
Share this

In vielen Fällen ist es für Linux-Administratoren nützlich, Leistungsdaten wie Plattenplatz, CPU- und Speicherauslastung zu protokollieren. Sind die Daten als Diagramme visualisiert, hilft oft schon ein kurzer Blick dabei weiter, Probleme zu finden. MRTG (Multi-Router Traffic Grapher) hilft dabei, solche Daten zu sammeln und sie grafisch darzustellen. Es ist ein Open-Source-Tool, das Daten von SNMP-basierter Netzwerk-Hardware sammelt und visualisiert. Einige kommerzielle Programme wie HP Openview und IBM Tivoli, aber auch andere freie Tools wie Cacti und Zenoss erfüllen einen ähnlichen Zweck. Meiner Meinung nach ist aber MRTG die beste Lösung für diesen Zweck.

Los geht's

MRTG und SNMP einzurichten, ist nichts für Menschen, die sich leicht abschrecken lassen, vor allem, wenn man die Paket selber aus dem Quellcode kompilieren will. Schauen Sie am besten zuerst nach, ob das Paketmanagement Ihrer Linux-Distribution schon fertige MRTG-Pakete enthält. Wenn nicht, finden Sie Quellcode-Pakete auf der Website von MRTG-Autor Tobi Oetiker [1]. Die Installation von MRTG erfordert einige Pakete, die der Kasten ,,MRTG-Basis`` auflistet.

Dieser Artikel setzt ein gewisses Grundwissen im Umgang mit dem SNMP-Protokoll voraus. Fehlt ihnen das (noch), finden Sie im Internet eine ganze Reihe von Tutorials und Spezifikationen, die Ihnen weiterhelfen. Unter [2] finden Sie einige Hinweise, wie Sie SNMP auf einem Linux-System zum Laufen bekommen.

MRTG-Basis
  • GCC: Zum Übersetzen des Pakets brauchen Sie den GNU-Compiler GCC, der Bestandteil jeder Distribution ist, aber eventuell nachinstalliert werden muss.
  • Perl: Große Teile von MRTG sind in der Programmiersprache Perl geschrieben. Überprüfen Sie mit »perl -v«, ob eine aktuelle Version installiert ist. MRTG setzt mindestens Perl 5.005 voraus. Wer SNMPv3 verwenden will, braucht mindestens Perl 5.8.
  • GD: Eine weit verbreitete Grafikbibliothek, geschrieben von Thomas Boutell. Seit Version 1.3 erzeugt GD nur noch Bilder im PNG-Format, weil das bis dahin implementierte GIF-Format durch das LZW-Patent der Firma Unisys bedroht war. MRTG arbeitet aber mit alten und neuen GD-Versionen zusammen.
  • libpng: Wird von GD benötigt, um PNG-Bilder auszugeben.
  • zlib: Voraussetzung für die Komprimierung von PNG.

Entpacken Sie das MRTG-Paket in einem temporären Verzeichnis und geben Sie im Configure-Schritt als Präfix das Verzeichnis an, in dem Sie MRTG später installieren:

./configure --prefix=/usr/local/mrtg-2.15.2

Ein symbolischer Link auf die aktuelle Version im Verzeichnis »/usr/local« ermöglicht einfache Upgrades und Tests neuer MRTG-Releases:

ln -s /usr/local/mrtg-2.15.2 /usr/local/mrtg

Fehlt eines der vorausgesetzten Pakete, gibt das Configure-Skript eine entsprechende Meldung aus. Ist es erfolgreich durchgelaufen, startet »make« die Übersetzung. Der Befehl »make install«, als Administrator ausgeführt, kopiert die ausführbaren Dateien an ihren Bestimmungsort.

Konfiguration

Im Beispielszenario dieses Artikels kommen zwei Hosts vor: »tux« ist der zu überwachende Server, »grapher« der Rechner, auf dem MRTG läuft. MRTG-Konfigurationsdateien von Hand zu editieren, ist ziemlich mühsam. Das Paket enthält aber ein Skript namens »cfgmaker«, das die Konfiguration erleichtert. Damit können sie relativ leicht die nötigen Einstellungen in »mrtg.conf« vornehmen, um einfache Graphen zu erstellen. Tabelle 1 zeigt die grundlegenden Optionen des Cfgmaker-Utility. Bevor Sie das Skript ausführen, legen Sie ein Verzeichnis an, in das die Konfigurationsdateien wandern, zum Beispiel »/usr/local/mrtg/cfg«.

Tabelle 1: »cfgmaker«-Optionen
Option Beschreibung
community Legt den SNMP-Community-Namen fest.
global Globale Einstellungen für alle konfigurierten Hosts.
Workdir Verzeichnis, in dem MRTG HTML- und Grafikdateien speichert.
output Legt den Ort der MRTG-Konfiguration fest. Hängen Sie Hostnamen oder IP-Adressen abzufragender Server ans Ende des Cfgmaker-Skripts an, durch Leerzeichen getrennt. Im Beispielfall gibt es nur den einen Host »tux«.

Das Cfgmaker-Skript führen Sie dann folgendermaßen aus:

/usr/local/mrtg/bin/cfgmaker --community=public --global Options[_]:growright,avgpeak,\
printrouter, --global Workdir:/usr/local/apache2/htdocs --output=/usr/local/mrtg/cfg/\
mrtg2.cfg tux

Wie bereits angesprochen, erhebt MRTG seine Daten über SNMP. Dieses Protokoll benutzt ein hierarchisch gegliedertes Adressierungsschema namens Managemen Information Base (MIB). Das folgende Beispiel geht davon aus, dass die UCD-SNMP-MIB [3] geladen ist und sich die interessanten Leistungsdaten über diese MIB-Definition abrufen lassen. Am besten testen Sie das, bevor Sie mit MRTG starten, um diese Fehlerquelle schon im Vorfeld auszuschließen.

Eine einfache Möglichkeit dafür stellt das Tool »snmpwalk« dar. Lassen Sie es auf den zu überwachenden Host los:

snmpwalk -v1 -c public Hostname ssCpuRawUser

Dieser Befehl fragt die CPU-Usertime des betreffenden Servers ab. Schlägt das Skript fehl, überprüfen Sie, ob der SNMP-Daemon auf dem Server läuft, ob die Syntax des SNMP-Aufrufs korrekt ist und ob die UCD-SNMP-MIB vorhanden ist und vom SNMP-Daemon gefunden wird.

Feinarbeit

Nachdem Cfgmaker die erste Version der Konfigurationsdatei »mrtg2.cfg« angelegt hat, müssen Sie sie noch von Hand editieren, um die Ressourcenstatistiken für CPU, Festplatte und Speicher zu konfigurieren. Das folgende Beispiel zeigt ein einfaches Template zur Erhebung der CPU-Statistik.

Die UCD-SNMP-MIB enthält eine ganze Reihe von leistungsbezogenen Variablen, die sich mit MRTG überwachen lassen. Werfen Sie doch mal einen Blick in die MIB-Definition [3], um zu sehen, was es alles gibt. Um einen Parameter wie die CPU-Auslastung der MRTG-Konfiguration hinzuzufügen, legen Sie dafür zuerst die beiden folgenden Verzeichnisse an:

mkdir /etc/mrtg
mkdir /etc/cron.mrtg

Dann erzeugen Sie eine Konfigurationsdatei namens »cpu.cfg« mit dem Inhalt aus Listing 1. Die Datei »/etc/cron.mrtg/cpu« ist ein Shellskript mit den folgenden Zeilen:

#!/bin/sh
/usr/local/mrtg/bin/mrtg /etc/mrtg/cpu.cfg
Listing 1: »cpu.cfg«
 

Nachdem Sie die Datei mit »chmod +x /etc/cron.mrtg/cpu« ausführbar gemacht haben, testen Sie sie mit »sh /etc/cron.mrtg/cpu«. Auftretende Warnungen können Sie getrost ignorieren, wenn das Skript ansonsten durchläuft. Schließlich können Sie aus den gesammelten Daten eine erste Indexdatei generieren:

indexmaker --output=/usr/local/apache2/htdocs/mrtg/cpu_index.html --title="CPU Usage"\
 --sort=name --enumerate /etc/mrtg/cpu.cfg

Konfigurieren Sie noch den Cron-Daemon so, dass er das eben geschriebene Shellskript regelmäßig ausführt, zum Beispiel als Administrator mit »crontab -e«:

*/5 * * * * /bin/run-parts /etc/cron.mrtg 1 > /dev/null

Um das Polling-Intervall zwischen zwei Zeitpunkten der Datenerhebung festzulegen, tragen Sie die entsprechenden Aufrufzeiten in der systemweiten Crontab ein:

0,5,10,15,20,25,30,35,40,45,50,55 * * * * env LANG=C /usr/local/mrtg/bin/mrtg /usr/\
 local/mrtg/cfg/mrtg2.cfg

Dieser Eintrag legt ein Fünf-Minuten-Intervall fest. Ohne einen solchen Cronjob zum Daten sammeln erhält MRTG keine Daten, mit denen es seine Graphen zeichnen kann. Sie können das Polling-Intervall nach Belieben anpassen, aber denken Sie daran: Je seltener MRTG die Daten sammelt, umso ungenauer wird der resultierende Graph.

Je nach Webserver-Setup müssen Sie beim Abruf der generierten Statistiken eventuell den ganzen Namen der von MRTG erzeugten Datei angeben. Im Beispiel wurden die Dateien alle im Verzeichnis abgelegt, das Sie mit der Option »Workdir« spezifiziert haben. Das Indexmaker-Tool hat eine Index-Datei »/usr/local/apache2/htdocs/mrtg/cpu_index.html« angelegt. Unter der URL »http://Servername/mrtg/cpu_index.html« finden Sie dann den CPU-Graphen.

Interpretation

Den besten Gebrauch machen Sie von MRTG, wenn Sie regelmäßig die Graphen anschauen und im Lauf der Zeit ein Gefühl dafür entwickeln, wie sie im Normalzustand aussehen. Es ist auch eine gute Idee, eine Art Baseline-Graph zu erzeugen, der im Problemfall als Referenz dienen kann. Zum Beispiel zeigt Abbildung 1 eine Reihe von Servern unter normaler Belastung. Mehrere Server in einem Diagramm zusammenzufassen, ist ein Feature von RRDTool, dem Round Robin Database Tool, das ein nützliches Add-On zu MRTG darstellt.

Abbildung 1: Das CPU-Diagramm einer Gruppe von Servern bei normaler Belastung.

Gibt es einen systematischen Ausschlag, wie in Abbildung 2, liegt die Vermutung nahe, dass es sich zum Beispiel um ein Backup handelt, das um Mitternacht beginnt. Eine alternative Theorie wäre ein Angriff auf die Serverfarm. Um zwischen diesen beiden Szenarien zu entscheiden, vergleicht man den CPU-Graphen mit der Darstellung des Netzwerk-Traffic (Abbildung 3).

Abbildung 2: Ein erheblicher Ausschlag der CPU-Load gegen Mitternacht. Was ist passiert?

Abbildung 3: In der Netzwerkstatistik kommt es zu diesem Zeitpunkt zu keiner Abweichung von der Norm.

Der Netzwerk-Graph zeigt zu diesem Zeitpunkt keinen Ausschlag, sodass die Schlussfolgerung nahe liegt, dass es sich nicht um einen Angriff von außen handelt. Als nächster praktischer Schritt stünde die Untersuchung der Logdateien an, um festzustellen, ob zu diesem Zeitpunkt ein Batch-Job ablief.

Fazit

MRTG ist eine der besten Lösungen, langfristig Server- und Routersysteme zu überwachen und quantitative Daten grafisch darzustellen. Allerdings setzt es auf den überwachten Systemen eine funktionierende SNMP-Installation voraus. Mehr Informationen über die beinahe unbegrenzten Möglichkeiten bietet die MRTG-Homepage. (ofr)


Infos

[1] MRTG: [http://oss.oetiker.ch/mrtg]
[2] Net-SNMP: [http://www.net-snmp.org]
[3] UCD-SMNP-MIB: [http://www.oidview.com/mibs/2021/UCD-SNMP-MIB.html]

 

Kommentare

Kommentar hinzufügen

CAPTCHA
Diese Frage hat den Zweck zu testen, ob Sie ein menschlicher Benutzer sind und um automatisierten Spam vorzubeugen.