PHP Network WeatherMap
Schon längere Zeit möchte ich den Netzwerkstatus in der Schule auf einen Blick sehen können. Wichtig war mir, herauszufinden, welche Netzwerkströme wohin fließen, wo also Bandbreitenengpässe schlummern. Die RWTH Aachen hat eine PHPWeatherMap im Einsatz. Das Tool ist absolut klasse. Aus RRDTool-Dateien werden Informationen gesammelt und dann übersichtlich in einer Karte dargestellt. Eine grundlegende Einrichtung ist nicht so richtig dokumentiert, daher folgt hier ein Versuch, eine grundlegende Netzwerkstatusübersicht mit Hilfe von SNMP zu erreichen.
Zuerst installieren wir einige Programme:
sudo apt-get update sudo apt-get install rrdtool apache2 php7.0 php-pear php-gd snmpd libapache2-mod-php7.0
Dann sollte man sich erstmal einen Plan über die zu überwachende Netzwerkinfrastruktur machen. Dabei ist wichtig, über welche Ports die Switches miteinander verbunden sind. Hier geben wir der Einfachheit halber den Traffic in beide Richtungen immer von einem Port wieder.
Beispiel: Switch1 ist an Port 47 mit Port 48 an Switch2 verbunden. Switch2 wiederum an Port 47 mit Switch 3 an Port 48. Wir überwachen dann nur die Ports 47.
Für jeden Port erstellen wir ein RRD-Archiv nach folgendem Muster:
rrdtool create /var/lib/rrd/switch1_47.rrd \ --step 300 \ DS:traffic_in:COUNTER:600:0:U \ DS:traffic_out:COUNTER:600:0:U \ RRA:AVERAGE:0.5:1:600 \ RRA:AVERAGE:0.5:6:700 \ RRA:AVERAGE:0.5:24:775 \ RRA:AVERAGE:0.5:288:797 \ RRA:MAX:0.5:1:600 \ RRA:MAX:0.5:6:700 \ RRA:MAX:0.5:24:775 \ RRA:MAX:0.5:288:797
Für jeden Port kommt dann ein Shell-Skript dazu, dass alle fünf Minuten den aktuellen Traffic abfragt:
rrdupdate /var/lib/rrd/switch1_47.rrd N:\ `/usr/bin/snmpget -v 1 -c public -Oqv 172.16.10.1 .1.3.6.1.2.1.2.2.1.10.47`:\ `/usr/bin/snmpget -v 1 -c public -Oqv 172.16.10.1 .1.3.6.1.2.1.2.2.1.16.47`
Voraussetzung ist, dass SNMPv1 auf dem Switch aktiviert ist. Über die OID .1.3.6.1.2.1.2.2.1.10. (Eingang)/.1.3.6.1.2.1.2.2.1.16. (Ausgang) erhält man die aktuelle Trafficauslastung in MBit/s auf dem jeweiligen Port. Wichtig für RRD ist es, dass die Abfrage regelmäßig erfolgt, um ordentliche Durchschnitte zu errechnen.
Wir erstellen noch eine Datei /var/lib/rrd/rrd.sh mit dem Aufruf der einzelnen Skripte für die Ports:
PFAD=/var/lib/rrd $PFAD/switch1_47.sh [...]
tbc