You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Prometheus与cadvisor仅采集部分容器指标的方法咨询

解决Prometheus采集cadvisor非必需指标的方法

我之前也碰到过完全一样的问题!在CoreOS上用cadvisor给Prometheus采集Docker容器指标时,默认会拉取大量用不上的指标,不仅占用存储资源,还会拖慢采集效率。官方文档里确实没把这个点讲得太清楚,不过有两种亲测有效的方法可以实现仅采集指定指标:

方法一:通过cadvisor启动参数过滤指标

cadvisor本身支持通过--whitelisted_metrics参数来指定要保留的指标类别,这样它一开始就不会输出那些非必需的指标,从源头减少采集量。

比如你只想保留CPU、内存、磁盘和网络相关的指标,启动cadvisor的命令可以写成这样:

docker run \
  --volume=/:/rootfs:ro \
  --volume=/var/run:/var/run:rw \
  --volume=/sys:/sys:ro \
  --volume=/var/lib/docker/:/var/lib/docker:ro \
  --publish=8080:8080 \
  --detach=true \
  --name=cadvisor \
  gcr.io/cadvisor/cadvisor:latest \
  --whitelisted_metrics=cpu,memory,diskio,diskusage,network

可选的指标类别包括:cpu、memory、diskio、diskusage、network、hugetlb、percpu、sched、temperatures等,你可以根据自己的监控需求组合这些值,用逗号分隔即可。

方法二:在Prometheus端配置指标过滤(更灵活)

如果不想重启cadvisor,或者需要更精细的指标筛选(比如只保留某几个具体指标而不是整个类别),可以直接在Prometheus的配置文件里通过metric_relabel_configs来过滤。

举个例子,假设你只想保留容器CPU使用率、内存使用量、磁盘使用量和网络接收量这几个指标,修改prometheus.yml的scrape_configs部分如下:

scrape_configs:
  - job_name: 'cadvisor'
    static_configs:
      - targets: ['你的cadvisor地址:8080']
    metric_relabel_configs:
      - source_labels: [__name__]
        # 这里写你要保留的指标名称,用竖线分隔
        regex: 'container_cpu_usage_seconds_total|container_memory_usage_bytes|container_fs_usage_bytes|container_network_receive_bytes_total'
        action: keep

如果是想排除某些特定指标,只需要把action改成drop,然后在regex里写要排除的指标正则即可。

小提示

如果不确定哪些指标是你需要的,可以先访问cadvisor的metrics端点(http://你的cadvisor地址:8080/metrics),把所有指标列出来,再挑选自己需要的写入过滤规则里。

内容的提问来源于stack exchange,提问作者MIDE11

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 03:29:10