Publish Grafana Alerts in Gotify

Grafana als Monitoring-Lösung bietet eine breite Palette an Integrationen, sodass Sie Ihre Infrastruktur überwachen und Benachrichtigungen erhalten können. Mit Gotify können Sie ein einfaches Push-Benachrichtigungsgateway für nahezu alle Ihre Geräte einrichten.

Grafana & Grafana Alerts

Grafana ist nicht nur ein leistungsstarkes Tool zur Visualisierung von Metriken und Logs, sondern bietet auch umfangreiche Möglichkeiten für Alerting. Mit der integrierten Alerting-Funktion kannst du Schwellenwerte für deine Daten definieren und bei Abweichungen automatisch Benachrichtigungen auslösen. Die Konfiguration erfolgt direkt in den Dashboards oder über die Alerting-UI. Besonders flexibel ist die Anbindung an externe Systeme: Grafana unterstützt Webhooks, sodass sich nahezu jede Plattform integrieren lässt. Beliebt sind Benachrichtigungen an Discord, Slack oder Microsoft Teams, die über einfache Webhook-URLs eingebunden werden. So stellst du sicher, dass kritische Ereignisse sofort im richtigen Kanal landen und dein Team schnell reagieren kann.

Gotify

Gotify ist eine Open-Source-Lösung für das Versenden von Push-Benachrichtigungen, die sich ideal für eigene Anwendungen oder Server-Monitoring eignet. Im Gegensatz zu externen Diensten wie Firebase läuft Gotify komplett self-hosted, was volle Kontrolle über Daten und Infrastruktur ermöglicht. Über eine einfache REST-API können Nachrichten von beliebigen Anwendungen an den Gotify-Server gesendet werden, der sie dann an die verbundenen Clients (z. B. Mobile-App oder Web-Interface) weiterleitet. Die Plattform unterstützt Benachrichtigungen mit Prioritäten, sodass wichtige Alerts hervorgehoben werden können. Dank der offenen Architektur lassen sich Gotify-Instanzen problemlos in bestehende Systeme integrieren – sei es für Server-Statusmeldungen, CI/CD-Pipelines oder als Ergänzung zu Monitoring-Tools wie Grafana.

Grafana Webhook to Gotify

Um Benachrichtigungen aus Grafana direkt an Gotify zu übermitteln, wird die Webhook-Integration genutzt. Gotify stellt eine REST-API bereit, über die Nachrichten an den Server gesendet werden können. In Grafana wird dafür ein Notification Channel vom Typ Webhook eingerichtet. Die Ziel-URL entspricht dem Gotify-Endpunkt, z. B.:

https://<gotify-server>/message?token=<app-token>

Der Token wird in Gotify pro Anwendung generiert und dient zur Authentifizierung. Im Payload des Webhooks können Titel, Nachrichtentext und Priorität definiert werden, sodass Alerts aus Grafana als strukturierte Push-Nachrichten in Gotify erscheinen. Diese Lösung ist besonders praktisch für self-hosted Monitoring-Setups, da sie ohne externe Dienste auskommt und sich leicht automatisieren lässt. Da der Token in dieser Form direkt aus der Ziel URL abzulesen ist, empfehle ich eine abweichende Integration des Gotify-Endpunkt. Die URL beinhaltet ausschließlich den Abschnitt inklusive message:

https://gotify-server>/message

Der Token lässt sich über das Setzen der Extra-Header in den Grafana Notifications verstecken und der Sicherheitsfaktor lässt sich somit erhöhen. Um dies umzusetzen, muss unter den Extra Headers der zusätzliche Header X-Gotify-Key gesetzte werden:

Name: X-Gotify-Key Value: TOKEN

Die Webhook-Payload kann in Grafana noch beliebig angepasst werden so können entsprechend folgendem Beispiel Informationen versendet werden:


{
  "title": "Grafana Alert",
  "message": "CPU-Auslastung über 90% auf Server01",
  "priority": 5,
  "extras": {
    "client::display": {
      "contentType": "text/markdown"
    }
  }
}

Erklärung der Felder:

  • title: Kurzer Titel für die Benachrichtigung.
  • message: Der eigentliche Alert-Text, z. B. die Metrik oder der Zustand.
  • priority: Zahl zwischen 0 und 10 (höhere Zahl = höhere Wichtigkeit).
  • extras.client::display.contentType: Optional, um Markdown oder andere Formate darzustellen.
Max
Autor
Max

IT-Auditor by day, Homelab-Bastler by night. Ich baue, teste und dokumentiere – von Proxmox-Clustern über Smart-Home-Setups bis hin zu 3D-Druck. Wenn du Technik so liebst wie ich, bist du hier genau richtig.