Checkmk Alarmierungen an Gotify senden

Gotify ist ein kostenloser, einfacher self hosted Notification Server der Nachrichten senden und empfangen kann.
Damit Checkmk Alarmierungen an einen Gotify Server schicken kann, benötigt man nur ein kleines Skript und natürlich einen Gotify Server.

Gotify – Application anlegen

Entweder man hat schon eine oder erstellt sich eine neue Application für Checkmk.

Checkmk – das Gotify Notify Skript

Als Vorlage nehme ich dieses Telegram Skript und passe es ein wenig für die Benachrichtigung mit Gotify an.
https://github.com/filipnet/checkmk-telegram-notify/blob/main/check_mk_telegram-notify.sh

#!/bin/bash
# Gotify
#
# ======================================================================================
# Script Name   : checkmk_gotify-notify.sh
# Description   : Send Checkmk notifications by Gotify
# Author        : https://github.com/filipnet/checkmk-telegram-notify
# License       : BSD 3-Clause "New" or "Revised" License
#
# forked from   : https://github.com/filipnet/checkmk-telegram-notify
# modified by   : https://www.bachmann-lan.de/checkmk-alarmierungen-an-gotify-senden/
# ======================================================================================

# Gotify Server URL
if [ -z ${NOTIFY_PARAMETER_1} ]; then
        echo "No Gotify Server URL provided. Exiting" >&2
        exit 2
else
        SERVER="${NOTIFY_PARAMETER_1}"

fi

# Gotify API Token
if [ -z ${NOTIFY_PARAMETER_2} ]; then
        echo "No Gotify token ID provided. Exiting" >&2
        exit 2
else
        TOKEN="${NOTIFY_PARAMETER_2}"
fi

# Set an appropriate emoji for the current state. Feel free to change the emoji to your own taste.
if [[ ${NOTIFY_WHAT} == "SERVICE" ]]; then
        STATE="${NOTIFY_SERVICESHORTSTATE}"
else
        STATE="${NOTIFY_HOSTSHORTSTATE}"
fi
case "${STATE}" in
    OK|UP)
        EMOJI=$'\xF0\x9F\x9F\xA2' # green circle
        ;;
    WARN)
        EMOJI=$'\xF0\x9F\x9F\xA1' # yellow circle
        ;;
    CRIT|DOWN)
        EMOJI=$'\xF0\x9F\x94\xB4' # red circle
        ;;
    UNKN)
        EMOJI=$'\xF0\x9F\x9F\xA0' # orange circle
        ;;
esac

# Create a MESSAGE variable to send to Gotify
MESSAGE="${NOTIFY_HOSTNAME} (${NOTIFY_HOST_ADDRESS_4})"

MESSAGE+=" ${EMOJI} ${NOTIFY_WHAT} ${NOTIFY_NOTIFICATIONTYPE}\n"
if [[ ${NOTIFY_WHAT} == "SERVICE" ]]; then
        MESSAGE+="${NOTIFY_SERVICEDESC}\n"
        MESSAGE+="State changed from ${NOTIFY_PREVIOUSSERVICEHARDSHORTSTATE} to ${NOTIFY_SERVICESHORTSTATE}\n"
        MESSAGE+="${NOTIFY_SERVICEOUTPUT}\n"
else
        MESSAGE+="State changed from ${NOTIFY_PREVIOUSHOSTHARDSHORTSTATE} to ${NOTIFY_HOSTSHORTSTATE}\n"
        MESSAGE+="${NOTIFY_HOSTOUTPUT}\n"
fi
MESSAGE+="Date: ${NOTIFY_SHORTDATETIME}"

# Send message to Gotify Server
curl -s -S --data '{"message": "'"${MESSAGE}"'", "title": "'"${NOTIFY_HOSTNAME}"'", "priority":'"5"', "extras": {"client::display": {"contentType": "text/markdown"}}}' -X POST -H Content-Type:application/json "${SERVER}/message?token=${TOKEN}"

if [ $? -ne 0 ]; then
        echo "Not able to send Gotify message" >&2
        exit 2
         else
        exit 0
fi

Skript in Checkmk einbinden

Das Skript ins entsprechende Verzeichnis auf den Checkmk Server kopieren und ausführbar machen.

# zum SITE User wechseln
$ su - MYSITE

# ins notifications Verzeichnis wechseln
$ cd ~/local/share/check_mk/notifications/

# das Gotify Skript herunterladen
$ wget https://bachmann-lan.de/projects/checkmk-gotify/checkmk_gotify-notify.sh

# Datei ausführbar machen
$ chmod +x checkmk_gotify-notify.sh

Setup → Notifications → Add rule. Gotify auswählen, Parameter 1 ist die URL des Servers, Parameter 2 ist der Token der angelegten App.

Zum testen mal ein paar fake checks von einem Service erstellen. Sollten dann sofort im Gotify Server ankommen.

10 Gedanken zu „Checkmk Alarmierungen an Gotify senden“

  1. Hallo,

    erstmal vielen Dank für Script. Ich habe das Problem, dass ich nur ein Parameter angeben kann, sprich die URL. Das 2. Feld wo der App Token eingetragen werden soll, erscheint gar nicht erst bei mir. Weißt du woran das liegen kann ?

    Gruß Tobi

    Antworten
  2. Vielen Dank für das Script!!!
    Funktioniert einwandfrei.
    Jetzt bin ich nur noch auf der Suche nach einem Plugin, um Gotify dazu zu bringen, Nachrichten an mehrere User zu senden. Sowie wie das bei Pushover mit den Groups möglich ist.

    Schöne Grüße

    Michael

    Antworten

Schreibe einen Kommentar