Toevoegen aan cron job
Doel: Een Heartbeat-URL toevoegen aan een bestaande cron-taak of script zodat ePulz.io na elke succesvolle run een "ik leef"-ping ontvangt.
Werking
Je roept de Heartbeat-URL aan na succesvolle voltooiing van de taak. Als het script faalt, wordt de URL niet aangeroepen, ePulz.io merkt de ontbrekende ping op en stuurt je een melding.
Bash / shell-cron
Voeg een curl-aanroep toe aan het einde van de cron-regel, verbonden met de operator && (wordt alleen uitgevoerd als het vorige commando geslaagd is):
# /etc/crontab of crontab -e
0 3 * * * /usr/local/bin/backup.sh && curl -fsS -m 10 \
https://epulz.io/heartbeat/Qs78OPNIIsCF_-Vj > /dev/null
Betekenis van de curl-opties:
-f= falen bij een foutreactie (curl geeft een fout terug)-s= stil (toont geen voortgang)-S= maar toont fouten (in combinatie met -s)-m 10= tijdslimiet van 10 seconden> /dev/null= de reactie overspoelt het cron-log niet
Python
Voeg voor Python-scripts de aanroep toe via de requests-bibliotheek of de standaard urllib:
import os
import requests
HEARTBEAT_URL = os.environ.get("HEARTBEAT_URL")
def sync_data():
# ... jouw logica ...
pass
try:
sync_data()
# De heartbeat wordt alleen verzonden als sync_data() niet faalt
if HEARTBEAT_URL:
requests.get(HEARTBEAT_URL, timeout=10)
except Exception as e:
# De heartbeat wordt niet verzonden - ePulz.io waarschuwt je
print(f"Sync failed: {e}")
raise
Zonder externe bibliotheek, alleen met de standaardbibliotheek:
import urllib.request
# Na succesvolle voltooiing van de taak
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 pas na succesvolle voltooiing
await fetch(HEARTBEAT_URL, { signal: AbortSignal.timeout(10000) });
}
nightlyJob().catch(err => {
console.error(err);
process.exit(1); // De heartbeat wordt niet verzonden, ePulz.io waarschuwt je
});
Docker / systemd-timer
Bij gebruik van een systemd-timer voeg je de regel ExecStartPost toe aan het .service-bestand:
# /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 wordt alleen uitgevoerd als ExecStart succesvol is voltooid.
PHP / Laravel-scheduler
// app/Console/Kernel.php
$schedule->command('backup:run')
->daily()
->thenPing('https://epulz.io/heartbeat/Qs78OPNIIsCF_-Vj');
Laravel heeft een ingebouwde methode thenPing() precies voor dit doel.
Test - een enkele run simuleren
Test de URL handmatig voordat je hem aan cron toevoegt:
$ curl -fsS https://epulz.io/heartbeat/Qs78OPNIIsCF_-Vj
OK
Na een succesvolle aanroep zie je in het overzicht van ePulz.io de monitorstatus veranderen van Wachten naar OK.