Alarme & Kanäle: Benachrichtigungen einrichten

E-Mail, Webhook, Slack, Microsoft Teams, Telegram und Discord: welche Ereignisse es gibt, wie Webhooks signiert werden und wie Ruhezeiten, Erinnerungen und Fehlalarm-Schutz zusammenspielen.

Kurz erklärt

UPTIMESHIELD alarmiert über zehn Kanäle: E-Mail, Webhook, Slack, Microsoft Teams, Telegram, Discord, Google Chat, Mattermost, Pushover und Pushbullet. Gesendet werden Ausfall, Wiederherstellung, andauernde Störung (Erinnerung), langsame Antworten, ablaufende Zertifikate und Tests – erst nach bestätigter Störung, mit Testversand, Zustellprotokoll und Ruhezeiten.

Kanäle im Überblick

KanalEinrichtungVerfügbar für
E-MailAdresse eintragen, Bestätigungslink anklicken (Double-Opt-in); Abmeldelink in jeder MailSolo, Pro, Max
WebhookURL, optional Geheimnis für HMAC-SHA256-SignaturSolo, Max
SlackIncoming-Webhook-URLSolo, Max
Microsoft TeamsWebhook-/Workflows-URLSolo, Max
TelegramBot-Token und Chat-IDSolo, Max
DiscordWebhook-URLSolo, Max

Kanallimit: Solo 3, Max 100. Ziele wie Webhook-URLs, Tokens und Adressen werden verschlüsselt gespeichert. Jeder Kanal bietet einen Testversand (Ereignis test) und ein Zustellprotokoll, das 90 Tage geführt wird.

Ereignisse

EreignisBedeutung
downAusfall: Störung nach 2 aufeinanderfolgenden Fehlschlägen bestätigt
recoveryWiederherstellung: erste erfolgreiche Prüfung nach der Störung
reminderStörung dauert an (Erinnerung)
slowLangsame Antworten: 3 aufeinanderfolgende Prüfungen über der Schwelle
ssl_warningZertifikat läuft ab (30, 14, 7, 3, 1 Tage vorher)
testTestversand eines Kanals

Fehlalarm-Logik

  1. Nach einem Fehlschlag folgt sofort eine Wiederholungsprüfung.
  2. Eine Störung gilt erst nach N aufeinanderfolgenden Fehlschlägen als bestätigt (Standard 2, je Monitor einstellbar). Bis dahin lautet der Status „Wird geprüft“.
  3. Bei mehreren aktiven Messstandorten muss mehr als die Hälfte der erreichbaren Standorte den Fehler bestätigen.
  4. Je Störung wird nicht doppelt versendet; bei Fehlzustellung folgt ein Wiederholungsversuch.
  5. Während eines Wartungsfensters (Solo) gibt es keinen Alarm.

Hintergründe: Falsche Ausfallalarme vermeiden.

Erinnerungen und Ruhezeiten

Erinnerungen bei andauernder Störung sind wählbar: nie, nach 15, 30 oder 60 Minuten, 3, 12 oder 24 Stunden. Ruhezeiten gelten pro Konto: Erinnerungen und Langsam-Alarme pausieren, Ausfall und Wiederherstellung werden immer gesendet. So bleibt die Nacht ruhig, ohne dass ein echter Ausfall untergeht. Empfehlungen zur Kombination: Benachrichtigungen richtig einrichten.

Webhook: Payload

Der Webhook sendet einen JSON-Body per POST mit den Feldern event, message, timestamp, monitor (id, name, type, url, status), incident (started_at, ended_at, duration_seconds), reason und locations. Bei Heartbeat-Monitoren ist url leer. Beispiel für ein down-Ereignis (Werte beispielhaft):

{
  "event": "down",
  "message": "Störung: Beispiel-Shop",
  "timestamp": "2026-10-10T08:15:00+00:00",
  "monitor": {
    "id": 42,
    "name": "Beispiel-Shop",
    "type": "http",
    "url": "https://www.example.com/",
    "status": "down"
  },
  "incident": {
    "started_at": "2026-10-10T08:10:00+00:00",
    "ended_at": null,
    "duration_seconds": null
  },
  "reason": "HTTP 503",
  "locations": null
}

Webhook: Signatur prüfen

Ist beim Kanal ein Geheimnis hinterlegt, sendet UPTIMESHIELD zwei Header: X-UC-Timestamp (Unix-Zeit) und X-UC-Signature mit dem Wert sha256= plus HMAC-SHA256 über timestamp + "\n" + body. Verwenden Sie den rohen Body, vergleichen Sie zeitkonstant und lehnen Sie zu alte Zeitstempel ab, um Wiederholungen (Replay) zu erschweren.

PHP

<?php
$secret    = getenv('UC_WEBHOOK_SECRET');
$body      = file_get_contents('php://input');          // roher Body, unverändert
$timestamp = $_SERVER['HTTP_X_UC_TIMESTAMP'] ?? '';
$signature = $_SERVER['HTTP_X_UC_SIGNATURE'] ?? '';

$expected = 'sha256=' . hash_hmac('sha256', $timestamp . "\n" . $body, $secret);

if (!hash_equals($expected, $signature) || abs(time() - (int)$timestamp) > 300) {
    http_response_code(401);
    exit('invalid signature');
}
$event = json_decode($body, true);
// ... Ereignis verarbeiten
http_response_code(204);

Node.js

const crypto = require('crypto');
const express = require('express');
const app = express();

// Roher Body wird für die Signatur benötigt
app.post('/uptimeshield', express.raw({ type: 'application/json' }), (req, res) => {
  const ts  = req.get('X-UC-Timestamp') || '';
  const sig = req.get('X-UC-Signature') || '';
  const expected = 'sha256=' + crypto
    .createHmac('sha256', process.env.UC_WEBHOOK_SECRET)
    .update(Buffer.concat([Buffer.from(ts + '\n'), req.body]))   // req.body ist ein Buffer
    .digest('hex');

  const a = Buffer.from(expected), b = Buffer.from(sig);
  const fresh = Math.abs(Date.now() / 1000 - Number(ts)) <= 300;
  if (a.length !== b.length || !crypto.timingSafeEqual(a, b) || !fresh) {
    return res.sendStatus(401);
  }
  const event = JSON.parse(req.body.toString('utf8'));
  // ... Ereignis verarbeiten
  res.sendStatus(204);
});

Slack, Teams, Telegram und Discord

  • Slack: In Slack eine App mit „Incoming Webhooks“ aktivieren, den Kanal wählen und die Webhook-URL im UPTIMESHIELD-Kanal eintragen.
  • Microsoft Teams: Eine Webhook- oder Workflows-URL für den gewünschten Kanal erzeugen und eintragen.
  • Telegram: Mit dem BotFather einen Bot anlegen (Bot-Token), den Bot in den Chat holen und die Chat-ID eintragen.
  • Discord: In den Kanaleinstellungen unter „Integrationen“ einen Webhook anlegen und die URL eintragen.

Prüfen Sie jeden Kanal nach der Einrichtung mit dem Testversand.

Grenzen: Die Zustellung hängt von Diensten Dritter ab. Ein Wiederholungsversuch ist eingebaut, eine Zustellgarantie gibt es nicht. Nutzen Sie für kritische Systeme mindestens zwei Kanäle und kontrollieren Sie das Zustellprotokoll sowie den Systemstatus.

Häufige Fragen

Welche Benachrichtigungskanäle gibt es?

E-Mail, Webhook, Slack (Incoming Webhook), Microsoft Teams (Webhook/Workflows), Telegram (Bot-Token und Chat-ID) und Discord (Webhook). Das kostenlose Solo-Konto enthält E-Mail, Webhook und Telegram (3 Kanäle); Slack, Teams, Discord und die weiteren Kanäle gibt es ab Pro.

Wann wird alarmiert?

Bei bestätigter Störung (Ausfall), bei Wiederherstellung, bei andauernder Störung als Erinnerung, bei langsamen Antworten, bei auslaufendem Zertifikat und beim Testversand. Eine Störung gilt erst nach 2 aufeinanderfolgenden Fehlschlägen als bestätigt (einstellbar).

Wie prüfe ich die Signatur eines Webhooks?

Bilden Sie den HMAC-SHA256 über die Zeichenfolge aus Zeitstempel, Zeilenumbruch und rohem Request-Body mit Ihrem Geheimnis und vergleichen Sie das Ergebnis (mit dem Präfix sha256=) zeitkonstant mit dem Header X-UC-Signature. Beispiele in PHP und Node.js stehen auf dieser Seite.

Was bewirken Ruhezeiten?

Ruhezeiten gelten pro Konto: Erinnerungen und Langsam-Alarme pausieren, Ausfall und Wiederherstellung werden immer gesendet.

Wie werden doppelte Meldungen verhindert?

Je Störung und Kanal wird Ausfall und Wiederherstellung nur einmal versendet. Schlägt die Zustellung fehl, folgt ein Wiederholungsversuch; das Ergebnis steht im Zustellprotokoll.

Alarmkanal einrichten

Legen Sie einen Monitor an und verbinden Sie E-Mail oder, mit kostenlosem Solo-Konto Webhook oder Telegram, ab Pro auch Slack, Teams oder Discord.