Heartbeat (cron-задачи, бэкапы)

Мониторинг cron-задач и бэкапов (heartbeat)

Мониторинг cron-задач по принципу heartbeat: ваш скрипт сам «отмечается» по уникальной ссылке после успешного выполнения. Не отметился вовремя — вы получите уведомление, что бэкап, обмен с 1С или очередь не отработали.

Зачем нужен контроль выполнения бэкапов и cron jobs

Ночной бэкап не делался три недели, потому что изменился пароль к базе. Cron-задача обмена с 1С молча падает после обновления PHP. Очередь писем встала. Об этом никто не узнает, пока не понадобится тот самый бэкап.

Heartbeat переворачивает мониторинг: не мы опрашиваем вашу задачу, а задача отмечается у нас после успешного выполнения. Не отметилась вовремя — приходит уведомление. Работает для любых периодических процессов: cron, бэкапы, ETL, обработчики очередей, синхронизации.

Что проверяем

  • Cron, бэкапы, очереди, ETL — любые периодические задачи
  • Допустимое опоздание
  • Одна строка: curl -fsS https://notifar.io/hb/…

Типичные причины сбоев

  • Задача не запустилась: cron отключён, сменился путь к интерпретатору, истёк токен.
  • Задача упала посередине: нет места под архив, недоступна база, таймаут внешнего API.
  • Задача выполняется дольше периода и накладывается на следующую.
  • Часовой пояс сервера сменился, и расписание уехало.

Как работает heartbeat-мониторинг: проверка, что бэкап выполнился

Для монитора выдаётся уникальный адрес. В конец задачи добавляется одна строка: curl на этот адрес. Вы задаёте ожидаемый период (например, раз в сутки) и допустимое опоздание. Если отметка не пришла в срок, открывается инцидент и уходит уведомление; следующая отметка закрывает его.

Отметку можно отправлять с любым HTTP-клиентом — из bash, PHP, Python, из шага CI. Проверка стоит 0,01 ₽ за каждый контрольный цикл.

Что приходит в уведомлении

Telegramтолько что
🔴 Ночной бэкап — не работает
heartbeat

Причина: нет отметки более 26 ч (ожидалось раз в 24 ч)
Начало: 14.09.2026 03:15 (МСК)

Открыть монитор →

Так выглядит сообщение о сбое; о восстановлении придёт отдельное — с длительностью простоя. Каналы: Telegram, MAX, email, SMS, звонок, webhook.

Параметры проверки

ПараметрОписание
Допустимое опоздание, секИнтервал монитора = ожидаемый период сигналов (по умолчанию: 300)

Интервал — от 1 минута до 1 суток (рекомендуем 1 час). Проверка выполняется с основной точки.

Dead man switch для cron: чем лучше самописного учёта запусков

  • Ловит именно «не запустилось» и «упало посередине», чего не видит ни один внешний опрос.
  • Одна строка в задаче вместо своей системы учёта запусков.
  • Допустимое опоздание, чтобы задержавшийся на 10 минут бэкап не будил вас ночью.

Вопросы

Что нужно добавить в скрипт?
Одну команду в конце: curl -fsS -m 10 https://notifar.io/hb/ВАШ_ТОКЕН. Если поставить её только после успешного завершения, упавшая задача отметку не пришлёт.
Можно ли передать результат выполнения?
Да, достаточно факта запроса. Тело запроса и параметры игнорируются, чтобы не хранить лишнего.
Как задать период?
Выберите интервал, с которым задача должна отмечаться, и допустимое опоздание. Уведомление приходит, когда с последней отметки прошло больше, чем интервал плюс опоздание.
Подходит ли для задач раз в неделю или в месяц?
Интервал монитора — до суток, допустимое опоздание — до суток. Для более редких задач отмечайтесь раз в сутки из отдельной проверки, которая смотрит дату последнего успешного запуска.
Сколько стоит?
0,01 ₽ за контрольный цикл — раз в сутки это около 30 копеек в месяц.