---
title: "Zabbix"
description: "Zabbix-Trigger-Alarme über einen Webhook-Medientyp an Uptimeify Incident Management senden, mit dem fertigen Skript, das Uptimeify für dich generiert."
---

Uptimeify bildet mit dem Zabbix-Preset die Payload eines Zabbix-**Webhook**-Medientyps direkt ab: Trigger-Name, Schweregrad, Status und Host sind bereits vorab gemappt. Uptimeify liefert dir außerdem ein fertiges Skript für den **Script**-Tab des Medientyps, sodass du das JavaScript nicht selbst schreiben musst.

## 1. Alert Source in Uptimeify anlegen

Gehe zu **Incident Management → Alert Sources → Neu**, wähle das **Zabbix**-Preset, vergib einen Namen und lege die Source an. Auf dem Erfolgsbildschirm:

- Kopiere die Ingest-URL (`https://deine-domain/api/im/ingest/<token>`). Sie wird nur einmal angezeigt.
- Lade über die Aktion **Medientyp-Skript herunterladen** das fertige Webhook-Skript herunter (oder kopiere es unten).

## 2. Webhook-Medientyp in Zabbix anlegen

1. Gehe in Zabbix zu **Data collection → Media types** (Zabbix 7.0; **Administration → Media types** bei Zabbix 6.x und älter) und klicke auf **Create media type**.
2. Setze **Type** auf **Webhook**.
3. Öffne den Tab **Script** und füge das Skript unten ein (identisch mit dem, das Uptimeify für deine Source generiert hat).
4. Füge einen Medientyp-Parameter namens `UPTIMEIFY.INGEST.URL` hinzu (im Skript referenziert als `{$UPTIMEIFY.INGEST.URL}`) und setze dessen Wert auf die in Schritt 1 kopierte Ingest-URL. Das Skript liest die URL aus diesem Parameter, statt sie fest zu codieren. Rotierst du den Token später, musst du nur diesen einen Wert aktualisieren.
5. Speichere den Medientyp.

### Webhook-Skript

```javascript
// Zabbix Webhook media type — Script tab (JavaScript).
// Data > Alerts > Media types > Webhook > Script. Field names below map 1:1
// onto this preset's selectors (event_id, event_severity, trigger_name, ...).
var params = JSON.parse(value);
var payload = {
  event_id: params.event_id,
  event_source: params.event_source,
  event_value: params.event_value,
  event_severity: params.event_severity,
  trigger_name: params.trigger_name,
  trigger_status: params.trigger_status,
  host_name: params.host_name,
  date: params.date,
  time: params.time
};
var req = new HttpRequest();
req.addHeader('Content-Type: application/json');
req.post('{$UPTIMEIFY.INGEST.URL}', JSON.stringify(payload));
return 'OK';
```

Dieses Skript leitet Zabbix' eigene Webhook-Parameter (`event_id`, `event_severity`, `trigger_name`, `trigger_status`, `host_name`, …) unverändert als JSON weiter, es transformiert sie nicht. Das Zabbix-Preset von Uptimeify erwartet bereits genau diese Form, weitere Mapping-Anpassungen sind also nicht nötig.

## 3. Mit einer Trigger-Action verbinden

1. Füge den neuen Medientyp einem Zabbix-Benutzer unter **Users → Users → *(Benutzer)* → Media** hinzu. Zabbix verlangt auch für einen Webhook einen "Send to"-Adresswert. Ein beliebiger, nicht leerer Wert funktioniert, das Skript ignoriert ihn.
2. Lege unter **Data collection → Actions → Trigger actions** eine **Trigger-Action** an (oder bearbeite eine bestehende) mit einer Operation, die eine Nachricht an diesen Benutzer über deinen neuen Medientyp sendet.
3. Löse ein Testproblem aus (oder warte auf das nächste echte) und prüfe, ob es unter **Incident Management → Alert Sources → deine Zabbix-Source** erscheint.

## Standard-Feld-Mapping

| Zabbix-Webhook-Parameter | Normalisiertes Feld |
|---|---|
| `trigger_name` | Titel |
| `event_severity` | Schweregrad (über die Zuordnung unten) |
| `trigger_status` | Status: `OK` löst den Alarm auf, alles andere hält ihn offen |
| `host_name` | Host |
| `event_id` | Dedup-Key: gruppiert PROBLEM-/OK-Events desselben Triggers zu einem Alarm |

### Schweregrad-Zuordnung

| Zabbix `event_severity` | Uptimeify-Schweregrad |
|---|---|
| `Disaster` | `sev1` |
| `High` | `sev2` |
| `Average` | `sev3` |
| `Warning` | `sev4` |
| `Information` | `sev4` |
| `Not classified` | `sev4` |

## Beispiel-Payload

So sieht die Payload aus, die das Zabbix-Preset von Uptimeify erwartet, dieselbe Form, die das obige Skript erzeugt:

```json
{
  "event_id": "6633487",
  "event_source": "0",
  "event_value": "1",
  "event_severity": "Disaster",
  "trigger_name": "Zabbix agent is not available on Zabbix server",
  "trigger_status": "PROBLEM",
  "host_name": "Zabbix server",
  "date": "2026.07.17",
  "time": "12:00:00"
}
```

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 Trigger-Action verbindest.
