Cron mlčí. Ako zistiť, že nočná úloha vôbec neprebehla?

Web môže fungovať, zatiaľ čo zálohy a importy stoja. Heartbeat pomôže sledovať dokončenie úloh, ktoré nemajú vlastný verejný endpoint.

Analógový budík osvetlený slnečným svetlom na tmavom stole
Fotografia: Suhas Hanjar / Unsplash

Nočný import sa nespustí a ráno zákazníci vidia včerajšie dáta. Web je dostupný, server odpovedá a žiadny bežný HTTP monitor problém neodhalí. Pri pravidelných úlohách potrebujete vedieť aj to, či sa očakávaná práca dokončila včas. Na takúto kontrolu slúži heartbeat: signál od samotnej úlohy.

Sledujte výsledok, nie iba spustenie

Ak úloha pošle signál hneď na začiatku a následne zlyhá, monitor môže ukazovať zavádzajúci úspech. Signál dokončenia odošlite až po overení výsledku: uloženom exporte, úspešnom importe alebo validnej zálohe. Ak systém rozlišuje začiatok a koniec, sledujte navyše aj neprimerane dlhé trvanie.

Úspešný návratový kód ešte nemusí potvrdiť užitočný výsledok. Import bez záznamov môže byť legitímny, ale aj dôsledok nedostupného zdroja. Doplňte primerané overenie počtu dát, čerstvosti alebo existencie výstupného súboru.

Interval nastavte podľa skutočného rozvrhu

Denná úloha potrebuje dennú lehotu a rozumnú toleranciu na oneskorenie. Príliš krátka tolerancia vytvára falošné incidenty; príliš dlhá nechá chybu skrytú celé hodiny. Pri rozvrhu rozlišujte lokálny čas a UTC. Zmena letného času môže ovplyvniť úlohu plánovanú na konkrétnu nočnú hodinu.

Chráňte signál aj samotnú úlohu

Heartbeat adresa môže obsahovať tajný token. Ukladajte ju ako prístupový údaj a nevypisujte do verejných logov. Odoslanie signálu má mať timeout, aby nedostupný monitor nezablokoval dokončenú prácu. Zlyhanie odoslania odlišujte v lokálnom zápise od zlyhania spracovania.

Zamedzte nechcenému prekrývaniu behov, ak úloha nie je na súbeh pripravená. Po reštarte stroja môže byť potrebné zmeškané spustenie doplniť. Rozhodnite, či opakovaný beh spracuje rovnaké dáta bezpečne, a nastavte tomu zodpovedajúci postup obnovy.

Pripravte reakciu na chýbajúci heartbeat

Upozornenie má pomenovať úlohu, posledný úspešný výsledok a zodpovednú osobu. Pri zálohe je reakcia iná než pri menej dôležitom reporte. Pred opätovným spustením overte, či pôvodný proces ešte nebeží a či nehrozí dvojité spracovanie.

  • Nočné zálohy a exporty.
  • Importy produktov a synchronizácie.
  • Generovanie reportov a fakturačné úlohy.
  • Údržba a pravidelné čistenie dát.

Čo si odniesť

Zelený web nepotvrdzuje zdravé úlohy na pozadí. Pridajte samostatný signál dokončenia tam, kde by ste chýbajúci výsledok inak odhalili až od zákazníka.

Dokumentácia a ďalšie čítanie

Mgr. Martin Hlavaj, MBA

Softvérový inžinier

Všetky články

O výpadku sa dozviete včas.

Pridajte svoj web alebo API do UpBota a nastavte, komu príde upozornenie.

Začať monitorovať zadarmo