У heartbeat-чека пять статусов. Понимание переходов между ними объясняет, когда именно придёт алерт — и почему иногда он (правильно) не приходит.
| Статус | Что означает | Алерты |
|---|---|---|
| new | чек создан, ни одного пинга ещё не было | нет |
| up | пинги приходят вовремя | событие up при восстановлении |
| late | дедлайн пропущен, идёт grace-период | событие late (если включено) |
| down | grace истёк либо задача явно сообщила о провале | событие down + напоминания |
| paused | мониторинг выключен вручную | нет |
Чек в статусе new не отслеживается планировщиком: дедлайна у него ещё нет — он появится только с первым пингом. Поэтому можно заранее создать чеки под будущие задачи (или раскатать конфигурацию деплоем): пока код не запушен и не пингует, ложных down не будет. Первый успешный пинг переводит чек в up и назначает первый дедлайн.
Дедлайн — момент, когда должен прийти следующий пинг. Считается от фактического времени последнего пинга:
period_sec. Расписание «плавает»: задача, запускающаяся с дрейфом, не копит ошибку;
Grace — допуск после дедлайна, страховка от дрожания расписания
и долгих запусков: cron редко срабатывает секунда в секунду.
В момент дедлайна чек становится late («опаздывает, но
ещё не авария»), и только через
grace_sec секунд — down:
up ──(дедлайн)──▶ late ──(+ grace)──▶ down ▲ │ └────────── любой успешный пинг ◀──────┘
Grace задаётся на чек: от 0 до 30 дней. Переходы по времени выполняет планировщик с точностью до минуты.
Явный сигнал провала минует grace: пинг на
/<uuid>/fail или с ненулевым
кодом выхода (/<uuid>/42)
флипает чек в down сразу — задача сама сообщила, что
упала, ждать нечего.
Пауза, возобновление, удаление и назначение тегов работают и массово — отметьте чеки чекбоксами в списке. Со страницы чека доступны клонирование (конфигурация без истории) и перенос в другой проект аккаунта.
Статусы видны на дашборде, в API и на публичных бейджах; у HTTP-чеков вместо тайминга пингов работают K-подтверждения.