English version

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

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

alert: DockerContainerMemoryNearLimit
expr: container_memory_working_set_bytes{name!=""}
  / (container_spec_memory_limit_bytes{name!=""} > 0) * 100 > 90
for: 10m
severity: warning

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

Что значит

Рабочий набор памяти контейнера (working_set) превышает 90% заданного лимита в течение 10 минут. Правило не срабатывает для контейнеров без лимита памяти.

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

Лимит выбран с недостаточным запасом, утечка памяти, рост нагрузки или кэша.

Диагностика

docker stats --no-stream <имя>
docker inspect <имя> --format '{{.HostConfig.Memory}}'
docker exec <имя> sh -c 'cat /sys/fs/cgroup/memory.current /sys/fs/cgroup/memory.max 2>/dev/null'
docker logs --tail 100 <имя>

Файлы cgroup зависят от версии (v1/v2), поэтому команда может вернуть пусто.

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

Увеличить лимит, найти утечку (heap dump, профилирование), ограничить кэш приложения (maxmemory в Redis, -Xmx для JVM).

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

Если приложение намеренно использует всю выделенную память под кэш и вы это проверили.

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

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