Přidání do cron jobu (bash, Python, Node)
Cíl: Přidat Heartbeat adresu do existující cron úlohy nebo skriptu, aby ePulz.io dostával ping "jsem naživu" po každém úspěšném běhu.
Princip
Heartbeat adresu voláte po úspěšném dokončení úlohy. Pokud skript selže, adresa se nezavolá, ePulz.io si všimne chybějícího pingu a pošle vám upozornění.
Bash / shell cron
Přidejte volání curl na konec cron řádku, spojené operátorem && (spustí se jen při úspěchu předchozího příkazu):
# /etc/crontab nebo crontab -e
0 3 * * * /usr/local/bin/backup.sh && curl -fsS -m 10 \
https://epulz.io/heartbeat/Qs78OPNIIsCF_-Vj > /dev/null
Význam přepínačů curl:
-f= selhat při chybové odpovědi (curl vrátí chybu)-s= tiše (nepíše průběh)-S= ale zobrazí chyby (kombinace s -s)-m 10= časový limit 10 sekund> /dev/null= odpověď nezahltí cron log
Python
Pro Python skripty přidejte volání přes knihovnu requests nebo standardní urllib:
import os
import requests
HEARTBEAT_URL = os.environ.get("HEARTBEAT_URL")
def sync_data():
# ... vaše logika ...
pass
try:
sync_data()
# Heartbeat se pošle jen pokud sync_data() nespadne s chybou
if HEARTBEAT_URL:
requests.get(HEARTBEAT_URL, timeout=10)
except Exception as e:
# Heartbeat se nepošle - ePulz.io vás upozorní
print(f"Sync failed: {e}")
raise
Bez externí knihovny, jen se standardní:
import urllib.request
# Po úspěšném 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 úspěšném dokončení
await fetch(HEARTBEAT_URL, { signal: AbortSignal.timeout(10000) });
}
nightlyJob().catch(err => {
console.error(err);
process.exit(1); // Heartbeat se nepošle, ePulz.io vás upozorní
});
Docker / systemd timer
Při použití systemd timeru přidejte do .service souboru řádek ExecStartPost:
# /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 se spustí jen tehdy, pokud ExecStart doběhl úspěšně.
PHP / Laravel scheduler
// app/Console/Kernel.php
$schedule->command('backup:run')
->daily()
->thenPing('https://epulz.io/heartbeat/Qs78OPNIIsCF_-Vj');
Laravel má vestavěnou metodu thenPing() přesně pro tento účel.
Test - simulace jednoho běhu
Před zařazením do cronu otestujte adresu ručně:
$ curl -fsS https://epulz.io/heartbeat/Qs78OPNIIsCF_-Vj
OK
Po úspěšném volání v přehledu ePulz.io uvidíte, jak stav monitoru přejde z Čeká se na OK.