Heartbeat (Überwachung von Cronjobs und Backups)

Ein Heartbeat ist ein Lebenszeichen, das ein Cronjob, Backup oder Import nach jedem Lauf an eine Überwachung schickt, damit ein Ausbleiben auffällt.

So funktioniert’s

Klassisches Monitoring fragt von außen, ob etwas antwortet. Ein Heartbeat dreht das um: Der Job selbst ruft nach getaner Arbeit eine geheime Ping-Adresse auf. Bleibt dieser Aufruf länger aus als erwartet, ist der Job nicht gelaufen, hängt oder ist vorzeitig abgebrochen. Deshalb spricht man auch von einem Dead-Man-Switch.

Zu jedem Heartbeat gehören eine Periode (wie oft der Job läuft, etwa täglich) und eine Karenz (wie viel Verspätung noch normal ist). Ein Backup, das um 2 Uhr startet und manchmal eine Stunde braucht, bekommt also eine Periode von 24 Stunden und eine Karenz von ein bis zwei Stunden.

Viele Jobs können zusätzlich einen Fehlschlag aktiv melden, indem sie im Fehlerfall eine eigene Adresse aufrufen. So unterscheidet die Überwachung „lief nicht“ von „lief, ist aber gescheitert“.

Warum gefährlich

Ausgefallene Hintergrundjobs bemerkt niemand, weil sie nichts sichtbar kaputt machen – bis man sie braucht. Das nächtliche Backup läuft seit Wochen nicht mehr, der Produktimport hängt, Newsletter gehen nicht raus oder ein Zertifikat wird nicht erneuert.

In WordPress und Shopware hängen Updates, geplante Beiträge, Indexierung und Mailversand an den geplanten Aufgaben. Stehen WP-Cron oder die Scheduled Tasks still, funktioniert die Website nach außen weiter, intern staut sich aber alles.

So vermeidest du es

  1. Lege für jeden wichtigen Job einen eigenen Heartbeat an: Backup, Import, Export, Versand, Zertifikatserneuerung.
  2. Rufe die Ping-Adresse erst am Ende des Jobs und nur bei Erfolg auf, im Fehlerfall die Adresse für Fehlschläge, im Shell-Skript etwa mit curl -fsS --retry 3.
  3. Wähle Periode und Karenz passend zur echten Laufzeit, damit weder Fehlalarme noch zu späte Meldungen entstehen.
  4. Richte in WordPress mit DISABLE_WP_CRON einen echten Cronjob beim Hoster ein, statt dich auf Seitenaufrufe zu verlassen.
  5. Prüfe nach jedem Server- oder Hosterwechsel, ob die Crontab mit umgezogen ist.

So erkennt DomainWarn es

Der Check Heartbeat bewertet alle fünf Minuten, wann der letzte Ping kam. Bleibt er länger als Periode plus Karenz aus, ist das kritisch und eröffnet den Incident „Heartbeat ausgeblieben (Job nicht gelaufen)“; der nächste Ping behebt ihn sofort. Ein Aufruf von …/fail meldet einen Fehlschlag und eröffnet „Heartbeat meldet Fehlschlag“. Hat ein neuer Heartbeat noch nie gemeldet, gibt es nach Ablauf der ersten Frist eine Warnung. Bei sehr häufigen Jobs lässt sich einstellen, dass erst 2, 3, 5 oder 10 ausgebliebene Läufe in Folge melden.

Die DomainWarn-Erweiterungen für WordPress und Shopware legen den Heartbeat ihrer geplanten Aufgaben selbst an. Bleibt er aus, nennt der Befund die wahrscheinliche Ursache, etwa WP-Cron ohne Cronjob, hängende Scheduled Tasks, einen aktiven Admin-Worker oder eine gerade nicht erreichbare Website.

DomainWarn prüft das für alle deine Domains regelmäßig und meldet sich, wenn etwas fehlt oder sich ändert.

Diese Domain dauerhaft überwachen14 Tage kostenlos testen, keine Kreditkarte.