Cron — алерт когда задача не запустилась по расписанию
cron-сервис жив, но задача (timer disabled, MAILTO=root спам, sh-syntax-error в crontab) не отрабатывала ночью. classic «забыли что вчерашняя ночь дала пустые отчёты».
Рецепт
#!/usr/bin/env bash
# /etc/cron.d/cron-skipped
# Run this at the END of the cron job you want to monitor:
# 30 3 * * * root /opt/some-job.sh && /opt/cron-ping.sh some-job
# /opt/cron-ping.sh — sends success ping with name
NAME=${1:?usage: cron-ping.sh <job-name>}
curl -fsS "$HEARTBEAT_URL/cron/$NAME" --data "ts=$(date +%s)"
# A separate guard runs at 03:45 (15 min AFTER the expected window)
# and complains if no ping arrived. That's a "dead-man's switch" —
# if the monitor itself has retention you need NOTHING ELSE on the box:
# 45 3 * * * root /opt/cron-watchdog.sh some-job
То же самое в Enterno.io
Сделайте Enterno heartbeat в режиме «expected schedule» — он сам считает «должно было прийти к 03:30» и алерт-нёт если ping опоздал больше grace-period. Никакого второго watchdog-cron-а на машине.
Похожие рецепты
Ваш cron стал молча не запускаться. Нужен алерт, если скрипт пропустил окно выполнения.
Контейнер падает по OOM, restart-политика поднимает его обратно — наружу никаких сигналов, пока пользователи не пожаловались.
Логи или backup-файлы съедают /var; через 24 часа сервер ляжет. Базовый df-чек один раз в 10 минут спасает от 2 АМ инцидента.