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 |
|---|---|---|
| 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¶
- Slack-App erstellen: api.slack.com → New App → From Scratch
- Incoming Webhooks aktivieren, Webhook-URL in den Ziel-Channel
- URL in Vesana-Channel einsetzen
Format: strukturierte Slack-Message mit Severity-Farbe (rot/gelb/grün), Buttons „Ack" und „Host öffnen".
Teams¶
Konfiguration¶
- In Microsoft Teams: Channel → … → Connectors → Incoming Webhook
- URL kopieren
- 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¶
- Alert Rules
- Mobile App — Push-Setup
- Webhooks — Detail Payload + HMAC