Zurück zum Blog
Monitoring

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

Ein stiller Cron-Job, der einen Heartbeat sendet. Bleibt das Signal aus, wird ein Alarm ausgelöst

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

Geschrieben von
Florian Zaskoku · Co-Founder

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

Ein Monitoring-Alarm, der gleichzeitig nach Slack, Microsoft Teams und an einen Webhook geroutet wird
Incidents

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.

Florian Zaskoku11 Min. Lesezeit
Multi-Client-Dashboard mit gestaffelten Check-Intervallen und Alert-Schwellen je Kundentyp
Monitoring

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.

Florian Zaskoku11 Min. Lesezeit
Drei Monitoring-Nodes prüfen dieselbe Website und bestätigen einen Ausfall per Konsens
Monitoring

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.

Florian Zaskoku9 Min. Lesezeit

Fang den stillen Ausfall ab, bevor er teuer wird

Uptimeify überwacht Cron-Jobs und Backups per Heartbeat: Bleibt das Lebenszeichen aus, wirst du alarmiert, über dieselben Kanäle wie deine übrigen Monitore, EU-gehostet. Sieh dir an, wie das Setup aussieht.