frank
Goto Top

Multi Router Traffic Grapher (MRTG)

Hier einen kurzen Überblick über die Installation und Konfiguration vom "Multi Router Traffic Grapher" (MRTG)

Die Kurze Einführung in <EM>Multi Router Traffic Grapher (MRTG)</EM>
beruht im wesentlichen auf den Dokumentationen, die unter http://www.mrtg.org/ zu finden sind.
Der <EM>Multi Router Traffic Grapher (MRTG)</EM> (http://www.mrtg.org/) ist
ein Programm, mit dem es möglich ist, Netzwerkgeräte zu überwachen.
MRTG benutzt zur Überwachen von Netzwerkgeräten das <EM>Simple Network
Management Protocol (SNMP)</EM>. MRTG erzeugt HTML-Seiten, die Auslastungsgrafen
der Netzwerkgeräte im PNG-Format enthalten. Die Grafen sind nicht statisch,
sondern werden bei jedem
mrtg
-Lauf fortschreibend generiert. </P>
Ein Beispiel, wie MRTG arbeitet, findet sich unter: http://www.stat.ee.ethz.ch/mrtg/.

<P> MRTG ist in <EM>Perl</EM> und in <EM>C</EM> geschriben. Es arbeitet unter
Unix und Windows NT. MRTG wird von vielen Sites im Internet benutzt (siehe:
http://ee-staff.ethz.ch/~oetiker/webtools/mrtg/users.html).
<P>
MRTG besteht aus einem <EM>Perl</EM>-Skript, das das <EM>Simple Network
Management Protocol (SNMP)</EM> benutzt, um die Durchsatzwerte
(<EM>traffic</EM>) von Routern auszulesen. Ein <EM>C</EM>-Programm
protokolliert die Werte mit, um erzeugt daraus Auslastungsstatistiken
und Auslastunggrafen. Diee Grafen werden auf HTML-Seiten
zusammengestellt und können mit jedem modernen Web-Browser betrachtet
werden.
<P>
In Ergänzung zur der detaillierten, täglichen Ansicht, erzeugt MRTG
Grafen, die den Duchsatz der letzten sieben Tage, der letzten vier
Wochen und der letzten zwölf Monate wiedergeben. Dies ist möglich, da
MRTG allen Daten, die es aus dem Router ausließt, in eine Log-Datei
schreibt. Die Log-Datei wird automatisch konsollidiert, so daß die
Log-Datei nicht unaufhörlich wächst und dennoch alle erforderlichen
Daten enthält, um auch langzeit Statistiken (bis zu zwei Jahren)
erstellen zu können. Der Mechanismus ist sehr effizient, so daß eine
GNU/Linux-Box 200 und mehr Netzwerk-Konten überwachen kann.
<P>
MRTG nicht darauf beschränkt, Router-Durchsätz zu überwachen. Es ist
prinzipiell möglich jede SNMP-Variable zu überwachen. Man kann externe
Programme verwenden, um die benötigten Daten sammlen zu lassen. MRTG
wird benutzt um Modem-Racks, USVen, Systemstatistiken von Netware- und
Windows NT-Servern und vieles mehr zu überwachen. MRTG erlaubt, zwei oder
mehr Daten-Quellen in einem Grafen darzustellen.
</P>
Installation

Die Installation unter http://www.debian.org/ gestaltet sich denkbar einfach (ab der Debian GNU/Linux Version 2.2):

<TABLE><tr><td> </td><td class=example><pre>apt-get update
apt-get install mrtg
</pre></td></tr></table><p></P><P>

Das Debian GNU/Linux-Paketmanagementsystem installiert alle
erforderlichen Pakete mit, sofern sie noch nicht installiert sind. Bei
MRTG sind dies: <TT>`libsnmp-session-perl'</TT>, <TT>`freetype2'</TT>,
<TT>`libc6'</TT>, <TT>`libgd1g'</TT>, <TT>`libpng2'</TT>, <TT>`libz1'</TT> und
<TT>`perl5'</TT>.

MRTG ist installiert. Unter <TT>`/etc'</TT> befindet isch die Datei
<TT>`mrtg.cfg'</TT>, die eine Beispielkonfiguration für eine
ISDN-Festverbindung mit 128 KB enthält. MRTG wird alle fünf Minuten
ausgeführt (<SAMP>`mrtg /etc/mrtg.cfg'</SAMP>). Gesteuert wird der Aufruf von
MRTG durch Cron in der Datei <TT>`/etc/cron.d/mrtg'</TT>.

Die manuelle Installation von MRTG gestaltet sich ein wenig
aufwendiger. Benötigt werden der gcc (<EM>GNU C Compiler</EM>),
perl (die aktuelle Version 5.005), gd (Grafikbibliothek zur
Erzeugung der Grafiken), libpng (PNG-Bibliothek, die <EM>gd</EM>
benötigt, um PNG-Grafiken zu erzeugen) und zlib (Bibliothek, die
benötigt wird, um komprimierte Grafiken zu erzeugen).

Die benötigte Software findet man unter:
<P>
<DL COMPACT>
<DT><SAMP>`gcc'</SAMP>
<dd>http://gcc.gnu.org/
<DT><SAMP>`perl'</SAMP>
<dd>http://www.perl.com/
<DT><SAMP>`gd'</SAMP>
<dd>http://www.boutell.com/gd/
<DT><SAMP>`libpng'</SAMP>
<dd>http://www.libpng.org/pub/png/
<DT><SAMP>`zlib'</SAMP>
<dd>http://www.info-zip.org/pub/infozip/zlib/
<DT><SAMP>`mrtg'</SAMP>
<dd>http://ee-staff.ethz.ch/~oetiker/webtools/mrtg/pub
</DL>

Zuerst müssen die von MRTG benötigten Bibliotheken übersetzt werden. Den
Quell-Code entpackt man besten unter <TT>`/usr/local/src'</TT>. Falls dieses
Verzeichnis noch nicht vorhanden ist, muß es angelegt werden:

<TABLE><tr><td> </td><td class=example><pre>mkdir /usr/local/src
cd /usr/local/src
</pre></td></tr></table><p></P>
<P> Sollte zlib nicht installiert sein, kann man die neuste Version unter
http://ftp.info-zip.org/pub/infozip/zlib/:

<TABLE><tr><td> </td><td class=example><pre>tar -xvzf zlib.tar.gz
mv zlib-?.?.?/ zlib
cd zlib
./configure
make
cd ..
</pre></td></tr></table><p></P>
<P> Sollte die libpng nicht installiert sein, die neuste Version findet
man unter http://www.libpng.org/pub/png/src/: </P>
<P>

<TABLE><tr><td> </td><td class=example><pre>tar -xvzf libpng-x.x.x.tar.gz
mv libpng-x.x.x libpng
cd libpng
make -f scripts/makefile.std CC=gcc ZLIBLIB=../zlib ZLIBINC=../zlib
rm *.so.* *.so
cd ..
</pre></td></tr></table>

Nun können wird gd übersetzen und installieren. Eine aktuelle
Version findet sich unter http://www.boutell.com/gd/http/: </P>
<P>

<TABLE><tr><td> </td><td class=example><pre>tar -xvzf gd-1.8.3.tar.gz
mv gd-1.8.3 gd
cd gd
make INCLUDEDIRS="-I. -I../zlib -I../libpng"
LIBDIRS="-L../zlib -L. -L../libpng"
LIBS="-lgd -lpng -lz -lm"
cd ..
</pre></td></tr></table><p></P><P>

Die mit einem <EM>Backslash</EM> (<TT>`'</TT>) ungebrochen Zeilen müssen als
eine einzige Zeile eingegeben werden.

Jetzt haben wir die Vorbereitungen für Installation von MRTG
abgeschlossen. Die aktuelle Version von MRTG sollte vorliegen:

<TABLE><tr><td> </td><td class=example><pre>cd /usr/local
tar -xvzf mrtg-x.x.x.tar.gz
cd mrtg-x.x.x
./configure --with-gd=/usr/local/src/gd
--with-z=/usr/local/src/zlib
--with-png=/usr/local/src/libpng
make
</pre></td></tr></table><p>

Die mit einem <EM>Backslash</EM> (<TT>`'</TT>) ungebrochen Zeilen müssen als
eine einzige Zeile eingegeben werden.

Sollten alle Bibliotheken auf dem System installiert sein, reicht ein
<SAMP>`./configure'</SAMP> aus. Nachdem das Kommando
make
fehlerfrei
durchgelaufen ist, befindet sich in dem Unterverzeichnis <TT>`./run'</TT>
alle benötigten Prel-Skripte und das C-Programm
rateup
.
</P>
<P> 
<HR SIZE="1" noshade>
<H1> <font size="2" face="Verdana, Arial, Helvetica, sans-serif">Konfiguration
</font></H1>
<P> Der nächste Schritt ist nun, MRTG zu konfigurieren, um Netzwerkknoten
zu überwachen. MRTG wird über ein <TT>`mrtg.cfg'</TT>-Datei konfiguriert,
in der definiert wird, was überwacht werden soll. Es ist nicht notwendig
die Datei <TT>`mrtg.cfg'</TT> mit Hand zu erstellen.<A NAME="DOCF1" HREF="#FOOT1">(1)</A>

In dem MRTG-Paket befindet sich ein <EM>Perl</EM>-Skript, welches das
Erzeugen einer Konfigurationsdatei erheblich vereinfacht:
cfgmaker
. Falles man MRTG selbst übersetzt hat, findet man
cfgmaker
in dem Unterverzeichnis <TT>`./run'</TT>. Hat das
Debian-Paket installiert, befindet sich
cfgmaker
im
<VAR>PATH</VAR> der Benutzer.

Mit dem Befehl <SAMP>`cfgmaker <communuty>@<router.my.domain> > mrtg.cfg'</SAMP> kann eine
MRTG-Konfigurationsdatei des Netzknotens <EM>router.my.domain</EM> erstellen. Es
besteht die Möglichkeit,
cfgmaker
Optionen zu übergeben:

<TABLE><tr><td> </td><td class=example><pre>cfgmaker --global 'WorkDir: /var/www/mrtg'
--global 'Options[_]: bits,growright'
--output /etc/mrtg/mrtg.cfg
<community>@<router.my.domain>
</pre></td></tr></table><p>

Der Aufruf von
cfgmaker
in dem obigen Beispiel erzeugt eine
Konfigurationsdatei <TT>`mrtg.cfg'</TT> in dem Verzeichnis <TT>`/etc'</TT>. Alle
weiteren Option, die man zusammen mit
cfgmaker
benutzen kann,
sind in dem umfangreichen Handbuchseiten aufgeführt: <SAMP>`man cfgmaker'</SAMP>.

Bevor man sich an die Arbeit macht, um seine eigene MRTG-Konfiguration zu
erstellen, sollte man unbedingt die MRTG-Konfigurationsreferenz lesen. Sie befindet
sich unter den Dokumentationen zu MRTG oder im Web unter http://ee-staff.ethz.ch/~oetiker/webtools/mrtg/reference.html.

<TABLE><tr><td> </td><td class=example><pre>######################################################################
  1. Multi Router Traffic Grapher -- Sample Configuration File
######################################################################
  1. This file is for use with mrtg

  1. Global configuration
WorkDir: /var/www/mrtg
WriteExpires: Yes

Title[^]: Traffic Analysis for

  1. 128K leased line
  2. ----------------
#Title[leased]: a 128K leased line
#PageTop[leased]: Our 128K link to the outside world
#Target[leased]: 1:public@router.my.domain
#MaxBytes[leased]: 16000
</pre></td></tr></table>

MRTG starten

Nachdem wir eine Konfigurationsdatei (<TT>`mrtg.cfg'</TT>) erstellt haben,
können wird MRTG mit <SAMP>`/usr/bin/mrtg /etc/mrtg.cfg'</SAMP> ausführen. MRTG
sucht den Netzknoten <EM>router.my.domain</EM>, sammelt die ersten Daten
und erstellten die Auslastungsgrafen (tägliche, wöchentliche, monatliche
und jährliche Auslastung). Wenn MRTG zum ersten Mal gestart wird, werden
eine ganze Menge Fehlermeldungen ausgeben, daß Log-Datei nicht gefunden
wurden. Das ist normal und sollte nicht beunruhigen. Diese
Fehlermeldungen erscheinen nur bei den ersten beiden
MRTG-Läufen. Sollten danach noch Felhermeldungen auftreten, so kann man
diese nicht mehr ignorieren und sollte einen Blick in die Log-Dateien
werfen.

MRTG händisch zu starten, ist weder besonders elegant, noch sinnvoll, da
so ein regelmäßiges Abfragen der Daten des Netzknotens nicht
gewährleistet ist. MRTG sollte alle 5 Minuten mittels <EM>Cron</EM>
aufgerufen werden:

<TABLE><tr><td> </td><td class=example><pre>0,5,10,15,20,25,30,35,40,45,50,55 * * * *
/usr/bin/mrtg /etc/mrtg.cfg
</pre></td></tr></table>

Oder unter Linux:

<TABLE><tr><td> </td><td class=example><pre>*/5 * * * * /usr/bin/mrtg /etc/mrtg.cfg
</pre></td></tr></table><p>

Oder als ein Eintrag in die System-<EM>Crontab</EM> <TT>`/etc/crontab'</TT>:

<TABLE><tr><td> </td><td class=example><pre>*/5 * * * * mrtg-user /usr/bin/mrtg /etc/mrtg.cfg
</pre></td></tr></table><p>

Unter Debian GNU/Linux befindet sich in dem Verzeichnis
<TT>`/etc/cron.d'</TT> die Datei <TT>`mrtg'</TT>, die alle fünf Minuten
ausgeführt wird:

<TABLE><tr><td> </td><td class=example><pre>0-55/5 * * * * root
if [ -x /usr/bin/mrtg ]; then
/usr/bin/mrtg /etc/mrtg.cfg;
fi
</pre></td></tr></table><p>

Ebenso ist es möglich, MRTG als Dämon arbeiten zu lassen. Dazu ist in
der Konfigurationsdatei <TT>`mrtg.cfg'</TT> der Parameter <SAMP>`RunAsDaemon:
Yes'</SAMP> hinzuzufügen. Weiter muß man ein MRTG-Start-Skript erstellen,
welches nach <TT>`/etc/init.d'</TT> (das Verzeichnis kann je nach
Linux-Distribution zum Teil stark variieren) kopiert werden muß. Das
Erzeugen der System-Links in den <TT>`/etc/rc?.d'</TT>-Verzeichnissen darf
nicht vergessen werden.

Beispiel eines Start-Skriptes (<TT>`/etc/init.d/mrtg'</TT>):

<TABLE><tr><td> </td><td class=example><pre>#!/bin/sh
#
  1. /etc/init.d/mrtg

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON="/usr/bin/mrtg"
PARAM="/etc/mrtg.cfg"
NAME="MRTG"
DESC="Multi Router Traffic Grapher Daemon"


set -e

case "$1" in
start)
echo -n "Starting $DESC: "
$DAEMON $PARAM
echo "$NAME."
;;
stop)
echo -n "Stopping $DESC: "
killall -9 $DAEMON
echo "$NAME."
;;
restart|force-reload)
echo -n "Restarting $DESC: "
killall -9 $DAEMON
sleep 1
$DAEMON $PARAM
echo "$NAME."
;;
*)
N=/etc/init.d/$NAME
echo "Usage: $N {start|stop|restart|force-reload}" >&2
exit 1
;;
esac

exit 0
</pre></td></tr></table><p></P><P>

Wichtig: MRTG läuft nur als Dämon, wenn in der <TT>`mrtg.cfg'</TT> der
Paramater RunAsDaemon: Yes gesetzt ist!

Tips und Tricks

Sofern eine ganze Reihe von Netzkonten mit MRTG überwachen möchte,
sollte man nicht nur eine einzige Konfigurationsdatei
<TT>`/etc/mrtg.cfg'</TT> benutzen. Es ist möglich für jeden Netzknoten, den
man überwachen möchte, eine eigene Konfigrationsdatei zu
erstellen. Diese Konfigurationsdateien werden unter
<TT>`/usr/local/etc/mrtg/'</TT> abgelegt. Als Beispiel wird hier die
Überwachung von 5 Netware-Servern wiedergegeben. Mit den Dateien
<TT>`nwsXX-if.cfg'</TT> wird der <EM>Traffic</EM> auf den Netzwerkkarten
überwacht. Mit den Dateien <TT>`nwsXX.cfg'</TT> werden wichtige
Server-Parameter wie CPU-Auslastung, Arbeitsspeicher, <EM>Volumes</EM>
usw. überwacht:

<TABLE><tr><td> </td><td class=example><pre>$ ls -l /usr/local/etc/mrtg/nwserver/
-rw-r--r-- 1 root root 2368 Aug 11 10:55 nws01-if.cfg
-rw-r--r-- 1 root root 4664 Jul 14 17:43 nws01.cfg
-rw-r--r-- 1 root root 2882 Aug 11 10:58 nws02-if.cfg
-rw-r--r-- 1 root root 3526 Jul 14 17:43 nws02.cfg
-rw-r--r-- 1 root root 1643 Aug 14 12:35 nws03-if.cfg
-rw-r--r-- 1 root root 4094 Jul 14 17:20 nws03.cfg
-rw-r--r-- 1 root root 5422 Aug 15 09:56 nws04-if.cfg
-rw-r--r-- 1 root root 5247 Jul 14 16:09 nws04.cfg
-rw-r--r-- 1 root root 1562 Aug 11 11:01 nws05-if.cfg
-rw-r--r-- 1 root root 4093 Jul 14 16:03 nws05.cfg
</pre></td></tr></table><p>

Um nicht alle MRTG-Aufrufe mit den verschiedenen Konfigurationsdateien
in eine <EM>Crontab</EM> eintragen zu müssen, erstellen wir uns ein
Shell-Skript (<TT>`/usr/local/bin/mrtgkick'</TT>, welches die MRTG-Aufrufe
zusammenfaßt:

<TABLE><tr><td> </td><td class=example><pre>#!/bin/sh
#
  1. /usr/local/bin/mrtgkick

MRTG_BIN="/usr/bin/mrtg"
MRTG_CFG="/usr/local/etc/mrtg"

  1. Router
$MRTG_BIN $MRTG_CFG/router/csr01.cfg
$MRTG_BIN $MRTG_CFG/router/csr02.cfg
$MRTG_BIN $MRTG_CFG/router/csr03.cfg

  1. Netware server
$MRTG_BIN $MRTG_CFG/nwserver/nws01.cfg
$MRTG_BIN $MRTG_CFG/nwserver/nws01-if.cfg
$MRTG_BIN $MRTG_CFG/nwserver/nws02.cfg
$MRTG_BIN $MRTG_CFG/nwserver/nws02-if.cfg
$MRTG_BIN $MRTG_CFG/nwserver/nws03.cfg
$MRTG_BIN $MRTG_CFG/nwserver/nws03-if.cfg
$MRTG_BIN $MRTG_CFG/nwserver/nws04.cfg
$MRTG_BIN $MRTG_CFG/nwserver/nws04-if.cfg
$MRTG_BIN $MRTG_CFG/nwserver/nws05.cfg
$MRTG_BIN $MRTG_CFG/nwserver/nws05-if.cfg

  1. Windows NT server
$MRTG_BIN $MRTG_CFG/ntserver/nts01.cfg
$MRTG_BIN $MRTG_CFG/ntserver/nts01-if.cfg
$MRTG_BIN $MRTG_CFG/ntserver/nts02.cfg
$MRTG_BIN $MRTG_CFG/ntserver/nts02-if.cfg

  1. UPS
$MRTG_BIN $MRTG_CFG/ups/ups01.cfg
</pre></td></tr></table><p>

Das Skript <TT>`mrtgkick'</TT> wird nun alle fünf Minuten mittels
<EM>Cron</EM> ausgeführt:

<TABLE><tr><td> </td><td class=example><pre>0-55/5 * * * * root
if [ -x /usr/bin/mrtg -a -x /usr/local/bin/mrtgkick ]; then
/usr/local/bin/mrtgkick;
fi
</pre></td></tr></table>

Fußnoten

<A NAME="FOOT1" HREF="#DOCF1">(1)</A>
<P>Unter Debian GNU/Linux befindet sich die <TT>`mrtg.cfg'</TT> unter <TT>`/etc'</TT>.

Content-Key: 85

Url: https://administrator.de/contentid/85

Printed on: April 23, 2024 at 15:04 o'clock