Cron job'a ekleme
Amaç: Mevcut bir cron job'a veya komut dosyasına heartbeat URL ekleyerek ePulz.io'nun her başarılı çalıştırmadan sonra "hayattayım" ping'i almasını sağlayın.
Prensip
Heartbeat URL'yi görevin başarılı tamamlanmasından sonra çağırırsınız. Komut dosyası başarısız olursa, URL çağrılmaz, ePulz.io eksik ping'i fark eder ve size uyarı gönderir.
Bash / shell cron
Cron satırınızın sonuna curl çağrısını && operatörüyle ekleyin:
# /etc/crontab veya crontab -e
0 3 * * * /usr/local/bin/backup.sh && curl -fsS -m 10 \
https://epulz.io/heartbeat/Qs78OPNIIsCF_-Vj > /dev/null
curl flag'leri:
-f= 2xx olmayan yanıtta başarısız (curl hata döner)-s= silent (progress yazmaz)-S= ama hataları gösterir (-s ile kombinasyon)-m 10= max-time 10 saniye (timeout)> /dev/null= yanıt cron log'u doldurmaz
Python
Python komut dosyaları için requests veya urllib üzerinden çağrı ekleyin:
import os
import requests
HEARTBEAT_URL = os.environ.get("HEARTBEAT_URL")
def sync_data():
# ... mantığınız ...
pass
try:
sync_data()
# Heartbeat yalnızca sync_data() istisna fırlatmazsa gönderilir
if HEARTBEAT_URL:
requests.get(HEARTBEAT_URL, timeout=10)
except Exception as e:
# Heartbeat gönderilmez - ePulz.io size uyarı yapar
print(f"Sync failed: {e}")
raise
Harici kütüphane olmadan, yalnızca standart ile:
import urllib.request
# Görevin başarılı tamamlanmasından sonra
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 yalnızca başarılı tamamlamadan sonra
await fetch(HEARTBEAT_URL, { signal: AbortSignal.timeout(10000) });
}
nightlyJob().catch(err => {
console.error(err);
process.exit(1); // Heartbeat gönderilmez, ePulz.io size uyarı yapar
});
Docker / systemd timer
systemd timer için, .service dosyasına ExecStartPost ekleyin:
# /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 yalnızca ExecStart başarılı olduğunda çalışır.
PHP / Laravel scheduler
// app/Console/Kernel.php
$schedule->command('backup:run')
->daily()
->thenPing('https://epulz.io/heartbeat/Qs78OPNIIsCF_-Vj');
Laravel'in tam bu amaç için yerleşik thenPing() metodu vardır.
Gelişmiş: başlangıç ve sonda ping
Daha kapsamlı tespit için "start" ping de gönderebilirsiniz (görev başladı) - böylece "görev hiç başlamadı" ile "görev takıldı" arasında ayırım yapabilirsiniz:
# Start ping
curl -fsS -m 10 https://epulz.io/heartbeat/Qs78OPNIIsCF_-Vj/start > /dev/null
# Göreviniz
/usr/local/bin/backup.sh
EXIT_CODE=$?
# Done ping with exit code
curl -fsS -m 10 "https://epulz.io/heartbeat/Qs78OPNIIsCF_-Vj?exit=$EXIT_CODE" > /dev/null
Test - bir çalıştırma simülasyonu
Cron'a eklemeden önce URL'yi manuel olarak test edin:
$ curl -fsS https://epulz.io/heartbeat/Qs78OPNIIsCF_-Vj
OK
Başarılı çağrıdan sonra ePulz.io dashboard'unda monitör durumunun Pending'den OK'a geçtiğini göreceksiniz.