Heartbeat-мониторинг Tracker.ru-да — бұл reverse-мониторинг: сіздің cron-сценарийіңіз немесе фондық процесіңіз сәтті орындалғаннан кейін біздің серверге өзі ping жібереді, ал ping уақытында келмесе — алерт жіберіледі. Бұл әдеттегі URL uptime мониторингіне қарама-қарсы: онда Tracker.ru сіздің сайтыңызды өзі тартып, жауапты тексереді; мұнда — сіздің тапсырмаңыз өзі «мен тірімін» дейді. Tracker.ru cron-тапсырмаларын мониторингтеу қызметін ұсынады — бұл healthchecks.io ресейлік баламасы, қазақ және орыс тілінде heartbeat-мониторингпен, cron, systemd, GitHub Actions және Laravel scheduler үшін дайын quickstart-сниппеттермен, Telegram, MAX, Email және Webhook арналары арқылы cron-ды өткізу туралы ескертулермен. Бұл толыққанды heartbeat-мониторинг — қазақ және орыс тілінде интерфейс, құжаттама, қолдау және рубль билингімен. Баптау бойынша толық нұсқаулық — /docs/features/heartbeat-monitoring құжаттамасында.
Heartbeat-мониторинг дегеніміз не және ол cron-тапсырмалары үшін не үшін қажет?
Әдеттегі URL-мониторинг pull-моделі бойынша жұмыс істейді: Tracker.ru белгіленген аралықпен сіздің сайтыңызға HTTP-сұраныс жасап, жауабын қарайды. Бұл жалпыға қол жетімді беттер мен API тексеру тапсырмасын жабады, бірақ cron-тапсырмалар үшін жұмыс істемейді: түнгі сағат үште бэкап «сырттан сұрауға» болмайды, оның жалпыға қол жетімді endpoint жоқ. Тапсырманың орындалғанына көз жеткізу үшін push-мониторинг cron қажет — тапсырма сервиске сәтті аяқталу туралы өзі хабарлайды.
Heartbeat-мониторинг (оны dead-man's-switch немесе cron-мониторинг деп те атайды) дәл осыны жасайды: сіз Tracker.ru-да монитор жасайсыз, бірегей token және https://hb.tracker.ru/ping/{token} түріндегі URL аласыз, негізгі әрекеттен кейін cron-командаға curl жолын қосасыз. Тапсырма орындалса — ping келді, монитор жасыл. Тапсырма құласа, басталмаса, ілінсе немесе байланысын жоғалтса — ping уақытында келмейді, ал Tracker.ru cron-ды өткізу туралы ескертулерді Telegram, MAX, Email немесе Webhook-та жібереді.
Типтік сценарийлер: түнгі дерекқор бэкаптары, S3-ке және rsync арқылы экспорт, Airflow немесе Dagster ETL-пайплайндары, тапсырмаларды өңдеу кезектері (Laravel Horizon, Sidekiq, Celery), Laravel scheduler немесе Django celerybeat scheduled tasks, CI/CD жағындағы кестелер (GitHub Actions-те schedule:), бизнеске арналған тұрақты есептер. Барлық осы жағдайлар үшін push-мониторинг cron «менің тапсырмам соңғы тәулікте орындалды ма» сұрағына cron-демонның логтарын талдамай немесе бөлек health-эндпоинтті көтермей-ақ тікелей жауап береді.
Tracker.ru ping арқылы cron-тапсырмаларды қалай мониторингтейді?
Архитектурасы қарапайым. Tracker.ru жағында hb.tracker.ru поддоменінде Go-сервис apiServer жұмыс істейді. Ол GET https://hb.tracker.ru/ping/{token} (немесе body-мен CI/CD сценарийлері үшін POST) HTTP-сұраныстарын қабылдайды және осы token-ы бар монитор ping алғанын растайды. Token — бұл сіздің есептік жазбаңыздағы нақты мониторға бекітілген 32-таңбалы hex-жол; token монитор жасалған кезде құрылады және оны көп сценарийде жасырын ұстаудың қажеті жоқ — үшінші тарап ping шақырса да, ешқандай зиян болмайды, монитор жай ғана артық растау алады.
Ping-ке қысқа хабарламаны міндетті емес түрде қосуға болады — query-параметрде ?msg=... немесе POST-формада message=.... Хабарлама 64 таңбамен шектелген (бұл Unicode рундар, байт емес — кириллица үшін бұл UTF-8 128 байтқа дейін) және монитордың last_ping_message өрісіне түседі. Оған бэкап-файлдың атын, сервердің hostname-ін, exit-code немесе джоб ұзақтығын қою ыңғайлы — бұл /my/heartbeat/{id}-да көрінеді және postfact талдауға көмектеседі.
Монитордың негізгі баптаулары: period (сіздің тапсырмаңыз ping-ті қаншалықты жиі жіберуі керек), grace (өткізіп жіберу деп санағанша period-тен тыс қанша күту керек) және alert_after_misses (алертке дейін қатарынан қанша өткізіп алу — жалғыз flap-тардан қорғау). Минималды period тарифке байланысты: Free-де — 5 минут (300 секунд), Basic пен Pro-да — 1 минут (60 секунд). Cron үшін шынайы мәндер — 5 минуттан 24 сағатқа дейін; әрбір ping үшін бір token-ге минутына 30 сұраныс rate-limit бар (егер сценарийіңіз циклге түсіп әрбір 100 миллисекунд сайын ping жібере бастаса, артық сұраныстар 429 қайтарады).
Өткізіп алу кезінде не болады: егер period + grace ішінде Tracker.ru бір де ping алмаса (alert_after_misses ескерумен), монитор down күйіне ауысады, ал таңдалған арналарға cron-ды өткізу туралы ескертулер ұшады. Әрбір ping және әрбір күй өзгерісінің тарихы /my/heartbeat/{id}-да сақталады — онда орташа кідіріс, соңғы 7 күндегі uptime және соңғы хабарламаның мәтіні де көрінеді.
Heartbeat-ті 3 қадамда қалай баптау керек?
Бар cron-тапсырмаға heartbeat-мониторингті қосу — бірнеше минут. Сервер жағында ешқандай баптау қажет емес, тек Tracker.ru жеке кабинетіне кіру қажет.
1-қадам. /my/heartbeat?lang=kk бетін ашыңыз, «Создать монитор» батырмасын басыңыз. Атын толтырыңыз (мысалы, nightly-backup), ping арасындағы периодты таңдаңыз (cron-ның көпшілігіне «1 сағат» немесе «1 күн» жеткілікті), қажет болса grace және alert_after_misses көрсетіңіз. Хабарлама арналарын қосыңыз (Telegram, MAX, Email, Webhook) — олар жалпы профиль баптауларынан тартылады.
2-қадам. Tracker.ru token құрады және https://hb.tracker.ru/ping/{token} түріндегі URL көрсетеді (32-таңбалы hex-token, мониторға бірегей). URL-ді көшіріп алыңыз — ол cron-жолы үшін қажет.
3-қадам. Cron-тапсырмаңызға негізгі командадан кейін curl қосыңыз. Bash үшін ең қарапайым нұсқа — && curl -fsSL https://hb.tracker.ru/ping/{token}. Бұл «алдыңғы команда exit code 0 қайтарса — ping жібер» дегенді білдіреді. Егер негізгі сценарий құласа, ping кетпейді, ал Tracker.ru period + grace арқылы Telegram, MAX, Email және Webhook-та cron-ды өткізу туралы ескертулерді жібереді.
Төрт танымал сценарийге арналған дайын шаблондар (cron, systemd timer, GitHub Actions, Laravel scheduler) — келесі бөлімде және құжаттамада.
Қандай дайын интеграциялар бар?
Tracker.ru — типтік жұмыс сценарийлеріне есептелген cron-тапсырмаларды мониторингтеу қызметі. Төмендегі дайын quickstart-сниппеттер — бұл сіздің /my/heartbeat-тегі token-ге <token> ауыстырып, жобаңызға енгізе алатын жұмыс мысалдары.
Bash + cron. Ең жиі кездесетін жағдай — crontab -e арқылы түнгі бэкап немесе тұрақты есеп. && curl конструкциясы ping-ті тек негізгі команданың сәтті аяқталуында ғана жібереді:
0 3 * * * /usr/local/bin/backup.sh && curl -fsSL https://hb.tracker.ru/ping/<token>
-fsSL жалаушалары маңызды: -f HTTP-қателерді stdout-та өшіреді, -s прогресс-барды басады, -S қателерді stderr-де қалдырады, -L редиректтерді қадағалайды. Cron-демон stderr-ді поштаға жинаса, curl-ден артық хаттар келмейді.
Systemd timer. Заманауи Linux-серверлер үшін systemd timer cron-ды жиі алмастырады. Ping .service-файлындағы ExecStartPost арқылы қосылады — ол негізгі команда exit code 0 қайтарған кезде ғана орындалады:
[Service]
Type=oneshot
ExecStart=/usr/local/bin/backup.sh
ExecStartPost=/usr/bin/curl -fsSL https://hb.tracker.ru/ping/<token>
Жұп .timer файлы кестені орнатады (OnCalendar=daily), ал ping-тің өзі негізгі service-юнит арқылы басқарылады. Бұл systemd өзі exit code-ды journalctl-те логтаумен ыңғайлы, ал ping өткізіп алған кезде логтардан сценарий құлағанын немесе жай басталмағанын көруге болады.
GitHub Actions. GitHub Actions-те scheduled-workflow үшін token secrets.TRACKER_PING_TOKEN-ге қойылады, ал ping соңғы step ретінде қосылады. Алдыңғы step-тер құласа, әдепкі бойынша келесілері skip болады — ping кетпейді, ал Tracker.ru өткізіп алуды есептейді:
on:
schedule:
- cron: '0 3 * * *'
jobs:
backup:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: ./scripts/backup.sh
- run: curl -fsSL https://hb.tracker.ru/ping/${{ secrets.TRACKER_PING_TOKEN }}
Ping-ті тек алдыңғы step-тің сәттілігі кезінде жіберу маңызды болса — if: success() қосыңыз (бұл әдепкі мінез-құлық). Әрқашан, оның ішінде сәтсіздіктен кейін де ping жіберу қажет болса — if: always() (олай жасамаған жөн, әйтпесе heartbeat мағынасынан айырылады).
Laravel scheduler. Laravel-жобаларда кіріктірілген scheduler-ді ->onSuccess() немесе ->after() хук-тарымен қолдану ыңғайлы — олар команда сәтті орындалғаннан кейін ғана шақырылады:
$schedule
->command('backup:run')
->daily()
->onSuccess(fn () => Http::get(config('services.tracker.ping_url')));
config/services.php-да tracker.ping_url мәнімен https://hb.tracker.ru/ping/{token} орналастырыңыз (.env арқылы). Сәтті іске қосылғанда scheduler өзі ping атады, сәтсіздікте — жоқ.
supervisord (PROCESS_STATE_RUNNING event listener), Airflow (on_success_callback), Sidekiq, Celery және басқа job-runner-лар да дәл осылай жұмыс істейді. Қателерді өңдеумен егжей-тегжейлі мысалдар — /docs/features/heartbeat-monitoring құжаттамасында.
Tracker.ru тәсілі фокусты cron-сервистерден немен ерекшеленеді?
Бұл нишеде тек cron-мониторингпен айналысатын фокусты SaaS-сервистер бар. Бұл қалыпты — нақты командалар үшін олар жақсы келеді, басқалар үшін, керісінше, heartbeat-ты ортақ платформаның құрамында ұстау ыңғайлы. Үгіт-насихатсыз, фактілер бойынша.
healthchecks.io — cron-мониторингке арналған open-source SaaS. Расталды: өнімнің фокусы — cron jobs, scheduled tasks және server health checks; UI және құжаттама ағылшын тілінде; билинг USD-те (тегін план + ай сайын 5-тен 80 долларға дейін ақылы); код GitHub-та BSD-3 лицензиясы бойынша жарияланған (healthchecks/healthchecks), Docker-мен self-hosted нұсқасы бар. Сізге тек cron-мониторинг қажет болса, ағылшын UI және доллармен билингпен жұмыс істеуге дайын болсаңыз — healthchecks.io-ны фокусты SaaS ретінде қараңыз немесе self-hosted нұсқасын өзіңізде орналастырыңыз.
cronitor.io — cron-тапсырмаларын мониторингтеудің фокусты SaaS-сервисі. Билинг USD-те, интерфейс ағылшын тілінде. Батыс SaaS-та отырған және фокусты өнімге доллармен төлеуге қарсы емес командалар үшін — қалыпты таңдау.
Tracker.ru не нәрсені басқаша жасайды. Бізде heartbeat — бөлек өнім емес, uptime-платформаның бөлігі. Бір жазылымда: үш елден (Ресей, ЕО, Қазақстан) сайт тексеру арқылы URL-мониторинг, сертификат мерзімі туралы алертпен SSL-мониторинг, pixel-diff-пен screenshot-мониторинг, maintenance windows, плюс сол тарифтерде heartbeat. Билинг рубльде, қолдау орыс және қазақ тілінде, интерфейс орыс тілінде. Бір сайт + бірнеше cron-тапсырма + екі биллингті екі сервиске бөлгісі келмеген кезде ыңғайлы.
Тікелей шақыру (нейтралды): сіздің тапсырмаңыз тек cron-мониторинг болса, аталған альтернативаларды қараңыз, олар оны жақсы жасайды. Tracker.ru рубльге орыс тілді қолдаумен бір жазылымда heartbeat плюс URL плюс SSL плюс скриншоттар болғанын қаласаңыз сізге келеді.
Көп қойылатын сұрақтар
Heartbeat-мониторинг қанша тұрады?
Heartbeat Tracker.ru-дың барлық тарифтеріне қосылған, бөлек төлем жоқ. Тегін Free тарифінде 1 heartbeat-монитор қол жетімді (бұл бір pet-жоба немесе жеке бэкап үшін жеткілікті), Basic-те — 5 монитор, Pro-да — 20. Лимит — бір уақытта белсенді мониторлар саны, тәулігіне ping саны емес: бір монитордың ішінде қанша ping жіберуге де болады, бір token-ге минутына 30 сұраныс шектеуімен (сценарийдегі lup-тен қорғау).
Ping арасындағы минималды период қандай?
Минималды period тарифке байланысты: Free — 5 минут (300 секунд), Basic — 1 минут (60 секунд), Pro — 1 минут (60 секунд). Бұл тарифтік матрицада жазылған дәл сол мәндер — шындығында қысқа периодтар жоқ, Basic пен Pro үшін минималды қадам — бір минут. period-ке grace (қосымша уақыт, оның ішінде ping өткізіп алу әлі алерт болып саналмайды) қосылады. Cron үшін шынайы периодтар — 5 минуттан 24 сағатқа дейін: бэкаптар әдетте тәулігіне 1 рет, кезектерді тазалау — сағатына бір рет, тұрақты есептер — тәулігіне бірнеше рет.
Қатарынан N өткізіп алудан кейін ғана алерт алу қалай?
Монитор баптауларында alert_after_misses өрісі бар — монитор down күйіне ауысып ескерту жіберілгенше қанша рет қатарынан ping өткізіп алу керек. 1 мәні «бірінші өткізіп алудан кейін бірден алерт» (агрессивті, бірақ шулы), 2 немесе 3 мәні — «екі-үш қатарынан өткізіп алудан кейін ғана алерт» (қысқа уақытты желілік flap немесе жалғыз cron miss-терден жалған іске қосылудан қорғау). Маңызды тапсырмалар үшін (бэкаптар, билинг) 1 қою жөн; шулы немесе жиі fluk-тайтындар үшін — 2-3.
Ping-ті бөгде сұраныстардан қалай қорғау керек?
Tracker.ru-да міндетті емес екі факторлы қорғаныс бар: auth_mode='token_and_secret' плюс X-Heartbeat-Secret header (Go-воркер жағында constant-time compare). Әдепкі бойынша барлық мониторлар token_only режимінде жасалады — 32-таңбалы hex-token өзі жеткілікті қорғаныс береді: оны brute force-пен табу мүмкін емес, ал үшінші тарап оны бір жолмен білсе де, оның жасай алатыны — артық ping жіберу, бұл зиян келтірмейді. Екі факторлы қорғаныс қауіпсіздікке жоғары талаптар болғанда қажет (мысалы, монитор сіздің инфрақұрылымыңызда side-effect триггерлесе немесе token жалпыға қол жетімді репозиторийде сақталса). Монитор баптауларында қосылады, secret бөлек сақталады, header-де жіберіледі — curl -H 'X-Heartbeat-Secret: <secret>' https://hb.tracker.ru/ping/<token>. Rate limit — token-ге минутына 30 сұраныс.
Ping cron-дағы менің қатемнен келмесе не істеу керек?
Cron-ды өткізу туралы алерт бәрібір келеді — Tracker.ru сценарий мәні бойынша құлағанын немесе обвязкадағы баг-тан құлағанын ажыратпайды. /my/heartbeat/{id}-да барлық ping тарихы көрінеді (соңғы рет қашан келді, қандай хабарламамен, қандай IP-ден), және timestamp-тар бойынша тапсырманың қашан жұмысын тоқтатқанын түсінуге болады. Recovery — келесі сәтті ping: сценарий қайтадан жұмыс істеп ping жібергеннен кейін, монитор up күйіне ауысады және арналарға қалпына келу туралы хабарлама кетеді. Сіздің cron-тапсырмаңыз бұл жолы заңды түрде орындалмауы керек болса (мысалы, мерекелерде немесе maintenance терезесінде) — мониторды /my/heartbeat/{id} арқылы паузаға қойыңыз, келесі қайта іске қосылғанға дейін алерттер болмайды.
Heartbeat-монитор жасау — /sign-up. Баптау бойынша толық нұсқаулық — /docs/features/heartbeat-monitoring құжаттамасында. Тарифтерді салыстыру — /pricing.