Im PDU ist der SNMP‑Trap‑PDU dynamisch über die Aktion THEN‑Logik an ein Ereignis gebunden. Daher ist es bis zur Erstellung des SNMP‑Trap‑Elements und dessen Einbindung in die logische Schaltung unmöglich, die Schwere eindeutig festzulegen.
Im SNMP‑Trap‑PDU werden im Body folgende Variablen übertragen:
Trap ID
Textzeichenkette
z.B.:
"Trap (Name: <TrapName>, ID: <TrapID>) wurde ausgelöst. Zeit: <Time> Logik: <LogicName>, Sensor: <ElementName>, im Zustand: <ElementState>, Wert: <ElementValue>"
wobei
TrapName – Name des SNMP‑Traps;
TrapID – ID des SNMP‑Traps;
Time – Reaktionszeit der Logik;
LogicName – Name der ausgelösten Logik;
ElementName – Name des Elements, dessen Statusänderung die Logik ausgelöst hat;
ElementState – Zustand des Elements zum Zeitpunkt der Auslösung der Logik;
ElementValue – geänderter Wert des Elements zum Zeitpunkt der Auslösung der Logik;
Mit folgenden Ansätzen lässt sich die Schwere des Trap‑PDU also z.B. bestimmen:
1) Über die Trap‑ID, indem Ereignisse mit unterschiedlicher Schwere diesen Traps mit unterschiedlicher ID zugewiesen werden.
2) Über den Zustand des Feldes in der Trap‑PDU‑Zeile (siehe oben).
Um einen SNMP‑Trap‑PDU‑Event‑Handler hinzuzufügen, gehen Sie wie folgt vor:
1) Erstellen Sie eine Event‑Datei SNMP‑Trap‑PDU im Ordner $ONMS/etc/events:
Name: Didactum.events.xml
<events xmlns="http://xmlns.opennms.org/xsd/eventconf">
<event>
<mask>
<maskelement>
<mename>id</mename>
<mevalue>.1.3.6.1.4.1.39052.1</mevalue>
</maskelement>
<maskelement>
<mename>generic</mename>
<mevalue>6</mevalue>
</maskelement>
<maskelement>
<mename>specific</mename>
<mevalue>5</mevalue>
</maskelement>
<varbind>
<!-- für die Filterung nach ID des SNMP‑Trap‑Elements
<vbnumber>1</vbnumber>
<vbvalue>1011</vbvalue>
-->
<!-- für die Filterung nach Zustand des ausgelösten Elements -->
<vbnumber>2</vbnumber>
<vbvalue>~(.*)'warning'(.*)</vbvalue>
<vbvalue>~(.*)'not connected'(.*)</vbvalue>
<vbvalue>~(.*)'off'(.*)</vbvalue>
<vbvalue>~(.*)'on'(.*)</vbvalue>
</varbind>
</mask>
<uei>uei.opennms.org/vendor/didactum/traps/ctlUnitTrapNotification</uei>
<event-label>DIDACTUM‑MIB definierter Trap‑Ereignis: ctlUnitTrapNotification</event-label>
<descr>
<![CDATA[
<p>Didactum EMS device trap received: %parm[#2]% </p>
]]>
</descr>
<logmsg dest='logndisplay'>
<![CDATA[
<p>Trap ID: %parm[#1]% </p>
<p>Didactum EMS device trap received: %parm[#2]% </p>
]]>
</logmsg>
<severity>Warning</severity>
</event>
<event>
<mask>
<maskelement>
<mename>id</mename>
<mevalue>.1.3.6.1.4.1.39052.1</mevalue>
</maskelement>
<maskelement>
<mename>generic</mename>
<mevalue>6</mevalue>
</maskelement>
<maskelement>
<mename>specific</mename>
<mevalue>5</mevalue>
</maskelement>
<varbind>
<vbnumber>2</vbnumber>
<vbvalue>~(.*)'alarm'(.*)</vbvalue>
</varbind>
</mask>
<uei>uei.opennms.org/vendor/DIDACTUM/traps/ctlUnitTrapNotification</uei>
<event-label>DIDACTUM‑MIB definierter Trap‑Ereignis: ctlUnitTrapNotification</event-label>
<descr>
<![CDATA[
<p>Didactum EMS device trap received: %parm[#2]% </p>
]]>
</descr>
<logmsg dest='logndisplay'>
<![CDATA[
<p>Trap ID: %parm[#1]% </p>
<p>Didactum EMS device trap received: %parm[#2]% </p>
]]>
</logmsg>
<severity>Critical</severity>
</event>
<event>
<mask>
<maskelement>
<mename>id</mename>
<mevalue>.1.3.6.1.4.1.39052.1</mevalue>
</maskelement>
<maskelement>
<mename>generic</mename>
<mevalue>6</mevalue>
</maskelement>
<maskelement>
<mename>specific</mename>
<mevalue>5</mevalue>
</maskelement>
<varbind>
<vbnumber>2</vbnumber>
<vbvalue>~(.*)'normal'(.*)</vbvalue>
</varbind>
</mask>
<uei>uei.opennms.org/vendor/DIDACTUM/traps/ctlUnitTrapNotification</uei>
<event-label>DIDACTUM‑MIB definierter Trap‑Ereignis: ctlUnitTrapNotification</event-label>
<descr>
<![CDATA[
<p>Didactum EMS device trap received: %parm[#2]% </p>
]]>
</descr>
<logmsg dest='logndisplay'>
<![CDATA[
<p>Trap ID: %parm[#1]% </p>
<p>Didactum EMS device trap received: %parm[#2]% </p>
]]>
</logmsg>
<severity>Normal</severity>
</event>
</events>2) Fügen Sie diese Datei in die OpenNMS‑Event‑Konfiguration ein:
Name: eventconf.xml
.. <event-file>events/Didactum.events.xml</event-file> ..
Die Datei Didactum.events.xml enthält drei Knoten‑Ereignisse mit unterschiedlichen Filtermasken, die auf die Variablen des SNMP‑Trap‑PDU angewendet werden.
Jeder Abschnitt weist eine eigene Schwereebene auf.
Die Filterung nach Trap‑ID kann wie folgt umgesetzt werden:
<vbnumber>1</vbnumber> <vbvalue>1011</vbvalue>
In diesem Fall verarbeitet das Ereignis ausschließlich die Trap‑PDU‑Elemente mit ID = 1011. Außerdem können reguläre Ausdrücke zur Filterung des Zeichenkettenparameters verwendet werden:
<vbnumber>2</vbnumber> <vbvalue>~(.*)'warning'(.*)</vbvalue>
Mit regulären Ausdrücken lassen sich Filter nach vordefinierten Elementnamen, Logiken usw. realisieren.