openHAB, Icinga 2 - und 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 Token
Idealerweise 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 heißt 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-Notifizierungen und eines für die Services – 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
Auch zu diesem Zweck habe ich ein kleines Script 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
Es 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. Na, 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!