Heartbeat («пульс») — механизм проактивного подтверждения работоспособности: контролируемая система сама периодически отправляет сигнал в систему мониторинга. В отличие от активных проверок (мониторинг пингует хост снаружи), при heartbeat инициативу проявляет сам контролируемый сервис. Если ожидаемый сигнал не пришёл в течение заданного интервала + grace period — считается, что система упала, и система мониторинга отправляет уведомление.
Как работает
Heartbeat подходит для задач, которые нельзя проверить внешней HTTP-проверкой: cron-задания, фоновые воркеры, скрипты резервного копирования. Внешний монитор не может знать, запустился ли скрипт бэкапа в 3:00 ночи — но скрипт сам может отправить сигнал после успешного завершения.
Типичная реализация: в конце bash-скрипта или cron-задания добавляют curl -s https://uptime.betterstack.com/api/v1/heartbeat/TOKEN. Сервис мониторинга (Uptimerobot, Better Uptime, Cronitor, Healthchecks.io) ожидает сигнал с заданным интервалом. Если GET-запрос не пришёл в течение interval + grace period (обычно 10–60 минут) — алерт в Telegram/Slack/email.
В кластерной инфраструктуре heartbeat используется иначе. Утилита heartbeat (Linux-HA) и keepalived реализуют протокол обмена сообщениями между нодами кластера высокой доступности. Ноды периодически обмениваются UDP/multicast сообщениями. Если primary-нода перестала отвечать — secondary перехватывает виртуальный IP-адрес (floating IP) и становится активной. Это основа для High Availability (HA) в хостинге.
TCP keepalive — отдельный механизм: операционная система периодически отправляет пустые TCP-сегменты через простаивающее соединение, чтобы обнаружить разрыв. Настраивается через /proc/sys/net/ipv4/tcp_keepalive_time (по умолчанию 7200 секунд). Используется в постоянных соединениях: SSH, database connections, WebSocket.
История
Термин «heartbeat» в вычислениях появился в ранних телекоммуникационных системах 1970-х годов. В контексте Linux HA проект Heartbeat основан в 1999 году Аланом Робертсоном и стал основой кластерного ПО с открытым исходным кодом. Linux-HA Heartbeat v2 (2004) и Pacemaker (2007) — эволюция проекта. В современном SaaS-мониторинге heartbeat popularized Healthchecks.io (2015) — open-source сервис для мониторинга cron-заданий через URL-пинги.
Применение в хостинге
- Мониторинг cron-заданий: скрипт бэкапа, генератор ситемапов, обработчик очереди — отправляют heartbeat после успешного выполнения.
- Кластер высокой доступности: keepalived обменивается heartbeat-сообщениями между серверами для автоматического failover.
- Мониторинг воркеров: PHP-воркер очереди, который должен работать непрерывно, отправляет heartbeat каждую минуту.
- Проверка БД: периодический «SELECT 1» к базе данных как heartbeat для пул соединений — убеждается, что соединение живо.
На что обращать внимание
Настраивайте grace period разумно: если cron-задание может выполняться до 30 минут, grace period должен быть не менее 40–60 минут, иначе получите ложные алерты. Для критических задач используйте два heartbeat: один в начале (задание запустилось), один в конце (задание завершилось успешно). Разница времён позволяет детектировать зависшие процессы.
Для VPS-инфраструктуры keepalived + floating IP — простой способ организовать HA без дорогого оборудования: два VPS с keepalived и один виртуальный IP автоматически переключаются при падении primary-сервера за 1–5 секунд.
Heartbeat-мониторинг интегрируется с Uptime Robot для проверки фоновых задач. systemd-timer выполняет задачу → curl на heartbeat URL. Prometheus pushgateway — альтернатива для метрик фоновых задач. Мониторинг сервера включает heartbeat компоненты. SLA требует непрерывности процессов.