Uptimeify Docs

Grafana Alerting

Grafana-Alerting-Benachrichtigungen über einen Webhook-Contact-Point an Uptimeify Incident Management senden, abgebildet aus dem ersten Alarm der Gruppe.

Uptimeify bildet mit dem Grafana-Preset die Payload eines Grafana-Alerting-Webhook-Contact-Points direkt ab: Alarmname, Schweregrad-Label, Status und Instanz werden aus dem ersten Alarm der Benachrichtigungsgruppe vorab gemappt.

1. Alert Source in Uptimeify anlegen

Gehe zu Incident Management → Alert Sources → Neu, wähle das Grafana-Preset, vergib einen Namen und lege die Source an. Kopiere auf dem Erfolgsbildschirm die Ingest-URL (https://deine-domain/api/im/ingest/<token>). Sie wird nur einmal angezeigt und danach nie wieder im Klartext eingeblendet. Solltest du sie verlieren, rotiere den Token im Tab Einstellungen der Source.

2. Webhook-Contact-Point in Grafana anlegen

  1. Gehe in Grafana zu Alerting → Contact points und klicke auf Add contact point.
  2. Vergib einen Namen (z. B. uptimeify) und setze Integration auf Webhook.
  3. Setze die URL auf die in Schritt 1 kopierte Ingest-URL und belasse die HTTP-Methode bei POST.
  4. Belasse die Payload bei Grafanas Standard-Webhook-Body. Das Uptimeify-Preset liest die Standardfelder (alerts[], status, commonLabels, …), die Grafana ohnehin sendet. Speichere den Contact Point.

3. Alarme zum Contact Point routen

Ein Contact Point erhält erst dann Benachrichtigungen, wenn eine Notification Policy dorthin routet:

  1. Gehe zu Alerting → Notification policies.
  2. Richte entweder die Default Policy auf deinen neuen Contact Point aus (jeder Alarm wird dorthin geroutet), oder füge eine verschachtelte Policy mit einem Label-Matcher hinzu (z. B. severity =~ ".+"), die passende Alarme dorthin routet.
  3. Speichern. Grafana ruft den Webhook jetzt auf, sobald eine Alarmregel, die dieser Policy entspricht, auslöst oder sich auflöst.

Standard-Feld-Mapping

Grafana gruppiert Alarme in eine Benachrichtigung; das Preset liest alle folgenden Werte aus dem ersten Alarm (alerts[0]) dieser Gruppe, für den Titel mit Fallback auf das übergeordnete title-Feld:

Grafana-FeldNormalisiertes Feld
alerts[0].labels.alertname (Fallback auf das übergeordnete title)Titel
alerts[0].labels.severitySchweregrad (über die Zuordnung unten)
alerts[0].statusStatus: resolved löst den Alarm auf, alles andere (typischerweise firing) hält ihn offen
alerts[0].labels.instanceHost
alerts[0].fingerprintDedup-Key: Grafanas eigene stabile Identität pro Alarm

Schweregrad-Zuordnung

Grafana hat kein eingebautes severity-Label. Das funktioniert nur, wenn deine Alarmregeln selbst eines setzen (z. B. über ein severity-Label an der Regel):

Grafana-Label severityUptimeify-Schweregrad
criticalsev1
highsev2
warningsev3
infosev4

Setzen deine Alarmregeln kein severity-Label, fällt jeder Alarm auf den in der Source konfigurierten Standard-Schweregrad zurück.

Beispiel-Payload

So sieht die Payload aus, die das Grafana-Preset von Uptimeify erwartet:

{
  "receiver": "uptimeify-webhook",
  "status": "firing",
  "orgId": 1,
  "alerts": [
    {
      "status": "firing",
      "labels": { "alertname": "HighCPU", "severity": "critical", "instance": "server1:9090" },
      "annotations": { "summary": "CPU usage above 90% on server1" },
      "startsAt": "2026-07-17T12:00:00Z",
      "endsAt": "0001-01-01T00:00:00Z",
      "generatorURL": "https://grafana.example.com/alerting/grafana/abc123/view",
      "fingerprint": "8f3b1c9a2d4e5f60",
      "silenceURL": "https://grafana.example.com/alerting/silence/new",
      "dashboardURL": "https://grafana.example.com/d/abc123",
      "panelURL": "https://grafana.example.com/d/abc123?viewPanel=2"
    }
  ],
  "groupLabels": { "alertname": "HighCPU" },
  "commonLabels": { "alertname": "HighCPU", "severity": "critical" },
  "commonAnnotations": { "summary": "CPU usage above 90% on server1" },
  "externalURL": "https://grafana.example.com/",
  "version": "1",
  "groupKey": "{}/{alertname=\"HighCPU\"}",
  "truncatedAlerts": 0,
  "title": "[FIRING:1] HighCPU",
  "state": "alerting",
  "message": "CPU usage above 90% on server1"
}

Du kannst genau diese Payload über den Tab Payload Mapping im Dashboard gegen das Mapping deiner Source senden, um den Aufbau zu prüfen, bevor du eine echte Notification Policy verbindest.

Auf dieser Seite