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