fix(observability): cadvisor перестаёт сканировать overlay-слои — упирался в лимит памяти #3135

Merged
lekss361 merged 1 commit from fix/3078-cadvisor-disk-metrics into main 2026-08-27 10:53:32 +00:00

1 commit

Author SHA1 Message Date
bot-backend
668f15913d fix(observability): cadvisor перестаёт сканировать overlay-слои — упирался в лимит памяти
All checks were successful
CI Trade-In / changes (pull_request) Successful in 10s
CI Trade-In / backend-tests (pull_request) Has been skipped
CI Trade-In / browser-tests (pull_request) Has been skipped
CI Trade-In / frontend-checks (pull_request) Has been skipped
CI / backend-tests (pull_request) Has been skipped
CI / openapi-codegen-check (pull_request) Has been skipped
CI / changes (pull_request) Successful in 12s
CI / frontend-tests (pull_request) Has been skipped
Замер по метрикам за сутки:

  продуктовый хост:  21 → 165 МиБ (стабильно) → после перезагрузки 305 →
                     359 МиБ из 384, то есть 93 % лимита
  инфраструктурный:  105 МиБ стабильно → за два часа 228 → 291 МиБ

До OOM не дошло, но запас оставался 25 МиБ. Причина видна в собственном
логе cadvisor: «fs: disk usage and inodes count on following dirs took
1.3-1.8s» — обход overlay-слоёв docker на каждом цикле housekeeping.
Память растёт вместе с числом слоёв, а слои копятся от сборок образов,
то есть тем быстрее, чем активнее идёт разработка.

Отключаем disk/diskIO. Теряем использование диска ПО КОНТЕЙНЕРАМ —
проверено, что этих метрик не используют ни правила Prometheus, ни
дашборды: алерты по диску (DiskSpaceLow / DiskSpaceCritical /
DiskWillFillIn24h) построены на node_exporter, на уровне файловой системы
хоста. Это и есть нужное измерение — кончающееся место видно именно там,
а не в разбивке по контейнерам.

Остальные метрики контейнеров (CPU, память, сеть, рестарты) не тронуты:
на них держатся ContainerRestartLoop и ContainerNearMemoryLimit.
2026-08-27 13:51:56 +03:00