Cron-Jobs & Backups überwachen: wenn stille Hintergrund-Prozesse ausfallen

Der gefährlichste Ausfall ist der, den niemand bemerkt. Eine Website, die offline geht, schreit: Besucher beschweren sich, das Monitoring schlägt an, jemand reagiert. Ein Backup, das seit drei Wochen nicht mehr läuft, schweigt. Es gibt keine Fehlermeldung, kein rotes Signal, keinen Anruf. Der Ausfall wird erst sichtbar, wenn du das Backup dringend brauchst, und feststellst, dass es nicht existiert. Cron-Jobs und Backups überwacht man deshalb anders als eine Website: nicht, indem man auf ein Fehlersignal wartet, sondern indem man auf ein erwartetes Lebenszeichen achtet. Dieser Artikel erklärt, warum stille Prozesse durchs Raster fallen, wie ein Dead Man's Switch sie abfängt, und wie du das in wenigen Minuten einrichtest.
Warum stille Prozesse durchs Raster fallen
Das übliche Monitoring einer Website funktioniert nach einem einfachen Prinzip: Man fragt regelmäßig „läuft die Seite?" und wartet auf die Antwort. Kommt keine oder eine fehlerhafte Antwort, ist klar, dass etwas kaputt ist. Dieses Modell ist stark, aber es setzt voraus, dass es überhaupt etwas gibt, das man anfragen kann. Genau das fehlt bei Hintergrund-Prozessen.
Ein Cron-Job, ein nächtliches Backup, ein Daten-Import, ein Cache-Warmer, all das läuft nicht an einer Adresse, die man abfragen könnte. Es läuft im Verborgenen, gesteuert von einem Zeitplan, und meldet sich normalerweise bei niemandem. Und hier liegt die Tücke: Wenn ein solcher Prozess fehlschlägt, entsteht in den meisten Fällen kein Ereignis, das man beobachten könnte. Ein Backup-Skript, das wegen eines geänderten Datenbank-Passworts nicht mehr durchläuft, wirft die Fehlermeldung höchstens in ein Log, das niemand liest. Ein Cron-Job, den ein voller Datenträger stoppt, hinterlässt keine Spur im Blickfeld. Der Ausfall ist eine Abwesenheit, und Abwesenheit lässt sich mit klassischem Monitoring nicht erkennen, weil da nichts ist, worauf man reagieren könnte.
Das ist der Grund, warum diese Ausfälle oft wochenlang unbemerkt bleiben. Nicht, weil sie selten wären, sondern weil sie leise sind. Und leise Ausfälle sind die teuersten, weil man von ihnen genau dann erfährt, wenn es zu spät ist.
Der Dead Man's Switch: Monitoring umgedreht
Die Lösung für ein Problem der Abwesenheit ist, die Abwesenheit selbst zum Alarm zu machen. Genau das leistet ein Dead Man's Switch, ein Konzept, das den Namen von jenen Sicherheitsschaltern hat, die auslösen, sobald der Bediener sie loslässt. Übertragen aufs Monitoring heißt das: Nicht das Fehlersignal löst den Alarm aus, sondern das Ausbleiben des Erfolgssignals.
Die Mechanik ist elegant einfach. Der überwachte Job bekommt die Aufgabe, sich nach jedem erfolgreichen Durchlauf kurz zu melden: ein „Ich habe funktioniert" an eine Monitoring-Stelle zu senden. Dieses Lebenszeichen nennt man Heartbeat. Das Monitoring wiederum weiß, in welchem Rhythmus dieser Heartbeat kommen soll: alle 24 Stunden beim nächtlichen Backup, alle fünf Minuten beim häufigen Cron-Job, einmal pro Woche beim wöchentlichen Report. Solange die Heartbeats pünktlich eintreffen, ist alles ruhig. Bleibt einer aus, weil der Job abstürzte, gar nicht startete oder mittendrin hängen blieb, erwartet das Monitoring das Signal vergeblich und schlägt Alarm.
Der entscheidende Unterschied zum klassischen Modell: Hier wird die Stille zum Auslöser. Man muss den Fehler nicht mehr sehen können; es genügt, dass das erwartete Erfolgssignal ausbleibt. Damit wird genau die Sorte Ausfall sichtbar, die vorher unsichtbar war: der stille, spurlose, teure.
Das Setup: ein Cron-Job in wenigen Minuten
Die Stärke dieses Ansatzes ist, wie wenig er verlangt. Um einen Cron-Job zu überwachen, brauchst du keine neue Infrastruktur und keine Bibliothek, nur eine einzige zusätzliche Zeile am Ende deines Skripts. Der Ablauf hat drei Schritte.
Schritt 1: Einen Heartbeat-Monitor anlegen. Im Monitoring erstellst du einen Heartbeat-Check und legst das erwartete Intervall fest, also wie oft der Job sich melden soll, plus eine Toleranz für normale Laufzeitschwankungen. Für ein nächtliches Backup etwa: erwarteter Heartbeat alle 24 Stunden, mit einigen Stunden Kulanz. Der Monitor gibt dir eine eindeutige Ping-URL zurück.
Schritt 2: Den Ping ins Skript einbauen. Am Ende deines Cron-Jobs oder Backup-Skripts, nach dem erfolgreichen Teil, fügst du einen kurzen Aufruf dieser URL hinzu. Mit curl ist das eine Zeile:
# ... dein Backup- oder Cron-Job läuft hier ...
# Nach erfolgreichem Durchlauf: Heartbeat senden
curl -fsS --retry 3 https://uptimeify.io/heartbeat/<dein-eindeutiger-token> > /dev/null
Wichtig ist die Platzierung: Der Ping steht nach dem eigentlichen Arbeitsschritt, sodass er nur ausgelöst wird, wenn dieser durchgelaufen ist. Bricht das Skript vorher ab, wird der Ping nie erreicht, und genau das ist gewünscht, denn dann bleibt der Heartbeat aus und der Alarm greift.
Schritt 3: Alarmierung verknüpfen. Zuletzt hängst du den Heartbeat-Monitor an dieselbe Alarmierung wie deine übrigen Checks. Bleibt ein Lebenszeichen aus, läuft der Alarm über die Kanäle, die du ohnehin nutzt, bei Uptimeify über dieselbe bestätigte, EU-gehostete Benachrichtigung wie bei Website- oder Server-Monitoren.
Das war es. Ab jetzt weißt du am selben Tag, wenn ein Backup ausfällt, nicht erst in dem Moment, in dem du es zurückspielen willst.
Was sich überwachen lässt, jenseits von Backups
Backups sind das offensichtlichste Beispiel, aber das Prinzip trägt viel weiter. Überall, wo ein Prozess planmäßig laufen soll und sein Ausfall keine sichtbare Spur hinterlässt, ist ein Heartbeat die passende Antwort. Ein paar typische Kandidaten aus dem Agentur-Alltag.
Datenbank-Backups sind der Klassiker: nächtlich, unsichtbar, kritisch. Daten-Importe und -Exporte, etwa ein nächtlicher Sync zwischen Shop und Warenwirtschaft, fallen still aus, bis die Bestände nicht mehr stimmen. Cache-Warmer und geplante Bereinigungen halten eine Seite schnell und aufgeräumt; ihr Ausfall zeigt sich erst schleichend in schlechter Performance. Wiederkehrende Reports und Rechnungsläufe, ein Skript, das monatlich Rechnungen erzeugt oder Reports verschickt, dürfen keinen Monat aussetzen, ohne dass es auffällt. Zertifikats- oder Token-Erneuerungen, die per Cron laufen, sind besonders tückisch: Ihr stiller Ausfall wird erst sichtbar, wenn etwas abläuft und plötzlich nichts mehr geht.
Das verbindende Muster ist immer dasselbe: ein zeitgesteuerter Prozess, dessen Erfolg niemand aktiv sieht und dessen Fehlschlag erst mit Verzögerung schmerzt. Für jeden davon gilt dieselbe einfache Kur: ein Heartbeat am Ende des Skripts, ein erwartetes Intervall im Monitoring.
Warum das für Agenturen ein Haftungsthema ist
Für eine Agentur ist ein unbemerkter Backup-Ausfall nicht nur ein technisches Ärgernis, sondern ein stilles Risiko mit realen Folgen. Der Moment, in dem ein Backup gebraucht wird, ist definitionsgemäß ein Krisenmoment: ein Server ist ausgefallen, Daten sind verloren, eine Migration ging schief. In genau diesem Moment festzustellen, dass die letzten drei Wochen an Backups fehlen, verwandelt eine beherrschbare Panne in eine Katastrophe. Und die Frage, die dann im Raum steht, lautet nicht „warum ist der Server ausgefallen?", sondern „warum habt ihr nicht gemerkt, dass die Backups nicht liefen?".
Genau hier liegt der Wert eines Heartbeats über das rein Technische hinaus. Er verschiebt die Verantwortung von „wir hoffen, dass die Backups laufen" zu „wir wissen, dass sie laufen, und werden am selben Tag informiert, wenn nicht". Diese Gewissheit ist etwas, das du deinem Kunden gegenüber vertreten kannst, und sie schützt dich in dem Gespräch, das im Ernstfall unweigerlich kommt. Ein Backup, dessen Lauf jeden Tag bestätigt wird, ist ein belegbares Versprechen; ein Backup, das „eigentlich laufen sollte", ist eine Hoffnung.
Für Agenturen, die kritische Infrastruktur für ihre Kunden betreiben, ist die Überwachung stiller Prozesse deshalb kein technisches Extra, sondern Teil der Sorgfaltspflicht. Der Aufwand, eine Zeile pro Skript, steht in keinem Verhältnis zum Risiko, das er abfängt.
Vom blinden Fleck zur lückenlosen Sicht
Der eigentliche Gewinn dieses Ansatzes ist, dass er einen blinden Fleck schließt, von dem viele gar nicht wissen, dass sie ihn haben. Die meisten Monitoring-Strategien decken das Sichtbare ab: Websites, Server, Dienste, die antworten, wenn man fragt. Die stillen Prozesse im Hintergrund, die niemand fragt und die sich nie von selbst melden, bleiben außen vor. Sie laufen im Vertrauen, dass sie laufen, bis dieses Vertrauen eines Tages enttäuscht wird.
Ein Dead Man's Switch schließt diese Lücke mit minimalem Aufwand und kehrt das Prinzip um, das ihn nötig macht: Statt darauf zu warten, dass ein Problem laut wird, machst du die Stille selbst hörbar. Jeder erwartete Heartbeat, der ausbleibt, wird zu einer frühen, klaren Warnung, lange bevor die Konsequenz sichtbar wird. Für jeden zeitgesteuerten Prozess, der deinen Kunden wichtig ist, ist das der Unterschied zwischen „wir haben es rechtzeitig gemerkt" und „wir haben es zu spät gemerkt".
Am Ende geht es um dieselbe Haltung wie beim gesamten Monitoring: nicht überrascht zu werden. Der Unterschied ist nur, dass die stillen Prozesse die einzigen sind, die dich ohne einen Heartbeat garantiert überraschen, und zwar im ungünstigsten Moment. Eine Zeile im Skript schließt genau diese Lücke.
Häufig gestellte Fragen
Weil das übliche Monitoring auf ein Signal wartet, das im Fehlerfall gar nicht kommt. Ein Backup, das nicht startet, wirft keine Fehlermeldung. Es passiert schlicht nichts. Ein Cron-Job, den ein geändertes Passwort oder ein voller Datenträger stoppt, läuft still ins Leere. Es gibt kein „rotes" Ereignis, das jemand sehen könnte; der Ausfall ist eine Abwesenheit, kein Alarm. Genau deshalb fällt er oft erst auf, wenn man das Backup dringend braucht, und es nicht existiert.
Ein Dead Man's Switch kehrt die Monitoring-Logik um: Statt auf ein Fehlersignal zu warten, erwartet das System ein regelmäßiges Lebenszeichen. Der überwachte Job meldet sich nach erfolgreichem Durchlauf beim Monitoring („Ich habe funktioniert"). Bleibt diese Meldung im erwarteten Zeitfenster aus, löst das Monitoring Alarm. So wird die Abwesenheit eines Signals, nicht dessen Anwesenheit, zum Auslöser. Genau das braucht man für stille Hintergrund-Prozesse.
Indem du am Ende des Cron-Jobs einen kurzen Ping an eine eindeutige Monitoring-URL absetzt, etwa mit curl. Läuft der Job durch, kommt der Ping; das Monitoring weiß, dass alles ok ist. Bleibt der Ping aus (weil der Job abgestürzt ist, gar nicht startete oder hängen blieb), erwartet das Monitoring das Signal vergeblich und alarmiert nach einer definierten Frist. Der Ping ist eine einzige zusätzliche Zeile im Skript.
Über ein erwartetes Intervall plus eine Toleranz. Du hinterlegst, dass der Heartbeat etwa alle 24 Stunden kommen soll, mit einem Kulanzfenster für Laufzeitschwankungen. Sendet das Backup-Skript nach erfolgreichem Lauf seinen Ping, ist alles ruhig. Kommt an einem Tag kein Ping innerhalb des Fensters, weißt du am selben Tag Bescheid, nicht erst Wochen später, wenn du das Backup zurückspielen willst.
Für den einfachsten Fall genügt ein Ping am Ende, nach erfolgreichem Durchlauf. Wer feiner überwachen will, sendet zusätzlich ein Startsignal und meldet am Ende Erfolg oder Misserfolg getrennt, so lässt sich ein Job, der zwar startet, aber mittendrin scheitert, von einem unterscheiden, der gar nicht erst anläuft. Beginne mit dem End-Ping und verfeinere später, wenn du mehr Granularität brauchst.
Co-Founder von Uptimeify und verantwortlich für das gesamte Marketing. Übersetzt zwischen technischer Entwicklung und Marketing-Strategie: von Java, PHP und Shopware-Plugins zur Steuerung digitaler Wachstumsstrategien. Zertifizierter UX-Manager (IHK) und Digital-Marketing-Berater für drei gemeinnützige Organisationen.
Mehr aus dem Blog

Monitoring-Alerts in Slack, Teams & per Webhook einrichten
Einrichtung pro Kanal, Slack, Microsoft Teams, Webhook, plus die Webhook-Payload-Struktur (JSON) für eigene Pipelines. Mit Beispielen.

Monitoring-Strategie fürs Kundenportfolio: was, wie oft und von wo überwachen
Das Entscheidungs-Framework für dein Kundenportfolio: welche Monitor-Typen pro Kundentyp, welche Intervalle, welche Alert-Schwellen.

Check-Intervall, Timeout und Multi-Node: Wie zuverlässiges Monitoring technisch funktioniert
Check-Intervall, Timeout-Profile und Konsens über mehrere EU-Standorte: die drei Stellschrauben, die aus einem Ping ein belastbares Monitoring machen.

