Расписание и запас
Когда именно мы решаем, что задача не выполнилась.
Монитор ждёт пинг до ожидаемого времени плюс запас. Не дождался — открывает инцидент и шлёт оповещение.
Как выбрать запас
Запас — это не «сколько задача работает», а «насколько она может опоздать со стартом». Ночной бэкап, стартующий строго в три, обходится пятью минутами. Задача, ждущая очереди на общем раннере, требует часа.
Слишком узкий запас хуже слишком широкого. Ложные тревоги приучают не смотреть на уведомления — и настоящая авария теряется среди них.
Максимальная длительность
Если задача шлёт сигнал начала, мы дополнительно следим за тем, сколько она идёт. Дедлайн берётся как более ранняя из двух точек: «ожидаемое время плюс запас» и «начало плюс максимальная длительность». Так зависшая задача обнаруживается, не дожидаясь следующего по расписанию запуска.
Часовые пояса и перевод стрелок
Расписание считается в часовом поясе монитора, с учётом перехода на летнее время. В сутки с переводом стрелок задача «каждый день в 03:00» ожидается один раз — не дважды и не ноль раз, ровно как ведёт себя системный cron.