Алерт когда бэкап старше N часов
Cron бэкапа тихо упал, никто не заметил, через неделю обнаружится при инциденте. Нужен алерт, если последний backup-файл старше 30 часов.
Рецепт
#!/usr/bin/env bash
# Run hourly. Pings the heartbeat ONLY if a fresh backup exists.
# A missed ping = alert — exactly the dead-man-switch contract.
BACKUP_DIR="${BACKUP_DIR:-/var/backups/db}"
MAX_AGE_HOURS="${MAX_AGE_HOURS:-30}"
HEARTBEAT_URL="${HEARTBEAT_URL:?heartbeat URL required}"
NEWEST=$(find "$BACKUP_DIR" -type f -mmin -$((MAX_AGE_HOURS*60)) | head -1)
[ -n "$NEWEST" ] && curl -s -o /dev/null --max-time 10 "$HEARTBEAT_URL"
То же самое в Enterno.io
Heartbeat-мониторы Enterno отличают "пинга вообще не было" от "пинг был, но ошибка" — именно то, что нужно бэкап-проверке: молчание = тревога.
Похожие рецепты
Ваш cron стал молча не запускаться. Нужен алерт, если скрипт пропустил окно выполнения.
Контейнер падает по OOM, restart-политика поднимает его обратно — наружу никаких сигналов, пока пользователи не пожаловались.
Логи или backup-файлы съедают /var; через 24 часа сервер ляжет. Базовый df-чек один раз в 10 минут спасает от 2 АМ инцидента.