Инструкции

Heartbeat для AI-агентов: как обнаруживать сбои в реальном времени, а не постфактум

Два дня простоя из-за тихого сбоя Redis — без ошибок, без алертов. Разбираю три типа тихих сбоев агентов и архитектуру heartbeat-мониторинга: dead man's switch, progress-aware сигналы, автовосстановление.

20 марта 2026 г.
8 мин чтения
мультиагентные системы

В четверг вечером я запустил агента на обработку ежедневных отчётов. В пятницу утром проверил результаты — всё в порядке. В понедельник открыл dashboard и обнаружил, что за выходные агент не обработал ни одного отчёта. Два дня тишины.

Причина: Redis перезагрузился после обновления ОС. Соединение разорвалось. Агент поймал exception, retry не помог, процесс завис в ожидании reconnect — молча, без логов, без крика о помощи. Мониторинг следил за ошибками, а здесь ошибки не было. Было отсутствие активности.

Три типа тихих сбоев

Зависание. Агент ждёт ответа от внешнего сервиса. Timeout не настроен. Процесс жив, CPU — ноль. По метрикам инфраструктуры — нормально. Но агент ничего не делает.

Бесконечный цикл без прогресса. Агент получает ошибку, ловит внутри и повторяет. Процесс активен, логи пишутся. Полезная работа не выполняется.

Деградация до нуля. Агент работает, но перестал получать задачи: upstream сломался, cron сбился, API-ключ истёк. Формально жив, фактически бесполезен.

Общее: стандартный мониторинг не ловит. Метрики в норме. Ошибок нет. Человек узнаёт, когда клиент спрашивает: «А почему отчёты не пришли?»

Heartbeat: идея

Агент периодически отправляет HTTP-сигнал «я жив и работаю». Централизованный сервис принимает сигналы. Если сигнал не пришёл — тревога. Dead man's switch: реакция на отсутствие события, а не на событие.

Архитектура: Agent → Heartbeat Endpoint → Scheduler → Alert Channel.

Progress-aware heartbeat

Обычный heartbeat ловит зависания и crashи, но пропускает бесконечные циклы. Progress-aware heartbeat привязан к прогрессу: агент вызывает tick() после каждой завершённой единицы работы. Если за интервал счётчик не изменился — status stalled, алерт.

Настройка интервалов

Правило: grace = 2× interval как стартовая точка.

Real-time бот: heartbeat 30 сек, grace 60 сек.

Batch processor: 5 мин / 10 мин.

Cron-агент: heartbeat при запуске/завершении, grace = 1.5× cron interval.

Heartbeat vs мониторинг логов

Мониторинг логов ищет присутствие паттерна (ошибка, exception). Тихий сбой — отсутствие паттерна. Heartbeat — явный сигнал, не побочный эффект логирования. Идеально: оба. Логи — для диагностики, heartbeat — для обнаружения.

Расширенные паттерны

Heartbeat с метаданными. Текущая задача, размер очереди, память — передаются вместе с сигналом.

Групповой heartbeat. Для мультиагентных систем: один сигнал от группы, отдельный — от каждого.

Heartbeat-driven автовосстановление. Scheduler перезапускает агента при пропущенном сигнале.

Canary heartbeat. Агент выполняет тестовую задачу и отправляет результат — подтверждает не только жизнь, но и работоспособность.

Мой агент теперь шлёт heartbeat каждые 60 секунд. Когда Redis снова перезагрузился — через 3 минуты я получил Telegram-уведомление. Перезапустил за минуту. Один день на настройку — два дня простоя предотвращены.

Автор: Алик Завалишев

Эксперт по ИИ и автоматизации процессов

Больше статей