cAdvisor v0.60.6 介绍与选型指南

基于官方 GitHub 仓库与 Release 资料编写的 cAdvisor v0.60.6 认知篇:定位出身、数据链路架构、功能特性清单、官方快速上手、适用场景与限制,附 cAdvisor/Netdata/node_exporter/Beszel/Scrutiny 五组件量化选型对比(stars、版本节奏、能力矩阵),关键论断标注来源与查询日期。

cAdvisorcAdvisor2026/10/18

cAdvisor v0.60.6 介绍与选型指南

目标:面向需要在 Linux 服务器上落地容器资源监控的读者,介绍 Google cAdvisor v0.60.6 的定位、架构、功能与选型建议,并与同类监控组件做量化对比。本文为认知篇,全部内容基于官方 GitHub 仓库、Release 页面与官方文档编写,关键论断均标注来源与查询日期(2026-10-18),不做本地安装实测。

一、环境信息

本篇为认知类文档,不依赖本地实验环境,以下为撰写本文时的信息基准,供读者核对版本与来源时效性。

💡 说明:cAdvisor 的官方容器镜像仓库自 v0.53.0 起由 gcr.io/cadvisor/cadvisor 迁移至 ghcr.io/google/cadvisor。查询日 2026-10-18 实查 gcr.io 仓库 tag 列表,版本 tag 最高止于 v0.55.1,且存在大量 no-new-use-public-image-* 前缀 tag 明确提示新版本不要继续使用 gcr.io 镜像;ghcr.io 仓库已提供 v0.60.6 版本 tag。选型落地时应统一使用 ghcr.io/google/cadvisor 作为镜像源。

二、软件概述

本章先给出 cAdvisor 的一句话定位与出身背景,再展开它解决的核心问题,帮助读者在 1 分钟内判断它是否是自己要找的组件。

cAdvisor(Container Advisor)是 Google 开源的容器资源使用与性能分析守护进程,单进程、单容器即可部署。它对主机上运行的所有容器持续执行「收集(collect)→ 聚合(aggregate)→ 处理(process)→ 导出(export)」,为每个容器维护资源隔离参数、历史资源用量、历史用量的直方图统计与网络统计,并按容器与整机两个维度对外导出数据(官方 README 定义,查询日期 2026-10-18)。

它的核心价值可以拆成三点:

  1. 零侵入采集:cAdvisor 读取宿主机 /sys、cgroup 层级与容器运行时(Docker、containerd、CRI-O、podman)的接口获取指标,被监控的容器不需要安装任何 agent 或修改任何配置。
  2. 开箱即用的出口:默认监听 8080 端口,同时提供三种出口——人类可读的 Web UI(/containers/)、Prometheus 文本指标(/metrics)、版本化 REST API(/api/v1.3/...),三种出口读的是同一份内存缓存数据。
  3. Kubernetes 生态的容器指标事实标准:cAdvisor 库内嵌于 kubelet,kubelet 的 /metrics/cadvisor 端点与 metrics-server、Prometheus 生态大量容器指标(container_cpu_usage_seconds_total 等)都源自 cAdvisor 的指标体系,因此独立部署 cAdvisor 与 K8s 生态的指标命名完全一致。

💡 技术拓展:cAdvisor 的容器抽象基于 Google 的 lmctfy(Let Me Contain That For You)项目设计,容器天然按层级嵌套(根 cgroup → system.slice → docker/<id> → ...)。因此它不只导出「每个容器」的指标,还会导出「每一层 cgroup」的聚合指标,这是它与许多只做 docker stats 转发的监控工具的本质差异。

版本与活跃度速览(来源 GitHub Releases 与仓库主页,查询日期 2026-10-18):

项目值
最新稳定版v0.60.6(2026-09-18 发布)
近半年发布节奏v0.56.1(2026-01-15)→ v0.56.2(2026-01-16)→ v0.57.0(2026-05-14)→ v0.60.0(2026-06-20)→ v0.60.1~v0.60.5(2026-06-21 至 2026-07-11)→ v0.60.6(2026-09-18)
GitHub Stars / Forks19k stars(shields.io 于查询日实查)
LicenseApache 2.0
发布物形态Linux 二进制(amd64/arm64)、Docker/OCI 镜像、K8s DaemonSet 清单

从节奏表可见,v0.60.x 系列 3 个月内连续发布 6 个 patch,维护活跃,patch 版本以缺陷修复为主,选型时直接取该系列最新 patch(即 v0.60.6)即可。

三、核心架构

本章按「数据从哪里来 → 在哪里存 → 从哪里出去」的链路拆解 cAdvisor 的内部结构,便于读者理解后续部署与调优动作分别作用于链路的哪一环。

┌────────────────────────────── Linux 宿主机 ──────────────────────────────┐
│                                                                          │
│  数据源层(只读挂载/读取)                                                 │
│  ├─ cgroup 层级(/sys/fs/cgroup,cpu/memory/blkio/io/network 统计)        │
│  ├─ /proc(/proc/stat、/proc/meminfo、/proc/diskstats、/dev/kmsg)        │
│  ├─ Docker daemon(unix:///var/run/docker.sock)                         │
│  ├─ containerd(/run/containerd/containerd.sock)/ CRI-O / podman        │
│  └─ 机器信息(machine-id、boot-id、磁盘分区/UUID)                         │
│                                                                          │
│  采集与聚合层(cAdvisor 守护进程内部)                                      │
│  ├─ container handlers:按 cgroup 路径为每个容器建立采集句柄               │
│  ├─ housekeeping 循环:按 interval 周期采样,聚合出 percpu/内存/IO/网络    │
│  └─ 内存缓存:环形保存最近一段时长(默认 2 分钟)的逐容器统计               │
│                                                                          │
│  出口层                                                                   │
│  ├─ Web UI:http://<host>:8080/containers/(层级树形页面)                 │
│  ├─ Prometheus:http://<host>:8080/metrics(默认 118 个指标族量级)        │
│  ├─ REST API v1.3:/api/v1.3/containers/<path>(原始与聚合统计)           │
│  └─ Storage drivers:influxdb/kafka/redis/elasticsearch/statsd/…          │
└──────────────────────────────────────────────────────────────────────────┘

三个层次的关键设计:

  • 数据源层:指标全部来自内核 cgroup 与 /proc,不注入被监控容器。为了让 cAdvisor 能看见 Docker 状态与磁盘信息,官方容器化部署要求把 /、/var/run、/sys、/var/lib/docker/、/dev/disk/ 以只读方式挂入容器并放行 /dev/kmsg 设备(官方 README Quick Start,查询日期 2026-10-18)。
  • 采集与聚合层:housekeeping(管家循环)是 cAdvisor 的心跳——默认每 1 秒对每个容器采样一次,并允许动态拉长间隔(--allow_dynamic_housekeeping 默认开启)。这一层是资源开销的主要来源,也是部署调优时最常动的参数(详见《cAdvisor v0.60.6 配置参数详解》)。
  • 出口层:Web UI、/metrics、REST API 三种出口共享同一份 2 分钟内存缓存,cAdvisor 自身不持久化历史数据——超出缓存时长的历史依赖 storage driver 推送到外部时序库,或由 Prometheus 侧抓取落库。这一点是选型时最容易误判的地方。

四、功能特性

本章把官方 README 与各专题文档中声明的能力归纳成可核对的功能清单,并逐项注明能力出处与适用前提。

  1. 多运行时容器采集:原生支持 Docker,并通过运行时接口支持 containerd(默认端点 /run/containerd/containerd.sock)、CRI-O、podman(默认端点 unix:///var/run/podman/podman.sock);官方 README 称对其他容器类型也应开箱即用(出处:README 与 --help 参数默认值,查询日期 2026-10-18)。
  2. 整机指标:除容器外同时导出机器维度指标(machine_cpu_cores、machine_memory_bytes、文件系统分区与用量、网络设备统计等),一个采集进程同时覆盖「机器 + 容器」两层。
  3. 指标族开关:内置约 22 个指标组(advtcp、app、cpu、cpuLoad、cpu_topology、cpuset、disk、diskIO、hugetlb、memory、memory_numa、network、oom_event、percpu、perf_event、pressure、process、referenced_memory、resctrl、sched、tcp、udp),可用 --disable_metrics/--enable_metrics 整组开关,控制 /metrics 体积与采集开销(出处:v0.60.6 二进制 --help 输出与官方 runtime_options.md)。
  4. Prometheus 原生暴露:默认 /metrics 端点,并支持把容器标签/环境变量选择性转为 Prometheus label(--store_container_labels、--whitelisted_container_labels、--env_metadata_whitelist),这是高基数治理的关键能力。
  5. 历史数据外发(Storage Drivers):除内存缓存外,可把统计推送到 influxdb、kafka、redis、elasticsearch、statsd、bigquery、stdout 等 8 类后端(出处:--storage_driver 参数选项,查询日期 2026-10-18)。
  6. REST API:提供版本化 API /api/v1.3/containers/...,返回 JSON 格式的原始与聚合统计,另有官方 Go 客户端库(出处:docs/api.md 与官方 client/ 目录)。
  7. Web UI:树形浏览 cgroup/容器层级,逐容器查看 CPU、内存、网络、文件系统、事件(OOM 等)曲线,页面数据同样来自内存缓存。
  8. 事件流:捕获容器创建/销毁与 OOM 事件,在 Web UI 的事件页与 API 中可见,事件保留量与时长可配(--event_storage_event_limit 默认 default=100000、--event_storage_age_limit 默认 default=24h)。
  9. Kubernetes DaemonSet 部署:官方 deploy/kubernetes 目录提供 DaemonSet 清单与 kustomize 支持(出处:官方 README)。
  10. 安全与运维辅助:Web UI 支持 Basic/Digest 认证文件(--http_auth_file/--http_digest_file)、--profiling 开启 /debug/pprof/ 性能剖析、--url_base_prefix 支持反代路径前缀。

五、快速上手

本节转述官方 README 的最小运行示例,让读者在部署前对操作形态有直观预期;该示例引自官方仓库 README 的 "Quick Start" 章节(查询日期 2026-10-18),本文不做本地复现——完整的服务器实测部署流程见《cAdvisor Docker Compose 部署指南》。

官方 Quick Start(单机 Docker 方式,一个 cAdvisor 实例监控整台机器):

VERSION=0.55.1 # use the latest release version from https://github.com/google/cadvisor/releases
sudo docker run \
  --volume=/:/rootfs:ro \
  --volume=/var/run:/var/run:ro \
  --volume=/sys:/sys:ro \
  --volume=/var/lib/docker/:/var/lib/docker:ro \
  --volume=/dev/disk/:/dev/disk:ro \
  --publish=8080:8080 \
  --detach=true \
  --name=cadvisor \
  --privileged \
  --device=/dev/kmsg \
  ghcr.io/google/cadvisor:$VERSION # for versions prior to v0.53.0, use gcr.io/cadvisor/cadvisor instead

官方示例说明与本文提示:

  • 官方示例注释明确:v0.53.0 之前的版本使用 gcr.io/cadvisor/cadvisor 镜像,之后统一使用 ghcr.io/google/cadvisor(引文照抄自官方 README)。按本文「二、软件概述」的镜像仓库实查结论,落地时 VERSION 应取查询日的最新版 v0.60.6。
  • 五个只读挂载分别提供根文件系统分区信息、Docker socket、内核 cgroup/sysfs、Docker 工作目录与磁盘设备信息,--privileged 与 /dev/kmsg 用于读取内核级统计;官方原话是 "The setup includes directories with Docker state cAdvisor needs to observe"。
  • 启动后官方说明 cAdvisor 在后台运行于 http://localhost:8080,浏览器打开即为 Web UI,/metrics 即 Prometheus 抓取端点。

六、适用场景与限制

本章从「什么场景该选它」与「落地前必须知道的边界」两方面收束,均以官方文档可证实的事实为依据。

6.1 适用场景

  1. 容器化服务器的统一指标采集:一台跑着 Docker/containerd 的服务器,只需一个 cAdvisor 实例即可拿到整机 + 全部容器的 CPU/内存/IO/网络指标,并以 /metrics 供 Prometheus 抓取,是最经典的「cAdvisor + Prometheus + Grafana」监控栈起点。
  2. K8s 指标体系平滑下沉到虚拟机/裸机:团队已在 K8s 中使用 container_* 指标体系,希望在非 K8s 节点保持同一套指标命名与看板,cAdvisor 是唯一与 kubelet 内嵌实现同源的选项。
  3. 容器事件审计:需要留存 OOM、容器创建/销毁事件流的场景,cAdvisor 的事件存储可按类型配置保留时长与数量。
  4. 作为上游采集器的短周期缓冲:cAdvisor 内存缓存默认保留 2 分钟,适合作为「实时值 + 短期回溯」的查询源,长期存储交给 Prometheus 或 storage driver 目标库。

6.2 已知限制

  1. 无内置长期存储:历史数据默认仅驻留内存 2 分钟(--storage_duration 默认 2m0s),持久化必须依赖外部组件(Prometheus 抓取或 storage driver 推送);这是架构取舍而非缺陷,但选型时必须为「历史数据去哪儿」准备好答案。
  2. 资源开销与容器数量正相关:housekeeping 默认 1 秒一轮、逐容器维护统计缓存,宿主机容器规模大(数百以上)时进程内存与 CPU 开销显著,需通过 --housekeeping_interval、--docker_only、--store_container_labels=false 等参数治理(治理手法与实测数据见《cAdvisor v0.60.6 配置参数详解》)。
  3. Prometheus 标签基数高:默认把容器全部 labels/环境变量转为 Prometheus label,容器多且标签杂时 /metrics 体积与抓取成本暴涨,官方提供白名单机制收敛。
  4. 特权运行:官方容器化部署要求 --privileged(或按 docs/running.md 精细配置所需 capability),特权面较大,属于采集内核级指标的固有要求;安全敏感环境应收敛网络暴露(如仅监听内网网卡)并启用 Web UI 认证。
  5. 非容器主机的定位重叠:cAdvisor 也导出机器级指标,但若目标是不跑容器的主机监控,node-exporter 一类专用导出器更轻;两者可并存但没必要。

七、同类选型对比

本章在同类监控组件间做量化横向对比,帮助读者判断「cAdvisor 之外还有哪些路」。数据全部实查于 GitHub(stars 取自 shields.io 徽章接口,版本取自各仓库 Releases 页重定向,License 取自各仓库 LICENSE 文件),查询日期统一为 2026-10-18。

7.1 候选组件与定位

组件定位采集对象Stars最新版本(发布日期)License
cAdvisor容器资源指标采集守护进程容器 + cgroup 层级 + 整机19kv0.60.6(2026-09-18)Apache 2.0
Netdata全栈实时观测平台(自带 UI/存储)整机全维度 + 应用 + 容器81kv2.12.1(2026-10-08)GPLv3
Prometheus node_exporter主机指标 Prometheus 导出器主机硬件与 OS14kv1.12.1(2026-07-14)Apache 2.0
Beszel轻量服务器监控(Hub+Agent,自带 UI)主机 + Docker stats26kv0.21.0(2026-10-02)MIT
Scrutiny硬盘 S.M.A.R.T. 健康监控磁盘 SMART 数据8.3kv0.9.5(2026-09-30)MIT

表后解读(关键差异):

  • cAdvisor vs node_exporter:两者是同一生态(Prometheus 文本协议)里的互补角色——node_exporter 管主机、cAdvisor 管容器;只监控不跑容器的主机时选 node_exporter,需要容器维度指标时上 cAdvisor,二者并行不冲突。
  • cAdvisor vs Netdata:Netdata 是「全家桶」(agent + 自带时序库 + 自带 UI + 告警),开箱体验远好于 cAdvisor,但体量与资源开销也更大,License 为 GPLv3(商用集成需评估);cAdvisor 是「纯采集层」,轻、专、与 Prometheus 体系贴合,UI 只做浏览。
  • cAdvisor vs Beszel:Beszel 主打轻量与极简部署(Hub+Agent 二进制 + 自带历史存储),适合个人/小规模服务器面板;它读的是 Docker stats 接口,指标深度(cgroup 层级、percpu、perf_event 等)不及 cAdvisor。
  • cAdvisor vs Scrutiny:Scrutiny 只做磁盘 SMART 健康与失败阈值,与 cAdvisor 几乎无功能交集,属互补组件;把它列进来是提醒读者「监控大盘」通常需要的是组合而非单一组件。

7.2 版本节奏与社区活跃度

组件近期发布节奏(近 12 个月)活跃度判断
cAdvisorv0.56.x(2026-01)→ v0.57.0(2026-05)→ v0.60.x(2026-06 起 7 个版本)patch 密集、维护稳定,Google 主导
Netdatav2.x 系列持续滚动发布,v2.12.1 距查询日 10 天极活跃
node_exporterv1.12.1(2026-07-14)稳定维护,Prometheus 官方子项目
Beszelv0.21.0(2026-10-02),仍处 0.x 快速迭代活跃,功能演进期
Scrutinyv0.9.5(2026-09-30)维护型更新,功能已稳定

7.3 能力矩阵(量化维度)

能力cAdvisorNetdatanode_exporterBeszelScrutiny
容器级 CPU/内存/IO/网络指标✅(cgroup 全层级)✅❌✅(Docker stats 粒度)❌
percpu/粒度可调指标组(22 组开关)✅部分✅(collector 开关)❌❌
Prometheus /metrics 原生输出✅✅✅❌(自带 UI/API)❌
内置长期历史存储❌(内存 2 分钟)✅❌✅(SQLite)✅
自带可视化 UI✅(浏览型)✅(完整看板+告警)❌✅✅
容器事件流(OOM/创建/销毁)✅✅❌❌❌
部署重量(单机)单容器,特权单容器,agent 资源占用中等单进程极轻hub+agent 双容器,极轻单容器

7.4 选型建议

  1. 已有/计划上 Prometheus:选 cAdvisor(容器)+ node_exporter(主机)组合,指标体系最标准,长期存储交给 Prometheus,无 Vendor 锁定。
  2. 不想搭 Prometheus、要一个自带面板的「装完就用」:Netdata(功能最全、License 需评估)或 Beszel(更轻、MIT)。
  3. 只关心硬盘健康:Scrutiny 专项即可,与上述任一方案并存。
  4. K8s 节点:无需独立部署,kubelet 已内嵌 cAdvisor 指标端点;只有非 K8s 的容器宿主机才需要本方案的独立部署。
  5. 本文推荐的主线:cAdvisor 负责容器指标采集出口,配合 Prometheus/Grafana 组成长期存储与看板——这一组合的落地实测见《cAdvisor Docker Compose 部署指南》,参数级调优见《cAdvisor v0.60.6 配置参数详解》。

八、参考链接

  1. cAdvisor 官方仓库(README/源码/LICENSE):https://github.com/google/cadvisor
  2. v0.60.6 Release 页(发布时间 2026-09-18):https://github.com/google/cadvisor/releases/tag/v0.60.6
  3. 官方运行文档(standalone 与容器化部署):https://github.com/google/cadvisor/blob/v0.60.6/docs/running.md
  4. 官方运行参数文档:https://github.com/google/cadvisor/blob/v0.60.6/docs/runtime_options.md
  5. 官方存储驱动文档:https://github.com/google/cadvisor/blob/v0.60.6/docs/storage/README.md
  6. 官方 REST API 文档:https://github.com/google/cadvisor/blob/v0.60.6/docs/api.md
  7. 官方 Web UI 文档:https://github.com/google/cadvisor/blob/v0.60.6/docs/web.md
  8. ghcr.io 镜像仓库:https://ghcr.io/google/cadvisor
  9. 本文竞品数据(stars/版本/License)实查来源:GitHub 各仓库 Releases 页、LICENSE 文件与 shields.io 徽章接口,查询日期 2026-10-18
  10. 本组件配套文档:《cAdvisor Docker Compose 部署指南》《cAdvisor v0.60.6 配置参数详解》