net-snmp - SNMP Agent für VU+ Boxen

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    • net-snmp - SNMP Agent für VU+ Boxen

      Hallo Gemeinde

      Nachdem ich aus dem net-snmp Forum den entscheidenden Hinweis bekommen habe, habe ich mittels der Entwicklungsumgebung, die von VU+ geliefert wird, erfolgreich den SNMP Agenten bauen können (Stichwort: "bitbake").

      Im Minimalfall müssen die 3 ipk-Pakete (entweder "mips32"; für die Solo 4K "armv7" nehmen) aus dem Anhang in diesem Post installiert werden. Die kompletten net-snmp Pakete (diese enhalten noch mehr "Module", die normalerweise nicht benötigt werden) sind im Post #2 zu finden. Dazu die Dateien mit ftp auf die Box in das Verzeichnis /tmp kopieren, dann:

      Für ARM:
      cd /tmp
      opkg install libnetsnmp30_5.7.2.1-r0_armv7ahf-vfp-neon.ipk
      opkg install net-snmp-server-snmpd_5.7.2.1-r0_armv7ahf-vfp-neon.ipk
      opkg install net-snmp-server-snmptrapd_5.7.2.1-r0_armv7ahf-vfp-neon.ipk

      Für Mips entsprechend:
      cd /tmp
      opkg install libnetsnmp30_5.7.2.1-r0_mips32el.ipk
      opkg install net-snmp-server-snmpd_5.7.2.1-r0_mips32el.ipk
      opkg install net-snmp-server-snmptrapd_5.7.2.1-r0_mips32el.ipk

      (oder, per VTI Panel, je nach Vorliebe)

      Um alle MIBs "sehen" zu können, ist im Config File /etc/init.de/snmpd.conf folgende Zeile von:
      access MyROSystem "" any noauth exact system none none
      in:
      access MyROSystem "" any noauth exact all none none
      zu ändern.

      Das snmpd-Binary liegt dann in /usr/sbin/snmpd, das Config-File unter /etc/snmp/snmpd.conf, das Startscript in /etc/init.d, alles Standard soweit.
      Damit der snmpd auch bei System-Neustart mit gestartet wird, als root user einen entsprechenden Softlink anlegen:
      cd /etc/rc3.d
      ln -s ../init.d/snmpd S88snmpd
      Gestartet werden kann der snmpd dann mit /etc/init.d/snmpd start.

      Es wird so ziemlich alles unterstützt, was die MIBs hergeben. Ein paar Screenshots, wie soetwas aussehen kann (je nachdem, welches SNMP Tool als 'Manager' genutzt wird), habe ich hier mal angehängt.

      SNMP - Was zur Hölle ist das?
      Spoiler anzeigen
      SNMP ist die Abkürzung für "Simple Network Management Protocol". Es ist ein (relativ gesehen) ur-alter Standard, um das Überwachen von Netzwerken (Router, Switches, Bridges, Firewalls, ...), Servern (Anwendungsserver, Fileserver, Webserver, ...) und Workstations (PC, Laptop, ...) zu ermöglichen.
      Der große Vorteil von SNMP ist seine Standardisierung. So ziemlich alles, was einen Netzwerkadapter hat, kann potentiell SNMP unterstützen. Laptop, Server, Kaffemaschine. Sobald es das tut, kann man es auch mit "SNMP Management Tools" überwachen.
      Mit "überwachen" sind im Übrigen 2 Dinge gemeint:
      1. "Taktisches" Überwachen: wenn ich z.B. wissen möchte: "Wie ist die CPU Auslastung gerade jetzt, in diesem Moment?"
      2. "Strategisches" Überwachen: wenn ich z.B. wissen möchte: "Wann wird meine Festplatte voll sein?" oder "Wie ist meine CPU Auslastung über den Tag/die Woche/den Monat gesehen?"
      Der erste Anwendungsfall ist zum Einen nicht so spannend und relativ aufwändig (ist z.B. schneller gemacht mit Kommandozeile, z.B. "top") zum Anderen gibt dafür meistens andere Tools oder Funktionen (auch im VTI, z.B. die diversen Status Ansichten, oder eben die Kommandozeile).
      Der zweite Anwendungsfall hingegen ist sehr spannend und eigentlich nicht wirklich durch eine andere Technologie lösbar. Die Langzeitüberwachnung von Parametern kann sehr aufschlussreich sein und Probleme lösen, die man anders gar nicht lösen kann oder gar nicht erst erkennt.
      Darüber hinaus kann man per SNMP auch Problemfälle melden (mittels sogenannter "Traps"), z.B. Stromversorgungsausfall, Neustart eines Systems, Fehler auf dem Netzwerk, etc.

      SNMP ist seit mindestens 2 Dekaden totgesagt. Aber lasst euch nicht beirren: es lebt! Aber sowas von! Ich glaube auch nicht, dass es irgendwann wirklich sterben wird. Da sich IP Netzwerke immer mehr ausbreiten, wird es - ganz im Gegenteil - immer wichtiger werden und sich mehr und mehr verbreiten. :crystal2:

      Und "net-snmp"? Was ist das?
      Spoiler anzeigen
      net-snmp ist eine Art "SNMP Baukasten", bestehend aus einem SNMP Agent und einigen zugehörigen SNMP Tools. Es ist eigentlich ein Projekt einer Universität (Carnegie-Mellon), was sich über die Jahre zu einer Standard SNMP Implementierung gemausert hat. Praktisch jedes Unix benutzt diese Implementierung, der Quellcode ist offen und es gibt eine breite Community. Der Agent ist ausgereift, leicht erweiterbar (so, dass er z.B. auch Aktionen per Scripts oder Code ausführen kann) und weit verbreitet.
      Auch diverse WLAN APs, Switches für den Heimgebrauch benutzen net-snmp. In früheren Jahren hiess er ucd-snmp, machmal findet man diese Bezeichnung noch.

      Und wie funktioniert jetzt SNMP?
      Spoiler anzeigen

      Ok, machen wir uns an die Arbeit! SNMP versteckt sich immer hinter obskuren Abkürzungen und technischen Definitionen, aber nur keine Angst, das sind alles irgendwie nur Nebelkerzen! Im Grunde ist SNMP total einfach. Ich versuche es mal "in einer Nußschale" zu erklären:

      Crayfish schrieb:

      Ein SNMP Agent (der auf dem zu überwachenden Gerät sitzt) beantwortet Anfragen eines SNMP Managers. Der Manager fragt: "Wie hoch ist die Auslastung deiner CPU?" Der Agent antwortet: "16". Und das Ganze passiert über ein eigenes Protokoll, eben das Simple Network Management Protokoll.
      Voilà! Einfach, oder? ;)

      Naja, wie mit allem in der IT, kann auch das beliebig komplex werden, aber machen wir mal ein Beispiel. Nehmt euch ein Linux System zur Hand, installiert euch "net-snmp" drauf. Üblicherweise enthält das den Agenten, sowie die Kommandozeilen-Tools. Started den snmpd (den Agenten), normalerweise mit /etc/init.d/snmpd start und dann könnt ihr auf der Kommandozeile mal folgendes probieren:
      user@linux:> snmpget -c public -v 1 127.0.0.1 1.3.6.1.2.1.1.1
      Als Antwort solltet ihr etwas ähnliches wie dies erhalten:
      SNMPv2-MIB::sysDescr.0 = STRING: Linux raspi 4.1.19-v17+ #858 SMP Tue Mar 15 15:56:00 GMT 2016 armv7l
      Kurz mal erläutert:
      snmpget -> eines der SNMP Tools, die mit net-snmp mitkommen. Es ermöglicht einen Agenten nach einer ganz bestimmten Information zu fragen.
      -c public -> es gibt mehrere Sicherheitsmechanismen in SNMP, der sogenannte "Community String" (das ist eigentlich ein Passwort) ist der erste/älteste dieser Mechanismen. Nur wenn ich der SNMP Anfrage den richtigen Community String mitgebe, antwortet der Agent.
      -v 1 -> es gibt mehrere SNMP Versionen (1, 2, 2c und 3). Wirklich im Einsatz sind nur 1, 2c und 3. 1 wird von allem und jedem unterstützt, 3 hat diverse Sicherheitsmechanismen eingebaut (u.a. Verschlüsselung von Community Strings oder auch des ganzen SNMP Paketes).
      127.0.0.1 -> eure IP Adresse, in diesem Fall fragt ihr gerade den SNMP Agenten des Localhosts nach einer bestimmten Information.
      1.3.6.1.2.1.1.1 -> die "OID", die wir hier abfragen wollen. OID steht für "Object Identifier" und ist standardisiert. Diese OID steht für "sysDescr", also etwa "System Descriptor" oder "System Description". D.h., egal welches System ihr anfragt, bei dieser OID kommt immer eine Beschreibung des Systems, auf dem dieser Agent gerade läuft. In meinem Beispiel hier oben war es ein Raspberry Pi B+.
      SNMPv2-MIB -> Das ist die MIB, welche die angefragte Information enthält. Auf Linux-Systemen findet man sie unter /usr/share/snmp/mibs/ und sie heisst dort: SNMPv2-MIB.txt.
      sysDescr.0 -> Das ist der Name der OID, welche hier zurückgeliefert wird. Es entspricht also "sysDescr" der OID "1.3.6.1.2.1.1". Es wird hier immer eine ".0" angehängt, um darzustellen, dass es sich hier nicht um einen Index handelt. (Ein Index ist dann notwendig, wenn angezeigt werden soll, dass ein System z.B. 2 CPUs hat, dann bekommt die erste CPU den Index .1 und zweite den Index .2). Danach wird angegeben, welcher Datentyp diese OID ist (in diesem Fall String. Nach dem Doppelpunkt folgt der eigentliche Wert der OID (Linux raspi...armv7)

      Die OIDs sind in sogenannten MIBs (Management Information Base) definiert. Dafür gibt es eine eigene Schreibweise/Notation (die "ASN.1" - Abstract Syntax Notation 1), die das Ganze eben so schwierig erscheinen lässt. Damit Agent und Management Server kommunizieren können, müssen - logischerweise - beide über die MIBs informiert sein. D.h., der Agent muss sie implementiert haben (z.B. "Was muss ich tun, wenn mich jemand nach 1.3.6.1.2.1.1.1 fragt?" und der Management Server muss wissen, welche MIBs es überhaupt gibt, um sie abfragen zu können.

      Und jetzt?
      Spoiler anzeigen

      Tja, jetzt braucht ihr noch ein SNMP Management System, damit ihr die Informationen des SNMP Agenten auf eurer VU+ Box sinnvoll nutzen könnt. Solch ein Management Tool fragt regelmäßig die SNMP Objekte ab, speichert sie meist in einer Datenbank und erstellt euch daraus hübsche Grafiken. Dafür gibt es eine ganze Reihe von Möglichkeiten, die ich hier kurz erläutere. In Kürze gibt es auch eine Beispiel-Implementierung, ich muss nur erst meinen Garten machen! :)

      Welche SNMP Management Tools gibt es denn so?
      Spoiler anzeigen

      Zur Begriffsklärung: Es gibt diverse "SNMP Tools" (im Gegensatz zu "SNMP Management Tools"). SNMP Tools sind z.B. "snmpget" aus obigem Beispiel, oder ein MIB Browser. Ein SNMP Management Tool dagegen sammelt langfristig Daten mittels SNMP und bereitet sie auf. Ein "SNMP Management Tool" enthält dazu mehrere "SNMP Tools".

      Freeware Tools
      MRTG - Multi Router Traffic Grapher
      MRTG sammelt statistische Daten und erstellt HTML Seiten, in denen die Grafiken angesehen werden können. Es ist schon einiges an Arbeit vorbereitet, z.B. werden Statistiken zur Interface- oder Festplatten-Auslastung pro Tag, Woche, Monat und Jahr erstellt.

      Nagios
      Ist sehr weit verbreitet, und im Kern auch Open Source. Es gibt darüber hinaus zahllose "Nagios-Derivate", wo Firmen auf Basis von Nagios kommerzielle Paket anbieten.

      Cacti
      Cacti ist eigentlich kein SNMP Tool, sondern ein Visualisierungstool. Es soll hier jedoch genannt werden, weil es sehr einfach und trotzdem mächtig ist und aus vorhandenen RRD Datenbanken (z.B. von MRTG erstellt) anschauliche Grafiken erstellen kann.

      Big Brother
      Big Brother ist ursprünglich zur Server- und Applikations-Überwachung gedacht. Z.B.: Prozessüberwachung, wenn ein Prozess stirbt, melde es, evtl. Neustart etc. BB mittlerweile kommerziell, zunächst durch von Quest, dann von Dell geschluckt. Vielleicht gibt es noch eine "freie" Version, bin mir nicht sicher.

      Kommerzielle Tools
      Am weitesten verbreitet ist wahrscheinlich HP NodeManager, einfach weil es oft mit der Hardware mitgeliefert wurde. Vielleich kennt der eine oder andere auch Cisco Works. Daneben gibt es noch viele interessante Tools, z.B. CA Spectrum, IBM Netcool/Tivoli, Splunk und viele andere.


      Beispiel Implementierung einer SNMP Management Station für VU+
      Spoiler anzeigen
      Hier werde ich mir bei Gelegenheit mal einen Raspi o.ä. nehmen und eine Referenz-Implementierung für sowas überlegen. Viele Ideen habe ich schon! :)


      Update 14.10.2016
      Neue ARM (Solo 4k) Version 4.7.3 hier angehängt (mips kommt noch)



      Viel Spaß damit!
      Crayfish

      PS: gerne nehme ich Rückmeldungen entgegen, am liebsten wenn es klappt ;)
      PPS: ein Danke für die durchgemachten Nächte, nehme ich auch gerne entgegen! ;)
      PPPS: Wenn es soweit läuft, kann ja gerne einer der Admins das auf den Feed legen.
      PPPPS: Die Bilder sind mit einem SNMP Management Tool gemacht, da kommt dann, was immer ihr benutzt, zum Tragen.
      Dateien

      Dieser Beitrag wurde bereits 46 mal editiert, zuletzt von crayfish ()

    • Und hier die Gesamtpakete, dort sind alle Module enthalten.

      Die benötigten Module, um einen lauffähigen SNMP Agenten zu bekommen sind:
      libnetsnmp30: die benötigten Libraries
      net-snmp-server-snmpd: das ist der snmpd (SNMP Agent)
      net-snmp-server-snmptrapd:

      Die optionalen Module sind:
      net-snmp:
      net-snmp-client:
      net-snmp-dbg:
      net-snmp-dev: um Erweiterungen für den Agenten zu Entwickeln
      net-snmp-mibs:
      net-snmp-staticdev:

      Crayfish
      Dateien

      Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von crayfish ()

    • Danke für den Hinweis. Ich habe in Post #1 mal etwas verfasst, hoffentlich auch für den "nicht initiierten" verständlich und werde es auch in der Zukunft immer mal wieder überarbeiten!

      :thumbup: :thumbsup:

      Crayfish

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von crayfish ()

    • Hallo Crayfish,

      vielen Dank für die Dateien, ich habe sie auf der Solo2 installiert und es läuft super.....
      Das ganze könnte im Feed mit aufgenommen werden.


      Grüsse

      Sepultura
      Dateien
      • snmpd.jpg

        (336,99 kB, 228 mal heruntergeladen, zuletzt: )
    • Im Post #1 sind es kommerzielle Tools (CA Spectrum und CA Performance Management), nichts für den Heimgebrauch.

      Ich stimme zu, die meisten Freeware Tools in dem Bereich brauchen eine Menge Handarbeit, damit sie vernünftig aussehen. Ich sehe da auch relativ wenig Entwicklung.

      Mein Vorschlag wäre: guck dir mal check_mk an, darüber wollte ich (sobald ich wieder etwas Zeit habe) auch mal ein Tutorial machen. Ist aber eher ein "System Mgmt" (Server an/aus, Prozess da/nicht da, etc...), ein Big Brother Derivat, soviel ich verstanden habe. Auf meiner To Do Liste wäre dann auch noch Icinga; OpsView sieht auch interessant aus.
      Problem ist halt immer, sobald es "brauchbar" wird, wird es auch kommerziell :/

      *spoiler_on* Vielleicht fällt mir ja auch noch eine ganz andere Lösung ein... *spoiler_off* :thumbup:

      Crayfish
    • Hi,

      ich habe alles lt. Anleitung auf meiner Solo SE V2 installiert, aber sobald ich den Agent starten will bekomme ich die Fehlermeldung:

      pcilib: Cannot open /proc/bus/pci

      Hat jemand eine Idee?
    • Welche VTI Version hast du drauf? Wie startest du den Net-SNMP Agenten? Alles so, wie oben (unter MIPS) angegeben?

      Steckt irgend etwas besonderes an der Solo dran (z.B. WLAN Stick)? Es gibt (unter anderem) auf stackoverflow.com einen möglichen Fix, der da sagt:

      in: /etc/snmp/snmpd.conf die folgende Zeile ändern von:

      Quellcode

      1. agentAddress udp:161,udp6:[::1]:161

      auf:

      Quellcode

      1. agentAddress udp:10.0.1.5:161,udp6:[::1]:161

      wobei 10.0.1.5 natürlich die IP Adresse deiner Solo sein muss.


      Anscheinend ist das auch im Net-SNMP bekannt aber gefixt. Momentan widersetzt sich jedoch die 5.7.3 Version für die MIPS meinen Compile-Versuchen. Irgendwas stimmt da nicht, ich bin dran. Für die ARM hatte ich es kürzlich schon gemacht. Ich hänge mich nochmal dahinter.





      Crayfish

      Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von crayfish ()

    • Hallo,

      Ich denke im Post#1 ist ein Schreibfehler fürs installieren. Da gehört statt "...mipsel32..." "...mips32".
      Dann habe ich das 1. Modul installieren können. Bei 2 und 3 kommt diese Fehlermeldung:


      Quellcode

      1. root@vusolo2:/var/volatile/tmp# opkg install libnetsnmp30_5.7.2.1-r0_mips32el.ipk
      2. Installing libnetsnmp30 (5.7.2.1-r0) on root.
      3. Installing libpci3 (3.3.1-r0) on root.
      4. Downloading: libpci3_3.3.1-r0_mips32el.ipk
      5. Configuring libpci3.
      6. Configuring libnetsnmp30.
      7. root@vusolo2:/var/volatile/tmp# opkg install net-snmp-server-snmpd_5.7.2.1-r0_mips32el.ipk
      8. Installing net-snmp-server-snmpd (5.7.2.1-r0) on root.
      9. Collected errors:
      10. * satisfy_dependencies_for: Cannot satisfy the following dependencies for net-snmp-server-snmpd:
      11. * net-snmp-mibs *
      12. * opkg_install_cmd: Cannot install package net-snmp-server-snmpd.
      13. root@vusolo2:/var/volatile/tmp# opkg install net-snmp-server-snmptrapd_5.7.2.1-r0_mips32el.ipk
      14. Installing net-snmp-server-snmptrapd (5.7.2.1-r0) on root.
      15. Collected errors:
      16. * satisfy_dependencies_for: Cannot satisfy the following dependencies for net-snmp-server-snmptrapd:
      17. * net-snmp-server-snmpd *
      18. * opkg_install_cmd: Cannot install package net-snmp-server-snmptrapd.
      19. root@vusolo2:/var/volatile/tmp# cd /etc/init.d/snmpd.conf
      20. -sh: cd: can't cd to /etc/init.d/snmpd.conf
      21. root@vusolo2:/var/volatile/tmp#
      Alles anzeigen

      Habt ihr vielleicht ne Idee?

      VU+ Solo2 mit VTI 9.0.3


      Quellcode

      1. root@vusolo2:~# cat /proc/cpuinfo
      2. system type : BCM7346B2 STB platform
      3. machine : Unknown
      4. processor : 0
      5. cpu model : Brcm4380 Broadcom BMIPS5000 V1.1 FPU V0.1
      6. BogoMIPS : 864.25
      7. cpu MHz : 1305.017
      8. wait instruction : yes
      9. microsecond timers : yes
      10. tlb_entries : 64
      11. extra interrupt vector : yes
      12. hardware watchpoint : no
      13. isa : mips1 mips2 mips32r1
      14. ASEs implemented :
      15. shadow register sets : 1
      16. kscratch registers : 0
      17. core : 0
      18. VCED exceptions : not available
      19. VCEI exceptions : not available
      20. processor : 1
      21. cpu model : Brcm4380 Broadcom BMIPS5000 V1.1 FPU V0.1
      22. BogoMIPS : 651.26
      23. cpu MHz : 1305.017
      24. wait instruction : yes
      25. microsecond timers : yes
      26. tlb_entries : 64
      27. extra interrupt vector : yes
      28. hardware watchpoint : no
      29. isa : mips1 mips2 mips32r1
      30. ASEs implemented :
      31. shadow register sets : 1
      32. kscratch registers : 0
      33. core : 0
      34. VCED exceptions : not available
      35. VCEI exceptions : not available
      Alles anzeigen


      VG

      Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von sunni2002 ()

    • Ok,

      Habe jetzt die 3 Pakete richtig installieren können.
      Habe noch in der /etc/snmp/snmpd.conf diese Zeile lt. Post#1 angepasst auf:
      access MyROSystem "" any noauth exact all none none
      Weiters noch folgende Zeile unten angehängt:

      agentAddress udp:10.170.4.54:161,udp6:[::1]:161

      Jetzt wollte ich mit
      /etc/init.d/snmpd start den Dienst starten und bekomme folgendes:
      root@vusolo2:~# /etc/init.d/snmpd start Starting network management services:pcilib: Cannot open /proc/bus/pci snmpd.

      Mache ich hier noch etwas falsch?
    • Servus - dank dieser Anleitung habe ich den snmpd auch zum laufen bekommen - HERZLICH DANK

      Zwei Fragen:
      - gibt es inzwischen aktuelle(re) Pakete?
      - wie bekomme ich Temperatur und FanSpeed in die Mib (ok, in die Mib ist eine Frage, wie bekomme ich das auf cmdline ebene abgefragt???)

      Vielen Dank schon mal
    • ok, solved:

      snmpd.conf:
      extend fan_speed /bin/cat /proc/stb/fp/fan_speed
      extend max_temperature /home/root/maxtemp.sh

      /home/root/maxtemp.sh
      #!/bin/bash
      /usr/bin/find /proc/stb/sensors -name value | /usr/bin/xargs cat | /usr/bin/sort -n | /usr/bin/tail -n1

      Verbesserungen sind willkommen! :)
    • Hi, bekomme immer den Fehler:
      Spoiler anzeigen


      Installing libnetsnmp30 (5.7.3-r0) on root.
      Installing net-snmp-server-snmptrapd (5.7.3-r0) on root.
      Installing net-snmp-server (5.7.3-r0) on root.
      Configuring libnetsnmp30.
      Collected errors:
      * satisfy_dependencies_for: Cannot satisfy the following dependencies for net-snmp-server-snmptrapd:
      * net-snmp-server-snmpd *
      * opkg_install_cmd: Cannot install package net-snmp-server-snmptrapd.
      * satisfy_dependencies_for: Cannot satisfy the following dependencies for net-snmp-server:
      * net-snmp-server-snmpd *
      * opkg_install_cmd: Cannot install package net-snmp-server.

      hat einer eine Idee, was falsch läuft? Danke für Feedback

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von hgdo ()

    • Welche Box? Welches VTI? (bitte Profil ausfüllen)

      Mit welchem Kommando / wie installierst du was genau?


      Crayfish