Aus LinuxUser 03/2015

Netzwerkinfrastruktur mit SNMP überwachen (Seite 2)

Auf allen eingesetzten APs mit DD-WRT [4] (Abbildung 1) oder Ubiquiti AirOS [5] haben wir die SNMP-Agents aktiviert (Abbildung 2). Die quasi historisch gewachsene WLAN-Versorgung bietet noch keine Lösung aus einem Guss, sodass wir auf einigen Routern und dem RasPi noch statische Routen setzen mussten, damit der Mini-Rechner sämtliche Geräte erreicht. Listing 2 zeigt, wie Sie die Routen mit route statisch setzen. Funktioniert alles, wandern entsprechende Einträge unter dem passenden Netzwerkinterface in die Konfigurationsdatei /etc/network/interfaces, sodass sie bei einem Reboot nicht verloren gehen (Listing 3).

Abbildung 1: Der SNMP-Agent der freien Router-Firmware DD-WRT ist schnell aktiviert und akzeptiert lesende und schreibende Zugriffe.
Abbildung 1: Der SNMP-Agent der freien Router-Firmware DD-WRT ist schnell aktiviert und akzeptiert lesende und schreibende Zugriffe.
Abbildung 2: Viele im Handel erhältliche Netzwerkgeräte bringen bereits einen SNMP-Agenten mit.
Abbildung 2: Viele im Handel erhältliche Netzwerkgeräte bringen bereits einen SNMP-Agenten mit.

Listing 2

$ sudo route add -net 192.168.100.0/24 gw 192.168.2.2
$ sudo route add -net 192.168.13.0/24 gw 192.168.2.2

Listing 3

# /etc/network/interfaces
up route add -net 192.168.100.0/24 gw 192.168.2.2 dev eth0
up route add -net 192.168.13.0/24 gw 192.168.2.2 dev eth0

SNMP im Einsatz

Nach dem Abschluss der Vorbereitungen können Sie in einem ersten Test alle via SNMP verfügbaren Informationen eines Geräts abfragen. Dabei hilft folgendes Kommando:

$ sudo snmpwalk -v1 -c RO-Community-String Host OID

Der Parameter -v1 erzwingt den Einsatz von SNMPv1, den Community-String setzen Sie mit -c. Hinzu kommen der Hostname oder die IP-Adresse des abzufragenden Rechners sowie die OID. Geben Sie für Letztere lediglich einen Punkt an, fragt Snmpwalk alle verfügbaren OIDs ab (Abbildung 3). Je genauer die OID, desto geringer fällt letztendlich die Informationsflut aus.

Abbildung 3: Ein an der Wurzel des MIB-Baums (OID: <code>.</code>) beginnender Snmpwalk liefert viele Ergebnisse.
Abbildung 3: Ein an der Wurzel des MIB-Baums (OID: .) beginnender Snmpwalk liefert viele Ergebnisse.

Informationen über die Bedeutung einzelner OIDs finden Sie oft auf den Seiten der Gerätehersteller oder in einschlägigen Internetforen. Zudem existiert eine ganze Reihe standardisierter OIDs, etwa für Namen und Uptime eines Geräts sowie die Anzahl der versendeten und empfangenen Pakete. Je nach Produkt lassen sich auch Informationen über die Anzahl der mit einem AP verbundenen Clients oder die Menge der verfügbaren und vergebenen DHCP-Leases abfragen.

Neben Snmpwalk gibt es eine Reihe weiterer SNMP-Kommandos. Während Snmpwalk den kompletten angeforderten OID-Zweig zurückliefert, beschränkt sich Snmpget allein auf die angeforderte OID. Standardmäßig liefern die Kommandos OIDs unter Debian/Raspbian im numerischen Format zurück. Möchten Sie stattdessen lieber die zugehörigen Namen sehen, um die Bedeutung des Eintrags besser einschätzen zu können, kommentieren Sie in der Datei /etc/snmp/snmp.conf die Zeile mibs : aus.

Im Hochlland interessieren uns letztendlich nur wenige Dinge: Kann man alle unsere Geräte noch erreichen? Wie viele WLAN-Clients sind mit den einzelnen APs verbunden? Wie steht es mit CPU- und Speicherauslastung, und wie viele Pakete durchlaufen die jeweiligen Geräte? Hier kann man beliebige weitere Punkte hinzunehmen.

Die Erreichbarkeit der Geräte prüfen Sie statt via SNMP besser schlicht mit einem Ping. Lässt sich ein System nicht ansprechen, bemängelt SNMP zwar ebenfalls den entsprechenden Timeout, was sich für weitere Auswertungen nutzen lässt. Das Stellen vieler SNMP-Abfragen dauert jedoch länger als einige wenige Pings abzusetzen.

In der Kürze …

Ein MIB-Baum enthält in aller Regel wesentlich mehr Informationen, als Sie für Ihre Auswertung benötigen. Sie tun sich daher durchaus einen Gefallen, wenn Sie sich auf wenige Informationen beschränken.

Die mit einzelnen Routern respektive Access Points verbundenen Geräte liefert beispielsweise der Zweig ioNetToMediaEntry (1.3.6.1.2.1.4.22.1). Verfügbaren und genutzten Speicher fragen Sie über 1.3.6.1.2.1.25.2.3.1.5.101 und 1.3.6.1.2.1.25.2.3.1.6.101 ab, die durchschnittliche CPU-Last der letzten fünfzehn Minuten erfahren Sie mit der OID 1.3.6.1.4.1.2021.10.1.5.3. Die OID 1.3.6.1.2.1.2.2.1 schließlich sammelt alle zu den Netzwerkschnittstellen verfügbaren Informationen ein. Hier lohnt es sich unter Umständen, die Datenmenge ebenfalls ein wenig zu reduzieren: MTUs, Schnittstellenbezeichnungen und so weiter müssen Sie nicht jedes Mal mitloggen.

Haben Sie sich überzeugt, dass Snmpwalk oder Snmpget das Gewünschte liefern, verpacken Sie die einzelnen Abfragen in ein Skript, das später via Cronjob ausgeführt wird. Snmpwalk bietet noch einige Möglichkeiten, um die Ausgaben zu kürzen. Im Beispielskript monitor.sh (Listing 4) erfolgt die Abfrage mit -Oqs so, dass nur das letzte Element der OID und der zugehörige Wert ausgegeben werden.

Die einzelnen Abfragen verpackt das Skript in einer Funktion, sodass Sie sie nur an einer Stelle ändern müssen, falls sich neue Anforderungen ergeben. Die zu überwachenden Hosts hinterlegen Sie mit IP-Adresse und Beschreibung in einer Textdatei (Listing 5). Die Beschreibung enthält Geräteart und Standort, sodass bei einer Alarmierung auch Mitarbeiter, die nicht an der Installation beteiligt waren, wissen, wo sie suchen müssen. Zu guter Letzt wird monitor.sh regelmäßig in einem Cronjob aufgerufen.

Listing 4

#! /bin/bash
#: Title: monitor.sh
#: Date: 28.01.2015
#: Author: Falko Benthin
#: Version: 1.0
#: Desciption: Sendet SNMP-Abfragen an einzelne APs/Router und loggt Ausgabe mit Zeitstempel für spaetere Auswertungen
#: Options: none
# sendet snmp-Abfragen an einzelne Hosts
function checkMachines() {
  # ipNetToMediaPhysAddress
  snmpwalk -v1 -Oqs -c $ROCOMMUNITY $HOST .1.3.6.1.2.1.4.22.1.3
  # memory_used
  snmpwalk -v1 -Oqs -c $ROCOMMUNITY $HOST .1.3.6.1.2.1.25.2.3.1.6.101
  # CPU-load-1 snmpwalk -v1 -Oqs -c $ROCOMMUNITY $HOST 1.3.6.1.4.1.2021.10.1.5.1
  # CPU-load-5 snmpwalk -v1 -Oqs -c $ROCOMMUNITY $HOST 1.3.6.1.4.1.2021.10.1.5.2
  # CPU-load-15
  snmpwalk -v1 -Oqs -c $ROCOMMUNITY $HOST .1.3.6.1.4.1.2021.10.1.5.3
  # wlan_clients
  snmpwalk -v1 -Oqs -c $ROCOMMUNITY $HOST .1.3.6.1.4.1.2021.255.3.54.1.3.32.1.4
  # ifInOctets
  snmpwalk -v1 -Oqs -c $ROCOMMUNITY $HOST .1.3.6.1.2.1.2.2.1.10
  # ifInUcastPkts
  snmpwalk -v1 -Oqs -c $ROCOMMUNITY $HOST .1.3.6.1.2.1.2.2.1.11
  # ifInDiscards
  snmpwalk -v1 -Oqs -c $ROCOMMUNITY $HOST .1.3.6.1.2.1.2.2.1.13
  # ifInErrors
  snmpwalk -v1 -Oqs -c $ROCOMMUNITY $HOST .1.3.6.1.2.1.2.2.1.14
  # ifOutOctets
  snmpwalk -v1 -Oqs -c $ROCOMMUNITY $HOST .1.3.6.1.2.1.2.2.1.16
  # ifOutUcastPkts
  snmpwalk -v1 -Oqs -c $ROCOMMUNITY $HOST .1.3.6.1.2.1.2.2.1.17
  # ifOutDiscards
  snmpwalk -v1 -Oqs -c $ROCOMMUNITY $HOST .1.3.6.1.2.1.2.2.1.19
  # ifOutErrors
  snmpwalk -v1 -Oqs -c $ROCOMMUNITY $HOST .1.3.6.1.2.1.2.2.1.20
  }
# Verzeichnis fuer Logfiles
LOGDIR="/home/falko/monitorlog"
# community string
ROCOMMUNITY="community"
# date
YEAR=$( date +%Y )
MONTH=$( date +%m )
DAY=$( date +%d )
while read HOST DESC
do
  DATEDIR=$LOGDIR/$YEAR/$MONTH/$DAY
  # Verzeichnis fuer Datum
  if [ ! -d $DATEDIR ]; then
    mkdir -p $DATEDIR
  fi
  # pruefen, ob Host erreichbar ist
  if ! ping -c3 $HOST > /dev/null; then
    if [ ! -e $LOGDIR/$HOST.lastmail.log ] || [ ! $( date -d @$( cat $LOGDIR/$HOST.lastmail.log ) +%d ) = $DAY ]
    then
      printf "Der AP/Router %s, %s ist nicht erreichbar. Bitte pruefen." $HOST "$DESC" | mail -s "AP/Router pruefen" recp1@mustermail.org recp2@mustermail.org recp3@mustermail.org
      echo $( date +%s ) > $LOGDIR/$HOST.lastmail.log
    fi
  else
    # SMTP-Checks und Logging
    checkMachines | \
    while read OUTPUT
    do
      printf "%s %s\n" $( date +%T ) "$OUTPUT" >> $DATEDIR/$HOST.log
    done
  fi
done < machines.txt
exit 0
DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 6 HeftseitenPreis €0,99
(inkl. 19% MwSt.)
KAUFEN
LinuxUser 03/2015 KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS
Deutschland

Hinterlasse einen Kommentar

  E-Mail Benachrichtigung  
Benachrichtige mich zu: