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
So passt Cronjob.de auf Ihre Cronjobs aufMehrere Jobs melden sich nach jedem Lauf bei Cronjob.de. Bleibt die Meldung des n8n-Workflows aus, gehen Warnungen an E-Mail und Slack; sobald er sich wieder meldet, folgt die Entwarnung.Backup-Skripttäglich, 03:00 Uhrn8n-WorkflowstündlichMeldung ausgebliebenLaravel-Scheduleralle 5 MinutenSupabase-Cronalle 15 MinutenE-MailSlackTeamsDiscordWebhookCronjob.depasst auf So passt Cronjob.de auf Ihre Cronjobs aufMehrere Jobs melden sich nach jedem Lauf bei Cronjob.de. Bleibt die Meldung des n8n-Workflows aus, gehen Warnungen an E-Mail und Slack; sobald er sich wieder meldet, folgt die Entwarnung.Backup-Skripttäglichn8n-WorkflowstündlichausgebliebenSupabase-Cronalle 15 Min.E-MailSlackTeamsCronjob.depasst auf

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.

  1. 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.

  2. 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.

  3. 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.

So sieht die Übersicht im Konto aus – mit Beispieldaten.

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

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.

Apps aus Lovable, Bolt und v0

Ihre geplanten Jobs laufen auf Supabase, Vercel oder Netlify. Eine Zeile am Ende sagt, ob sie heute gelaufen sind.

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.

Beispieldaten

Was es kostet

Heartbeats gehören zu den Tarifen von Cronjob.de – Cronjobs und Überwachung in einem Konto, auf einer Rechnung.

Heartbeats je Tarif
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 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/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 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.

Heartbeat kostenlos einrichten