Heartbeat-мониторы стали лучше: мёртвый cron больше не спрячется
Heartbeat-мониторы — тихие работяги PingZen: не мы проверяем ваш сервис, а ваша cron-задача или пайплайн пингует URL со словами «я жив», и если пинг не пришёл вовремя — вы получаете алерт. Идеально для бэкапов, ETL-задач и обработчиков очередей — тех вещей, за которыми никто не следит, пока они молча не остановятся.
Вот это «молча» и было проблемой. Мёртвый heartbeat было слишком легко пропустить, а если вы что-то заподозрили — посмотреть на него было негде. Мы починили и то, и другое, а заодно вычистили форму создания.

Мёртвый heartbeat больше не спрячется
Вот баг, с которого всё началось. Когда падает обычный монитор, об этом кричит всё приложение: сайдбар переключается на «Система: Критично», бейдж в навигации краснеет, тайл «Down» на дашборде подскакивает. Упавший heartbeat не делал ничего из этого. Сайдбар по-прежнему показывал «Система: Здорова», а дашборд — «Down: 0». Ровно противоположное тому, что нужно от инструмента мониторинга.
Теперь упавший heartbeat — это критическое событие, каким он и является:
- Индикатор в сайдбаре становится критическим в момент пропуска пинга — на любой странице, а не только на «Мониторах».
- Бейдж «Мониторы» в навигации считает мёртвые heartbeat вместе с мёртвыми мониторами.
- Дашборд показывает красную строку «N heartbeat не в сети», так что остановившийся cron виден прямо на главной.
- Воркспейс, где есть только heartbeat, теперь показывает реальный статус здоровья, а не вечное «неизвестно».
Если ваш ночной бэкап перестал пинговать — вы увидите это так же, как увидели бы падение сайта.
Кликните по heartbeat, чтобы увидеть пинги
Полная история пингов у heartbeat была всегда — но посмотреть на неё было негде. Строки просто висели. Теперь клик по любому heartbeat открывает детальный вид.
Внутри — компактный таймлайн приходов пингов: одна полоска на пинг, цвет по сигналу (зелёный success, синий ping, start, красный fail), так что ритм задачи виден с одного взгляда — и виден разрыв, где она остановилась. Ниже — таблица последних пингов с точным временем и длительностью.
Вид только для чтения и намеренно построен на истории пингов, которая у вас уже есть — ничего настраивать, ничего включать. Кликнули по heartbeat — увидели, когда он последний раз отметился и насколько регулярно. Редактирование, пауза и удаление живут тут же.
Мелкие фиксы, которые складываются
Пока мы были в коде heartbeat, починили несколько заноз:
- Создание heartbeat больше не падает с непонятной ошибкой. Короткое имя вроде «Backup» раньше подставляло slug, который сервер потом отклонял, — и вы получали ошибку про поле, которого не трогали. Теперь slug всегда валиден.
- Удаление heartbeat сразу обновляет счётчик плана вместо того, чтобы оставлять «X / 55» устаревшим на полминуты — а это важно, если вы удаляете один, чтобы вернуться под лимит.
- Доступность и dark-mode — нормальные подписи у полей интервала и grace-периода, и строка конфигурации, которую наконец видно на тёмном фоне.
Ничего громкого, но создавать и управлять heartbeat стало заметно приятнее.
Heartbeat-мониторинг — из тех фич, что настраиваешь один раз и забываешь. Именно поэтому он обязан быть громким, когда что-то ломается, и удобным для разбора, когда пошёл смотреть. Эту планку мы только что взяли. Если у вас есть cron-задачи, запланированные задания или фоновые воркеры — направьте один на heartbeat-URL и дайте PingZen следить за тишиной за вас.