From 668f15913ddf323854d316ca81479a84ae195f0e Mon Sep 17 00:00:00 2001 From: bot-backend Date: Thu, 27 Aug 2026 13:51:56 +0300 Subject: [PATCH] =?UTF-8?q?fix(observability):=20cadvisor=20=D0=BF=D0=B5?= =?UTF-8?q?=D1=80=D0=B5=D1=81=D1=82=D0=B0=D1=91=D1=82=20=D1=81=D0=BA=D0=B0?= =?UTF-8?q?=D0=BD=D0=B8=D1=80=D0=BE=D0=B2=D0=B0=D1=82=D1=8C=20overlay-?= =?UTF-8?q?=D1=81=D0=BB=D0=BE=D0=B8=20=E2=80=94=20=D1=83=D0=BF=D0=B8=D1=80?= =?UTF-8?q?=D0=B0=D0=BB=D1=81=D1=8F=20=D0=B2=20=D0=BB=D0=B8=D0=BC=D0=B8?= =?UTF-8?q?=D1=82=20=D0=BF=D0=B0=D0=BC=D1=8F=D1=82=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Замер по метрикам за сутки: продуктовый хост: 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. --- docker-compose.metrics-agent.yml | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/docker-compose.metrics-agent.yml b/docker-compose.metrics-agent.yml index 94bae061..e351a56f 100644 --- a/docker-compose.metrics-agent.yml +++ b/docker-compose.metrics-agent.yml @@ -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 -- 2.45.3