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. @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.