Nadzor cron opravil

Izvedite takoj, ko vaša načrtovana opravila prenehajo delovati. Varnostne kopije, zaledni obdelovalci, ETL naloge, urna usklajevanja – vse nemoteno spremljamo.

Dodajte nadzor signala →

Uptime Monitoring - DiagnoSEO

Težave z načrtovanimi opravili

Krvava lastnost cronov je, da če odpovejo, ti tega nihče ne sporoči. Spletna aplikacija še naprej sprejema zahtevke, domača stran zgleda v redu, monitoring je povsod zelen – a nekje na strežniku se nočna varnostna kopija že dva tedna ni zagnala. Queue worker je zatajil po deployju in nedokončani jobi se kopičijo. Sinhronizacija vsako uro potiho izgublja vrstice zaradi težav z dovoljenji. Izveš šele, ko nekaj spodaj spodleti – običajno ravno takrat, ko to najbolj potrebuješ. Data team hoče izvoz, support čaka na email queue, ops potrebuje backup. Takrat je že prepozno.

Standardni monitoring uptime tega ne zazna, ker nima česa pingati. Cron ne izpostavlja HTTP endpointa, ne odpira porta, ne poganja strežnika. Zažene se, dokonča, konec. Če preneha delovati – ni nikakršnega signala o njegovi odsotnosti, dokler ne začneš iskati.

Povratni vzorec: heartbeat monitoring

Heartbeat monitoring (imenovan tudi "dead man's switch" ali "cron monitoring") obrne smer. Namesto da mi preverjamo tvojo storitev, se tvoja storitev prijavi pri nas. Dodaš eno vrstico v cron – curl na edinstveni URL, ki ga ustvarimo – in ta URL beleži časovni žig pri vsakem pinganju. Mi pazimo na odsotnost teh pingov. Če URL ne prejme zahteve v predvidenem intervalu (z dodatno toleranco), to štejemo kot izpuščen ciklus in pošljemo opozorilo.

Model je preprost, zanesljiv in neodvisen od jezika. Vse, kar zna narediti HTTP zahtevo, se lahko integrira. Bash z curl, Python z requests, Node z fetch, PHP z curl_init, Windows Task Scheduler z Invoke-WebRequest, GitHub Actions, Kubernetes CronJobs, Lambda scheduled events – karkoli. Brez SDK-ja, brez agenta, brez daemonov za namestitev.

Kako nastaviti

V DiagnoSEO Uptime Monitoring klikni "Dodaj monitor", izberi tip "Heartbeat / cron". Orodje ustvari edinstven URL s tokenom – nekaj v stilu https://app.diagnoseo.com/tools/uptime-monitoring/hb.php?t=abc123xyz9. Nastavi pričakovani interval (kako pogosto naj job teče, v minutah) in toleranco (koliko zamude je pri jobu še ok, preden sprožimo paniko). Shrani.

Zdaj spremeni cron, da pingne URL po vsakem uspešnem zagonu. Trije stili, odvisno od okolja:

# Bash cron – pingaj le po uspehu
0 3 * * * /usr/bin/backup.sh && curl -fsS https://app.diagnoseo.com/tools/uptime-monitoring/hb.php?t=abc123xyz9 > /dev/null

# Ali če je delni uspeh v redu
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 tega trenutka vsak uspešen zagon pingne nas in mi zabeležimo timestamp. Če pinga ne vidimo v interval + toleranca minutah, se odpre incident in obvestila se pošljejo na vse vključene kanale: Email, Telegram, Slack, Discord, SMS.

Izbira intervala in tolerance

Interval naj natančno sledi urniku tvojega joba. Nočni backup ob 3:00 – interval 1440 minut (24h). Sinhronizacija vsako uro – 60. Worker, ki preverja vsakih 5 minut – 5.

Toleranca pokrije naravni jitter. Croni se ne zaganjajo natančno v nanosekundi – se postavijo v vrsto, čakajo konec prejšnjega cikla, delajo back-off pri začasnih napakah. 24-urni job s toleranco 1h omogoča udoben buffer, ne da bi odlašali z opozorili. 5-minutni worker z 2-minutno toleranco hitro ujame resničen izpad, brez false positive-ov zaradi 30-sekundnega nihanja. Na splošno: tolerance nastavi na 10–50% intervala, glede na to, koliko tvoj job "niha".

Vzorci, ki jih priporočamo

  • Pingaj le po uspehu. Uporabi && v bashu – če job pade, ne pinga. Mi zaznamo odsotnost pinga in sprožimo alarm.
  • Pingaj po vsaki iteraciji zanke. Pri dolgo delujočih workerjih pingaj znotraj zanke po vsaki uspešni enoti dela, ne šele na koncu. Tako se zmrznjeni worker zazna že med tekom.
  • En heartbeat na logični job, ne na skripto. Če so trije skripti skupaj en nočni pipeline, pingaj enkrat na koncu verige. Tako dobiš jasen signal, ali pipeline živi.
  • Poveži z logi. Heartbeat pomeni, da se je job zagnal. Logi aplikacije povedo, kaj je naredil. Skupaj dobiš celotno sliko.

Kaj se zgodi, če heartbeat izgine

Incident se odpre v trenutku, ko poteče rok. Na nadzorni plošči se monitorjevo polje obarva rdeče z napako "Brez heartbeata že X minut". Obvestila gredo na vse tvoje vključene kanale. Ko svež heartbeat prispe, monitor samodejno preklopi nazaj na "up" – označi se kot delujoč, incident se zapre, in (če imaš vključena obvestila o okrevanju) prejmeš tudi sporočilo "back online".

Vse to deluje kot pri vseh drugih monitorjih – heatmapa, odstotek uptime, zgodovina, oznake, iskanje, izvoz. Z vidika nadzorne plošče je heartbeat monitor zgolj še ena vrstica, ki jo lahko razvrstiš in filtriraš poleg HTTP, pinga, porta in API.

Kontrolni seznam

Dodaj monitor → tip Heartbeat → kopiraj ustvarjeni URL → dodaj v cron / worker / scheduler → nastavi interval in toleranco → shrani → končano. Od zdaj naprej boš v sekundi izvedel, če načrtovano opravilo preneha delovati – kar je dolgoročno ena ključnih monitoring odločitev, ki jih lahko sprejmeš.

Pogosta vprašanja

  • Povratni monitoring – tvoje načrtovano opravilo pingne naš URL, ko se uspešno zažene. Če ga ne slišimo v predvidenem oknu, opozorimo. Odpravi problem tihih izpadov: pokvarjen cron-job ne vrže napake in ne sproži običajnega uptime alarma.

  • Dodaj curl -fsS <heartbeat_url> na konec cron ukaza. Če predhodni ukaz spodleti, se curl ne izvede in heartbeat se izpusti. Lahko pingneš tudi na začetku in na koncu z različnimi URL-ji — s tem dobiš ločena signala "started" in "completed".

  • Približno 2–3x tipičnega časa izvajanja opravila. Če tvoje dnevno varnostno kopiranje traja 30 minut, nastavi toleranco na 90 minut — tako upoštevaš upočasnitve brez lažnih alarmov. Za opravila z nepredvidljivim časom nastavi bolj radodarno in uporabi dashboard za odkrivanje odstopanj.

  • Ja – nastavi interval glede na zagon (npr. 60 minut pričakovano in 15 minut tolerance). Monitor pričakuje ping najmanj vsakih 75 minut. Če je tvoje opravilo pogostejše (npr. vsakih 5 minut), heartbeat URL to prav tako podpira — samo ustrezno nastavi interval.

  • Da. Dodaj HTTP klic na heartbeat URL na konec svoje Lambda funkcije. Monitor obravnava to povsem enako kot cron heartbeat — enako opozarjanje, enaka toleranca. Uporabno za načrtovane Lamba funkcije, kjer CloudWatch alarmin ne zaznajo tihih izpadov izvajanja.

Dodajte nadzor signala →

Odkleni višje uvrstitve in kakovosten promet

Rastite svoje podjetje z vrhunsko programsko opremo za SEO in vsebinski marketing z umetno inteligenco.

Nadgradi na Advanced