Aggiungi al cron job
Obiettivo: Aggiungere un URL Heartbeat a un cron job o a uno script esistente affinché ePulz.io riceva un ping "sono vivo" dopo ogni esecuzione riuscita.
Principio
Chiami l'URL Heartbeat dopo il completamento corretto dell'attività. Se lo script fallisce, l'URL non viene chiamato, ePulz.io nota il ping mancante e ti invia un avviso.
Bash / cron shell
Aggiungi una chiamata curl alla fine della riga cron, collegata con l'operatore && (viene eseguita solo se il comando precedente ha avuto successo):
# /etc/crontab o crontab -e
0 3 * * * /usr/local/bin/backup.sh && curl -fsS -m 10 \
https://epulz.io/heartbeat/Qs78OPNIIsCF_-Vj > /dev/null
Significato delle opzioni curl:
-f= fallire in caso di risposta di errore (curl restituisce un errore)-s= silenzioso (non mostra l'avanzamento)-S= ma mostra gli errori (in combinazione con -s)-m 10= limite di tempo di 10 secondi> /dev/null= la risposta non intasa il log di cron
Python
Per gli script Python, aggiungi la chiamata tramite la libreria requests o il modulo standard urllib:
import os
import requests
HEARTBEAT_URL = os.environ.get("HEARTBEAT_URL")
def sync_data():
# ... la tua logica ...
pass
try:
sync_data()
# L'heartbeat viene inviato solo se sync_data() non fallisce
if HEARTBEAT_URL:
requests.get(HEARTBEAT_URL, timeout=10)
except Exception as e:
# L'heartbeat non viene inviato - ePulz.io ti avvisera
print(f"Sync failed: {e}")
raise
Senza libreria esterna, solo con quella standard:
import urllib.request
# Dopo il completamento corretto dell'attivita
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 solo dopo il completamento corretto
await fetch(HEARTBEAT_URL, { signal: AbortSignal.timeout(10000) });
}
nightlyJob().catch(err => {
console.error(err);
process.exit(1); // L'heartbeat non viene inviato, ePulz.io ti avvisera
});
Docker / timer systemd
Quando usi un timer systemd, aggiungi la riga ExecStartPost al file .service:
# /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 viene eseguito solo se ExecStart è terminato con successo.
Scheduler PHP / Laravel
// app/Console/Kernel.php
$schedule->command('backup:run')
->daily()
->thenPing('https://epulz.io/heartbeat/Qs78OPNIIsCF_-Vj');
Laravel ha un metodo thenPing() integrato esattamente per questo scopo.
Test - simulare una singola esecuzione
Prima di inserirlo in cron, testa l'URL manualmente:
$ curl -fsS https://epulz.io/heartbeat/Qs78OPNIIsCF_-Vj
OK
Dopo una chiamata riuscita, nella panoramica di ePulz.io vedrai lo stato del monitor passare da In attesa a OK.