Pridanie do cron jobu (bash, Python, Node)
Cieľ: Pridať heartbeat URL do existujúceho cron jobu alebo skriptu, aby ePulz.io dostával "som živý" ping po každom úspešnom behu.
Princíp
Heartbeat URL voláte po úspešnom dokončení úlohy. Ak skript zlyhá, URL sa nezavolá, ePulz.io si všimne chýbajúci ping a pošle vám alert.
Bash / shell cron
Pridajte curl volanie na koniec svojho cron riadku spojené operátorom &&:
# /etc/crontab alebo crontab -e
0 3 * * * /usr/local/bin/backup.sh && curl -fsS -m 10 \
https://epulz.io/heartbeat/Qs78OPNIIsCF_-Vj > /dev/null
Flagy curl:
-f= fail na non-2xx response (curl vráti error)-s= silent (nepíše progress)-S= ale ukáže errors (kombinácia s -s)-m 10= max-time 10 sekúnd (timeout)> /dev/null= response nezahltí cron log
Python
Pre Python skripty pridajte volanie cez requests alebo urllib:
import os
import requests
HEARTBEAT_URL = os.environ.get("HEARTBEAT_URL")
def sync_data():
# ... vaša logika ...
pass
try:
sync_data()
# Heartbeat sa pošle iba ak sync_data() neraisne exception
if HEARTBEAT_URL:
requests.get(HEARTBEAT_URL, timeout=10)
except Exception as e:
# Heartbeat sa nepošle - ePulz.io vás upozorní
print(f"Sync failed: {e}")
raise
Bez externej knižnice, len so štandardnou:
import urllib.request
# Po úspešnom dokončení úlohy
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 až po úspešnom dokončení
await fetch(HEARTBEAT_URL, { signal: AbortSignal.timeout(10000) });
}
nightlyJob().catch(err => {
console.error(err);
process.exit(1); // Heartbeat sa nepošle, ePulz.io vás upozorní
});
Docker / systemd timer
Pre systemd timer, pridajte ExecStartPost do .service súboru:
# /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 sa spustí iba ak ExecStart bol úspešný.
PHP / Laravel scheduler
// app/Console/Kernel.php
$schedule->command('backup:run')
->daily()
->thenPing('https://epulz.io/heartbeat/Qs78OPNIIsCF_-Vj');
Laravel má vstavanú metódu thenPing() presne pre tento účel.
Pokročilé: ping na začiatku aj konci
Pre dôkladnejšiu detekciu môžete poslať aj "start" ping (úloha sa spustila) - rozlíšite tým "úloha vôbec nezačala" od "úloha sa zasekla":
# Start ping
curl -fsS -m 10 https://epulz.io/heartbeat/Qs78OPNIIsCF_-Vj/start > /dev/null
# Vaša úloha
/usr/local/bin/backup.sh
EXIT_CODE=$?
# Done ping s exit code
curl -fsS -m 10 "https://epulz.io/heartbeat/Qs78OPNIIsCF_-Vj?exit=$EXIT_CODE" > /dev/null
Test - simulácia jedného behu
Pred zaradením do cronu otestujte URL ručne:
$ curl -fsS https://epulz.io/heartbeat/Qs78OPNIIsCF_-Vj
OK
Po úspešnom volaní v ePulz.io dashbarde uvidíte stav monitora prejsť z Pending na OK.