English version

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

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

alert: DockerContainerGone
expr: count by (instance, name) (container_last_seen{name!=""} offset 5m)
unless
count by (instance, name) (container_last_seen{name!=""})
for: 1m
severity: warning

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

Что значит

Контейнер присутствовал в метриках 5 минут назад, а сейчас cAdvisor его не видит. Алерт активен около 5 минут после исчезновения, затем гаснет сам, поэтому реагировать нужно быстро.

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

Контейнер остановлен (docker stop, exit), удалён при обновлении (docker compose up пересоздал его с новым ID), упал и не перезапустился (нет restart: always).

Диагностика

docker ps -a --filter name=<имя>
docker inspect <имя> --format '{{.State.Status}} exit={{.State.ExitCode}} oom={{.State.OOMKilled}}'
docker logs --tail 100 <имя>
journalctl -u docker -n 50 --no-pager

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

Запустить контейнер (docker start <имя> или docker compose up -d), по логам понять причину остановки, при необходимости задать политику restart: unless-stopped.

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

При плановом удалении или переименовании контейнера. Для контейнеров, которые по замыслу живут короткое время (задачи), исключите их по метке name.

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

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