ONLINE

openHAB, Icinga 2 – und HipChat

OpenHAB Icinga2 HipChat

Atlassians HipChat ist ein Stück weit heißer Scheiß — also musste ich es mir natürlich anschauen. Unter anderem einfach auch deshalb, weil ich Jira grundsätzlich mag, mittels Sourcetree mein Github-Repository pflegen kann (obgleich ich von git grundsätzlich wenig Ahnung hab) und für meine private Dokumentationswüste $10 in eine Mini-Confluence-Lizenz investiert habe. Ich allein bin zwar kein Team, aber zumindest kann ich ja meine Dienste Nachrichten schicken lassen — und hier zeige ich euch, wie ich Icinga 2 und OpenHAB zum Mitspielen bewege.

HipChat Service TokenIdealerweise wird für jeden Dienst ein eigenes Token eingerichtet; hierzu musst du dich auf der HipChat-Webseite anmelden, dann Rooms auswählen. Klicke auf den Raum, den du für diese Zwecke nutzen möchtest — meiner heisst Unixe — und dann links auf Tokens. Wähle unter Create new token »Send notification« und vergib dem Token ein eindeutiges Label — das ist der Name, unter dem die Nachrichten später im Chat erscheinen werden. Zudem benötigst du die ID deines HipChat-Raumes: diese findest du unter Summary, Stichwort API ID. Sowohl Token als auch API-ID müssen in all meinen HipChat-Scripten eingesetzt werden.

Icinga 2

In meinem vorletzten Artikel habe ich euch schon meine grundsätzliche Vorgehensweise gezeigt, Benachrichtigungen über den Director zu erfassen und zu verwalten — im Prinzip mache ich hier nichts anderes. Ich habe mir zwei Scripte geschrieben — eines für Host-NotifizierungenGITHUB und eines für die ServicesGITHUB — und beide nach /etc/icinga2/scripts gepackt.

Anschließend habe ich für beide ein command erstellt, zuerst das für die Hosts…

object NotificationCommand "alarm-host-by-hipchat" {
    execute = PluginNotification
    command = [ "/etc/icinga2/scripts/host-by-hipchat.sh" ]
    arguments = {
        "-a" = "$address$"
        "-b" = "$notification.author$"
        "-c" = "$notification.comment$"
        "-l" = "$host.name$"
        "-o" = "$host.output$"
        "-s" = "$host.state$"
        "-t" = "$notification.type$"
    }
}

und dann das für die Services:

object NotificationCommand "alarm-service-by-hipchat" {
    execute = PluginNotification
    command = [ "/etc/icinga2/scripts/service-by-hipchat.sh" ]
    arguments = {
        "-a" = "$address$"
        "-b" = "$notification.author$"
        "-c" = "$notification.comment$"
        "-e" = "$service.name$"
        "-f" = "$service.display_name$"
        "-l" = "$host.name$"
        "-o" = "$service.output$"
        "-s" = "$service.state$"
        "-t" = "$notification.type$"
    }
}

Die Konfiguration des einzelnen Hosts habe ich um das Attribut vars.notification_by erweitert — so kann ich leicht hinterlegen, dass Nachrichten immer dann rausgehen sollen, wenn host.vars.notification_by == "HipChat" gesetzt ist; der Übersichtlichkeit halber gibt es in meinem Setup auch einen User HipChat:

apply Notification "hipchat-host" to Host {
    import "hipchat-host-alarm"
 
    users = [ "HipChat" ]
 
    assign where host.vars.notification_by == "HipChat"
}
 
apply Notification "hipchat-service" to Service {
    import "hipchat-service-alarm"
 
    users = [ "HipChat" ]
 
    assign where host.vars.notification_by == "HipChat"
}
object User "HipChat" {
    import "generic-director-user"
 
    display_name = "HipChat"
}

Niedlich an HipChat ist, dass sich die Hintergrundfarbe einer Message (zumindest in gewissen Grenzen) anpassen lässt; alberne Smileys können auch mitgesendet werden. Ziemlich viele Möglichkeiten, sich auszutoben — aber halt auch, Information zusammenfließen zu lassen.

openHAB

OpenHAB Icinga 2 HipChatAuch zu diesem Zweck habe ich ein kleines ScriptGITHUB geschrieben — es muss unter $OPENHABHOME/configurations/scripts abgelegt und ausführbar gemacht werden. Außerdem wird ein Test-Switch benötigt — den habe ich in die $OPENHABHOME/configurations/items/default.items geworfen:

...
// Test
Switch  TestSwitchItem          "Notify"
...

Nun kann in $OPENHABHOME/configurations/rules/HipChat.rule eine erste Test-Regel erfasst werden:

rule "Eine Direktnachricht zum Testen"
when
        Item TestSwitchItem changed to ON
then
        var String sHipChatMsg = "\"Ich bin ein dummer Test\""
        executeCommandLine("/home/pi/bin/Msg-to-HipChat.sh red " + sHipChatMsg )
        logInfo("Test", "Ausgabe: " + sHipChatMsg )
end

Betätigen von TestSwitchItem kann nun auf der Konsole beobachtet werden, was openHAB daraus macht:

... [runtime.busevents             ] - TestSwitchItem received command ON
... [g.openhab.io.net.exec.ExecUtil] - executed commandLine '/home/pi/bin/Msg-to-HipChat.sh red "Ich bin ein dummer Test"'
... [org.openhab.model.script.Test ] - Ausgabe: "Ich bin ein dummer Test"

Fazit

Direct Message HipChatEs funktioniert wirklich zuverlässig und gut; $wichtigen Nachrichten stelle ich ein @all bzw. ein @MarianneSpiller voran, und Raum bzw. App habe ich so konfiguriert, dass ich in diesen Fällen Push-Messages aufs iPhone erhalte bzw. mein Desktop-Icon wirr herumhüpft.

UnterschriftNa, und über Sinn und Unsinn lässt sich — wie immer — trefflich streiten Das muss so. Ich verabschiede mich jetzt jedenfalls ins Wochenende und wünsche euch eine gute Zeit!

  1. Tom Wehde

    Hey!
    Neuling hier. Ich möchte ebenfalls Hipchat Benachrichtigungen von icinga2 bekommen und habe deine Anleitung genau so umgesetzt. Nur meckert icinga bei der Statusabfrage, dass er die PluginNotification (im command.conf „execute = PluginNotification“) nicht kennt – und ich kann mir auch nicht erklären was das sein soll oder woher es kommt. Kannst du mir da auf die Sprünge helfen?
    Danke dir!

    • Hi!

      Nimm die Zeile mit dem execute bitte mal ganz raus — das hat sich inzwischen wohl final geändert, und ich bin noch nicht dazu gekommen, die Artikel zu überarbeiten (manchmal braucht der Mensch mal Urlaub) Die Revision der Artikel steht aber in den nächsten Tagen an…

      Viele Grüße,
      Marianne

      • Tom Wehde

        Hey!
        Wer solche Tutorials umsonst zur Verfügung stellt, hat jeden Urlaub verdient!
        Ich habe die Zeile gerade auskommentiert
        Jetzt beschwert sich icinga allerdings, dass es import „hipchat-service-alarm“ nicht kennt. Interessanterweise wird es bei dem host-import nicht angemerkt. Eine Idee wieso? Ich durchsuche gerade noch die configs.
        Merci und LG
        Tom

  2. @sys_adm_ama sieht interessant aus. #icinga2 #homeassistant und #mattermost wäre eine testenswerte 100% opensource & selfhosted Alternative

    via twitter.com

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.