Heartbeat-мониторинг от Tracker.ru — алерты при пропуске cron-задач

hb.tracker.ru/ping/{token} — push-эндпоинт для мониторинга cron, scheduled tasks и фоновых процессов. Получайте уведомления в Telegram, MAX, Email и Webhook когда ваш скрипт не отработал в срок.

Как это работает?

Создайте heartbeat-монитор в личном кабинете и получите уникальный токен. Ваш скрипт, cron, GitHub Actions workflow или systemd timer пингуют https://hb.tracker.ru/ping/{token} после успешного выполнения. Если ожидаемый пинг не пришёл в срок (с учётом grace period), Tracker.ru присылает алерт в Telegram, MAX, Email или Webhook — в зависимости от настроенных каналов уведомлений.

curl -fsS https://hb.tracker.ru/ping/abcdef0123456789abcdef0123456789

Endpoint возвращает 200 {"ok":true} при успехе, 404 для неизвестного токена, 429 при превышении rate-limit (30 req/min/token).

Quickstart за 30 секунд

Три способа настроить пинг прямо сейчас. Скопируйте — подставьте токен — запустите.

cron

*/5 * * * * curl -fsS https://hb.tracker.ru/ping/$TOKEN > /dev/null

systemd timer

[Service]
Type=oneshot
ExecStart=/usr/bin/curl -fsS https://hb.tracker.ru/ping/%i

[Timer]
OnUnitActiveSec=5min
Unit=hb-ping@%i.service

GitHub Actions

- name: Heartbeat ping
  if: always()
  run: |
    curl -fsS \
      "https://hb.tracker.ru/ping/${{ secrets.HEARTBEAT_TOKEN }}"

Нужны Laravel scheduler, supervisord или PHP-Resque? Готовые рецепты — в документации по heartbeat-мониторингу.

Часто задаваемые вопросы

Что такое поддомен hb.tracker.ru и зачем он отдельный?

hb.tracker.ru — выделенный поддомен для push-эндпоинта heartbeat. Отдельный поддомен изолирует rate-limit пингов от основного веб-приложения tracker.ru: всплеск curl-запросов от cron-скриптов не повлияет на скорость дашборда. Также поддомен упрощает наблюдаемость в логах nginx и удобен для копи-паста в скрипты.

Что вернёт curl https://hb.tracker.ru/ping/{token}?

При успешном пинге — HTTP 200 с JSON {"ok":true}. Если токен не найден или монитор удалён — HTTP 404 {"error":"not_found"}. При превышении лимита — HTTP 429 с заголовком Retry-After. Эндпоинт принимает GET и POST; необязательный параметр msg (max 64 символа) добавляет короткое сообщение в лог.

Какой формат у токена?

Токен — 32 hex-символа (^[0-9a-f]{32}$), генерируется при создании монитора в личном кабинете. Источник правды — Go-handler в hostchecker. Токен уникальный, регистронезависимый, безопасен в URL.

Что произойдёт при превышении rate-limit?

Лимит — 30 запросов в минуту на токен. При превышении возвращается HTTP 429 с заголовком Retry-After (секунды до сброса окна). Лишние пинги не учитываются как «monitor alive», но и не вызывают алерт, если последующие пинги придут вовремя. Для мониторов чаще одного раза в 2 секунды используйте отдельные токены или сервисы push-метрик.

Можно ли тестировать ping локально без регистрации?

Нет — токен привязан к monitor-сущности в базе Tracker.ru, без записи 404. Для dry-run сценариев в CI используйте mock-сервер (например, healthchecks.io self-hosted) или в коде проверяйте HTTP_PROXY=http://localhost:port с собственной заглушкой. После регистрации в tracker.ru вы получите рабочий токен на бесплатном тарифе — этого достаточно для отладки.