ALEC: Effiziente Alarm-Korrelation in OpenNMS

Das IT-Monitoring-System OpenNMS bietet mit dem Ticket-Daemon eine Integration in verschiedene Ticket-Systeme. Hier wird aus einem Alarm im Monitoring-System durch den Anwender ein Ticket in einem der unterstützten Ticket-Systeme erzeugt – entweder automatisch oder auf Knopfdruck. Aktuell werden die Systeme Request Tracker, OTRS, Jira und IBM Remedy unterstützt und per Schnittstelle angesprochen. Im Rahmen eines Kundenprojekts ist das Add-On opennms-email-ticketer entstanden, mit dem eine Ticketerzeugung per E-Mail – unabhängig vom verwendeten Ticketsystem – erfolgen kann.

Funktionsweise

Der opennms-email-ticketer ist als Drools-Regelwerk für den OpenNMS-Correlator realisiert und verwendet Teile der OpenNMS Trouble Ticket Integration. Diese bietet auf der Alarmseite die zusätzlichen Buttons create ticket, update ticket und close ticket an. Bei einem Klick auf einen der Buttons wird ein Event generiert (z.B.: uei.opennms.org/troubleTicket/create) welches die jeweilige ID des betroffenen Alarms enthält. Mit den Drools-Regeln werden diese Events verarbeitet. Dabei wird zunächst der zugehörige Alarm ausgelesen und anhand eines Templates der Inhalt der E-Mail generiert. Hierbei können verschiedene Variablen (z.B.: Logmessage des Alarms, Asset-Daten des zugehörigen Nodes, angemeldeter OpenNMS-User) verwendet werden. E-Mail-Empfänger und Betreffzeile werden in einer Konfigurationsdatei hinterlegt. Für die Konfiguration des Mailservers wird auf die OpenNMS-Konfigurationsdatei javamail-configuration.properties zurückgegriffen.

Nach Aktivieren der Trouble Ticket Integration in OpenNMS sind die Buttons Create Ticket / Update Ticket / Close Ticket auf der Detailseite eines Alarms zu sehen.

 

Setup

Der opennms-email-ticketer ist auf Github zu finden. Entwicklung und Test erfolgten für die Version OpenNMS Meridian 2017 – das Add-On sollte aber problemlos auch in anderen Versionen funktionieren. In den nachfolgenden Beschreibungen wird davon ausgegangen, dass sich das OpenNMS-Verzeichnis unter /opt/opennms (Standardverzeichnis bei allen RPM-basierten Installationen) befindet.

Nach dem Download der aktuellen Version muss zunächst das Drools-Projekt aus dem heruntergeladenen Repository in das OpenNMS Konfigurationsverzeichnis kopiert werden:
cp drools-engine.d/ticketer /opt/opennms/etc/drools-engine.d

Ist OpenNMS nicht im Verzeichnis /opt/opennms installiert, muss in der Datei <OpenNMS-Dir>/etc/drools-engine.d/ticketer/drools-engine.xml der Pfad für die Konfigurationsdatei angepasst werden.

In der OpenNMS-Konfigurationsdatei service-configuration.xml muss der OpenNMS-Correlator aktiviert werden. Hierzu muss das Attribut enabled="false" (blau markiert) in der Service Definition entfernt werden:
<service enabled="false">
<name>OpenNMS:Name=Correlator</name>
<class-name>org.opennms.netmgt.correlation.jmx.Correlator</class-name>
<invoke method="init" pass="0" at="start"/>
<invoke method="start" pass="1" at="start"/>
<invoke method="status" pass="0" at="status"/>
<invoke method="stop" pass="0" at="stop"/>
</service>

Um die TroubleTicket-Integration in OpenNMS generell zu aktivieren – erst dadurch werden in der OpenNMS Weboberfläche Buttons für die Ticketgenerierung angezeigt – muss noch folgende Einstellung in der OpenNMS-Konfigurationsdatei opennms.properties vorgenommen werden:
opennms.alarmTroubleTicketEnabled = true

Mit einem Neustart von OpenNMS werden die Änderungen übernommen.

Konfiguration

Der opennms-email-ticketer lässt sich über die Konfigurationsdatei /opt/opennms/etc/drools-engine.d/ticketer/ticketer-configuration.properties anpassen. Nachfolgend ein Beispiel:

# mail receiver address
receiver = ticket@example.com

# mail subject (template variables can be used)
subject = Incident: {{node_label}}, Severity: {{alarm_sev}}, {{alarm_uei}}

# filename of the message template
message.template = /opt/opennms/etc/drools-engine.d/ticketer/mailbody.tpl

Dabei können unter anderem Empfänger und Betreffzeile für die versendeten E-Mails angegeben und ein Message Template für den Inhalt der E-Mail hinterlegt werden. Ein Message Template (hier mailbody.tpl) kann wie folgt aussehen:

NEW OPENNMS ALARM
=================
Alarm ID: {{alarm_id}}
Alarm User: {{alarm_user}}
Alarm Node: {{node_label}}
Alarm Message: {{alarm_logmsg}}
Node Label: {{node_label}}
Node City: {{node_asset_city}}
Node Vendor: {{node_asset_vendor}}

Im Message Template und E-Mail-Subject können verschiedene Template-Variablen (gekennzeichnet durch {{…}} ) verwendet werden. Diese werden durch den opennms-email-ticketer durch den jeweiligen Wert ersetzt.

Einstellungen zum verwendeten Mailserver werden in der in OpenNMS bereits vorhandenen OpenNMS-Konfigurationsdatei javamail-configuration.properties vorgenommen. Alle Konfigurationsdateien können zur Laufzeit von OpenNMS verändert werden und werden ohne Neustart angewendet.

Weitere Informationen

Das Projekt selbst befindet sich auf Github. Dort ist auch die zugehörige Dokumentation zu finden. Ihre Fragen zu OpenNMS beantworten wir auch gerne persönlich – sprechen Sie uns an!

Schreibe einen Kommentar

Benötigte Felder sind mit * markiert.