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
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.
This commit is contained in:
parent
01b36f623e
commit
668f15913d
1 changed files with 15 additions and 1 deletions
|
|
@ -131,7 +131,21 @@ services:
|
|||
# раздувает TSDB на порядок ради данных, которые никто не смотрит.
|
||||
- "--docker_only=true"
|
||||
- "--housekeeping_interval=30s"
|
||||
- "--disable_metrics=percpu,sched,tcp,udp,advtcp,process,hugetlb,referenced_memory,cpu_topology,resctrl"
|
||||
# disk/diskIO добавлены 27.08 по замеру. Именно они держат fsHandler,
|
||||
# который в логе честно отчитывается: «disk usage and inodes count on
|
||||
# following dirs took 1.3–1.8s» — обход overlay-слоёв на каждом цикле.
|
||||
# Память растёт вместе с числом слоёв, а слои копятся от сборок.
|
||||
#
|
||||
# Прод: на продуктовом хосте cadvisor доходил до 359 МиБ из 384 (93 %
|
||||
# лимита), на инфраструктурном за два часа поднялся со 105 до 291 МиБ.
|
||||
# До OOM не дошло, но запас был 25 МиБ — то есть вопрос времени.
|
||||
#
|
||||
# Теряем метрики использования диска ПО КОНТЕЙНЕРАМ. Проверено, что их
|
||||
# никто не использует: ни правила Prometheus, ни дашборды. Алерты по
|
||||
# диску построены на node_exporter (`node_filesystem_*`), то есть на
|
||||
# уровне файловой системы хоста — а это как раз то измерение, которое
|
||||
# и нужно, чтобы вовремя увидеть кончающееся место.
|
||||
- "--disable_metrics=disk,diskIO,percpu,sched,tcp,udp,advtcp,process,hugetlb,referenced_memory,cpu_topology,resctrl"
|
||||
- "--store_container_labels=false"
|
||||
volumes:
|
||||
- /:/rootfs:ro
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue