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.
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 |
|---|
|
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