|
MonitoringMonitoring, die ständige Überwachung der Server, ist für viele Dienstanbieter (z.B. ISPs, E-Commerce) "mission critical". Monitorimg umfaßt:- Voraussetzung bieten für zuverlässigen Dienst
- Gewährleistung der Service Levels
- zügige Entdeckung von Problemen und deren Lösung
- Ursache von Problemen bestimmen
- Früherkennung zukünftiger Probleme und deren Vermeidung
- beinhaltet oft auch Leistungsmessungen
Die Bedeutung des Monitoring wächst mit dem Ausbau eines Dienstes. Daher sollte mandas Monitoring schon bei Planung der Dienste berücksichtigen. Das Monitoring verbraucht selbst auch Ressourcen (Bandbreite<= 1% ist akzeptabel).
Verfahren- Historisches Monitoring
Automatische Erzeugung von (Langzeit-)Statistiken zur Verfügbarkeit und Auslastung von Diensten. - Real-Time Monitoring
- laufende Überwachung der Funktionalität von Diensten
- Registrierung von Diensteausfällen
- sofortige Benachrichtigung des/der Verantwortlichen
Welche Aspekte können/sollten überwacht werden?
- Ausnutzung von Plattenspeicher, CPU, Speicher, Bandbreite, etc.
- System-Aktivitäten, z. B. Betriebszeit (uptime), Last, Prozesse,
E/A-Aktivitäten, Systemfehler, etc.
- Verfügbarkeit von Diensten, Rechnern, Geräten, etc.
- Netzwerk-Konnektivität, Netzwerk-Verbindungen, Warteschlangen
(Drucker, Mail, ...)
- Accounts (Session-, Prozess-Accounting)
- Log-Files
- Anwendungssoftware und SW-Lizenzen
- spezielle HW-Komponenten (Lüfter, USV, Prozessor, Board (Temperatur), etc.
- Environment (Serverraum-Überwachung, Klimawerte, etc.)
- Dienste, Ressourcen, Protokolle
Das Monitoring steht in enger Beziehung zur REchner-Konfiguration (statisch),
Netzwerkadministration, Nutzerverwaltung und Accounting.
Wo findet Monitoring statt?
- Lokales Monitoring
Der zu überwachende Rechner führt selbst Monitoring durch. Typische Verfahren sind
dabei Shell-Skripte, crontab-Einträge, das Aufzeichnen gewöhnlicher Ergebnisse
in Log-Files oder Versenden von Alarm-Mails. Möglicherweise kann Monitoring-Skript
ein erkanntes Problem sofort beseitigen.
- Remote Monitoring
Die zu überwachenden Rechner/Geräte werden zentral durch einen Rechner (Network
Management Station) überwacht. Eine Probe wird an die Rechner/Geräte gesendet, die
Ergebnisse zurückliefern. Ein einfacher "Anwesenheitstest" kann beispielsweise
mit "ping" realisiert werden. Rechner oder Geräte können auch Alarmsignale
(alerts) senden. Die Management Station zeichnet die Daten auf und/oder zeigt sie an.
Kommunikations-Mechanismen
- Simple Network Management Protocol (SNMP), eine Methode, um Netzwerk-Geräte
abzufragen und zu steuern. Ein sogennanter "Manager" (auf dem Management-REchner)
fragt die "Agenten" (auf den Netzwerk-Geräten) nach Informationen ab, die auf
Einträgen in der "Management Information Base" (MIB) basieren.
- ICMP-Ping, ein einfacher Test der Netzwerk-Konnektivität, der jedoch
keine gesicherten Aussagen liefern kann.
- Port-Tests, also eine Untersuchung, ob Netzwerk-Dienst verfügbar ist und arbeitet.
- remote Execution, bei der ein Kommando auf entferntem System ausgeführt wird und
dennen Ergebnisse auf der Managemen Station ausgewertet werden.
- remote Alerts, die bei anormalen Ereignissen auf lokalen Geräten oder System
generiert und an die Managment Station gesendet werden.
Monitoring mit MRTG
Die Auslastung eines Netzwerks messen und die Ergebnisse grafisch aufbereiten ist
das Spezialgebiet vom Multi Router Traffic Grapher (MRTG) von Tobias Oetiker
(http://www.mrtg.org/).
Er überwacht die Auslastung des Netzwerks, fragt Router und Switches ab und
erzeugt aus den gewonnenen Daten übersichtliche Grafiken, die sich in eine
Webseite einbinden lassen. MRTG kann aber noch mehr, etwa Fehlermeldungen von Netzwerkschnittstellen abfragen oder die Auslastung einer Festplatte überwachen.
Ein Beispiel findet sich unter:
http://www.stat.ee.ethz.ch/mrtg/.
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.
Konfiguration
Für jedes überwachte Gerät erhält MRTG je eine Konfigurationsdatei
(braucht man nur eine, nimmt man /etc/mrtg.cf. Sind mehrere Dateien geplant,
legt man am Besten ein Verzeichnis an und erzeugt darin weitere Dateien, wenn man
sie braucht). Die Konfigurationsdatei läßt sich auch automatisch generieren:
Das Programm cfgmaker aus dem MRTG-Paket schreibt eine Konfigurationsdatei,
mit der MRTG die Netzwerklast beobachtet. Das Programm indexmaker erzeugt
eine HTML-Startseite, in der alle überwachten Geräte verzeichnet sind.
Mit der standardisierten Konfigurationsdatei überwacht MRTG die Netzwerkschnittstellen
eines Geräts über SNMP. Ob es sich dabei um einen Server mit einem einzelnen
Netz-Interface handelt oder um einen Router oder Switch mit vielen Schnittstellen,
ist nicht wichtig. Das zu überwachende Gerät muß seine Daten über
SNMP zur Verfügung stellen und MRTG muß das Leserecht für SNMP auf dem
Gerät haben. In den Kommandozeilen-Parametern von cfgmaker sind
folgende Informationen anzugeben:
- IP-Adresse oder DNS-Name des zu überwachenden Geräts, im folgenden
Beispiel 10.1.3.1,
- Community-String: Geheim,
- Name der zu erstellenden Konfig- Datei: /etc/mrtg/eins.cfg,
- Speicherort für die HTML-Seiten: /opt/www/htdocs/mrtg
- die zusätzlichen Optionen: growright.
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.1
Das 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.
Manuelle Konfiguration
Sind andere SNMP-Variablen als das übertragene Datenvolumen gewünscht,
muß man eine Konfigurationsdatei von Hand erstellen. Das folgende Beispiel fragt die
Fehler ab, die auf einem Netzwerk-Interface auftreten. Die globalen Optionen entsprechen
denen für den Datentransfer, die weiteren Felder erklärt die Tabelle weiter
unten. Der Aufruf per crontab sollte alle fünf Minuten erfolgen.
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.cfg
Unter Linux geht es noch kürzer:
*/5 * * * * /usr/bin/mrtg /etc/mrtg/mrtgtest.cfg
Es 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.cfg
Um 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 in
Voraussetzung 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.
Externe Datenquellen
Zum Abschluß möchte ich noch zeigen, wie externe Daten eingebunden
werden können. Extern meint in diesem Fall alle Arten von Daten, die nicht
direkt über MRTG oder eines seiner Module abgefragt werden können.
Im contrib-Verzeichnis der MRTG-Distribution finden Sie viele fertige
Module, die zum einen die Leistungsfähigkeit von MRTG in seinen Erweiterungen
unter Beweis stellen und zum anderen vielleicht auch direkt von Ihnen einsetzbar
sind. Statt SNMP direkt zu benutzen, lassen sich auch eigene Skripte und Programme
in MRTG einbinden, sie sammeln extern Daten und übergeben sie an MRTG. So kann man
Messdaten grafisch anzeigen, ohne einen SNMP-Agenten einsetzen zu müssen. Oft
ist es einfacher, einen vorhandenen SSH-Zugang zu einer Maschine zu nutzen, als dort
einen SNMP-Agenten einzurichten.
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:
- Erster Wert (belegter Plattenplatz in KByte)
- Zweiter Wert (wird nicht angezeigt)
- uptime des Rechners
- Name des Rechners
Die Konfigurationsdatei sieht dan etwa so aus:
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.
NTop
NTop bekommen Sie unter
https://www.NTop.org/NTop.html. Es benötigt die ncurses-Bibliothek
(inklusive Header-Files) und die libpcap.
Das Kompilieren und Installieren erfolgt mit:
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
make
Als 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
https://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 fasel
Benutzername 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.
|
|
|