Zu Cron-Job hinzufügen
Ziel: Eine Heartbeat-URL zu einem bestehenden Cron-Job oder Skript hinzufügen, damit ePulz.io nach jedem erfolgreichen Lauf einen "Ich lebe"-Ping erhält.
Funktionsweise
Sie rufen die Heartbeat-URL nach erfolgreichem Abschluss der Aufgabe auf. Schlägt das Skript fehl, wird die URL nicht aufgerufen, ePulz.io bemerkt den fehlenden Ping und sendet Ihnen eine Benachrichtigung.
Bash / Shell-Cron
Fügen Sie am Ende der Cron-Zeile einen curl-Aufruf hinzu, verknüpft mit dem Operator && (wird nur ausgeführt, wenn der vorherige Befehl erfolgreich war):
# /etc/crontab oder crontab -e
0 3 * * * /usr/local/bin/backup.sh && curl -fsS -m 10 \
https://epulz.io/heartbeat/Qs78OPNIIsCF_-Vj > /dev/null
Bedeutung der curl-Optionen:
-f= bei Fehlerantwort fehlschlagen (curl gibt einen Fehler zurück)-s= still (keine Fortschrittsausgabe)-S= zeigt aber Fehler an (in Kombination mit -s)-m 10= Zeitlimit 10 Sekunden> /dev/null= die Antwort überflutet das Cron-Log nicht
Python
Fügen Sie bei Python-Skripten den Aufruf über die Bibliothek requests oder das Standardmodul urllib hinzu:
import os
import requests
HEARTBEAT_URL = os.environ.get("HEARTBEAT_URL")
def sync_data():
# ... Ihre Logik ...
pass
try:
sync_data()
# Der Heartbeat wird nur gesendet, wenn sync_data() nicht fehlschlägt
if HEARTBEAT_URL:
requests.get(HEARTBEAT_URL, timeout=10)
except Exception as e:
# Der Heartbeat wird nicht gesendet - ePulz.io benachrichtigt Sie
print(f"Sync failed: {e}")
raise
Ohne externe Bibliothek, nur mit dem Standardmodul:
import urllib.request
# Nach erfolgreichem Abschluss der Aufgabe
urllib.request.urlopen("https://epulz.io/heartbeat/Qs78OPNIIsCF_-Vj", timeout=10)
Node.js
const HEARTBEAT_URL = process.env.HEARTBEAT_URL;
async function nightlyJob() {
await processInvoices();
// Heartbeat erst nach erfolgreichem Abschluss
await fetch(HEARTBEAT_URL, { signal: AbortSignal.timeout(10000) });
}
nightlyJob().catch(err => {
console.error(err);
process.exit(1); // Der Heartbeat wird nicht gesendet, ePulz.io benachrichtigt Sie
});
Docker / systemd-Timer
Fügen Sie bei Verwendung eines systemd-Timers in die .service-Datei die Zeile ExecStartPost ein:
# /etc/systemd/system/db-backup.service
[Service]
Type=oneshot
ExecStart=/usr/local/bin/backup.sh
ExecStartPost=/usr/bin/curl -fsS -m 10 https://epulz.io/heartbeat/Qs78OPNIIsCF_-Vj
ExecStartPost wird nur ausgeführt, wenn ExecStart erfolgreich durchgelaufen ist.
PHP / Laravel Scheduler
// app/Console/Kernel.php
$schedule->command('backup:run')
->daily()
->thenPing('https://epulz.io/heartbeat/Qs78OPNIIsCF_-Vj');
Laravel hat eine eingebaute Methode thenPing() genau für diesen Zweck.
Test - einen einzelnen Lauf simulieren
Testen Sie die URL vor dem Eintragen in Cron manuell:
$ curl -fsS https://epulz.io/heartbeat/Qs78OPNIIsCF_-Vj
OK
Nach einem erfolgreichen Aufruf sehen Sie in der ePulz.io-Übersicht, wie der Monitor-Status von Wartet auf OK wechselt.