Cronjobs überwachen: Wir sagen Ihnen, wenn einer nicht läuft
Ihr Server führt Cronjobs aus, sagt aber nicht Bescheid, wenn einer ausbleibt. Das übernehmen wir mit einem Heartbeat – einem regelmäßigen Lebenszeichen: Ihr Job meldet sich nach jedem Lauf kurz bei uns. Bleibt die Meldung aus, bekommen Sie eine Nachricht, per E-Mail, in Slack, Teams oder Discord.
- 1 Heartbeat kostenlos
- Warnung per E-Mail ab 17,88 € im Jahr
- Server in Deutschland
Animation: Vier Jobs melden sich nach jedem Lauf bei Cronjob.de. Der n8n-Workflow meldet sich nicht mehr; nach dem eingestellten Spielraum gehen Warnungen an E-Mail und Slack. Sobald er sich wieder meldet, folgt die Entwarnung.
Was ist ein Heartbeat?
Ein Heartbeat ist eine kurze Meldung, die Ihr Job nach jedem erfolgreichen Lauf an seine eigene Adresse bei uns schickt. Wir wissen, wann die nächste fällig ist – bleibt sie aus, ist genau das die Nachricht.
Adresse bekommen
Sie legen einen Heartbeat an: Name, wie oft der Job läuft und wie viel Spielraum er hat. Dafür bekommen Sie eine eigene Ping-Adresse, etwa
https://runcheck.de/a8k3m2x9q1.Zeile ans Ende des Jobs
Ein Aufruf dieser Adresse, wenn der Job fertig ist: in der Crontab, im Skript oder als letzter Schritt im Workflow.
Wir warnen, wenn die Meldung ausbleibt
Kommt sie nicht rechtzeitig oder meldet der Job einen Fehler, bekommen Sie eine Nachricht. Mit der nächsten Meldung folgt die Entwarnung.
Eine Zeile, dort, wo Ihr Job endet
Die Adresse unten ist ein Beispiel. Ihre eigene steht nach dem Anlegen im Konto, mit denselben Zeilen zum Kopieren. Jede Zeile hat eine kurze Zeitgrenze und hält Ihren Job nicht auf, auch wenn wir einmal nicht erreichbar sind.
In der Crontab (crontab -e) Ihre Zeile um den markierten Teil ergänzen. $? meldet das Ergebnis Ihres Skripts mit: 0 ist Erfolg, alles andere ein Fehler.
0 3 * * * /pfad/zum/backup.sh; curl -fsS -m 10 --retry 3 https://runcheck.de/a8k3m2x9q1/$? > /dev/null
Als letzte Zeile Ihres Skripts, nach der eigentlichen Arbeit:
// … Ihr Code …
@file_get_contents('https://runcheck.de/a8k3m2x9q1', false, stream_context_create(['http' => ['timeout' => 5]]));
Am Ende des Skripts, nur mit der Standardbibliothek:
# … Ihr Code …
import urllib.request
try:
urllib.request.urlopen("https://runcheck.de/a8k3m2x9q1", timeout=10)
except OSError:
pass
Ab Node.js 18, am Ende Ihrer asynchronen Funktion:
// … Ihr Code …
await fetch('https://runcheck.de/a8k3m2x9q1', { signal: AbortSignal.timeout(10000) }).catch(() => {});
Am Ende des Workflows einen Knoten „HTTP Request“ anhängen. In seinen Einstellungen „On Error“ auf „Continue“ stellen.
Method: GET URL: https://runcheck.de/a8k3m2x9q1 Options: Timeout 10000
Als letztes Modul im Szenario: HTTP › „Make a request“.
Method: GET URL: https://runcheck.de/a8k3m2x9q1
Hinter die Arbeit Ihres Cron-Jobs, zum Beispiel im SQL Editor. Beides läuft in einer Transaktion: Scheitert die Arbeit, verschickt pg_net die Meldung gar nicht erst.
select cron.schedule('nachts-aufraeumen', '0 3 * * *', $$
delete from sessions where expires_at < now();
select net.http_get('https://runcheck.de/a8k3m2x9q1');
$$);
In der Route, die Ihre vercel.json unter „crons“ aufruft – nach der Arbeit, vor der Antwort:
// app/api/cron/route.ts
export async function GET() {
// … Ihr Code …
await fetch('https://runcheck.de/a8k3m2x9q1', { signal: AbortSignal.timeout(10000) }).catch(() => {});
return Response.json({ ok: true });
}
Mehr geht auch: https://runcheck.de/a8k3m2x9q1/start zu Beginn misst die Laufzeit und meldet einen Lauf, der hängen bleibt. https://runcheck.de/a8k3m2x9q1/fail oder ein Exit-Code von 1 bis 255 meldet einen Fehler sofort. Per POST nehmen wir bis zu 10 KB Ausgabe an, die dann im Protokoll steht.
Ausführlich, Schritt für Schritt: BackupWordPressn8nSupabaseVercelNetlify
Per KI einrichten. Mit Claude, ChatGPT oder Cursor über den KI-Zugang: Sagen Sie „Lege einen Heartbeat für mein nächtliches Backup an, es läuft um 3 Uhr“ – Ihr Assistent legt ihn an und gibt Ihnen die fertige Zeile zurück. Im Tarif Unlimited und in den 14 Tagen Testphase. KI verbinden
Cron-Monitoring für alles, was nach Zeitplan läuft
Überall dort, wo am Ende eines Laufs eine Adresse aufgerufen werden kann.
Eigener Server
Crontab, systemd oder die Aufgabenplanung von Windows: Die Meldung kommt hinter den Befehl, der Exit-Code sagt uns, ob er gelang.
Backups
rsync, restic oder borg: Sie erfahren am Morgen danach, ob die Sicherung lief – nicht erst, wenn Sie eine Datei zurückholen wollen.
n8n und Make
Ein HTTP-Schritt am Ende des Workflows. Startet der Workflow gar nicht, merken Sie es trotzdem.
Laravel
Der Scheduler bringt ->pingOnSuccess() schon mit: Ihre Ping-Adresse einsetzen, fertig.
WordPress
Ob WP-Cron wirklich läuft, zeigt ein kleines Must-Use-Plugin, das sich jede Stunde meldet.
Und wenn der Cronjob bei uns läuft?
Dann rufen wir Ihr Skript nach Zeitplan auf – und mit der Erfolgskontrolle wissen Sie auch, ob es seine Arbeit getan hat. Aufruf und Überwachung bleiben bei einem Anbieter, in einem Konto.
- EndsignalIhr Skript meldet am Ende selbst, dass es durchgelaufen ist. Kommt das Signal nicht innerhalb der Frist, gilt der Lauf als fehlgeschlagen – so wissen Sie auch bei langen Skripten, ob sie fertig wurden.
- AntwortprüfungFehlt ein erwartetes „OK“ oder steht „Fatal error“ in der Antwort, zählt der Lauf als Fehler – auch wenn der Server mit Status 200 geantwortet hat.
Beides im Tarif Unlimited. Typische Fehlermeldungen von PHP, Python, Node.js, WordPress und Laravel erkennen wir schon ab Plus.
Was es kostet
Heartbeats gehören zu den Tarifen von Cronjob.de – Cronjobs und Überwachung in einem Konto, auf einer Rechnung.
| Merkmal | Kostenlos0 € | Plus1,49 € im Monat, 17,88 € im Jahr | Unlimited3,99 € im Monat, 47,88 € im Jahr |
|---|---|---|---|
| Preis | 0 € | 17,88 € im Jahr | 47,88 € im Jahr |
| Heartbeats | 1 | bis 10 | bis 50 |
| Warnung, wenn die Meldung ausbleibt | Zustand im Konto | E-Mail, Slack, Teams, Discord, Webhook | |
| Cronjobs, die wir aufrufen | 5 | unbegrenzt | unbegrenzt |
| Erfolgskontrolle für Cronjobs | nicht enthalten | typische Fehlermeldungen erkennen | Endsignal und Antwortprüfung |
Jede neue Anmeldung beginnt mit 14 Tagen Unlimited, ohne Zahlungsdaten. Danach läuft das Konto im kostenlosen Tarif weiter. Alle Preise und Tarife
Häufige Fragen
- Was kostet die Überwachung?
- Ein Heartbeat ist kostenlos, seinen Zustand sehen Sie im Konto. Mit Plus für 17,88 € im Jahr überwachen Sie bis zu 10 Heartbeats und bekommen eine E-Mail, wenn eine Meldung ausbleibt. Unlimited für 47,88 € im Jahr bringt 50 Heartbeats und meldet zusätzlich in Slack, Microsoft Teams, Discord oder per Webhook. Jede neue Anmeldung beginnt mit 14 Tagen Unlimited, ohne Zahlungsdaten.
- Wann genau warnen Sie?
- Sie stellen ein, wie oft Ihr Job läuft und wie viel Spielraum er hat – bei einem täglichen Backup zum Beispiel eine Stunde. Kommt bis dahin keine Meldung, warnen wir einmal; mit der nächsten Meldung kommt die Entwarnung. Meldet Ihr Job einen Fehler, etwa über einen Exit-Code ungleich 0, warnen wir sofort.
- Was passiert, wenn runcheck.de einmal nicht erreichbar ist?
- Ihr Job läuft weiter. Jede Zeile auf dieser Seite hat eine kurze Zeitgrenze und ignoriert Fehler beim Melden. Und kommt in einem Zeitraum bei keinem einzigen Heartbeat eine Meldung an, liegt die Störung bei uns – dann warnen wir Sie für diesen Zeitraum nicht.
- Was passiert mit meinen Daten?
- Die Meldungen landen auf unseren Servern in Deutschland. Wir speichern den Zeitpunkt jeder Meldung, die IP-Adresse, von der sie kam, und – nur wenn Ihr Job sie per POST mitschickt – bis zu 10 KB Ausgabe. Aufbewahrt wird das wie das Aufrufprotokoll Ihrer Cronjobs. Schreiben Sie keine personenbezogenen Daten in die Ausgabe; sie ist für kurze Statusmeldungen gedacht.
- Ist das ein „Dead Man’s Switch“?
- Ja. Ein Heartbeat arbeitet wie ein Totmannschalter, englisch „dead man’s switch“: Solange sich Ihr Job meldet, passiert nichts. Bleibt die Meldung aus, lösen wir die Warnung aus. Andere Dienste nennen das Cronjob-Monitoring oder Heartbeat-Monitoring.
- Muss ich etwas installieren?
- Nein. Gemeldet wird mit einem gewöhnlichen Aufruf einer Adresse – per curl, mit den Bordmitteln von PHP, Python oder Node.js oder als HTTP-Schritt in n8n und Make. Laravel kann es von Haus aus.
- Kann ich auch Laufzeiten und Fehler melden?
- Ja.
https://runcheck.de/a8k3m2x9q1/startzu Beginn misst die Laufzeit und meldet einen Lauf, der hängen bleibt.https://runcheck.de/a8k3m2x9q1/failoder ein Exit-Code von 1 bis 255 meldet einen Fehler sofort. Per POST nehmen wir bis zu 10 KB Ausgabe an, die im Protokoll steht.
Ihr erster Heartbeat ist in zwei Minuten eingerichtet
Kostenlos und ohne Zahlungsdaten. Cronjobs, die wir aufrufen, und Heartbeats für die, die bei Ihnen laufen: alles bei einem Anbieter, seit 2003 aus Deutschland.