Monitoring

Proxmox VE Backups mit Zabbix überwachen

Nicht auf Fehlermails hoffen, sondern ausbleibende Backups alarmieren: vzdump-Logs werden zu JSON konvertiert, Zabbix entdeckt jede VMID per LLD und meldet fehlgeschlagene und fehlende Backups.

Thomas 26. Juli 2026 2 Min. Lesezeit 1 Aufrufe 26. Juli 2026

Übersicht

Proxmox VE verschickt nach jedem Backup-Job eine Mail. Das funktioniert, bis man mehrere Hosts betreibt, die Mails im Filter verschwinden oder ein Job gar nicht erst startet, denn über ein Backup, das nie lief, informiert auch keine Fehlermail. Zuverlässiger ist die umgekehrte Logik eines Monitoring-Systems: Alarm, wenn ein erwartetes Backup ausbleibt.

Das Template pve-backup-zabbix bringt genau das in Zabbix: pro VM und Container den Status, die Dauer und die Größe des letzten vzdump-Backups, mit Triggern für fehlgeschlagene und für ausgebliebene Backups.

Datenfluss: vzdump-Logs, Konverter-Skript, Zabbix

Funktionsweise

Ein kleines Shell-Skript auf dem PVE-Host liest die vzdump-Logs aus /var/log/vzdump/ und schreibt daraus eine JSON-Datei (/var/log/backups.log) mit Startzeit, Endzeit, Größe und Status je VMID. Der Zabbix Agent (aktiv) liest diese Datei als Master-Item, Low-Level Discovery legt pro VMID die Items an, alle Werte kommen als Dependent Items per JSONPath aus dem einen Master-Item. Es gibt also genau einen Dateizugriff pro Intervall, egal wie viele Gäste gesichert werden.

Installation

Auf dem PVE-Host das Konverter-Skript einrichten:

curl -o /usr/local/bin/convert-log-to-json.sh https://raw.githubusercontent.com/Garfieldttt/pve-backup-zabbix/zabbix/7.0/convert-log-to-json.sh
chmod +x /usr/local/bin/convert-log-to-json.sh

Per Cron alle 5 Minuten ausführen (als root, damit die vzdump-Logs lesbar sind):

echo '*/5 * * * * root /usr/local/bin/convert-log-to-json.sh' > /etc/cron.d/pve-backup-zabbix

Danach das Template in Zabbix 7.0+ importieren und dem PVE-Host zuweisen. Der Host braucht einen aktiven Zabbix Agent mit Leserechten auf die JSON-Datei.

Makros

Makro Default Beschreibung
{$BACKUP_LOCATION} /var/log/backups.log Pfad zur JSON-Logdatei
{$BACKUP_TIME} 48h Nach dieser Zeit ohne Backup wird alarmiert
{$TRIGGER_BACKUP_FAILED} 1 Trigger für fehlgeschlagene Backups ein/aus
{$TRIGGER_NOBACKUP} 1 Trigger für fehlende Backups ein/aus

{$BACKUP_TIME} an den eigenen Backup-Rhythmus anpassen: Bei täglichen Backups sind 48 Stunden ein guter Wert, so bleibt Luft für einen einzelnen verpassten Lauf, bevor es Alarm gibt.

Trigger

  • Backup failed (VMID): Der Status des letzten Backups meldet einen Fehler.
  • No backup in {$BACKUP_TIME} (VMID): Für die VMID kam innerhalb des Zeitfensters kein neues Backup an, geprüft per nodata(). Das fängt auch den Fall ab, dass der Job gar nicht gestartet ist.

Beide Trigger stehen auf HIGH und lassen sich per Makro abschalten, auch gezielt pro VM über Kontext-Makros.

Betriebshinweis

Alte Logs unter /var/log/vzdump/ von VMs und Containern, die es nicht mehr gibt, sollten entfernt werden. Sonst tauchen die verwaisten Einträge weiter in der JSON-Datei auf und lösen irgendwann den No-Backup-Trigger aus.

Fazit

Backup-Überwachung nach dem richtigen Prinzip: nicht auf Fehlermails hoffen, sondern das Ausbleiben des Erfolgs alarmieren lassen. Ein Skript, ein Cronjob, ein Template-Import. Repo: github.com/Garfieldttt/pve-backup-zabbix

Wer den kompletten PVE überwachen will, statt nur die Backups: Das Proxmox VE REST API Template holt Cluster, VMs, Storage, Disks und die Backups gleich mit rein, braucht dafür aber einen API-Token.

Kommentare

0

Noch keine Kommentare. Sei der Erste!

Kommentar schreiben

Kommentare werden vor der Veröffentlichung geprüft.