SNMP Traps mit Icinga2 verarbeiten

Bestimmte Checks lassen sich am besten über Traps verarbeiten. Je nach konfiguriertem Zeitintervall eines aktiven Checks, bekommen wir mit was gerade passiert oder eben auch nicht. Es ist also ein Glücksspiel. Was wäre also wenn der Switch von sich aus aufmerksam machen würde, dass sich die Spanning-Tree Topology gerade geändert hat, oder das eine neue Root-Bridge entdeckt wurde.

Dazu verwenden wir SNMPTrapd zum Empfang der Traps und SNMPTT zur Übersetzung dieser in ein lesbares Format.

dnf install -y net-snmp-libs net-snmp-utils net-snmp
dnf install -y https://download-ib01.fedoraproject.org/pub/epel/7/x86_64/Packages/s/snmptt-1.4.2-1.el7.noarch.rpm

Konfiguration SNMPTrap Daemon /etc/snmp/snmptrapd

authCommunity   log,execute,net public
traphandle default /usr/sbin/snmptthandler
disableAuthorization yes

Konfiguration Startscript SNMPTrap Daemon /etc/sysconfig/snmptrapd

OPTIONS="-On"

Mit der Installation des SNMPTT Paketes wird der Nutzer snmptt angelegt. Damit dieser sein Ergebnis später an Icinga übergeben kann, muss dieser der Gruppe icingacmd hinzugefügt werden.

usermod -aG icingacmd snmptt

Für unser Beispiel mit den Spanning-Tree Events laden wir nun das MIB File herunter und entpacken es nach /usr/share/snmp/mibs/. Nun muss die MIB Datei noch für SNMPTT konvertiert werden.

snmpttconvertmib --in=/usr/share/snmp/mibs/BRIDGE-MIB.my --out=/etc/snmp/snmptt.conf

Jetzt werden die Inhalte in der /etc/snmp/snmptt.conf angepasst, sodass die entsprechende Message an Icinga2 übergeben werden kann.

EVENT topologyChange .1.3.6.1.2.1.17.0.2 "Status Events" Normal
FORMAT A topologyChange trap is sent by a bridge when any of $*
EXEC echo "[$@] PROCESS_SERVICE_CHECK_RESULT;$A;Traps;1;Spanning-Tree Topology Change." >> /var/run/icinga2/cmd/icinga2.cmd
SDESC
A topologyChange trap is sent by a bridge when any of
its configured ports transitions from the Learning state
to the Forwarding state, or from the Forwarding state to
the Blocking state.  The trap is not sent if a newRoot
trap is sent for the same transition.  Implementation of
this trap is optional.
Variables:
EDESC

Damit Icinga2 die Meldungen zuordnen kann, wird diese aus der Kombination Hostname + Checkname gebildet.

Traps - Ist der Check-Bezeichner