Michael`s Blog OSS/Linux, networking and my private life

14Dez/096

OpenNMS Prowl Alerts

Nachdem ich als iPhone Nutzer auch Prowl installiert habe ging es nun darum mein OpenNMS mit Prowl für die Alarmierung zu koppeln.
Da Prowl eine gut beschriebene API bietet und ebenfalls fertige Skripte für diese in verschiedenen Sprachen (Perl,Python,...) zur Verfügung stellt habe ich mich für diese Variante entschieden.
Benutzt habe ich hierfür die Perl Variante, downloadbar ist prowl.pl hier.

Allerdings gab es bei der Parameterübergabe(API Key, Application, usw.) aus OpenNMS an prowl.pl etwas Schwierigkeiten. Lösung des Problems ist ein kleiner Wrapper der von OpenNMS aufgerufen wird und im Hintergrund entsprechend parametrisiert prowl.pl aufruft.

prowl_wrapper.pl

#!/usr/bin/perl -w
 
my $prowl = "/usr/local/bin/prowl.pl";
my $apikey = shift;
my $application = "OpenNMS";
my $priority = 1;
my $event = "Alert";
my $msg = "";
 
foreach (@ARGV) {
        $msg .= $_." ";
}
 
my $cmd = $prowl." -apikey ".$apikey.
" -application=\"".$application."\" -priority=".
$priority." -event=\"".$event."\" -notification=\"".$msg."\"";
 
my $return = qx( $cmd );
print $return;

Wichtig ist hier die jeweiligen Prowl API-Key für den Wrapper richtig anzupassen, hierfür habe ich die PagerEmail Adresse in OpenNMS verwendet um so für jeden Kontakt eine andere angeben zu können.

Anbei finden sich die notwendigen configs für OpenNMS:

notificationCommands.xml

    <command binary="true">
        <name>notifyProwl</name>
        <execute>/usr/local/bin/prowl_wrapper.pl</execute>
        <comment>send Prowl notifications</comment>
        <argument streamed="false">
            <switch>-pemail</switch>
        </argument>
        <argument streamed="false">
            <switch>-subject</switch>
        </argument>
    </command>