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
    1. sudo apt install snmpd snmp snmp-mibs-downloader bc


    danach mit:

    Code
    1. sudo vi /etc/snmp/snmpd.conf


    diese Zeile:

    Code
    1. agentAddress udp:127.0.0.1:161


    in:

    Code
    1. agentAddress 161


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

    Code
    1. #rocommunity public localhost


    darunter wird folgende Zeile eingefügt:

    Code
    1. 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
    1. 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
    1. sudo adduser pi i2c
    2. 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
    1. agentAddress 161


    die Zeile:

    Code
    1. agentgroup i2c


    einfügen. Und nicht vergessen, SNMP neustarten:

    Code
    1. sudo /etc/init.d/snmpd restart


    Erster Test mit Load 1min

    Code
    1. 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
    1. 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
    1. /etc/snmp/snmpd.conf

    (gegen Ende) eine weitere Zeile hinzufügen:

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


    Und folgendes Bash-Script

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

    erstellen

    Shell-Script
    1. #!/bin/bash
    2. echo .1.3.6.1.2.1.25.1.8
    3. echo gauge
    4. cat /sys/class/thermal/thermal_zone0/temp
    5. exit 0


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

    Code
    1. snmpget -v1 -c public 192.168.2.2 .1.3.6.1.2.1.25.1.8


    sollte etwa so etwas ergeben:

    Code
    1. 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
    1. sudo vi /etc/snmp/snmpd.conf


    Am Ende des Files folgende Zeile eintragen:

    Code
    1. dontLogTCPWrappersConnects true


    Abspeichern und snmp neu starten


    Edit: Fiptehler zusätzliche Links

    Jahrelang wurde gesagt: Das geht nicht, das gibt es nicht und das war schon immer so.
    Und dann kam einer, der wußte das nicht, und hat es dann einfach gemaccht.

    Meine Projekte

    Avatar


    Edited 2 times, last by Jürgen Böhm ().