![]() |
UNIX Netzwerk-ToolsProf. Jürgen Plate |
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.
Im Verzeichnis für die HTML-Seiten legt MRTG auch die Grafiken sowie alle gesammelten Daten ab. 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. Als beschreibender Text dient der Name der Schnittstelle, etwa eth0, nicht die laufende Nummer, wie es die Default-Einstellung ist:
cfgmaker \ --output=/etc/mrtg/mrtgtest.cfg \ --global "workdir:/opt/www/htdocs/mrtg/" \ --global "Language:german" \ --global "options[_]: growright" \ --ifdesc=descr geheim@10.1.3.1Das Ergebnis des Aufrufs ist in der Datei /etc/mrtg/mrtgtest.cfg zu finden. Der Name dieser Datei wird als erster Parameter an MRTG übergeben: mrtg /etc/mrtg/mrtgtest.cfg. Im Verzeichnis /opt/www/htdocs/mrtg/ entstehen mit diesem Aufruf eine HTML-Seite für jedes Interface, die Logfiles mit den Werten, außerdem die Grafiken. Das Verzeichnis muß allerdings vorher schon existieren. Alte Dateien löscht MRTG automatisch - beim ersten Aufruf führt das zwar zu Fehlermeldungen, die man ignoriert. Der Aufruf muß nun alle fünf Minuten wiederholt werden. Das das nicht von Hand geht, muß ein Cron-Job das erledigen. Der Zeitabstand ist entscheidend, damit MRTG die Durchschnittswerte korrekt berechnet. Wie groß das Intervall ist, läßt sich in der Konfiguration ändern.
WorkDir: /opt/www/htdocs/mrtg/ Language: german Target[interfaceerrors_2]:1.3.6.1.2.1.2.2.1.14.2& 1.3.6.1.2.1.2.2.1.20.2:geheim@10.1.3.1 Options[interfaceerrors_2]: growright,nopercent Title[interfaceerrors_2]: Fehler auf Interface eth0 MaxBytes[interfaceerrors_2]: 10000 Ylegend[interfaceerrors_2]: Fehler ShortLegend[interfaceerrors_2]: Legend1[interfaceerrors_2]: Input Fehler Legend2[interfaceerrors_2]: Output Fehler LegendI[interfaceerrors_2]: INPUT LegendO[interfaceerrors_2]: OUTPUT PageTop[interfaceerrors_2]: <H1>Input / Output Errors</H1> Fehler auf Interface eth0 Target[interfaceerrors_3]:1.3.6.1.2.1.2.2.1.14.3& 1.3.6.1.2.1.2.2.1.20.3:geheim@10.1.3.1 Options[interfaceerrors_3]: growright,nopercent

| Konfigurations-Optionen | |
|---|---|
| Option | Bedeutung |
| Target | Die vollständigen Object-IDs der darzustellenden SNMP-Variablen getrennt durch "&". |
| Options | Optionen, "growright": (s.o.), "nopercent": keine Prozentangaben, die nur sinnvoll wären, wenn ein Maximum bekannt ist. |
| Title | Titel der erzeugten Webseite |
| MaxBytes | Obergrenze der Werte (nötig für Achsenskalierung) |
| Ylegend | Legende der Y-Achse |
| ShortLegend | Angabe der Maßzahl |
| LegendI | Beschriftung der X-Achse für Incoming-Daten. |
| LegendO | Beschriftung der X-Achse für Outgoing-Daten. |
| Legend1,Legend2 | Legenden für die beiden Kurven am Seitenfuß. |
| PageTop | HTML-Kopf der Seite, welche die MRTG-Grafiken einbindet. Folgezeilen müseen mit einem Leerzeichen beginnen. |
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 fünf Minuten mittels crontab aufgerufen werden:
0,5,10,15,20,25,30,35,40,45,50,55 * * * * /usr/bin/mrtg /etc/mrtg/mrtgtest.cfgUnter Linux geht es noch kürzer:
*/5 * * * * /usr/bin/mrtg /etc/mrtg/mrtgtest.cfgEs geht auch als ein Eintrag in die System-Crontab /etc/crontab:
*/5 * * * * mrtg-user /usr/bin/mrtg /etc/mrtg/mrtgtest.cfg
Sofern eine ganze Reihe von Netzkonten mit MRTG überwachen möchte, sollte man nicht nur eine einzige Konfigurationsdatei benutzen. Für jeden Netzknoten, den man überwachen möchte, wird eine eigene Konfigrationsdatei erstellt. Diese Konfigurationsdateien werden beispielsweise unter /etc/mrtg/ abgelegt. Als Beispiel wird hier die Überwachung von fünf Servern wiedergegeben. Mit den Dateien serverXX-if.cfg wird der Traffic auf den Netzwerkkarten überwacht und mit serverXX.cfg erhält man Server-Parameter wie CPU-Auslastung, Arbeitsspeicher, usw.
$ ls /etc/mrtg/server*.cfg server01-if.cfg server01.cfg server02-if.cfg server02.cfg server03-if.cfg server03.cfg server04-if.cfg server04.cfg server05-if.cfg server05.cfgUm nicht alle MRTG-Aufrufe mit den verschiedenen Konfigurationsdateien in eine Crontab eintragen zu müssen, erstellen wir uns ein Shell-Skript, das die MRTG-Aufrufe zusammenfaßt:
#!/bin/sh MRTG_BIN="/usr/bin/mrtg" MRTG_CFG="/etc/mrtg" $MRTG_BIN $MRTG_CFGrouter01.cfg $MRTG_BIN $MRTG_CFGrouter02.cfg $MRTG_BIN $MRTG_CFGrouter03.cfg $MRTG_BIN $MRTG_CFG/server01.cfg $MRTG_BIN $MRTG_CFG/server01-if.cfg $MRTG_BIN $MRTG_CFG/server02.cfg $MRTG_BIN $MRTG_CFG/server02-if.cfg $MRTG_BIN $MRTG_CFG/server03.cfg $MRTG_BIN $MRTG_CFG/server03-if.cfg $MRTG_BIN $MRTG_CFG/server04.cfg $MRTG_BIN $MRTG_CFG/server04-if.cfg $MRTG_BIN $MRTG_CFG/server05.cfg $MRTG_BIN $MRTG_CFG/server05-if.cfg ...Das Skript wird nun alle fünf Minuten ausgeführt:
0-55/5 * * * * root /usr/local/bin/gomrtg
Um die CPU-Auslastung mitsammeln zu lassen, erweitern Sie Ihre Konfigurationsdatei um die folgenden Zeilen (oder Sie erstellen eine eigene Datei).
Target[server01]: 1.3.6.1.2.1.25.3.3.1.2.1&1.3.6.1.2.1.25.3.3.1.2.1:geheim@10.1.3.2 MaxBytes[server01]: 100 ShortLegend[server01]: % Unscaled[server01]: dwmy YLegend[server01]: Utilisation in percent Options[server01]: growright, gauge Title[server01]: CPU Load PageTop[server01]: CPU Load System: Server01 inVoraussetzung hierfür ist, daß auf der Maschine ein erweiterter SNMP-Agent läuft, der die entsprechende Variablen auch bereithält. Häufig werden auch von Herstellern spezieller Software oder Hardware erweiterte MIB-Dateien und SNMP-Agenten mitgeliefert, die es erlauben Systemzustände dieser Komponenten abzufragen. Im Listing sehen Sie eine Reihe von neuen Parametern zur Target-Definition. Der Parameter Unscaled verhindert eine automatische y-Achsen-Skalierung durch MRTG, was bei bestimmten Werten der Übersicht dient (regulär passt RTG die y-Achse dynamisch an die bisherigen maximalen Werte an). Da der SNMP-Wert für die CPU-Belastung kein differentieller Wert ist, sondern nur einen momentanen Zustand liefert, ist der Options-Parameter gauge notwendig. MRTG benötigt übrigens immer zwei Eingabewerte, deswegen ist die gleiche MIB-Variable zweimal eingetragen. Haben Sie eine Mehrprozessormaschine, so können Sie natürlich eine MRTG-Graphik für zwei CPUs nutzen.
Ein Skript kann auch Meßwerte aus mehreren Quellen verknüpfen oder die Meßdaten anderweitig aufbereiten. Im folgenden Beispiel soll ein Perl-Skript ermitteln, wie viel Platz auf der ersten Partition der Festplatte belegt ist. Um das Perl-Skript aufzurufen, muß der Target-Eintrag in der MRTG-Konfiguration den Namen des Skripts und seine Parameter in Backticks ` einschließen. Es werden genau vier Daten in vier Zeilen an MRTG geliefert:
WorkDir: /opt/www/htdocs/mrtg/ Language: german Target[Festplatte]: `/usr/local(bin/platte.pl` Options[Festplatte]: growright,noo,gauge Title[Festplatte]: Auslastung Festplatte MaxBytes[Festplatte]: 3138 Ylegend[Festplatte]: MB ShortLegend[Festplatte]: Legend1[Festplatte]: Belegung Festplatte in MB Legend2[Festplatte]: nicht gebraucht LegendI[Festplatte]: MB LegendO[Festplatte]: nicht gebraucht PageTop[Festplatte]: <H1>Belegung Festplatte</H1> Festplatte "/"
"noo" (no Output) unterdrückt die Ausgabe des zweiten Wertes; "noi" (no Input) würde das beim ersten Wert machen.
MRTG ist ein mächtiges Werkzeug um langsfristig Entwicklungen in Ihrem Netzwerk erkennen zu können. Viele Feinheiten konnten hier nicht geschildert werden. Um das Lesen der Dokumentation kommt also keiner herum.
tar xzf libpcap-0.6.2.tar.gz cd libpcap-0.6.2 ./configure --prefix=../libpcap make make install cd .. tar xzf NTop-1.1-src.tgz cd NTop-1.1 ./configure makeAls root-User wird das Programm dann noch installiert:
cp NTop /usr/local/bin cp NTop.8 /usr/local/man/man8
Damit NTop direkten Zugriff auf Netzwerkpakete bekommt, muss es mit root-Rechten laufen (chmod 4700 ntop oder chmod 4711 ntop, falls auch andere User als root das Programm verwenden sollen.
Wird NTop in einem Text-Terminal gestartet, so verhält es sich ähnlich wie der Unix-Klassiker top. Nur zeigt NTop nicht die Prozessorauslastung durch diverse Prozesse an, sondern den durch verschiedene Rechner verursachten Netzwerkverkehr. In der folgenden Abbildung findet gerade ein größerer Datentransfer von thorin nach balin statt. Der aktuelle Durchsatz ("Throughput") ist oben rechts ablesbar. Das Programm wurde mit NTop -i eth0 gestartet, also angewiesen, Pakete auf der ersten Ethernet-Karte abzugreifen.
Im Text-Interface reagiert NTop auf verschiedene Tasten. Am interessantesten ist die Leertaste, die weitere Informationen in die Spalten der angezeigten Tabelle holt, etwa zu Anwendungsprotokollen wie FTP, HTTP oder DNS.
Startet man das Programm mit NTop -i eth0 -w 888 erneut, ist im Terminal keine Ausgabe mehr sichtbar, dafür können Sie sich mit einem Frame-fähigen Web Browser auf Port 888 mit NTop verbinden. Dies geschieht, indem Sie im Browser http://localhost:888/ als Seitenadresse eingeben.
Über das Web-Interface stellt NTop wesentlich mehr Informationen zur Verfügung. Die Abbildung zeigt nur eine kleine Auswahl der umfangreichen Statistiken über die Anteile der Protokolle am Gesamtdurchsatz, die Bandbreitennutzung, Netzwerkkartenhersteller, aktuell laufende Netzwerkverbindungen und vieles mehr. In der folgenden Tabelle sind alle Links von der NTop-Hauptseite und deren Funktionen beschrieben.
| Nr. | Bezeichnung | Bedeutung |
|---|---|---|
| 1. | What's NTop? | Allgemeine Informationen über NTop. |
| 2. | Data Rcvd | Übersicht über empfangene Daten, aufgeschlüsselt in Daten, die auf IP oder alle Protokolle entfallen, sowie den Durchsatz. |
| 3. | Data Sent | Übersicht über gesendete Daten, aufgeschlüsselt in IP, alle Protokolle und den Durchsatz. |
| 4. | Multicast Stats | Pakete, die gleichzeitig an mehrere Rechner verschickt werden. |
| 5. | Traffic Stats | Information über Paketgrößen und Anteile der Protokolle am Gesamtdurchsatz. |
| 6. | Thpt Stats | Der Durchsatz der letzten 60 Minuten als Balkengrafik. |
| 7. | Hosts Info | Information zu Rechnern, aufgeschlüsselt nach Rechnern. |
| 8. | R->L IP Traffic | Netzverkehr von außen ins lokale Netz. |
| 9. | L->R IP Traffic | Netzverkehr aus dem lokalen Netz nach außen. |
| 10. | L<->L IP Traffic | Netzverkehr innerhalb des lokalen Netzes. |
| 11. | Active TCP Sessions | Momentan aufgebaute TCP-Verbindungen. |
| 12. | IP Protocol Distribution | Anteile der über IP transportierten Protokolle. |
| 13. | IP Protocol Usage | Zwischen welchen Rechnern werden welche Protokolle benutzt? |
| 14. | IP Traffic Matrix | Zwischen welchen Rechner wurde wieviel übertragen? |
| 15. | Credits | Danksagung des Autors. |
| 16. | Man Page | Die Manualseite zu NTop. |
Der Zugriff auf das Web-Interface lässt sich mit einem Passwort sperren. Dazu muss der Benutzer, der NTop startet, in seinem Home-Verzeichnis eine Datei .NTop mit einem Benutzername-/Passwort-Paar anlegen. Der Inhalt dieser Datei könnte etwa so aussehen:
# NTop Passwortdatei bla faselBenutzername und Passwort dürfen durch beliebig viele Leer- oder Tabulatorzeichen getrennt sein. Im Beispiel ist bla der Benutzername und fasel das Passwort. Groß- und Kleinschreibung werden beim Anmelden unterschieden.
< A NAME="3.5">
Update:
-u, --update update database
-r, --reset reset interface counters
--enable enable interface
--disable disable interface
--nick set a nickname for interface
--cleartop clear the top10
--rebuildtotal rebuild total transfers from months
Query:
-q, --query query database
-h, --hours show hours
-d, --days show days
-m, --months show months
-w, --weeks show weeks
-t, --top10 show top10
-s, --short use short output
--dumpdb show database in parseable format
Misc:
-i, --iface change interface (default: eth0)
-?, --help short help
-D, --debug show some additional debug information
-v, --version show version
-tr, --traffic calculate traffic
--testkernel check if the kernel is broken
--longhelp display this help
Nun folgen noch ein paar Output-Beispiele:
vnstat -t
eth0
# day rx | tx | total
--------------------------------+-------------+-------------
1 02.07.04 165.12 MB | 4465 MB | 4631 MB
2 30.06.04 273.99 MB | 2587 MB | 2861 MB
3 29.06.04 147.88 MB | 2576 MB | 2724 MB
4 01.07.04 122.99 MB | 2313 MB | 2436 MB
5 05.07.04 126.92 MB | 1960 MB | 2087 MB
6 28.06.04 94.47 MB | 1412 MB | 1506 MB
7 04.07.04 157.25 MB | 1184 MB | 1341 MB
8 03.07.04 72.64 MB | 1004 MB | 1077 MB
--------------------------------+-------------+-------------
vnstat -d
eth0
day rx | tx | total
------------------------+-------------+--------------
28.06. 94.47 MB | 1412 MB | 1506 MB
29.06. 147.88 MB | 2576 MB | 2724 MB
30.06. 273.99 MB | 2587 MB | 2861 MB
01.07. 122.99 MB | 2313 MB | 2436 MB
02.07. 165.12 MB | 4465 MB | 4631 MB
03.07. 72.64 MB | 1004 MB | 1077 MB
04.07. 157.25 MB | 1184 MB | 1341 MB
05.07. 126.92 MB | 1960 MB | 2087 MB
06.07. 61.11 MB | 800.95 MB | 862.06 MB
------------------------+-------------+--------------
estimated 102 MB | 1342 MB | 1444 MB
vnstat -h
eth0 14:15
^ t
| t t
| t t t
| t t t t t
| t t t t t t t
| t t t t t t t t
| t t t t t t t t
| t t t t t t t t t t t t
| t t t t t t t t t t t t t t t t
| t t t t t t t t t t t t t t t t t t t
-+--------------------------------------------------------------------------->
| 15 16 17 18 19 20 21 22 23 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14
h rx (kB) tx (kB) h rx (kB) tx (kB) h rx (kB) tx (kB)
15 10246 174865 23 3529 46895 07 3710 54205
16 8534 128352 00 2396 21712 08 4718 53318
17 5079 65982 01 1613 9631 09 4025 49177
18 4305 43534 02 1663 15690 10 7819 104977
19 5638 67930 03 1719 18777 11 11571 159724
20 5744 102914 04 1345 10376 12 8787 153695
21 5506 111092 05 1410 8711 13 8280 124599
22 4342 49030 06 1628 14197 14 1902 21384
ethstatus liefert, wie der Name schon vermuten lässt, den Status der Netzwerkschnittstelle, die als Parameter angegeben werden muss. Als zweiten Parameter gibt man normalerweise die Netzwerkgeschwindigkeit ein, z. B.:
ethstatus -i eth0 -S 100mIn der oberen Bildschirmhälfte baut sich dann auch eine Balkengrafik auf.
+------------------------------.EthStatus v0.4a.-------------------------------+ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ############ ¦ ¦ ¦ ¦ ### ¦ ¦ ON/OFF RX TX ¦ ¦ 89.85 KB/s 406 Packets/s ¦ ¦ ¦ ¦ ¦ ¦ IP Address: 129.187.206.160 ¦ ¦ Interface name: eth0 Graphic Using Speed: 12.21 MB/s ¦ ¦ Top Speed: 97.94 KB/s Top Packets/s: 408 ¦ ¦ Received Packets: 75273649 Transmited Packets: 75274801 ¦ ¦ Received: 2.11 GB Transmitted: 3.49 GB ¦ ¦ Errors on Receiving: 0 Errors on Transmission: 0 ¦ +------------------------------------------------------------------------------+
iptraf ist ein konsolenbasiertes Netzwerk-Statistikprogramm für Linux. Es sammelt unter anderem Informationen über TCP-Verbindungen und zählt Pakete und Bytes, stellt Schnittstellen-Statistiken und Indikatoren für Aktivitäten zur Verfügung und kann zum Erkennen von TCP/UDP-Verkehrsunterbrechungen verwendet werden. Das Programm arbeitet mit dem eingebauten Raw Socket Interface des Linux-Kernels und unterstützt dadurch eine große Anzahl von Netzwerkkarten und Hardware. Ruft man es ohne Parameter auf, kann es per Menü gesteuert werden. Es zeigen sich umfangreiche Anzeigemöglichkeiten:
+---------------------------------+
¦ IP traffic monitor ¦
¦ General interface statistics ¦
¦ Detailed interface statistics ¦
¦ Statistical breakdowns... ¦
¦ LAN station monitor ¦
¦---------------------------------¦
¦ Filters... ¦
¦---------------------------------¦
¦ Configure... ¦
¦---------------------------------¦
¦ Exit ¦
+---------------------------------+
Neben den üblichen Statistiken ist vielleicht die Statistik der Paketgröße am
interessantesten:
IPTraf + Packet Distribution by Size -------------------------------------------------+ ¦ ¦ ¦ Packet size brackets for interface eth0 ¦ ¦ ¦ ¦ ¦ ¦ Packet Size (bytes) Count Packet Size (bytes) Count ¦ ¦ 1 to 75: 1154 751 to 825: 3 ¦ ¦ 76 to 150: 1196 826 to 900: 0 ¦ ¦ 151 to 225: 121 901 to 975: 1 ¦ ¦ 226 to 300: 18 976 to 1050: 2 ¦ ¦ 301 to 375: 8 1051 to 1125: 4 ¦ ¦ 376 to 450: 4 1126 to 1200: 1 ¦ ¦ 451 to 525: 60 1201 to 1275: 2 ¦ ¦ 526 to 600: 8 1276 to 1350: 5 ¦ ¦ 601 to 675: 3 1351 to 1425: 3 ¦ ¦ 676 to 750: 5 1426 to 1500+: 167 ¦ ¦ ¦ ¦ ¦ ¦ Interface MTU is 1500 bytes, not counting the data-link header ¦ ¦ Maximum packet size is the MTU plus the data-link header length ¦ ¦ Packet size computations include data-link headers, if any ¦ + Elapsed time: 0:01 --------------------------------------------------------+ X-exitMit dem eingebaute LAN Station Monitor werden die Datenraten bezogen auf die MAC-Adressen angezeigt. Unter anderem kann man dann schön sehen, wieviele Boradcasts man bekommt.
nload ist der Dritte im Bunde. Auch hier genübt meist ein Aufruf ohne Parameter. Bei mehreren Interfaces kann dann mit den Pfeiltasten zwischen den Interfaces gewählt werden. Bei der Lastanzeige laufen hier wie bei ethstatus pseudografische Nalkendiagramme durch:
Device eth0 [129.187.206.160] (1/3):
================================================================================
Incoming:
## .
## #
|## #
### #
### |#
### ### Curr: 19.37 kBit/s
.|### ### Avg: 22.90 kBit/s
#| ##### ### Min: 2.80 kBit/s
.. ## ## ##### .### . Max: 0.22 kBit/s
##.|##|#|## ..||.##|#####....... ...####|........# Ttl: 2.12 GByte
Outgoing:
##### ###
##### ###
##### ###
##### ###
##### ###
##### ### Curr: 18.11 kBit/s
|. ##### .### Avg: 0.36 kBit/s
## ##### #### Min: 5.45 kBit/s
|##. ##### #### Max: 4.37 MBit/s
#| ####..#| || ##### #### Ttl: 3.52 GByte
Zum vorhergehenden Abschnitt |
Zum Inhaltsverzeichnis |
Zum nächsten Abschnitt |