Dead man switch (буквально «выключатель мёртвой руки», встречается и как dead man's switch, и как «реверсивный мониторинг») — это способ заметить, что задача не выполнилась. Обычный мониторинг бьёт тревогу, когда что-то сломалось и прислало сигнал. Dead man switch устроен наоборот: алерт приходит, когда сигнал перестал поступать.
Ваш ночной бэкап, выгрузка остатков, рассылка отчётов или любая задача по расписанию каждый раз сообщает: «я отработал». Перестала сообщать — вам приходит уведомление. В Tracker.ru эта механика называется heartbeat-мониторинг и настраивается из личного кабинета за пару минут.
Чем dead man switch отличается от обычного мониторинга
Сайт может прекрасно отвечать на запросы, а ночной бэкап при этом второй месяц молча падать. Классический мониторинг доступности этого не увидит — сайт-то работает. Dead man switch видит именно тишину там, где должен быть сигнал.
| Обычный мониторинг | Dead man switch | |
|---|---|---|
| Что отслеживает | Что сайт отвечает на запросы | Что задача регулярно отчитывается |
| Когда приходит алерт | Когда сайт перестал отвечать | Когда задача перестала отчитываться |
| Что ловит | Падение сайта, ошибку, таймаут | Молчание: задача не запустилась или упала |
| Что не ловит | Тихо упавший фоновый процесс | Падение самого сайта |
Это два разных инструмента под две разные слепые зоны. Для сайта нужен один, для фоновых задач — другой.
Зачем нужен dead man switch
Он закрывает задачи, которые работают без человека и о провале которых вы узнаёте, только когда уже поздно: бэкапа за нужную дату нет, отчёт не ушёл, остатки на сайте неверны. Типичные кандидаты:
- Ночные бэкапы баз данных и файлов.
- Регулярные выгрузки и синхронизации — товары, остатки, заказы, обмен с 1С.
- Рассылки и отчёты по расписанию — еженедельная сводка, ежедневный дайджест.
- Очистка временных файлов, логов, истёкших сессий.
- Продление SSL-сертификатов — автообновление иногда тихо ломается.
- Любые задачи в планировщике cron, в systemd-таймерах, в GitHub Actions.
Общее у всех — никто не сидит и не смотрит, отработали они или нет. Пока всё хорошо, тишина воспринимается как норма. А когда задача незаметно перестаёт запускаться, выясняется это в худший момент.
Как настроить dead man switch в Tracker.ru
Готовый сервис dead man switch не нужно собирать самому — достаточно создать heartbeat-монитор. Порядок такой:
- Создайте монитор в разделе heartbeat-мониторов. Укажите, как часто задача должна отчитываться (раз в час, раз в сутки) и сколько подождать опоздание, прежде чем бить тревогу.
- Скопируйте персональную ссылку-пинг — она выглядит как
https://hb.tracker.ru/ping/<ваш-токен>и привязана только к этому монитору. - Добавьте вызов этой ссылки в самый конец задачи — чтобы пинг уходил только после успешного завершения работы.
- Выберите канал алертов — Telegram, MAX, email или webhook.
Ключевой момент: пинг отправляется последней строкой задачи. Если задача упала на середине — до пинга дело просто не дойдёт, сигнал не уйдёт, и вы получите алерт. Именно поэтому такой мониторинг ловит не только «сервер выключили», но и «скрипт сломался по дороге».
Готовые примеры для bash, systemd и GitHub Actions — в пошаговом руководстве по мониторингу cron-задач. Технические детали пинга — периодичность, токен, форматы запроса — собраны в документации по heartbeat-мониторингу.
Пример: молчание ночного бэкапа
Скрипт бэкапа базы запускается в 3:00 и в самом конце дёргает ссылку-пинг. Месяцами всё идёт гладко: пинг приходит каждую ночь, монитор зелёный, вы о нём даже не вспоминаете.
Однажды на сервере кончилось место. Бэкап упал на середине — до строки с пингом дело не дошло. В 3:15 в Telegram прилетел алерт: «бэкап не отчитался». Утром вы освободили диск и перезапустили задачу.
Без dead man switch вы бы узнали об этом в самый неподходящий момент — когда бэкап реально понадобился, а свежей копии нет. Здесь же проблему было видно тем же утром, пока она ничего не стоила.
Когда dead man switch не нужен
Это не универсальное решение, и навешивать его на всё подряд не стоит:
- Разовые ручные запуски мониторить незачем — вы и так рядом и видите результат.
- Сам сайт или API dead man switch не закрывает. Для них нужен обычный мониторинг доступности — про разницу подробно в статье чем uptime-мониторинг отличается от observability.
- Если задача и так присылает вам письмо об ошибке и вы его читаете — это частичная замена. Но письмо приходит, только когда задача запустилась и упала. Молчание — когда задача вообще не стартовала — таким письмом не ловится. А это самый коварный случай.
Dead man switch закрывает ровно одну вещь: слепую зону «задача тихо не выполнилась».
Часто задаваемые вопросы
Что такое dead man switch простыми словами?
Это сигнализация на молчание. Вы договариваетесь с сервисом, что ваша задача будет регулярно подавать признаки жизни — отправлять короткий сигнал «я отработала». Пока сигналы приходят вовремя, всё спокойно. Как только сигнал не пришёл в срок, сервис понимает: что-то пошло не так, и присылает вам алерт. В отличие от обычного мониторинга, который реагирует на ошибку, dead man switch реагирует именно на тишину.
Чем dead man switch отличается от heartbeat-мониторинга?
Это одно и то же, просто разные названия. «Heartbeat» (сердцебиение) — про регулярный сигнал, который шлёт задача. «Dead man switch» — про реакцию на пропажу этого сигнала. В Tracker.ru функция называется heartbeat-мониторинг, и она работает ровно как dead man switch: ждёт пинг, а при его отсутствии — бьёт тревогу.
Как сделать dead man switch для бэкапов?
Создайте heartbeat-монитор, задайте период (для ночного бэкапа — раз в сутки) и допустимое опоздание. Скопируйте ссылку-пинг и добавьте её вызов в самый конец скрипта бэкапа — после того как копия успешно создана и проверена. Тогда пинг уйдёт только при удачном бэкапе. Если скрипт упадёт раньше или не запустится вовсе, пинг не придёт, и вы получите алерт. Пошаговые примеры команд — в руководстве по мониторингу cron-задач.
Что будет при кратковременном сбое сети?
Один пропущенный или опоздавший пинг из-за моргнувшей сети не обязан сразу поднимать тревогу. При настройке монитора вы задаёте запас по времени сверх периода и можете требовать несколько пропусков подряд, прежде чем придёт алерт. Так разовое опоздание не превращается в ложное срабатывание, а реальное молчание — замечается.
Это платный сервис?
Heartbeat-мониторинг доступен на тарифах Tracker.ru вместе с мониторингом сайтов — отдельный сервис под dead man switch заводить не нужно. Нужный тариф зависит от того, сколько мониторов вам требуется; актуальные планы и цены — на странице тарифов. Начать можно с одного монитора на самую важную задачу — например, на ночной бэкап.
См. также
- Heartbeat-мониторинг — лендинг — что это, в каких сценариях нужен и чем отличается от мониторинга сайтов.
- Руководство по мониторингу cron-задач — практические примеры для bash, systemd и GitHub Actions: как обернуть задачу в пинг.
- Heartbeat-алерты в MAX — как получать уведомления о молчании задач в мессенджере MAX, а не только в Telegram.
- Чем uptime-мониторинг отличается от observability — где проходит граница между «сайт работает» и более глубокой телеметрией.
- Сравнение с Healthchecks.io — как Tracker.ru соотносится с зарубежным сервисом мониторинга cron-задач.
- Настройка Telegram-уведомлений — как привязать чат и выбрать, куда придут алерты.