diff --git a/docker-compose.metrics-agent.yml b/docker-compose.metrics-agent.yml index 11eddf4b..94bae061 100644 --- a/docker-compose.metrics-agent.yml +++ b/docker-compose.metrics-agent.yml @@ -116,7 +116,11 @@ services: # Читает докер-сокет, поэтому видит ВСЕ контейнеры хоста независимо от сетей — # отдельно подключать его к gendesign_default не нужно. cadvisor: - image: gcr.io/cadvisor/cadvisor:v0.52.1 + # v0.55.1, не v0.52.x: Docker 29 работает через containerd-snapshotter + # (Storage Driver = overlayfs), а 0.52 искал метаданные слоя в легаси + # /var/lib/docker/image//layerdb, которого при снапшоттере + # просто нет. Итог был — ни одной метрики по контейнерам. + image: gcr.io/cadvisor/cadvisor:v0.55.1 container_name: gendesign-cadvisor restart: unless-stopped privileged: true diff --git a/ops/metrics/alloy/alloy-apps.alloy b/ops/metrics/alloy/alloy-apps.alloy index f1e03dd3..05acbb8c 100644 --- a/ops/metrics/alloy/alloy-apps.alloy +++ b/ops/metrics/alloy/alloy-apps.alloy @@ -92,10 +92,13 @@ prometheus.relabel "cadvisor_trim" { action = "keep" } - // Служебные контейнеры docker без имени только зашумляют графики. - // keep .+ вместо drop с пустым regex: в Alloy незаданный regex - // документированно дефолтится в (.*), а пустая строка неотличима от - // незаданного значения — такой drop рискует выкинуть вообще все ряды. + // Служебные ряды без имени (корневой cgroup, id="/") только зашумляют графики. + // keep .+ вместо drop с пустым regex — та же мысль, но без зависимости от + // трактовки пустого regex: в Alloy он неотличим от незаданного, а незаданный + // дефолтится в (.*). + // + // NB: на пустые панели это правило НЕ влияло. Причина была в cAdvisor 0.52 на + // Docker 29 — до сюда доезжал ровно один ряд, корневой. Лечится версией 0.55.1. rule { source_labels = ["name"] regex = ".+" diff --git a/ops/metrics/alloy/alloy-infra.alloy b/ops/metrics/alloy/alloy-infra.alloy index 0ecc6ffe..bc55f1dd 100644 --- a/ops/metrics/alloy/alloy-infra.alloy +++ b/ops/metrics/alloy/alloy-infra.alloy @@ -63,10 +63,13 @@ prometheus.relabel "cadvisor_trim" { action = "keep" } - // Служебные контейнеры docker без имени только зашумляют графики. - // keep .+ вместо drop с пустым regex: в Alloy незаданный regex - // документированно дефолтится в (.*), а пустая строка неотличима от - // незаданного значения — такой drop рискует выкинуть вообще все ряды. + // Служебные ряды без имени (корневой cgroup, id="/") только зашумляют графики. + // keep .+ вместо drop с пустым regex — та же мысль, но без зависимости от + // трактовки пустого regex: в Alloy он неотличим от незаданного, а незаданный + // дефолтится в (.*). + // + // NB: на пустые панели это правило НЕ влияло. Причина была в cAdvisor 0.52 на + // Docker 29 — до сюда доезжал ровно один ряд, корневой. Лечится версией 0.55.1. rule { source_labels = ["name"] regex = ".+"