Wegen der zahlreichen Möglichkeiten von SNMP ist der SNMP-Monitor als eine Art Allzweckwaffe nutzbar. Durch die konfigurierbaren Parameter kann jeder vom Hersteller bereitgestellte Wert abgefragt und über eine Vergleichsfunktion ausgewertet werden.
Listing 1
zeigt ein Konfigurationsbeispiel zum Environmental Monitoring mit Sensoren des Herstellers AKCP (
Listing 1
). Der Monitor ist über die Parameter
»oid
«
,
»operator
«
,
»operand
«
,
»walk
«
,
»matchAll
«
,
»minimum
«
und
»maximum
«
konfigurierbar. Die OID gibt an, welcher Wert beziehungsweise welche Werte von dem Monitor ermittelt werden sollen. Ob ein oder mehrere Werte gefragt sind, wird über den
»walk
«
-Parameter gesteuert: Der Wert
»true
«
bedeutet, dass es sich um eine Tabelle handelt.
Listing 1
Beispiel Environmental Monitoring
Die Erkennung des Dienstes steuert
»/etc/opennms/capsd-configuration.xml
«
:
<protocol-plugin protocol="AKCP-Temperature" class-name="org.opennms.netmgt.capsd.plugins.SnmpPlugin" scan="on"> <property key="vbname" value=".1.3.6.1.4.1.3854.2.3.2.1.6" /> <property key="table" value="true" /> <property key="vbvalue" value="2" /> <property key="timeout" value="1000" /> <property key="retry" value="1" /> </protocol-plugin>
Das Einrichten des Monitors geschieht via
»/etc/opennms/poller-configuration.xml
«
:
... <service name="AKCP-Temperature" interval="300000" user-defined="false" status="on"> <parameter key="retry" value="3"/> <parameter key="timeout" value="3000"/> <parameter key="port" value="161"/> <parameter key="oid" value=".1.3.6.1.4.1.3854.2.3.2.1.6"/> <parameter key="walk" value="true"/> <parameter key="operator" value="="/> <parameter key="operand" value="2"/> <parameter key="match-all" value="true"/> <parameter key="reason-template" value="A problem with AKCP Temperature Environment detected. The state should be normal(${operand}) but actual value is ${observedValue}. Syntax: noStatus(1), normal(2), highWarning(3), highCritical(4), lowWarning(5), lowCritical(6), sensorError(7)"/> </service> ... ... <monitor service="AKCP-Temperature" class-name="org.opennms.netmgt.poller.monitors.SnmpMonitor"/>
Über den
»operator
«
-Parameter lassen sich mithilfe der verschiedenen Vergleichsoperationen (=, >=, <=, <,>, !=) Operanden vergleichen. Sollen alle Werte, nur ein Wert oder eine gewisse Anzahl bei dem Vergleich übereinstimmen, lässt sich dies durch den Parameter
»matchAll
«
mit den Belegungen
»true
«
,
»false
«
oder
»count
«
vorgeben. Bei dem Parameter
»matchAll
«
in Kombination mit dem Wert
»count
«
ist zusätzlich über die Parameter
»minimum
«
und
»maximum
«
angebbar, wie oft eine Übereinstimmung minimal beziehungsweise maximal erfolgen darf.
Nach der Konfiguration der Monitore ist das System über
»/etc/init.d/opennms restart
«
neu zu starten.
Natürlich ist der Status der Druckwarteschlange mit dem SNMP-Monitor über die OID
».1.3.6.1.4.1.77.1.2.3.1.3.18.44.72.75.63.6b.77.61.72.74.65.73.63.68.6c.61.6e.67.65
«
abfragbar, allerdings ist es für jeden Anwender angenehmer, nur den Servicenamen
»Druckwarteschlange
«
einzutragen. Wie das geht, zeigt
Listing 2
.
Listing 2
Beispiel Druckwarteschlange
Erkennung des Dienstes (
»/etc/opennms/capsd-configuration.xml
«
):
<protocol-plugin protocol="MS-Druckwarteschlange" class-name="org.opennms.netmgt.capsd.plugins.Win32ServicePlugin" scan="on"> <property key="timeout" value="2000" /> <property key="retry" value="1" /> <property key="service-name" value="Druckwarteschlange" /> </protocol-plugin>
Einrichten des Monitors (
»/etc/opennms/poller-configuration.xml
«
)
... <service name="MS-Druckwarteschlange" interval="300000" user-defined="false" status="on"> <parameter key="retry" value="2" /> <parameter key="timeout" value="3000" /> <parameter key="port" value="161" /> <parameter key="service-name" value="Druckwarteschlange" /> </service> ... <monitor service="MS-Druckwarteschlange" class-name="org.opennms.netmgt.poller.monitors.Win32ServiceMonitor" />
Das Einrichten des Plugins und des Monitors ist sehr einfach. Benötigt wird lediglich der Service-Name, der sowohl in dem Plugin als auch in dem Monitor unter
»service-name
«
zu definieren ist.