🚀 Signal-Benachrichtigungen in Zabbix: Einrichten der Signal-CLI REST API

In der modernen IT-Überwachung ist die schnelle und zuverlässige Benachrichtigung über Probleme entscheidend. Signal bietet eine hervorragende, datenschutzfreundliche Möglichkeit dafür. In diesem Artikel erfahren Sie, wie Sie die signal-cli-rest-api von bbernhard einrichten und diese dann als benutzerdefinierten Medientyp in Zabbix integrieren, um sich über kritische Ereignisse benachrichtigen zu lassen.

1. Vorbereitung und Start der Signal API

Zuerst richten wir das Konfigurationsverzeichnis für den Docker-Container ein und starten diesen anschließend.

Konfigurationsverzeichnis erstellen

Wir erstellen ein Verzeichnis, in dem die Konfigurationsdaten (wie die Registrierungsinformationen) der Signal-CLI gespeichert werden.

$ mkdir -p /opt/docker/signal-api

Signal-CLI REST API Container starten

Starten Sie den Docker-Container. Wir verwenden den Modus native und verknüpfen das erstellte Konfigurationsverzeichnis (-v) sowie den Port (-p).

$ sudo docker run -d --name signal-api --restart=always -p 8080:8080 \
      -v /opt/docker/signal-api:/home/.local/share/signal-cli \
      -e 'MODE=native' bbernhard/signal-cli-rest-api

2. Signal-Nummer registrieren oder verknüpfen

Da die primäre Signal-Nummer in der Regel bereits auf Ihrem Mobiltelefon läuft, verknüpfen wir den Container in diesem Fall als sekundäres Gerät.

QR-Code-Link aufrufen: Öffnen Sie in Ihrem Browser den folgenden Link. Ersetzen Sie dabei IP-Adresse-Docker durch die tatsächliche IP-Adresse oder den Hostnamen Ihres Docker-Hosts.

http://IP-Adresse-Docker:8080/v1/qrcodelink?device_name=signal-api

QR-Code scannen

Öffnen Sie die Signal-App auf Ihrem Mobiltelefon.

Gehen Sie zu Einstellungen > Verknüpfte Geräte.

Tippen Sie auf das Plus-Zeichen (+) und scannen Sie den im Browser angezeigten QR-Code.

Der Container ist nun als Ihr verknüpftes Gerät registriert und kann Nachrichten senden.

3. Testen der neuen REST API

Wir testen die Funktion, indem wir eine Nachricht über den REST-API-Endpunkt senden.

Achtung: Ersetzen Sie +4912345 durch Ihre eigene Signal-Nummer im internationalen Format und +49987654 durch die Nummer des Empfängers.

$ curl -X POST -H "Content-Type: application/json" 'http://IP-Adresse-Docker:8080/v2/send' \
      -d '{"message": "Test via Signal API!", "number": "+4912345", "recipients": [ "+49987654" ]}'

**Tipp: **Wenn Sie Sender ("number") und Empfänger ("recipients") auf die gleiche Nummer setzen, wird die Nachricht als "Notiz an mich" im Messenger angezeigt.

Sie sollten nun die Testnachricht auf dem Zielgerät erhalten haben.

4. Skript für Zabbix erstellen

Als Nächstes erstellen wir das Benachrichtigungsskript, welches Zabbix aufruft.

Skript ablegen

Wechseln Sie auf Ihrem Zabbix-Server in das Verzeichnis für Alert-Skripte und erstellen Sie die Datei.

$ cd /usr/lib/zabbix/alertscripts
$ nano signal-api.sh

Skript-Inhalt

Fügen Sie das folgende Bash-Skript ein. Es nimmt die Zabbix-Parameter als Argumente entgegen und übergibt sie an die Signal API.

#!/bin/bash

host=$1
body=$2
desc=$3

curl -X POST -H "Content-Type: application/json" 'http://IP-Adresse-Docker:8080/v2/send' -d '{"message": "'$host' hat ein Problem! \nNachricht: '"$body"' \n\nBeschreibung: '"$desc"'", "number": "+4912345", "recipients": [ "+4912345" ]}'

**Wichtig: **Passen Sie hier unbedingt die IP-Adresse-Docker und die Signal-Nummern ("number" und "recipients") an Ihre Konfiguration an.

Skript ausführbar machen

$ chmod +x signal-api.sh

5. Integration in Zabbix

Nun hinterlegen wir das Skript als neuen Medientyp in der Zabbix-Oberfläche (Administration > Medien-Typen).

Medien-Typ anlegen

Name: Signal API (oder ähnlich) Typ: Skript Skriptname: signal-api.sh Skriptparameter: Fügen Sie die folgenden drei Parameter in dieser Reihenfolge hinzu (jeder in einer eigenen Zeile):

{HOST.HOST} {EVENT.NAME} {EVENT.OPDATA}

(Sie können hier auch andere Zabbix-Makros verwenden, die für Ihre Benachrichtigungen sinnvoll sind. Die anderen Medientypen dienen hier als gute Referenz.)

Aktivieren: Vergessen Sie nicht, den Haken bei "Aktiviert" zu setzen.

Medieneinstellungen im Benutzerprofil

Schließlich müssen Sie den neuen Medientyp noch in Ihrem Benutzerprofil (oder dem der Benachrichtigungsempfänger) hinterlegen und konfigurieren. Tragen Sie hier die Signal-Nummer ein, an die die Benachrichtigungen gesendet werden sollen.

Detaillierte Schritte zur Konfiguration des Benutzerprofils und der Aktionen finden Sie in der offiziellen Zabbix-Dokumentation.

Quellen

signal-cli-rest-api GitHub: https://github.com/bbernhard/signal-cli-rest-api

Zabbix Dokumentation: https://www.zabbix.com/documentation/current/en/manual/config/notifications