Nadzor cron zadataka

Saznajte čim vaši zakazani zadaci prestanu s radom. Sigurnosne kopije, queue workers, ETL zadaci, satne sinkronizacije — sve se tiho nadzire.

Dodajte heartbeat nadzor →

Nadzor dostupnosti - DiagnoSEO

Problem sa zakazanim zadacima

Okrutna karakteristika cronova je da kada zakazu, ništa ti to neće reći. Web aplikacija i dalje poslužuje zahtjeve, naslovnica izgleda OK, nadzor je "zelen" – ali negdje na serveru noćna sigurnosna kopija nije pokrenuta već dva tjedna. Queue worker se srušio nakon deploya i zaostali poslovi se gomilaju. Sinkronizacija svaki sat potiho gubi retke zbog problema s dozvolama. Saznat ćeš tek kad nešto nizvodno konačno padne – obično baš kad ti to najviše treba. Data tim želi izvoz, podrška red čekanih mailova, ops backup. Tada je već prekasno.

Standardni uptime monitoring to neće uhvatiti jer nema što pingati. Cron ne izlaže HTTP endpoint, ne otvara port, ne pokreće server. Pokrene se, završi, to je to. Ako prestane raditi – nema nikakvog signala o njegovom izostanku dok ne počneš istraživati.

Obrnuti obrazac: monitoring heartbeat

Monitoring heartbeat (poznat i kao "dead man's switch" ili "monitoring crona") okreće smjer. Umjesto da mi provjeravamo tvoju uslugu, tvoja usluga se prijavljuje nama. Dodaš jedan redak u cron – curl na jedinstveni URL koji generiramo – a taj URL bilježi vremensku oznaku pri svakom pinganju. Mi pratimo izostanak tih pingova. Ako URL ne bude pogođen unutar očekivanog intervala (plus tolerancija), tretiramo to kao propušteni ciklus i šaljemo upozorenje.

Model je jednostavan, pouzdan i neovisan o jeziku. Sve što može napraviti HTTP zahtjev – integrira se. Bash preko curl, Python preko requests, Node preko fetch, PHP preko curl_init, Task Scheduler na Windowsu preko Invoke-WebRequest, GitHub Actions, Kubernetes CronJobs, Lambda zakazani događaji – bilo što. Bez SDK-a, bez agenta, bez demona za instalaciju.

Kako konfigurirati

U DiagnoSEO Uptime Monitoring klikni "Dodaj monitor", odaberi tip "Heartbeat / cron". Alat generira jedinstveni URL s tokenom – nešto poput https://app.diagnoseo.com/tools/uptime-monitoring/hb.php?t=abc123xyz9. Postavi očekivani interval (koliko često treba raditi zadatak, u minutama) i toleranciju (koliko zakašnjenje je još u redu prije nego paničarimo). Spremi.

Sada izmijeni cron tako da pingira URL nakon svakog uspješnog izvršenja. Tri stila ovisno o okruženju:

# Bash cron - ping samo nakon uspjeha
0 3 * * * /usr/bin/backup.sh && curl -fsS https://app.diagnoseo.com/tools/uptime-monitoring/hb.php?t=abc123xyz9 > /dev/null

# Ili ako je djelomičan uspjeh OK
0 3 * * * /usr/bin/backup.sh; curl -fsS https://app.diagnoseo.com/tools/uptime-monitoring/hb.php?t=abc123xyz9 > /dev/null

# Python
import requests
def main():
    do_the_work()
    requests.get('https://app.diagnoseo.com/tools/uptime-monitoring/hb.php?t=abc123xyz9', timeout=5)

# GitHub Actions
- name: Notify heartbeat
  if: success()
  run: curl -fsS https://app.diagnoseo.com/tools/uptime-monitoring/hb.php?t=abc123xyz9

Od tog trenutka svaki uspješan ciklus pingira nas, a mi bilježimo timestamp. Ako ne vidimo ping unutar interval + tolerancija minuta, otvara se incident i šalju se obavijesti na sve uključene kanale: Email, Telegram, Slack, Discord, SMS.

Odabir intervala i tolerancije

Interval treba točno odgovarati rasporedu zadatka. Noćni backup u 3:00 – interval 1440 minuta (24 h). Sinkronizacija svaki sat – 60. Worker koji anketira svakih 5 min – 5.

Tolerancija apsorbira prirodni jitter. Cronovi se ne pokreću baš u nanosekundama – čekaju na kraj prethodnog ciklusa, rade back-off kod kratkotrajnih grešaka. 24-satni job s tolerancijom od 1h daje udoban buffer bez odgađanja upozorenja. 5-minutni worker s margineom od 2 minute brzo hvata prave padove, bez false positive zbog 30-sekundnog kašnjenja. Otprilike: postavi toleranciju na 10–50% intervala, ovisno koliko se job "ljulja".

Obrasci koje preporučujemo

  • Ping samo nakon uspjeha. Koristi && u bashu – ciklus koji padne ne pingira. Mi ćemo otkriti izostanak pinga i alarmirati.
  • Ping nakon svake iteracije petlje. Za dugo-živuće workere pingaj unutar petlje nakon svake uspješne jedinice posla, ne na kraju. Tako se "zamrznuti" worker otkriva tijekom izvršavanja.
  • Jedan heartbeat po logičkom jobu, ne po skripti. Ako tri skripte zajedno čine jedan noćni pipeline, pingaj samo na kraju lanca. Daje jasan signal "je li pipeline živ".
  • Kombiniraj s logovima. Heartbeat govori da se job pokrenuo. Logovi aplikacije govore što je napravila. Zajedno daje punu sliku.

Što se događa kad heartbeat nestane

Incident se otvara u trenutku isteka roka. Nadzorna ploča prikazuje monitor u crvenom s greškom "Nema heartbeata već X minuta". Obavijesti se šalju na sve kanale koje imaš uključene. Kada svježi heartbeat stigne, monitor se automatski vraća na "up" – označava se kao up, incident se zatvara i (ako imaš uključene recovery alerte) dobivaš obavijest "ponovno online".

Sve ovo ima isti tretman kao i drugi monitori – toplinska karta, postotak uptimea, povijest, tagovi, pretraživanje, izvoz. Iz perspektive nadzorne ploče, monitor heartbeat je samo još jedan red, koji se može sortirati i filtrirati uz HTTP, ping, port i API.

Kontrolna lista

Dodaj monitor → tip Heartbeat → kopiraj generirani URL → dodaj u cron / worker / scheduler → postavi interval i toleranciju → spremi → gotovo. Sada ćeš znati u sekundi kad zakazano zadatko prestane raditi – što je dugoročno jedna od najvažnijih odluka u monitoringu koju možeš donijeti.

Najčešća pitanja

  • Obrnuti monitoring — tvoje zakazano zadatako pingira naš URL kada se uspješno pokrene. Ako ga ne čujemo unutar očekivanog vremena, šaljemo alert. Rješava problem tihih kvarova: neispravan cron-job ne generira grešku i ne pokreće klasični uptime alert.

  • Dodaj curl -fsS <heartbeat_url> na kraj cron komande. Ako naredba prije toga ne uspije, curl se neće izvršiti i heartbeat će biti preskočen. Alternativno, pingaj na početku I na kraju različitim endpointima — daje odvojene signale "započeto" i "završeno".

  • Otprilike 2-3x tipično vrijeme izvršenja zadatka. Ako tvoj dnevni backup traje 30 minuta, postavi grace na 90 minuta – pokriva usporavanja bez lažnih alertova. Za zadatke s promjenjivim trajanjem namjesti izdašan period i koristi nadzornu ploču za prepoznavanje outliera.

  • Da – postavi interval na odgovarajući (npr. 60 minuta očekivano s 15-minutnim grace). Monitor očekuje ping najmanje svakih 75 minuta. Ako se tvoj zadatak pokreće češće (svakih 5 minuta), heartbeat URL to također podržava – samo prilagodi postavku intervala prema potrebi.

  • Da. Dodaj odlazni HTTP zahtjev na heartbeat URL na kraj Lambda funkcije. Monitor to tretira isto kao cron heartbeat – isto alertiranje, isti grace period. Korisno za zakazane Lamba funkcije gdje CloudWatch alarmi ne prepoznaju tihe kvarove izvršavanja.

Dodajte heartbeat nadzor →

Osvojite bolje pozicije i kvalitetan promet

Raste vaš posao s vodećim AI softverom za SEO i content marketing.

Nadogradi na Advanced