openHAB, Icinga 2 - und HipChat

Diesen Beitrag schrieb ich 7 Jahre und 8 Monate zuvor; die nachfolgenden Ausführungen müssen heute weder genau so nach wie vor funktionieren, noch meiner heutigen Meinung entsprechen. Behalte das beim Lesen (und vor allem: beim Nachmachen!) bitte stets im Hinterkopf.

Geschätzte Lesezeit: 2 Minuten

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 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!

Alle Bilder dieser Seite: © Marianne Spiller – Alle Rechte vorbehalten
Hintergrundbild: 533x 244px, Bild genauer anschauen – © Marianne Spiller – Alle Rechte vorbehalten

Eure Gedanken zu „openHAB, Icinga 2 - und HipChat“

Ich freue mich über jeden Kommentar, es sei denn, er ist blöd. Deshalb behalte ich mir auch vor, die richtig blöden kurzerhand wieder zu löschen. Die Kommentarfunktion ist über GitHub realisiert, weshalb ihr euch zunächst dort einloggen und „utterances“ bestätigen müsst. Die Kommentare selbst werden im Issue-Tracker und mit dem Label „✨💬✨ comment“ erfasst – jeder Blogartikel ist ein eigenes Issue. Über GitHub könnt ihr eure Kommentare somit jederzeit bearbeiten oder löschen.