English version

DockerContainerOomKilled: что делать при алерте

Правило алерта

alert: DockerContainerOomKilled
expr: increase(container_oom_events_total{name!=""}[10m]) > 0
for: 0m
severity: critical

Сообщение алерта: Контейнер {{ $labels.name }} убит по нехватке памяти ({{ $labels.instance }})

Что значит

Ядро убило процесс контейнера из-за превышения лимита памяти: счётчик container_oom_events_total вырос за последние 10 минут.

Частые причины

Слишком малый лимит, утечка памяти, всплеск нагрузки, неверные настройки runtime (heap больше лимита контейнера).

Диагностика

docker inspect <имя> --format 'OOMKilled={{.State.OOMKilled}} exit={{.State.ExitCode}} limit={{.HostConfig.Memory}}'
docker logs --tail 100 <имя>
dmesg -T | grep -i -E 'oom|killed process' | tail
docker stats --no-stream

Как исправить

Поднять лимит памяти, привести настройки приложения в соответствие с лимитом, исправить утечку. Следите за рестартами — DockerContainerRestartLoop.

Когда можно заглушить

Нельзя оставлять без внимания: OOM означает потерю процесса. Допустимо на тестовых стендах.

Похожие алерты

Весь набор из 44 протестированных правил + Alertmanager → Telegram: 790 ₽
Открыть в Telegram · Бесплатный набор Monitoring Lite · Все алерты runbook