Zum Inhalt

Notification Channels

Ein Channel ist die Output-Konfiguration für Alerts: wo geht die Notification hin, in welchem Format, an wen.

Verfügbare Channel-Typen

Typ Empfänger Format
Email E-Mail-Adressen oder User-Auswahl HTML + Text
Mobile-Push Mobile-App-Benutzer (Tenant- oder User-Targeted) FCM-Notification + Deep-Link
Webhook beliebige HTTP-URL JSON-Payload
Slack Slack-Channel strukturierte Slack-Message
Teams Microsoft-Teams-Channel Adaptive Card

/notification-channels ist die Verwaltungs-Seite.

Globale Felder pro Channel

Feld Bedeutung
Name beliebig, für Auswahl in Alert-Rules
Tenant bei Super-Admin: Channel kann global oder Tenant-spezifisch sein
Severity-Filter nur WARN und höher? nur CRIT?
Recovery-Notifications auch bei Recovery senden?
Throttle min. Sekunden zwischen zwei Notifications (Schutz gegen Sturm)

E-Mail

Konfiguration

Feld Bedeutung
Empfänger-Adressen Liste — fix oder Variable wie ${tenant_admins}
Reply-To optional
Template HTML-Template-Auswahl (Default oder Custom)

Voraussetzung: SMTP konfiguriert (Setup-Wizard oder Admin → SMTP).

Templates

Default-Template ist deutsch + englisch (Sprache pro User-Pref). Custom-Templates per Jinja2:

{# Variablen: alert.host, alert.service, alert.status, alert.message #}
<h1>{{ alert.host.name }} — {{ alert.service.display_name }}</h1>
<p>Status: <b>{{ alert.status }}</b></p>
<p>{{ alert.message }}</p>
<p><a href="{{ alert.host_url }}">Host öffnen</a></p>

Mobile-Push

Konfiguration

Feld Bedeutung
Targeting „alle Tenant-User" oder spezifische User
Deep-Link Default „auf Host-Detail springen"

Voraussetzung: Firebase konfiguriert (Shared-FCM oder eigenes Projekt). Siehe Mobile App → Push.

User-Targeting

Bei „spezifische User" multi-select aus den Tenant-Mitgliedern. Nur User, die ihr Mobile-Gerät registriert haben, sind auswählbar.

Seit v0.17.4

Tenant-Filter-Bug bei Push-Test-Button gefixt.

Webhook

Konfiguration

Feld Bedeutung
URL HTTPS-URL des Empfängers
Method POST (default), PUT
Headers Custom-Header (z. B. Authorization)
Auth-Type None, Basic, Bearer
Payload-Template JSON-Template, Default ist Vesana-Native

Default-Payload

{
  "version": 1,
  "alert_id": "uuid",
  "rule_name": "Disk Full Critical",
  "status": "CRITICAL",
  "host": {
    "id": "uuid",
    "name": "web01",
    "tenant": "Acme GmbH",
    "url": "https://vesana.example/hosts/uuid"
  },
  "service": {
    "id": "uuid",
    "display_name": "Disk /var",
    "check_type": "agent_disk",
    "value": 96.4,
    "message": "CRITICAL - /var at 96%"
  },
  "trigger_at": "2026-04-25T10:15:30Z",
  "is_recovery": false
}

Sicherheit

  • HMAC-Signatur optional: X-Vesana-Signature: sha256=...
  • Der Empfänger sollte den Body neu signieren und vergleichen
  • Secret pro Channel konfigurierbar

Slack

Konfiguration

  1. Slack-App erstellen: api.slack.com → New App → From Scratch
  2. Incoming Webhooks aktivieren, Webhook-URL in den Ziel-Channel
  3. URL in Vesana-Channel einsetzen

Format: strukturierte Slack-Message mit Severity-Farbe (rot/gelb/grün), Buttons „Ack" und „Host öffnen".

Teams

Konfiguration

  1. In Microsoft Teams: Channel → … → Connectors → Incoming Webhook
  2. URL kopieren
  3. In Vesana-Channel einsetzen

Format: Adaptive Card mit Severity, Host, Service, Buttons.

Throttle und Rate-Limit

Pro Channel kann ein Min-Interval zwischen zwei Notifications gesetzt werden. Default: 0 s (keine Drosselung). Sinnvoll bei Mobile-Push, um nicht zu spammen.

Test

Pro Channel Test-Notification senden:

  • Erzeugt eine Fake-Alert-Notification mit dem konfigurierten Payload
  • Sendet an den Channel
  • UI zeigt Erfolg/Fehler-Code mit Details

Mehrere Channels in einer Regel

In Alert-Rules können mehrere Channels parallel benutzt werden — z. B. Email + Push für Stufe 1, Webhook + Slack für Stufe 2 (Eskalation).

Jeder Channel filtert noch mal nach Severity — wenn der Channel CRIT only ist, gehen WARN-Alerts der Regel nicht durch.

User-Präferenzen

Empfänger-User können einzelne Channels stumm schalten (Mobile-Push insbesondere). Settings → Benachrichtigungen → Channel auswählen → Pause.

Die Pause überschreibt Regel- und Channel-Konfiguration.

Audit

Channel-Änderungen sind im Audit-Log nachvollziehbar — Filter target_kind = notification_channel.

Anschluss