Skip to content

Cron — алерт когда задача не запустилась по расписанию

cron-сервис жив, но задача (timer disabled, MAILTO=root спам, sh-syntax-error в crontab) не отрабатывала ночью. classic «забыли что вчерашняя ночь дала пустые отчёты».

Рецепт

bash
#!/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-а на машине.

Настроить Heartbeat monitor → ← Все рецепты

Похожие рецепты

Контейнер падает по OOM, restart-политика поднимает его обратно — наружу никаких сигналов, пока пользователи не пожаловались.