Мониторинг cron заданий
Cron — это мощный инструмент запуска задач по расписанию, он используется при автоматизации различных процессов, таких как резервное копирование, обмен данными между сервисами, обслуживание сервера.
Зачем вообще мониторить cron?
Согласитесь, было бы неприятно узнать, что скрипт резервного копирования не работает уже как пол года, а особенно неприятно, если произошел инцидент и данные уже не восстановить.
Без мониторинга cron-задание может:
-
не запуститься (ошибка в расписании, права, PATH)
-
запуститься, но упасть с ошибкой
-
зависнуть
-
выполняться слишком долго
-
молча перестать работать после обновления сервера
…и Вы узнаете об этом… когда уже стало поздно.
Чтобы избежать подобных ситуаций выполнение cron-заданий нужно мониторить.
Существует несколько подходов к мониторингу:
1. Логи
Самый простой способ.
* * * * * /path/script.sh >> /var/log/myjob.log 2>&1
Что важно:
- логировать stdout и stderr
- лог должен ротироваться (
logrotate) - отсутствие уведомлений
2. Email-уведомления от cron
Cron умеет слать письма, если есть вывод от команды.
MAILTO=admin@example.com
Минусы:
- много шума
- письма часто игнорируются
- требует настройки sendmail на сервере
3. Exit-коды и уведомления
Cron считает задачу успешной, если exit code = 0.
#!/bin/bash
или явно:
command || exit 1
4. Heartbeat (пинг «я жив»)
Отправка запроса на сторонний сервис
Пример:
/bin/script.sh && curl -fsS https://hc-ping.com/UUID
Что это даёт:
- если cron не запустился → нет пинга → алерт
- не нужно читать / парсить логи
Сервисы:
- Healthchecks.io
- Cronitor
- Better Uptime
5. Внешние системы мониторинга
Если инфраструктура сложная:
-
Zabbix
- мониторинг факта запуска
- контроль времени выполнения
- алерты и графики
-
Prometheus + Alertmanager
- cron пишет метрики
- алерты по SLA
-
ELK / Loki
- анализ логов
- алерты по паттернам ошибок
6. Мониторинг времени выполнения
Важно не только выполнился ли скрипт, но и:
- не выполняется ли 2 часа вместо 5 минут
Решения:
timeout- сравнение
start/end - алерт, если длительность > N мин.
Монитоинг cron-заданий — обязательный функционал для обеспечения надежности работы сервисов. Настройка сложной или продвинутой логики мониторинга может оказаться непростой. Наш сервис CRON Manager позволяет отслеживать
- завершение с ненудевым статусом
- превышение времени выполнения
- метрики CPU/RAM задачи
- наличие ключевых слов в логах (ERROR, FATAL, …)
и отправлять уведомление администратору через email / telegram / webhook