Croni tööde jälgimine
Uuri kohe, kui sinu ajastatud ülesanded katkestavad töö. Varundused, järjekorra tööjõud, ETL-protsessid, tunnised sünkroonimised – kõik jälgimise all.
Probleem kavandatud ülesannetega
Croni julm omadus on see, et kui need katkestavad töö, ei anna sellest keegi Sulle märku. Veebirakendus teenindab jätkuvalt päringuid, avaleht tundub korras, monitooring näitab rohelist – kuid kuskil serveris pole öist varundust tehtud juba kaks nädalat. Queue worker kukkus pärast deploy’d maha ning tööd kuhjuvad. Iga tunnine sünkroniseerimine kaotab vaikselt ridu õiguste probleemide tõttu. Saad teada alles siis, kui midagi allavoolu lõpuks laguneb – tavaliselt täpselt siis, kui seda kõige enam vajad. Andmetiim soovib eksporti, tugi ootab e-kirju, ops tahab backupi. Siis on juba liiga hilja.
Tavaline uptime’i monitooring seda ei tuvasta, sest pole midagi, mida “pingida”. Cron ei ava HTTP endpointi, ei ava porti, ei käivita serverit. Käivitub, lõpetab, läheb kinni. Kui see lakkab töötamast — puudub signaal selle puudumisest, kuni Sa ei hakka ise uurima.
Pöördustatud muster: heartbeat-monitooring
Heartbeat-monitooring (tuntud ka kui "dead man's switch" või "cron-monitooring") pöörab suuna ümber. Selle asemel, et meie kontrolliks Sinu teenust, Sinu teenus registreerib end meil. Lisad croni ühele reale – curl unikaalsele URL-ile, mille me genereerime – see URL salvestab ajatempliga iga “löögi”. Me jälgime nende pingide puudumist. Kui URL pole oodatud intervalli (koos varuga) jooksul “löödud”, siis loeme selle vahelejäänuks ja saadame häire.
Mudel on lihtne, töökindel ja keeleülene. Kõik, mis oskab teha HTTP requesti – integreerub. Bash kaudu curl, Pythonis requests, Node’is fetch, PHP-s curl_init, Windowsi Task Scheduleris Invoke-WebRequest, GitHub Actions, Kubernetes CronJobs, Lambda ajastatud sündmused – ükskõik mis. Ilma SDK, ilma agendita, ilma daemoni installeerimiseta.
Kuidas seadistada
DiagnoSEO Uptime Monitoringus kliki “Lisa monitor”, vali tüüp “Heartbeat / cron”. Tööriist genereerib unikaalse URL-i koos tokeniga – nagu näiteks https://app.diagnoseo.com/tools/uptime-monitoring/hb.php?t=abc123xyz9. Määra oodatav intervall (kui tihti job peab töötama, minutites) ja varu (kui palju võib hilineda enne kui paanikasse satume). Salvesta.
Nüüd muuda cronit, et iga eduka töö lõpus pingiks seda URL-i. Kolm stiili sõltuvalt keskkonnast:
# Bash cron - ping ainult edu korral
0 3 * * * /usr/bin/backup.sh && curl -fsS https://app.diagnoseo.com/tools/uptime-monitoring/hb.php?t=abc123xyz9 > /dev/null
# Või kui osaline õnnestumine on 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
Sellest hetkest pingib iga edukas töö meid ja me salvestame ajatempliga. Kui me ei näe ping’i intervall + varu minuti jooksul, avatakse intsident ja teavitused saadetakse kõikidele sisse lülitatud kanalitele: Email, Telegram, Slack, Discord, SMS.
Intervalli ja varu valik
Intervall peaks sobima täpselt töö ajakavaga. Öine backup kell 3:00 – intervall 1440 minutit (24h). Iga tunnine sünk – 60. Worker, mis küsitleb iga 5 minuti järel – 5.
Varu katab loomuliku jiteri. Cronid ei käivitu nanosekundi täpsusega – neid järjekohastatakse, ootavad eelmise töö lõppu, teevad back-offi hetkekatetega. 24-tunnine töö ühe tunni varuga annab mugava puhvri ilma häireid hilistamata. 5-minutiline worker 2-minutilise varuga püüab päris “suremised” kiiresti, ilma valedalartideta isegi 30-sekundilise viivituse puhul. Üldjoontes: säti varu 10-50% intervallist, sõltuvalt kui palju Sinu töö “kõigub”.
Soovitatud mustrid
- Ping ainult edu korral. Kasuta bash’is
&&– jooks, mis nurjus, ei pingi. Meie tuvastame pingimata jätmise ja anname alarmi. - Ping iga tsükli järel. Pikka aega töötavate workerite puhul pingige tsükli sees pärast iga edukat tööühikut, mitte töö lõpus. Nii tuvastatakse kinni jäänud worker jooksu ajal.
- Üks heartbeat iga loogilise töö kohta, mitte iga skripti kohta. Kui kolm skripti moodustavad ühe öise pipeline’i, pingi lõpuks üks kord. See annab puhta signaali “kas pipeline töötab”.
- Ühenda logidega. Heartbeat ütleb, et töö käivitus. Rakenduse logid ütlevad, mis tehti. Koos saavad täisülevaate.
Mida teha, kui heartbeat kaob
Intsidendi staatus avatakse kohe pärast tähtaja möödumist. Dashboard näitab monitori punasena veaga “Pole heartbeat’i alates X minutist”. Teavitused saadetakse kõigile seatud kanalitele. Kui värske heartbeat saabub, läheb monitor automaatselt tagasi üles – see märgitakse üles, intsident suletakse ja (kui taastumishäired on sisse lülitatud) saad teavituse “back online”.
Kogu seda käsitletakse nagu kõiki teisi monitoore – soojuskaart (heatmap), uptime protsent, ajalugu, sildid, otsing, eksport. Dashboardi vaates on heartbeat-monitor lihtsalt järgmine reas, sorteeritav ja filtreeritav koos HTTP, ping, port ja API-ga.
Kontrollnimekiri
Lisa monitor → vali tüüp Heartbeat → kopeeri genereeritud URL → lisa cron-i / workeri / schedulerisse → määra intervall ja varu → salvesta → valmis. Nüüd saad teada sekundiga, kui kavandatud töö lõpetab töötamise – mis on pikaajaliselt üks olulisemaid monitooringuotsuseid, mida teha saad.
Korduma kippuvad küsimused
-
Pöördmonitorimine — sinu ajastatud töö pingib meie URL-i siis, kui see edukalt käivitud. Kui sellest oodatud aja jooksul midagi ei kuule, anname häire. See lahendab vaikselt katki minevate cron-tööde mure: katki cron ei anna viga ega käivita klassikalist uptime-alerti.
-
Lisa
curl -fsS <heartbeat_url>croni käsu lõppu. Kui eelnev käsk ebaõnnestub, siis curl ei käivitu ning heartbeat jääb vahele. Alternatiivselt pingida erinevaid URL-e alguses ja lõpus – annab eraldi signaali “alustatud” ja “lõpetatud”. -
Umbes 2-3x töötava töö tüüpilisest kestusest. Kui sinu päevane backup kestab 30 minutit, siis sea varu 90 minutit — lubab aeglustusi ilma valetada häireteta. Muutuva kestusega tööde jaoks vali pigem suurem väärtus ja kasuta dashboardi outlier’ite tuvastamiseks.
-
Jah — määra vastav intervall (nt. 60 minutit oodatud, 15 minutit varu). Monitor ootab siis ping’i vähemalt iga 75 minuti tagant. Kui töö on tihedam (iga 5 min), siis heartbeat-URL töötab ka — lihtsalt kohanda intervalli seadeid.
-
Jah. Lisa heartbeat-URL-ile HTTP-päring oma Lambda funktsiooni lõppu. Monitor käsitleb seda samamoodi nagu cron heartbeat’i — sama alertimine, sama grace period. Väga kasulik ajastatud Lambda’dele, kus CloudWatchi alarme ei püüa vaikseid töö rikkeid.
UptimeRobot · Pingdom · BetterStack · Oh Dear · Site24x7 · StatusCake · Sentry · Uptrends · Cronitor · New Relic
SSL-i jälgimine · Domeeni aegumine · DNS-i jälgimine · Ping (ICMP) · Port (TCP) · Lõpp-punkt · Märksõna · API · Reaktsiooniaeg · Tagasilink · Asukohapõhine · Veebisaidi jälgimine