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:
Für Mips entsprechend:
(oder, per VTI Panel, je nach Vorliebe)
Um alle MIBs "sehen" zu können, ist im Config File
in:
zu ändern.
Das snmpd-Binary liegt dann in
Damit der snmpd auch bei System-Neustart mit gestartet wird, als root user einen entsprechenden Softlink anlegen:
Gestartet werden kann der snmpd dann mit
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
Und "net-snmp"? Was ist das?
Spoiler anzeigen
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:
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
Als Antwort solltet ihr etwas ähnliches wie dies erhalten:
Kurz mal erläutert:
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
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.
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?
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.
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.
Und "net-snmp"? Was ist das?
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.
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?
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.
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?
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?
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+
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.
Dieser Beitrag wurde bereits 46 mal editiert, zuletzt von crayfish ()