Modul Win SNMP

Hallo liebe Symcon Community,

da ich längere Zeit im Forum nach einer Möglichkeit gesucht habe per SNMP Daten von mein Netzwerk Geräten abzurufen, aber leider nichts brauchbares gefunden hatte. Habe ich mir ein heute mein erstes Modul erstellet :-D. Es dafür da Daten von SNMP mittels OID direkt in Symcon zu übertragen. Es geht ausschließlich auf Windows da ich die Tools von der folgenden Seite verwendet habe:

SnmpSet (Cmd-Line Tool) – Syslog Watcher Website
SnmpGet (Cmd-Line Tool) – Syslog Watcher Website

Daten empfangen klappt schon einmal, morgen (bzw. heute) integriere ich noch die Möglichkeit Daten per SNMp zu ändern und SNMP 3 vollständig zu integrieren.

Hier mal 2 Bilder aus Symcon:

Meine Frage: hat jemand Interesse am Modul, dann würde ich den Link morgen Abend hier zu Verfügung stellen.

P.S.: Laden der Daten die oben in den Bilder zu sehen ist dauert 3-4 sec.
Mit freundlichen Grüßen: Swen

Prinzipielles Interesse ja, aber ich habe sehr schlechte Erfahrungen mit SNMP gemacht. Die Synology-Abfrage hat mir ständig hängende Skripte beschert. Eigentlich steige ich deshalb gerade auf PRTG um, habe aber noch ein SNMP-Skript für den Drucker aktiv, da es bislang sehr stabil lief. Am Wochenende war ich ein paar Tage nicht da, hab deshalb den Drucker abgeschaltet und rums - nach 2 Tagen war IPS gestorben, weil das Skript ins Leere lief. :rolleyes:

Grüße
galleto

Es gibt scheinbar eine native PHP Bibliothek… Vielleicht könnte man auf die aufsetzen?

GitHub - brexis/phpSNMP: A composer version of the phpSNMP library from http://eder.us/projects/phpsnmp/

paresy

galleto
Prinzipielles Interesse ja, aber ich habe sehr schlechte Erfahrungen mit SNMP gemacht. Die Synology-Abfrage hat mir ständig hängende Skripte beschert. Eigentlich steige ich deshalb gerade auf PRTG um, habe aber noch ein SNMP-Skript für den Drucker aktiv, da es bislang sehr stabil lief. Am Wochenende war ich ein paar Tage nicht da, hab deshalb den Drucker abgeschaltet und rums - nach 2 Tagen war IPS gestorben, weil das Skript ins Leere lief.

Grüße
galleto

Also bei mir stirbt kein Symcon, da es ja nicht über PHP SMNP, die Datenerfassung läuft so mit ca. 10 Abfragen pro Sekunde. Werde versuchen das fertige Skript bis zum Wochenende zu Releasen.

@paresy

Sieht interessant aus, ich werde das mal im Laufe dieser nächster Woche bei mir testen, rein weil es mich schon von der Performance Interessiert.

mfg: Swen

Hi Acer90,

habe auf der Arbeit Server Überwachung mittels Logo 8 realisiert. Und gleich der GL IPS aufgeschwätzt :smiley:
Läuft seit heute als Demo und Später wird die Lizenz gekauft.:loveips:

Ich habe hier 4 x APC USV (wie Smart-UPS 3000 RM XL usw.) Alle haben die UPS Network Management Card 2 drin.

Kann ich die Daten irgendwie ins IPS schicken?

In der Einstellungen von APC habe ich nur SNMP zu Auswahl. Kann ich mit deinem Modul mein vorhaben realisieren?

IPS Läuft auf Win Server 2012R2

Gruß

Ja wenn du di OID hast?
Gibt es normalerweise beim Hersteller auf der Seite.

Das umsetzten von auf die Php-SMNP Funktion:
Die Oben angeben ist nehme ich demnächst in angriff. Steht bei mir ganz oben.

Es gibt scheinbar eine native PHP Bibliothek… Vielleicht könnte man auf die aufsetzen?

GitHub - brexis/phpSNMP: A composer version of the phpSNMP library from http://eder.us/projects/phpsnmp/

paresy

So ich bau grade einen SNMP Funktion für alle Betriebssystem, auf Basis der Lib die paresy hier gepostet hat.
Habe dafür das alte SNMP Module von IPS SNMP in IPS Win SNMP Client umbenannt.

Hallo Acer,

ich wäre grundsätzlich an deinem Modul interessiert, ich würde gerne meine 2 Zyxel und Netgear Switch auslesen und ein paar Stati anzeigen :slight_smile: Ich kann gerne was testen, bin aber programmiertechnisch leider keine große Hilfe :eek: Bin auf jedenfall gespannt.

Danke schonmal wieder für die Mühe und Arbeit, die sich die ganzen Modul-Entwickler hier machen!!

Mit der PHP-Class, scheint es super zu laufen.
Mache gute Fortschritte, schau am Sonntag mal hier im Thread vorbei, dann sollte ich eine erste Test Version haben.

Swen

Hört sich gut an :smiley:

Gruß

Jop kann jetzt auch besser Arbeiten, denn die Jungs von JetBrains waren so nett und haben mir eine OpenSource Lizenz zur Verfügung gestellt. :smiley: Dafür gibt’s einen Dickes Danke.

Und schon einmal vorbereiten, denn am Wochenende gibt’s denn viel zum testen

Swen

Soweit klappt das schon einmal super. Mit den Abfragen von SNMP bin fertig.
Bei meiner Test-Instance frage ich 189 Werte ab und benötige dafür 89ms für den durchlauf.
Denke das ich schaffe bis morgen soweit fertig zu werden, dass erste Tests durchgeführt werden können.

Bin aber schon einmal begeistert.:smiley:

Swen

Hört sich ja schon gut an. [emoji106][emoji2]

Gesendet von iPhone mit Tapatalk

So erstmal ein langes Bild:)

Soweit bin jetzt fertig mit dem Module und es kann begonnen werden es zu testen.
Ein paar Sachen vorweg.
In den Nächsten Tagen folgt eine ausgiebige Beschreibung, da das Thema SNMP etwas komplexer ist.
So nun die Kurzfassung für alle die Ahnung von SNMP haben, oder mein kleines Button Tool(„Load Ports“)benutzen wollen.

In der Liste können sowohl OID, oder spezielle Platzhalter eingetragen werden. Es Funktionieren nur OID die aus Zahlen funktionieren, sofern gewünscht bau ich die Textversion ein. Das Format der OID kann mit, oder ohne „.“ starten.
So Können OID´s z.B. aussehen: .[u]1.3.6.1.2.1.1.5.0[/u] , oder 1.3.6.1.2.1.1.5.0.
Die OID 1.3.6.1.2.1.1.5.0 gibt den sysName aus. In meinen Fall HP-2620-24-PoEP.

Hier eine Kleine Liste der Platzhalter.(Nach den „|“ folgt immer die zweistellige Portnummer)

[ul]
[li]PortStatus100|Portnummer -> z.B. PortStatus100|01 Ausgabe: -1, 0, 10, 100[/li][li]PortStatus1000|Portnummer -> z.B. PortStatus1000|01 Ausgabe: -1, 0, 10, 100,1000[/li][li]PortUtilizationRX|Portnummer -> z.B. PortUtilizationRX|01 Ausgabe: Auslastung Recive in 100%[/li][li]PortUtilizationTX|Portnummer -> z.B. PortUtilizationTX|01 Auslastung Transmit in 100%[/li][li]PortUtilizationTRX|Portnummer -> z.B. PortUtilizationTRX|01 Auslastung Transmit u. Recive in 100%[/li][li]PortMbitRX|Portnummer -> z.B. PortMbitRX||01 Auslastung Recive in MBit[/li][li]PortMbitTX|Portnummer -> z.B. PortMbitTX|01 Auslastung Transmit in MBit[/li][/ul]
In der Spalte Convert, kann ein Converter eingetragen werden.
Und die Spalte Speed dient zur Berechnung der Auslastung in %(Angaben in Mbit).

Es ist auch möglich variablen zu setzten, oder einzeln abzurufen.
Hier die Funktionen:


$intanceID = 54321;

$oid = "1.3.6.1.2.1.1.5.0";
$value = "neuer Hostname";
$varid = 12345;
//$type 'i' = integer; 't' = time ticks; 'x' = hex string; 's' = string; 'a' = IP address; 'o' = object ID; 'n' = null value
$type = "s";

IPSSNMP_WriteSNMPbyOID($intanceID, $oid, $value, $type);
IPSSNMP_WriteSNMPbyVarID($intanceID, $varid, $value, $type);

print_r(IPSSNMP_WalkSNMP($intanceID, $oid)); //ausgabe als Array wobei der Key die OID ist.
print_r(IPSSNMP_WalkSNMP($intanceID, $oid)); //ausgabe als Array wobei der Key die OID ist.

//entweder als einzel Abruf 
$oid_singel = "1.3.6.1.2.1.1.5.0";
print_r(IPSSNMP_ReadSNMP($intanceID, $oid_singel)); //ausgabe als Array wobei der Key die OID ist.

//oder als Bulk abruf
$oid_array = ["1.3.6.1.2.1.1.5.0", "1.3.6.1.2.1.1.6.0"];
print_r(IPSSNMP_ReadSNMP($intanceID, $oid_array)); //ausgabe als Array wobei der Key jeweils die OID ist.


Gerne baue ich noch Extras ein.
Bitte soweit Testen.

Achso Speed Modify dient zur richtigen Berechnung des Portspeeds.
der Sollte erstmal grundsätzlich bei 1 bleiben

Swen
P.s. Erhaltbar ist das Module über GitHub - Acer90/SymconModule und in Symcon heißt es IPS SNMP Client.

Hallo Acer,

ich habe deine Modulsammlung aktualisiert und wollte nun die IPS SNMP Instanz hinzufügen.
Dabei bekomme ich aber schon einen Fehler:
Abort Processing during Fatal-Error: Cannot redeclare class snmp error in script …PFAD…\SymnconSnmp\lib\snmp.php on line 53.

Weißt du woran das liegen könnte? Ich habe ein Modul momentan nicht aktuell (SymconMisc), da ich hier manuelle Anpassungen drin habe, das sollte aber nicht stören, oder doch?

Auf den ersten Blick liegt es daran, das nur require statt require_once genutzt wurde.
Und zusätzlich das Modul sich selbst aufruft, anstatt direkt seine Methode.
Beispiel:
SymconModule/module.php at a069a5af8dcf0530af602405a0eaf5061b0ade65 · Acer90/SymconModule · GitHub
$output = $output + IPSSNMP_ReadSNMP($id, $oids);
Anstatt:
$output = $output + $this->ReadSNMP($oids);

Somit wird mehrmals versucht die SNMP-Lib zu laden und weil die Klasse schon deklariert ist gibt es Fehler.
Michael

@Nall-Chan danke für die Info. Ich hab das kurz gefixt.

Probiere es jetzt nochmal bitte.

Top, funktioniert! :smiley:
Ich habe nun testweise zuerst meinen Zyxel GS1910 Switch ausgelesen. Portstatus auslesen funktioniert. Nun muss ich erstmal die anderen OIDs durchsuchen, was mich noch interessiert!

Nur so ich nutze dafür SnmpB
SnmpB download | SourceForge.net

Welche OID´s brauchst du denn?

Icha hatte meinen Switch mal mit BytShere OidView ausgelesen.
Bei genauer Betrachtung, eigentlich hast du schon alles eingebaut, was sinnvoll ist. Ich hatte gerade noch überlegt, ob es für mich interessant ist die übertragenen GBit oder so zu sehen (also seit dem letzten Reset/Restart) aber eigentlich bringt das nix, die Übertragungsrate ist aussagekräftiger.
Die Übertragungsrate in % berechnet sich auf den jeweiligen Anschluss und die Geschwindigkeit des angeschlossenen Geräts, korrekt?

Danke für das Modul!! :smiley: Muss ich nur noch in die Visu einbauen… :loveips: