Алерт при OOM-kill контейнера
Контейнер падает по OOM, restart-политика поднимает его обратно — наружу никаких сигналов, пока пользователи не пожаловались.
Рецепт
#!/usr/bin/env bash
# /etc/cron.d/docker-oom-watch
# */5 * * * * root /opt/docker-oom.sh
# Check for OOM events in the last 5 minutes (kernel ring buffer).
HITS=$(dmesg --since="5min ago" 2>/dev/null | grep -ci 'killed.*oom-killer\|out of memory')
if [ "$HITS" -gt 0 ]; then
# Heartbeat ping with status=lag tells the monitor "I am alive
# AND something is wrong" — different from missed pings (host down).
curl -fsS "${HEARTBEAT_URL}?status=oom&hits=${HITS}" -m 5 || true
fi
То же самое в Enterno.io
Heartbeat-мониторы Enterno различают «не пингует совсем» и «пингует со статусом ошибки». Cron выше попадает во второй сценарий — алерт сработает мгновенно.
Похожие рецепты
Ваш cron стал молча не запускаться. Нужен алерт, если скрипт пропустил окно выполнения.
Логи или backup-файлы съедают /var; через 24 часа сервер ляжет. Базовый df-чек один раз в 10 минут спасает от 2 АМ инцидента.
Нужно убедиться, что сайт возвращает 2xx каждую минуту, и получить алерт в Slack/Telegram при падении.