Einfacher Icinga2 Check mit Shell-Kommando

16-Bit

Lt. Commander
Registriert
März 2010
Beiträge
1.229
Hi!
Ich würde ja im offiziellen community.icinga.com Forum fragen. Aber da bekommt man nur selten Antwort. Ich bin neu bei Icinga und würde gern einem Host ein einfachen Service Check hinzufügen.

Mein Icinga läuft auf einem Rasperry Pi 4, auf dem auch ein OpenHab läuft (beides nativ installiert, und nicht als Docker). OpenHab benutz ich um KNX über Apple Homekit anzusteuern. Leider versagt manchmal der Dienst im OpenHab, welcher dafür zuständig ist. Aber das bekommt man halb nicht mit und Siri sagt dann, dass die Geräte nicht mehr funktionieren -> Frau ist genervt.

Ich möchte einen Check schreiben, der die Ausgabe von
Bash:
avahi-browse _hap._tcp --terminate
auswertet.

Da kommt dann sowas raus:
Bash:
+   eth0 IPv6 HomePodSensor 533834                          _hap._tcp            local
+   eth0 IPv6 HomePodSensor 36265                           _hap._tcp            local
+   eth0 IPv4 openHAB3                                      _hap._tcp            local
+   eth0 IPv4 HomePodSensor 533834                          _hap._tcp            local
+   eth0 IPv4 HomePodSensor 36265                           _hap._tcp            local

Der Check soll Grün sein, wenn eine Zeile mit "openHAB" dabei ist.

Wie würde man das in Icinga im "best-practise" Sinne machen?

Vielen Dank im Voraus!

Christoph
 
Mal auf die Schnelle, natürlich nicht überprüft. Einfach eine Datei check_openhab mit dem Inhalt anlegen, ausführbar machen (chmod u+x check_openhab) und auf der Kommandozeile zum Testen ausführen ./check_openhab

Bash:
#!/bin/bash

OPENHAB=$(avahi-browse _hap._tcp --terminate | grep openHAB3 | awk '{print $4}')


if [ $OPENHAB == openHAB3 ]

      then

        echo "OK - Dienst läuft"

        exit 0

      else

        echo "CRITICAL - Dienst läuft nicht"

        exit 2

fi
 
Zuletzt bearbeitet:
Funktioniert :)
Habe es mit deinr Hilfe hinbekommen:

Bash:
object Host "openHAB" {
        address = "localhost"
        check_command = "hostalive"
}

object Service "Homekit Service" {
        host_name = "openHAB"
        check_command = "hab.tcp"
        vars.port = "9124"
}

Bash:
object CheckCommand "hab.tcp" {
  command = [ ConfigDir + "/scripts/check_hab_tcp.sh"  ]
}

Das Skript hab ich in /ect/icinga2/scripts abgelegt. Macht das Sinn? Oder sollte man es eher woanders hin packen?

Vielen herzlichen Dank schonmal!
Christoph
 
Hört man gern :)
Man kann das Script bestimmt auch "schöner" machen, aber ob sich das für den Zweck lohnt ist fraglich.

Bei mir kommen die Scripts in das Standard Plugin Verzeichnis.
find / -name check_*

Ist Geschmackssache, ein eigenes Script Verzeichnis wie bei dir geht natürlich auch.
 
Zuletzt bearbeitet:
Zurück
Oben