Ajout au cron job (bash, Python, Node)
Objectif : Ajouter une URL Heartbeat à une tâche cron ou à un script existant afin qu'ePulz.io reçoive un ping "je suis en vie" après chaque exécution réussie.
Principe
Vous appelez l'URL Heartbeat après la réussite de la tâche. Si le script échoue, l'URL n'est pas appelée, ePulz.io remarque le ping manquant et vous envoie une alerte.
Bash / cron shell
Ajoutez un appel curl à la fin de la ligne cron, relié par l'opérateur && (il ne s'exécute que si la commande précédente a réussi) :
# /etc/crontab ou crontab -e
0 3 * * * /usr/local/bin/backup.sh && curl -fsS -m 10 \
https://epulz.io/heartbeat/Qs78OPNIIsCF_-Vj > /dev/null
Signification des options curl :
-f= échouer en cas de réponse d'erreur (curl renvoie une erreur)-s= silencieux (n'affiche pas la progression)-S= mais affiche les erreurs (combiné avec -s)-m 10= limite de temps de 10 secondes> /dev/null= la réponse n'inonde pas le journal cron
Python
Pour les scripts Python, ajoutez l'appel via la bibliothèque requests ou le module standard urllib :
import os
import requests
HEARTBEAT_URL = os.environ.get("HEARTBEAT_URL")
def sync_data():
# ... votre logique ...
pass
try:
sync_data()
# Le heartbeat n'est envoye que si sync_data() n'a pas echoue
if HEARTBEAT_URL:
requests.get(HEARTBEAT_URL, timeout=10)
except Exception as e:
# Le heartbeat n'est pas envoye - ePulz.io vous alertera
print(f"Sync failed: {e}")
raise
Sans bibliothèque externe, uniquement avec la bibliothèque standard :
import urllib.request
# Apres la reussite de la tache
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 uniquement apres la reussite
await fetch(HEARTBEAT_URL, { signal: AbortSignal.timeout(10000) });
}
nightlyJob().catch(err => {
console.error(err);
process.exit(1); // Le heartbeat n'est pas envoye, ePulz.io vous alertera
});
Docker / minuteur systemd
Si vous utilisez un minuteur systemd, ajoutez la ligne ExecStartPost au fichier .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 ne s'exécute que si ExecStart s'est terminé avec succès.
Planificateur PHP / Laravel
// app/Console/Kernel.php
$schedule->command('backup:run')
->daily()
->thenPing('https://epulz.io/heartbeat/Qs78OPNIIsCF_-Vj');
Laravel dispose d'une méthode thenPing() intégrée précisément à cet effet.
Test - simuler une seule exécution
Avant de l'ajouter à cron, testez l'URL manuellement :
$ curl -fsS https://epulz.io/heartbeat/Qs78OPNIIsCF_-Vj
OK
Après un appel réussi, dans l'aperçu ePulz.io vous verrez le statut du moniteur passer de En attente à OK.