Моніторинг cron job'ів

Ваш cron впав о 3-й ранку. Дізнайтеся про це о 3:01.

Cron не повідомляє про збої. Job падає, розклад продовжує рухатися далі, і ви дізнаєтеся про це через кілька днів від клієнта. Cronitorex очікує пінг від кожного запуску і сповіщає вас протягом 60 секунд, коли один із них не приходить.

db-backup останні 30 запусків · один тихий збій виявлено

Три стани покривають весь запуск

Кожен запуск повідомляє run на старті, потім complete чи fail при завершенні. Два додаткові виклики у вашому crontab: цього достатньо. Без агента, без демона, без бібліотеки для встановлення.

З цих пінгів Cronitorex будує хронологію для кожного job'а: тривалості, exit-коди, історію збоїв. Запуск, що почався і ніколи не завершився, теж рахується як збій.

/etc/crontab
*/5 * * * * root cronitorex ping db-backup run; /opt/backup.sh && cronitorex ping db-backup complete || cronitorex ping db-backup fail

Тиша: це теж збій

Впалий сервер не надсилає жодного пінгу fail. Cronitorex знає очікуваний інтервал кожного job'а і чекає додатковий пільговий період, щоб поглинути звичайні коливання. Коли це вікно закривається без пінгу, ви отримуєте сповіщення про пропущений запуск.

Обидва значення ви налаштовуєте самі для кожного монітора. Нічний бекап із 15-хвилинним пільговим періодом поводиться інакше, ніж job синхронізації, що виконується кожні 5 хвилин із 60-секундним пільговим періодом.

invoice-sync кожні 5 хвилин, за розкладом
nightly-backup один запізнілий запуск, один пропущений, одне сповіщення

Один обгортач замість трьох пінгів

Клієнт cronitorex.sh обгортає вашу команду: надсилає run, виконує job, вимірює тривалість, захоплює exit-код та останні рядки stderr, потім завершується complete чи fail. Ви змінюєте одне слово у crontab, а не свій скрипт.

Уже маєте повний crontab? Команда discover читає його і створює монітор для кожного знайденого job'а, беручи розклад безпосередньо з cron-виразу.

bash
# обгортаємо будь-який job: захоплюємо exit-код, тривалість і stderr
cronitorex.sh run db-backup -- /opt/backup.sh

# імпортуємо наявний crontab як монітори
cronitorex.sh discover /etc/crontab

Часті запитання про моніторинг cron

Чи працює це з іншими планувальниками, крім cron?

Так. Будь-що, що може надіслати HTTP-запит, може надіслати пінг: таймери systemd, Kubernetes CronJobs, задачі Airflow, GitHub Actions, Планувальник завдань Windows. Cronitorex бачить лише пінги, а не планувальник за ними.

Що вважається подією?

Кожен пінг: це одна подія: run, complete, fail чи skip. Job, що надсилає run і complete раз на годину, генерує близько 1 440 подій на місяць, тож 50 000 подій на плані Free покривають десятки job'ів.

Що відбувається, коли я досягаю своєї квоти подій?

API починає повертати HTTP 402, і нові пінги не приймаються до скидання місяця або оновлення плану. Нічого не видаляється; панель і ваша історія залишаються доступними весь час.

Почніть моніторинг за 60 секунд

Зареєструйтеся, отримайте API-ключ, вставте curl у свій cron. Ось і все.