Überwachung der Netzwerk-Latenz mit Smokeping (Debian Etch)

Version 1.0
Author: Falko Timme


Diese Anleitung veranschaulicht, wie man Smokeping auf Debian Etch installiet und konfiguriert um die Netzwerk-Latenz zu überwachen. Von der Smokeping web site: "SmokePing is a deluxe latency measurement tool. It can measure, store and display latency, latency distribution and packet loss. SmokePing uses RRDtool to maintain a longterm data-store and to draw pretty graphs, giving up to the minute information on the state of each network connection."
Diese Anleitung ist ohne jegliche Gewähr! Ich übernehme keine Garantie, dass dies auch bei Dir funktioniert!

1 Vorbemerkung

Ich habe dies auf einem Debian Etch System getestet. Ich werde den Hostnamen www.example.com für dieses System verwenden. Zum Anzeigen der Grafiken benötigen wir einen Web Server auf dem System. Ich werde Apache2 installieren und Apaches Standard vhost verwenden, um die Grafiken zu hosten. Wenn Du einen anderen vhost verwendest, kann es sein, dass Du seine Einstellungen anpassen oder das smokeping.cgi Skript von /usr/lib/cgi-bin/smokeping.cgi an den entsprechenden Ort kopieren musst.

2 Installation von Smokeping

Um Smokeping mit anderen empfohlenen Paketen zu installieren, führen wir einfach Folgendes aus:

apt-get install smokeping curl libauthen-radius-perl libnet-ldap-perl libnet-dns-perl libio-socket-ssl-perl libnet-telnet-perl libsocket6-perl libio-socket-inet6-perl apache2


3 Konfiguration von Smokeping

Die Smokeping Konfiguration befindet sich in der Datei /etc/smokeping/config. Ziemlich am Anfang der Datei findest Du einige E-Mail Einstellungen und die URL des Smokeping Web Interfaces. Ändere sie wie folgt:

vi /etc/smokeping/config


[...]
# Please edit this to suit your installation owner = Falko Timme contact = me@example.com cgiurl = http://www.example.com/cgi-bin/smokeping.cgi mailhost = smtp.example.com # specify this to get syslog logging syslogfacility = local0 # each probe is now run in its own process # disable this to revert to the old behaviour # concurrentprobes = no *** Alerts *** to = me@example.com from = smokealert@example.com [...]
(Pass auf, dass mailhost den primären MX für Deine E-Mail Domain enthält!)

Weiter unten in der Datei findest Du die remark Zeile. Ändere sie nach Belieben:
[...]
remark = Welcome to the SmokePing website of 'Example Company' [...]

3.1 Beispiel einer Grundkonfiguration

Nun werden wir eine Grundkonfiguration vornehmen, um die Netzwerk-Latenz zu verschiedenen Servern in verschiedenen Ländern zu messen (z.B. Deutschland, UK, USA). In diesem Beispiel werde ich die Netzwerkverbindung zu den Servern www.heise.de (Deutschland), www.bbc.co.uk (UK) und web.mit.edu (USA) testen. Du solltest verschiedene Server verwenden um ein DOS zu vermeiden!

Öffne erneut /etc/smokeping/config:

vi /etc/smokeping/config

Suche den Bereich, der mit ++ Europe beginnt. Füge die Zeile für Deutschland zwischen der Europa-Zeile und Switzerland-Zeile ein (die Du auskommentieren kannst, wenn Du keinen Server in der Schweiz überwachen möchtest):
[...]
++ Europe menu = Europe title =European Connectivity +++ Germany menu = Germany title = German Connectivity alerts = bigloss,someloss,startloss ++++ Heise menu = Heise title = Heise host = www.heise.de #+++ Switzerland # #menu = Switzerland #title =Swiss Connectivity #alerts = bigloss,someloss,startloss [...]
Weiter unten, modifiziere die UK-Zeile wie folgt:
[...]
+++ UK menu = United Kingdom title = United Kingdom ++++ BBC menu = BBC title = BBC host = www.bbc.co.uk [...]
Ändere dann die USA-Zeile:
[...]
++ USA menu = North America title =North American Connectivity +++ MIT menu = MIT title = Massachusetts Institute of Technology Webserver host = web.mit.edu [...]
Speichere Deine Änderungen und starte Smokeping neu:

/etc/init.d/smokeping restart

Smokeping wird nun die Server prüfen indem es sie pingt (mittels /usr/bin/fping) - das ist der Standard-Test.

Öffne nun einen Web Browser und gehe zu http://www.example.com/cgi-bin/smokeping.cgi. Das ist die Startseite:


Nach wenigen Minuten solltest Du die ersten Grafiken sehen können. So sieht die Latenz von localhost aus (was standardmäßig in /etc/smokeping/config konfiguiert wird, es sei denn Du hast das geändert):



Im Menü auf der linken Seite können wir uns nun zu den Ländern/Servern begeben, die wir zuvor konfiguriert haben und sehen, wie deren Grafiken aussehen:



3.2 Erweitertes Beispiel

Bis jetzt pingen wir nur Server, es wäre allerdings gut, wenn wir auch noch ein paar andere Tests durchführen könnten (z.B. messen, wie schnell ein DNS Server eine Domain auflöst oder die HTTP Latenz messen). Dazu öffnen wir /etc/smokeping/config und modifizieren den *** Probes *** Bereich.

vi /etc/smokeping/config


[...]
*** Probes *** + FPing binary = /usr/bin/fping + DNS binary = /usr/bin/dig lookup = domain-to-lookup.com pings = 5 step = 180 + Curl # probe-specific variables binary = /usr/bin/curl step = 60 # a default for this target-specific variable urlformat = http://%host%/ [...]
Wie Du siehst, haben wir nun Tests für DNS (die lookup Zeile sollte eine Domain/einen Hostnamen beinhalten, den die Name Server nachschlagen sollen (die wir immer noch in Smokeping konfigurieren müssen)) und HTTP / FTP (unter Verwendung von Curl) hinzugefügt.

Am Ende von /etc/smokeping/config, können wir die Name Server / HTTP Server / FTP Server hinzufügen, die wir überwachen möchten (Du kannst Tests aktivieren/deaktivieren indem Du sie aktivierst/auskommentierst):

vi /etc/smokeping/config


[...]
+ services menu = Service Latency title = Service Latency (DNS, HTTP) ++ DNS probe = DNS menu = DNS Latency title = DNS Latency +++ dns1 host = ns1.example.com +++ dns2 host = ns2.example.com ++ HTTP probe = Curl menu = HTTP Latency title = HTTP Latency +++ server1 menu = server1 title = HTTP Latency for server1 host = server1.example.com +++ server2 menu = server2 title = HTTP Latency for server2 host = server2.example.com #+++ server3 #menu = server3 #title = HTTP Latency for server3 (port 8080!) #host = server3.example #urlformat = http://%host%:8080/ #++ FTP #probe = Curl #menu = FTP Latency #title = FTP Latency #urlformat = ftp://%host%/ #+++ server1 #menu = server1 #title = FTP Latency for server1 #host = server1.example.com #+++ server2 #menu = server2 #title = FTP Latency for server2 #host = server2.example.com
Wie Du siehst, überwachen wir die Name Server ns1.example.com und ns2.example.com unter Verwendung des DNS probes, den wir im *** Probes *** Bereich konfiguriert haben. Wir messen außerdem die HTTP Latenz von server1.example.com und server2.example.com indem wir den Curl probe verwenden. Wenn Du magst kannst Du außerdem die FTP Latenz unter Verwendung des Curl probe messen, pass aber auf, dass ein neues urlformat für den FTP Bereich definierst (der Standard, urlformat = http://%host%/, ist im *** Probes *** Bereich konfiguriert; für FTP sollte es urlformat = ftp://%host%/ sein).

Starte Smokeping nach Deinen Änderungen neu:

/etc/init.d/smokeping restart

Nach einigen Minuten solltest Du einige Daten für Deine neuen Tests im Smokeping Web Interface (http://www.example.com/cgi-bin/smokeping.cgi) sehen:





Hier findest Du weitere Smokeping Konfigurationsbeispiele: http://oss.oetiker.ch/smokeping/doc/smokeping_examples.en.html

4 Fehlersuche

Wenn Du denkst, dass Smokeping nicht wie erwartet arbeitet, kannst Du versuchen das Problem aufzuspüren, indem Du Smokeping im Debug-Modus ausführst:

/etc/init.d/smokeping stop
smokeping --debug

5 Links