Skip to content

Алерт при OOM-kill контейнера

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

Рецепт

bash
#!/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 выше попадает во второй сценарий — алерт сработает мгновенно.

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

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