openHAB, Icinga 2 - und HipChat
Atlassians Ex-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 Ex-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. Ees 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!
5 Kommentare
Von: Mattheus Happe
2016-07-03 00:52:44 +0200
sieht interessant aus. #icinga2 #homeassistant und #mattermost wäre eine testenswerte 100% opensource & selfhosted Alternative
Von: Tom Wehde
2017-04-13 12:11:01 +0200
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!
Von: Marianne M. Spiller
2017-04-13 12:48:14 +0200
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
Von: Tom Wehde
2017-04-13 13:00:50 +0200
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
Von: Kamille
2018-03-01 18:10:53 +0100
Hi Marianne!
Klasse Artikel! Ich habe das übrigens so gemacht, dass ich wenn ein PIR in OpenHAB eine Bewegung erkennt, ein Snapshot der entsprechenden IP Kamera abgegriffen wird und mir über das Telegram Binding geschickt wird. Das war mir etwas zuverlässiger als über HipChat da nicht immer die Notifications durchkommen.
Viele Grüße!
Hinterlasse einen Kommentar
Ich freue mich über jeden Kommentar, es sei denn, er ist blöd.
Deshalb sind die Kommentare auf dieser Seite auch generell moderiert.