IPS-Werte via SNMP-Protokoll ermitteln

Hallo Forum :),

ich sitze hier und brüte darüber wie ich mein IPS dazu bekomme einige Variablen via SNMP-Protokoll Werte zuzuweisen.

Konkret geht es darum das mein Hausserver von einer USV (APC) abgesichert ist. Dazu gehört auch ein APC-Agent der auf dem Hausserver läuft (localhost, wie IPS). Dieser kann einige Werte per SNMP liefern, z.B. aktuelle Versorgungsspannung, Akku-Restlaufzeit, Temperatur (im USV-Gehäuse) usw. Diese Werte hätte ich gerne in meiner IPS-Umgebung.

Auf php.net bin ich auf eine Erweiterung gestossen, die z.B. die Befehle snmpget mitbringt. Leider versteht der IPS eigene php-5.1.6.6-Interpreter diese Befehle nicht.

Ich dachte vielleicht gibt es hier auch so was ähnliches wie die class.smtp.php fuer den Bereich SMTP-Mail-Verkehr, läuft ja einwandfrei.
Allerdings bin ich hier nach längerem googeln nicht fündig geworden.

Hat jemand von Euch vielleicht eine Idee, wie ich innerhalb der IPS-Umgebung das SNMP-Protokoll benutzen kann ?

Viele Grüße

Holger

Hallo Holger,
ich stehe gerade vor dem gleichen Problem.

SNMP-Protokoll:
Derzeit hängt meine APC-USV an einem USB Port. Das was ich bisher herausfinden konnte, dass die USV nur mit einer APC Netzwerkkarte (ist ja auch nötig um mit SNMP zu arbeiten) funktioniert.
Also bei meiner APC Version nicht möglich.

APC mit serieller Schnittstelle:
Hier hilft vielleicht diese Seite:Network UPS Tools

APC mit USB Anschluß:
Möglichkeit zum Aufbau:
HID Modul (APC USV auswählen) -> RegisterVariable Modul

Hier konnte ich bis jetzt aber nur folgende Werte/Stati extrahieren:

[ul]
[li]USV = online (true/false)
[/li][li]USV = auf Batteriebetrieb (true/false)
[/li][li]USV Batterie - niedrige Kapazität (true/false)
[/li][li]USV Batterie ersetzen (true/false)
[/li][li]USV Batterie - Kapazität (in Prozent)
[/li][/ul]

Fragen:
Welche USV hast du?
Was ist das für ein APC-Agent?

Günter.

PS an die Mods: Thema vielleicht verschieben = event. falsches Forum

Hallo nochmal,

bezüglich SNMP bin ich schon ein ganzes Stück weiter.

Unter :

http://de2.php.net/releases/index.php

kann man sich das Binary-Paket des in IPS z.Z. verwendeten Interpreters (php V5.1.6#6) downloaden (am besten als ZIP-Archiv).
Im Archiv findet man unter ext alle gängigen Extension-Pakete u.a. auch das für SNMP benötigte php_snmp.dll .

Ich hab dann einfach unter meinem IPS-Verzeichnis ein Verzeichnis ext mit genau dieser DLL angelegt. Im IPS-Verzeichnis (in dem ja auch der PHP-Interpreter liegt, php5ts.dll) habe ich dann eine php.ini angelegt, mit folgendem Inhalt:


extension_dir=d:\ip-symcon\ext
extension=php_snmp.dll

Und schon gibt es die snmp Kommandos im IPS. Nach IPS Neustart gibt es im Laufwerk der IPS Software ein Verzeichnis /USR/SNMP . In der SNMP-Doku auf  php.net steht zur Installation noch ein Hinweis, das man hier in einem Verzeichnis /USR/MIBS die entsprechenden MIBS ablegen kann, damit die SNMP-Variable-Zuweisung, wie z.B.

$syscontact = snmpget("127.0.0.1", "public", "system.SysContact.0");

auch mit den Textelementen "system.SysContact.0" funzt. Da bin ich derzeit gerade dabei, die passenden MIBs für APC zu suchen. An der Baustelle arbeite ich gerade.




Jetzt noch mal zu meiner USV.
Ich habe es jetzt nicht genau im Kopf (und bin leider nicht daheim), aber es sollte sich um eine SmartUPS1400er als Rackversion handeln. Etwas älteres Modell daher noch mit einem seriellem Port ausgestattet. Mit APC-Agent ist dann folgendes gemeint:

Bei APC kann man sich unter:

http://www.apcc.com/tools/download/index.cfm?isocountrycode=DE&tsk=##

die PowerShute Businessedition downloaden. Diese ist für weniger als 5 APCs im Management gratis.

Diese Software ist von der Architektur her in drei Teile geteilt (Agent - Server - Console). Der Agent läuft auf dem PC, der direkt an der APC angeschlossen ist (egal ob über USB oder Seriell). Der Server kann irgendwo im Netzwerk laufen (beim Hausserver natürlich auf der gleichen Maschine). Die Console kann auf beliebe Clients installiert werden (Windowsbüchsen natürlich), um auf den Server (und die verwalteten APCs) zuzugreifen. Der Agent bringt die Funktion der SNMP-Fähigkeit. Er ist auch für den ordentlichen Shutdown im Falle des Stromausfalls zuständig und ersetzt hier dann den Windows-eigenen USV-Dienst.

Lauffähig habe ich das ganze leider noch nicht gesehen. Wir sind aber in der Firma auch dabei die APC-Variablen via SNMP auszulesen. Hier aber mit NAGIOS-Check-Kommandos.
Aber wie gesagt, wir bauen noch drann.

Vielleicht hat hier ja jemand bereits mehr Erfahrungen über eine lauffähige Umgebung.

Gruß

Holger

Wenn es dir eher um die Werte und weniger um SNMP geht könntest du über die Suche auch folgenden Beitrag finden :wink:

Hallo Ralf,

Danke für Deinen super TIP.
Hätte ich mal nach APC suchen sollen und mich nicht so auf SNMP konzentzriert.

Wahrscheinlich werde ich es mit der Auswertung der USV-Werte genau so machen, wie in Deinem zitierten Thread beschrieben. Ich habe noch ein bisschen bei APC gestöbert und herausgefunden, dass die Powerchute-Software selbst keine SNMP-Schnittstelle mitbringt. Per SNMP geht es also nur, wenn man entweder eine SmartUPS mit zusätzlicher Ethernet (WEB/SNMP)-Schnittstelle hat oder noch ein zusätzliches (leider auch kostenpflichtiges) Stück Software von APC einsetzt, das sich PowerNet SNMP Agent nennt. Dieses bringt dann die SNMP-Anbindung an die Powerchute-Software mit.

Ergo, werde ich wohl die Powerchute Logs per Script auswerten, wie im Thread beschrieben. Das müsste übrigens auch ohne Probleme an einer per USB angeschlossen USV klappen, sofern sie von der Phowerchute Software unterstützt wird. Das ist meines Wissens bei allen APC SmartUPS bis hoch zur 5000er der Fall.


Aber das Thema SNMP ist trotzdem sehr Interessant, da man damit ja auch andere Netzwerkkomponenten (wie DSL-Router, Firewall und Switche) abfragen kann.

bisher habe ich hier mangels passender MIB-Einbindung statt mit SNMPGET bessere Resultate mit dem Kommando SNMPWALK erziehlt.

Folgende Zeilen lesen einfach die Kompletten SNMP-Informationen eines im Netzwerk erreichbaren Devices in ein Array. Man kann sich die passenden Daten dann einfach per Hand raussuchen um sie in IPS-Variablen zu überführen.


$a = snmpwalk("192.168.1.1", "public", "");
for ($i=0) < count($a); $i++) {
  echo $a($i)."
";

„192.168.1.1“ ist natürlich auf das entsprechende Netzwerkdevice anzupassen. „public“ ist der gängige Read-Community-Name um Daten Lesend zu erhalten, eventuell auch anpassen.

Ich bin hier auf jeden Fall noch weiter am probieren.

Gruß

Holger

Hallo,

und wenn Ihr dann diese Variablen im WIIPS entsprechenden Graphen zuordnet, habt Ihr auch gleich noch eure graphische Darstellung fertig…

Hallo Spawn,
ich habe das Thema nochmal ausgegraben.
Gibt es irgendwo eine Beschreibung zum APC USB-Protokoll? Ich habe eine RS500 und würde gerne mehr wissen, was ich ich zum Auslesen übergeben und auswerten muss.

Danke !
Tommi