Hallo,
ich habe eben einen PR gegen Develop gestellt, das neue Plugin mit aufzunehmen.
Danke Euch.
Ankündigung
Einklappen
Keine Ankündigung bisher.
Status Netzwerkgeräte via SNMP bzw MIBS
Einklappen
X
-
Hallo,
wieder mal eine Wortmeldung von mir.
Zitat von Onkelandy Beitrag anzeigenWenn man das alles in ein feines Plugin gießen könnte, wär das ne runde Sache..Mal sehen, ob und wann ich dazu komm oder vielleicht magst dich ja noch reinhängen
Offen ist noch die Fertigstellung des WebInterfaces. Das habe ich bislang nicht hin bekommen, wäre für Hilfe dankbar.
Wenn das WebIF steht, möchte ich einen PR stellen, um das Plugin mit in den nächsten Release zu bekommen.
Rückmeldung / Verbesserung gern an mich.
Ich mache dann später noch einen eigenen Thread dafür.
Beste Grüße
PS
WebIF funktioniert nun auch. Update ist einem Github (Link oben) ;o)
Einen Kommentar schreiben:
-
Zitat von Onkelandy Beitrag anzeigenDanke für den coolen Ansatz, finde ich sehr spannend. Für mich ist das snmp Thema komplett neu, aber die Möglichkeiten erscheinen mir cool. Habe gesehen, dass für die Daten eigene MIB Dateien angeboten werden. Für QNAS zB: http://docs.qnap.com/esnas/2.0.0/en/...3EF004A16.html
Oder hier eine große Sammlung: http://mibs.snmplabs.com/asn1/
Nun gibt es dafür wohl auch einen Parster, der die Dateien für pysnmp sauber aufbereitet: http://snmplabs.com/pysmi/library-reference.html
Wenn man das alles in ein feines Plugin gießen könnte, wär das ne runde Sache..Mal sehen, ob und wann ich dazu komm oder vielleicht magst dich ja noch reinhängen
Einen Kommentar schreiben:
-
Danke für den coolen Ansatz, finde ich sehr spannend. Für mich ist das snmp Thema komplett neu, aber die Möglichkeiten erscheinen mir cool. Habe gesehen, dass für die Daten eigene MIB Dateien angeboten werden. Für QNAS zB: http://docs.qnap.com/esnas/2.0.0/en/...3EF004A16.html
Oder hier eine große Sammlung: http://mibs.snmplabs.com/asn1/
Nun gibt es dafür wohl auch einen Parster, der die Dateien für pysnmp sauber aufbereitet: http://snmplabs.com/pysmi/library-reference.html
Wenn man das alles in ein feines Plugin gießen könnte, wär das ne runde Sache..Mal sehen, ob und wann ich dazu komm oder vielleicht magst dich ja noch reinhängen Sisamiwe
Einen Kommentar schreiben:
-
Hallo,
heute kann ich mal hier was beisteuern.
Ich habe eine Logik erstellt, mit der man den Status von Netzwerkgeräten via SNMP erfassen kann.
Das geht so:
1) Aktivieren des SNMP-Dienstes auf dem Netzwerkgerät; Die Logik funktioniert (erstmal) nur mit dem Protokoll V1/V2
2) Installation der Linux/Debian Pakete und Reboot:
Code:sudo apt-get install snmpd sudo apt-get install snmp sudo reboot
Bei meiner QNAP NAS kann ich mit
Code:snmpget -v 2c -c PASSWORD -O qv NASIPADDRESS 1.3.6.1.4.1.24681.1.2.11.1.3.1
Code:"37 C/98 F"
4) Installation des entsprechendes Python Paketes:
Code:sudo pip3 install pysnmp
Die Logik prüft alle item.yaml im item Ordner nach Items mit dem spezifischen Attribut "oid" und fragt die in dem Attribut angegebene OID ab und weist das Abfrageergebnis als str dem entsprechenden Items zu. Die Parameter für IP-Adresse, Port und Gruppe des abzufragenden Netzwerkgerätes müssen beim Parent-Item angelegt sein. (Siehe Beispiel)
Die Logik rufe ich bei Neustart und dann alle 10 min mit cycle auf.
logik.py
Code:#!/usr/bin/env python3 # snmp_1.py # Abfrage von OIDs vie SNMP mit Scan der Items nach Attribut "oid". from pysnmp.entity.rfc3413.oneliner import cmdgen import time logger.info("Logik SNMP: by :" + trigger['by'] ) #logger.info("Logik SNMP: source :" + trigger['source'] ) #logger.info("Logik SNMP: dest :" + trigger['dest'] ) #logger.info("Logik SNMP: value :" + trigger['value'] ) #SNMP_HOST = '192.168.2.9' #SNMP_PORT = 161 #SNMP_COMMUNITY = 'meins' for item in sh.find_items('oid'): # findet alle Items die ein Attribut 'oid' besitzen oid = item.conf['oid'] snmp_host = item.return_parent().conf['snmp_host'] snmp_port = item.return_parent().conf['snmp_port'] snmp_community = item.return_parent().conf['snmp_community'] #logger.info(oid) #logger.info(snmp_host) #logger.info(snmp_port) #logger.info(snmp_community) cmdGen = cmdgen.CommandGenerator() errorIndication, errorStatus, errorIndex, varBinds = cmdGen.getCmd( cmdgen.CommunityData(snmp_community), cmdgen.UdpTransportTarget((snmp_host, snmp_port)), (oid) ) # Check for errors and print out results if errorIndication: logger.info(errorIndication) else: if errorStatus: logger.info('%s at %s' % ( errorStatus.prettyPrint(), errorIndex and varBinds[int(errorIndex)-1] or '?' ) ) else: for name, val in varBinds: #logger.info('%s = %s' % (name.prettyPrint(), val.prettyPrint())) item(str(val))
Es wird pro OID ein Item mit dem entsprechendem Attribut angelegt. Das Formatieren (Umwandeln von str nach float, kürzen etc) erfolgt direkt in einem eval im jeweiligen Item. Anbei meine Items für eine QNAP NAS.
item.yaml
Code:%YAML 1.1 --- snmp: ts251: snmp_host: '192.168.2.9' snmp_port: '161' snmp_community: 'meins' cpu_temp: name: CPU-Temperatur in °C type: num oid: "1.3.6.1.4.1.24681.1.2.5.0" #34 C/93 F eval: float(value[:2]) cpu_usage: name: CPU-Auslastung [0-1] type: num oid: "1.3.6.1.4.1.24681.1.2.1.0" #4.40 % eval: float(value[:-2] / 100) system_temp: name: SystemTemperatur in °C type: num oid: "1.3.6.1.4.1.24681.1.2.6.0" #34 C/93 F eval: float(value[:2]) RAM_size: name: RAM in MB type: num oid: "1.3.6.1.4.1.24681.1.2.2.0" #3839.9 MB eval: float(value[:-3]) RAM_free: name: freier RAM in MB type: num oid: "1.3.6.1.4.1.24681.1.2.3.0" #2785.5 MB eval: float(value[:-3]) RAM_usage: name: RAM belegt [0-1] type: num eval: (sh...RAM_size() - sh...RAM_free()) / sh...RAM_size() eval_trigger: - ..RAM_size - ..RAM_free # hdnum: # name: Anzahl der HDDs # type: num # oid: "1.3.6.1.4.1.24681.1.4.1.1.1.1.5.1.0" # #2 # eval: float(value) hdd1_temp: name: HDD1 Temperatur in °C type: num oid: "1.3.6.1.4.1.24681.1.2.11.1.3.1" #33 C/91 F eval: float(value[:2]) hdd2_temp: name: HDD2 Temperatur in °C type: num oid: "1.3.6.1.4.1.24681.1.2.11.1.3.2" #31 C/87 F eval: float(value[:2]) hdd1_status: name: HDD1 Status type: str oid: "1.3.6.1.4.1.24681.1.2.11.1.7.1" #GOOD eval: str(value) hdd2_status: name: HDD2 Status type: str oid: "1.3.6.1.4.1.24681.1.2.11.1.7.2" #GOOD eval: str(value) fan_rpm: name: Lüfterdrehzahl in rpm type: num oid: "1.3.6.1.4.1.24681.1.2.15.1.3.1" #1163 RPM eval: float(value[:-4]) # fan_count: # name: Anzahl der Lüfter # type: num # oid: "1.3.6.1.4.1.24681.1.2.14.0" # #1 # eval: float(value) disk_size: name: Speicher in MB type: num oid: "1.3.6.1.4.1.24681.1.2.17.1.4.1" #1.37 TB eval: float(value[:-3]) * 1024 disk_free: name: Freier Speicher in MB type: num oid: "1.3.6.1.4.1.24681.1.2.17.1.5.1" #1.37 TB eval: float(value[:-3]) * 1024 disk_usage: name: HDD belegt [0-1] type: num eval: (sh...disk_size() - sh...disk_free()) / sh...disk_size() eval_trigger: - ..disk_free - ..disk_size # volume_count: # type: num # oid: "1.3.6.1.4.1.24681.1.2.16.0" # #1 # eval: float(value) volume1_status: name: Status des Volume1 type: str oid: "1.3.6.1.4.1.24681.1.2.17.1.6.1" #Ready eval: str(value) netuptime: type: num oid: "1.3.6.1.2.1.1.3.0" #9311124 eval: float(value) sysuptime: type: num oid: "1.3.6.1.2.1.25.1.1.0" #68919188 eval: float(value) model: type: str oid: "1.3.6.1.4.1.24681.1.2.12.0" #TS-251 eval: str(value) name: type: str oid: "1.3.6.1.4.1.24681.1.2.13.0" #0x4e41532d54533235310a | NAS-TS251 firmware: type: str oid: "1.3.6.1.2.1.47.1.1.1.1.9.1" #0x342e332e360a | 4.3.6
Viel Spaß bei der Anwendung.
Einen Kommentar schreiben:
-
Ja, ich habe da schon mal damit experimentiert um bspw. das NAS auszulesen. Hat es aber nie über Beta mangels Zeit hinausgeschafft worauf ich es eingestampft habe. Ideen und Featurerequests gab es auch schon hier im Forum, aber dann hat man nix mehr gehört. Selbst ist der Mann würde ich sagen.
- 1 Likes
Einen Kommentar schreiben:
-
Status Netzwerkgeräte via SNMP bzw MIBS
Hallo,
gab es schon mal Gedanken/Überlegungen für ein Plugin / Logic um den Status von Netzwerkgeräten über SNMP bzw, MIBS zu erfassen und in shNG einzubinden?
Soweit ich recherchiert habe, gibt es ein Debian Paket für SNMP sowie ein Python Modul, um die Daten abzufragen.
Danke für Eure Rückmeldungen.Stichworte: -
Einen Kommentar schreiben: