Linux und Open Source • 14.12.2006, 18:41 Uhr • Kommentare: 6

MRTG steht für Multi Router Traf­fic Grapher und ist ein Pro­gramm zur gra­fi­schen Aus­wer­tung bzw. Dar­stel­lung von Mess­wer­ten. Es sam­melt Infor­ma­tio­nen über SNMP oder aus Skrip­ten und erstellt dar­aus HTML Sei­ten mit Graphen.

Unter „wei­ter­le­sen“ ist ein Tuto­rial über die Instal­la­tion und eine grund­le­gende Kon­fi­gu­ra­tion zu finden.

Die­ses Tuto­rial beschreibt die Instal­la­tion und Ein­rich­tung der Moni­to­ring Soft­ware MRTG auf einem Debian Linux Sys­tem. Pro­gramm­na­men, Pfade, etc. kön­nen auf ande­ren Dis­tri­bu­tio­nen abwei­chend sein. Es wer­den Pakete aus dem sta­ble–Repo­sitory instal­liert, als Edi­tor der Wahl kommt vim zum Ein­satz. Für die Bereit­stel­lung als Inter­net­seite muss natür­lich ein Web­ser­ver wie Apa­che instal­liert sein. Die Gra­phen wer­den mit einem crontab regel­mä­ßig aktualisiert.

Instal­la­tion der Kombonenten

Zuerst ein­mal wer­den die Pakete mrtg, mrg­tu­tuils, snmpd und ggf. Abhän­gig­kei­ten instal­liert. Dies geschieht mit dem Befehl:

aptitude install mrtg mrtgutils snmp snmpd

Abhän­gig­kei­ten wer­den ggf. auto­ma­tisch auf­ge­löst und müs­sen mit Y bestä­tigt werden.

Hier wird der snmpd direkt mit­in­stal­liert, damit man Infor­ma­tio­nen wie den aktu­el­len Traf­fic auch von dem Rech­ner aus­le­sen kann, auf dem MRTG instal­liert wird.

Die snmpd.conf muss ange­passt wer­den, damit der Dienst Anfra­gen von MRTG ent­ge­gen­nimmt. Der ent­spre­chende Teil der /etc/snmp/snmpd.conf muss nach dem Bear­bei­ten wie folgt aussehen:

[...]
#       sec.name  source          community
#com2sec paranoid  default         public
com2sec readonly  default         public
#com2sec readwrite default         private
[...]

Nach einem Neu­start des Diens­tes soll­ten die Ände­run­gen über­nom­men sein:

/etc/init.d/snmpd restart

SNMP ist soweit fer­tig ein­ge­rich­tet und alle benö­tig­ten Kom­po­nen­ten soll­ten instal­liert sein.

Kon­fi­gu­ra­tion von MRTG

Die hier beschrie­be­nen Schritte müs­sen fast aus­schließ­lich als root durch­ge­führt werden.

Zuerst ein­mal erstel­len wir einen Ord­ner für MRTG Kon­fi­gu­ra­tio­nen und Skripte:

mkdir /etc/mrtg/

Dann wird die Kon­fi­gu­ra­tion von MRTG erstellt und mit den Daten des loka­len SNMP Diens­tes gefüttert:

cfgmaker public@localhost > /etc/mrtg/mrtg.cfg

Soll­ten noch wei­tere Geräte über­wacht wer­den, kön­nen diese, soweit sie über SNMP ansprech­bar und aus­les­bar sind, mit dem glei­chen Befehl hin­zu­ge­fügt wer­den. Jetzt ist aber » anstelle von > zu ver­wen­den, damit die erste Kon­fi­gu­ra­tion nicht über­schrie­ben wird:

cfgmaker public@192.168.0.1 >> /etc/mrtg/mrtg.cfg

192.168.0.1 ist dann durch die IP des zu über­wa­chen­den Gerä­tes zu erset­zen. Dies kann zum Bei­spiel ein nor­ma­ler Hard­ware­rou­ter sein, der Infor­ma­tio­nen über die benutze Band­breite oder die Aus­las­tung des WLAN-Adapters bereitstellt.

Para­me­ter die für cfgma­ker zur Ver­fü­gung ste­hen sind der MRTG-Dokumentation:„MRTG(Dokomentation: cfgma­ker, englisch)“:http://oss.oetiker.ch/mrtg/doc/cfgmaker.en.html zu entnehmen.

An die­ser Stelle sollte der Webord­ner erstellt wer­den, der nach­her die HTML-Ausgabe beinhaltet:

mkdir /var/www/mrtg/

Unter Debian ist der Wur­zel­ord­ner des Web­ser­vers stan­dard­mä­ßig /var/www/, was sich aber vari­ie­ren kann. Der erstellte Ord­ner sollte dann nach­her unter http://$serverip/mrgt/ auf­zu­ru­fen sein.

Ist der Ord­ner erstellt, kann die mrgt.cfg ange­passt wer­den. Die Kon­fi­gu­ra­tion 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

Work­Dir muss auf den Ord­ner zei­gen, der im Schritt vor­her erstellt wurde. Sind der Kon­fi­gu­ra­tion meh­rere Geräte hin­zu­ge­fügt wor­den, soll­ten dop­pelte Ein­stel­lun­gen ent­fernt wer­den. Wei­tere glo­bale Ein­stel­lungs­mög­lich­kei­ten sind bitte der MRTG Referenz:„MRTG(Reference, englisch)“:http://oss.oetiker.ch/mrtg/doc/mrtg-reference.en.html zu entnehmen.

Jedes abruf­bare Device sollte in der mrtg.cfg auf­ge­lis­tet sein und etwa fol­gende Stru­kur 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 pro­to­kol­liert wer­den, z.B. lo, also Loop­back, müs­sen die ent­spre­chen­den Zei­len ein­fach aus­kom­men­tiert oder gelöscht werden.

MRTG aus­füh­ren

MRTG ist jetzt in den Grund­zü­gen ein­satz­be­reit. Jetzt kön­nen zum ers­ten Mal Daten gesam­melt wer­den, dies geschieht mit fol­gen­dem Befehl (3 Mal ausführen!):

mrtg /etc/mrtg/mrtg.cfg

War­nun­gen bitte missachten.

Da aber hier­bei nur die Ein­zel­sei­ten und Gra­phen erstellt wer­den, muss noch eine Index­seite als Über­sicht erstellt werden:

indexmaker --output=/var/www/mrtg/index.html /etc/mrtg/mrtg.cfg

Alle nöti­gen Daten soll­ten jetzt erstellt sein und unter http://$serverip/mrgt/ abruf­bar sein. Der Link zu einer Demo folgt wei­ter unten.

Es ist mög­lich, dass die Gra­phen noch keine Werte anzei­gen, also noch auf 0 ste­hen, was sich nach ein paar wei­te­ren Mes­sun­gen aber ändern sollte.

MRTG erwei­tern

Es ist nicht nur mög­lich Infor­ma­tio­nen wie die Band­breite oder den Daten­durch­satz über SNMP in MRTG aus­zu­wer­ten. Es kön­nen auch lokal Scripte aus­ge­führt und die Daten über­ge­ben wer­den. So las­sen sich zum Bei­spiel CPU load, Spei­cher­aus­las­tung oder die Pro­zess­an­zahl mitloggen.

Ein Script sollte so auf­ge­baut wer­den, dass es von MRTG aus­ge­führt wer­den kann. Es sollte vier Werte zurück­ge­ben. Der erste Wert ist die erste Kurve die im Gra­phen dar­ge­stellt wird. Der Zweite die zweite Kurve. Sollte das Script nur einen Wert ermit­teln, z.B. die Pro­zess­an­zahl sollte die­ser Wert zwei­mal aus­ge­ge­ben wer­den. Als drit­ter Wert kann die aktu­elle Uptime des Sys­tems ange­zeigt wer­den. Wert 4 ist der Hostname.

Bei­spiel­haft wird hier das Script stat.pl (von Jon Anhold & Jeremy Wea­t­h­er­ford) ausgeführt:

$ ./stat.pl procs zoidberg
76
76
52 days
zoidberg

Es wird die Anzahlt der aktu­ell akti­ven Pro­zesse angezeigt.

Ein­ge­bun­den in die Aus­wer­tung wird die Pro­zess­an­zahl jetzt mit fol­gen­der Erwei­te­rung 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 Tar­get wird hier jetzt in Bash­syn­tax das Script aus­ge­führt und die Aus­gabe über­ge­ben. Infor­ma­tio­nen über die rest­li­chen Para­me­ter sind bitte wie­der der MRTG Referenz:„MRTG(Reference, englisch)“:http://oss.oetiker.ch/mrtg/doc/mrtg-reference.en.html zu entnehmen.

Um die &Äuml;nderungen end­gül­tig zu über­neh­men muss mrtg wie­der 3x aus­ge­führt werden:

mrtg /etc/mrtg/mrtg.cfg

War­nun­gen bitte wie­der missachten.

Index­seite aktualisieren:

indexmaker --output=/var/www/mrtg/index.html /etc/mrtg/mrtg.cfg

Die­ses und wei­tere Scripte sind hier her­un­ter­zu­la­den. Wie die Scripte in ein­ge­bun­den wer­den, ist mei­ner mrtg.cfg zu entnehmen.

MRTG auto­ma­tisch ausführen

Mit einem Crontab lässt sich MRTG regel­mä­ßig und selbst­stän­dig aus­füh­ren. Mit fol­gen­dem Befehl lässt sich als root ein pas­sen­der Crontab erstellen:

crontab -e

Ein Crontab für einen Durch­lauf alle 5 Minu­ten sieht fol­gen­der­ma­ßen aus:

*/5 * * * * /usr/bin/mrtg /etc/mrtg/mrtg.cfg 1> /dev/null

Nähe­res zu cront­abs ist der man­page (man crontab) oder auch Wiki­pe­dia zu entnehmen.

Down­loads

Das war’s für’s Erste. Ich bitte um Feedback!

Ach­tung: Ich über­nehme kei­ner­lei Gewähr für die Aktua­li­tät, Kor­rekt­heit, Voll­stän­dig­keit oder Qua­li­tät der bereit­ge­stell­ten Infor­ma­tio­nen. Haf­tungs­an­sprü­che gegen mich, wel­che sich auf Schä­den mate­ri­el­ler oder ide­el­ler Art bezie­hen, die durch die Nut­zung oder Nicht­nut­zung der dar­ge­bo­te­nen Infor­ma­tio­nen bzw. durch die Nut­zung feh­ler­haf­ter und unvoll­stän­di­ger Infor­ma­tio­nen ver­ur­sacht wur­den, sind grund­sätz­lich ausgeschlossen.

Tags, RSS-Feed & Trackback:

Tags: , , , , , | Der Artikel wurde am 14. Dezember 2006 gegen 18:41 Uhr von Felix Triller verfasst und unter „Linux und Open Source“ abgelegt. Sie können gerne einen Kommentar schreiben. Für einen Trackback benutzen Sie bitte diesen Link. Wenn Ihnen gefällt, was Sie hier lesen, abonnieren Sie doch meinen RSS-Feed.
 

6 Kommentare

  1. Whisky sagt:

    Klasse Tuto­rial! Vie­len Dank für die Mühe!

  2. Flox sagt:

    Hallo, super Tuto­rium. Mein MRTG läuft zwar schon län­ger wollte es aber ein­fach mal erwei­tern und hab gese­hen dass du in dei­ner Con­fig uptime und con­ne­ti­onup­time inte­griert hast. lei­der fehlt das connectionuptime.sh Skript. was muss denn da drin stehen?

    gruß Flo

  3. michi sagt:

    Hallo,

    vie­len Dank für den Star­ter in Sachen MRTG! Die ein­zige Schwie­rig­keit die bei mir auf­trat war, dass ich keine smnpd.conf auf mei­nem Sys­tem hatte. Die muss wohl bei vori­gen Ver­su­chen ver­lo­ren gegan­gen sein. Jetzt läuft aber alles prima. Vie­len Dank!

  4. Aleks sagt:

    Super Tuto­rial :) Einige der Files am Ende sind zwar (inzwi­schen) nicht mehr online, macht aber nix.

© (cc) 2005-2012 Felix Triller. Impressum. Made on a Mac, hand-coding XHTML & CSS. Anmelden. Powered by WordPress and all-inkl.com.