Monitoring mit SNMP und MRTG Teil 1/2

  • Monitoring mit SNMP und MRTG Teil 1/2
    (Zurück zum Inhaltsverzeichnis)
    Beginnen wir mit der Einrichtung von SNMP

    Das Monitoring besteht aus 2 Teilen, die Software, die die Daten liefert (hier SNMP)
    und die Software, diese Werte grafisch aufbereitet (MRTG).
    Bei den zu überwachenden Rechnern (Client) reicht SNMP,
    bei dem auswertenden Rechner(Server) muss beides installiert werden.
    Abrufbar sind die Diagramme dann über eine Webseite.

    Allgemeines:
    Betriebssystem: Debian Jessie
    Alle Namen und Adressen sind frei erfunden, belästigt also meinen Honeypot nicht so viel. ;)

    SNMP installieren und einrichten
    Hier geht es darum, Werte von anderen SNMP-fähigen Rechnern abzufragen.
    Das können Zahlen sein, aber auch Textstrings mit Angaben über den angefragten Rechner.
    Eine gute Anleitung und Beispiele findet man hier bei: http://www.satsignal.eu

    Hintergrundwissen
    MRTG wertet hier nur Integerzahlen aus. Wenn man also eine Temperatur von 23.54° übermitteln will,
    muss man auf den Client den Zahlenwert mit 100 multiplizieren, so das der Wert 2354 übermittelt wird.
    In MRTG kann man diesen Wert mittels Factor und YTicsFactor (in diesem Beispiel mit 0.01) wieder auf realistische Werte reduzieren.
    Allerdings zeigt Legend(I,O,1,2,3,4) nur eine Nachkommastelle an.
    Außerdem speichert MRTG den Integerwert in seiner Historie.

    Installation
    Dazu muss man erstmal SNMP auf allen Raspberrys nachinstallieren:

    Code
    sudo apt install snmpd snmp snmp-mibs-downloader bc


    danach mit:

    Code
    sudo vi /etc/snmp/snmpd.conf


    diese Zeile:

    Code
    agentAddress udp:127.0.0.1:161


    in:

    Code
    agentAddress 161


    ändern. Weiter geht es nach der Zeile mit dem Inhalt:

    Code
    #rocommunity public localhost


    darunter wird folgende Zeile eingefügt:

    Code
    rocommunity public


    Hier noch eine Warnung zum dem Standard-Wert: "public". Ihn sollte man jetzt ändern,
    er ist standardmäßig vorhanden und sollte grundsätzlich immer geändert werden.
    Denn jeder (bösartige) Hacker kennt diesen Wert und kann damit das System ausforschen.
    Außerdem ist es jetzt noch einfach, denn wenn erst mehrere Rechner überwacht werden ist das nachträgliche Ändern ziemlich mühsam.
    Nur ein Beispiel:

    Code
    snmpwalk -On -v 2c -c public 127.0.0.1 | less

    Spezielles zu I2C
    Das war die Grundausstattung, jetzt kommt ein Tip, der mich eine Menge Zeit gekostet hat
    (Dank an David Taylor von Satsignal), denn wenn man I2C-Werte abfragen will,
    muss man SNMP noch einer Spezialbehandlung unterziehen:

    Code
    sudo adduser pi i2c
    sudo adduser snmp i2c


    sonst kann snmp nicht auf den i2c zugreifen. Zusätzlich muß man in /etc/snmp/snmpd.conf nach der Zeile:

    Code
    agentAddress 161


    die Zeile:

    Code
    agentgroup i2c


    einfügen. Und nicht vergessen, SNMP neustarten:

    Code
    sudo /etc/init.d/snmpd restart

    Erster Test mit Load 1min

    Code
    snmpget -v1 -c public 192.168.2.2 .1.3.6.1.4.1.2021.10.1.3.1


    ergibt eine mögliche Antwort(Eigene IP verwenden):

    Code
    iso.3.6.1.4.1.2021.10.1.3.1 = STRING: "0.60"

    Eigene Scripte einbinden Hier die CPU-Temperatur
    Dazu muss man in der

    Code
    /etc/snmp/snmpd.conf

    (gegen Ende) eine weitere Zeile hinzufügen:

    Code
    pass .1.3.6.1.2.1.25.1.8 /bin/sh /usr/local/bin/snmp-cpu-temp


    Und folgendes Bash-Script

    Code
    /usr/local/bin/snmp-cpu-temp

    erstellen

    Bash
    #!/bin/bash
     echo .1.3.6.1.2.1.25.1.8
     echo gauge
     cat /sys/class/thermal/thermal_zone0/temp
     exit 0


    Mit chmod 0755 ausführbar machen und snmp neu starten. Dann ein erster Test:

    Code
    snmpget -v1 -c public 192.168.2.2 .1.3.6.1.2.1.25.1.8


    sollte etwa so etwas ergeben:

    Code
    iso.3.6.1.2.1.25.1.8 = Gauge32: 51540


    Übersetzt: Die CPU-Temperatur beträgt 51.54 Grad

    Das war erstmal die Grundausstattung für SNMP, alles weitere baut darauf auf.

    Tip(s)
    Geschwätzigkeit von snmp abstellen
    Leider hat snmp die Eigenschaft, das syslog-File massiv zu vergrößern.
    Für das gelegentliche debuggen ist das okay, auf die Dauer leidet die SD-Karte auf dem Raspberry.

    Code
    sudo vi /etc/snmp/snmpd.conf


    Am Ende des Files folgende Zeile eintragen:

    Code
    dontLogTCPWrappersConnects true


    Abspeichern und snmp neu starten

    Edit: Fiptehler zusätzliche Links

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!