feat(monitoring): экспортер метрик по контейнерам поверх Docker Engine API

Разбивка по контейнерам (CPU/память/сеть) — то, что не смог дать
cAdvisor из-за несовместимости с containerd-снапшоттером сервера 1gb
(убран в 7f5c888). Свой минимальный сервис container-exporter (Python/
aiohttp/prometheus_client) опрашивает Docker Engine API параллельно в
фоновой задаче, не завязываясь на scrape-интервал Prometheus.

Доступ к докер-сокету изолирован через docker-socket-proxy: экспортеру
разрешены только GET /containers/json и /containers/*/stats, любые
изменяющие запросы блокируются на уровне прокси (POST=0) — полная
компрометация экспортера не даёт управлять Docker. Ни один из двух
сервисов не публикует портов наружу.

В host.json возвращены панели «Топ контейнеров по CPU/памяти» на новых
метриках vidconf_container_* (в 0.0.9 их убрали вместе с cAdvisor).
This commit is contained in:
2026-07-28 01:39:42 +03:00
parent 7f5c88869a
commit ace5bf7a0d
8 changed files with 1264 additions and 23 deletions

View File

@@ -80,10 +80,9 @@ groups:
summary: "Мало свободной памяти на хосте"
description: >-
Свободно {{ $value | printf "%.1f" }}% RAM дольше 10 минут
(порог 10% ≈ 800 МБ из 8 ГБ). Разбивки по контейнерам в Grafana
нет (cAdvisor несовместим с containerd-снапшоттером на этом
сервере, см. deploy/docker-compose.yml) — смотреть вручную,
например `docker stats`.
(порог 10% ≈ 800 МБ из 8 ГБ). Смотреть, какой контейнер ест
память — дашборд «Хост и контейнеры», топ по памяти
(container-exporter, см. deploy/monitoring/container-exporter/).
# 50 ГБ диска — 10% ≈ 5 ГБ. `for: 15m` (не мгновенно): диск не растёт
# так же резко, как память, ложные срабатывания на всплеск не грозят,
@@ -114,6 +113,6 @@ groups:
summary: "Устойчиво высокая загрузка CPU хоста"
description: >-
Загрузка CPU {{ $value | printf "%.1f" }}% дольше 15 минут
подряд (порог 90% из 4 ядер). Разбивки по контейнерам в Grafana
нет (см. HostMemoryLow) — смотреть `docker stats` и латентность
API — возможно, не хватает уровня AI/ресурсов под нагрузку.
подряд (порог 90% из 4 ядер). Смотреть топ контейнеров по CPU
(дашборд «Хост и контейнеры») и латентность API — возможно,
не хватает уровня AI/ресурсов под нагрузку.