cAdvisor v0.60.6 介绍与选型指南
基于官方 GitHub 仓库与 Release 资料编写的 cAdvisor v0.60.6 认知篇:定位出身、数据链路架构、功能特性清单、官方快速上手、适用场景与限制,附 cAdvisor/Netdata/node_exporter/Beszel/Scrutiny 五组件量化选型对比(stars、版本节奏、能力矩阵),关键论断标注来源与查询日期。
cAdvisor v0.60.6 介绍与选型指南
目标:面向需要在 Linux 服务器上落地容器资源监控的读者,介绍 Google cAdvisor v0.60.6 的定位、架构、功能与选型建议,并与同类监控组件做量化对比。本文为认知篇,全部内容基于官方 GitHub 仓库、Release 页面与官方文档编写,关键论断均标注来源与查询日期(2026-10-18),不做本地安装实测。
一、环境信息
本篇为认知类文档,不依赖本地实验环境,以下为撰写本文时的信息基准,供读者核对版本与来源时效性。
- 信息基准日期(查询日期):2026-10-18
- 介绍版本:cAdvisor v0.60.6(GitHub Releases 页面标注发布时间 2026-09-18)
- 版本依据:GitHub Releases 页
https://github.com/google/cadvisor/releases/latest于查询日期重定向至tag/v0.60.6 - 官方来源清单:
- 官方仓库:https://github.com/google/cadvisor
- Release 页:https://github.com/google/cadvisor/releases/tag/v0.60.6
- 官方运行文档:https://github.com/google/cadvisor/blob/v0.60.6/docs/running.md
- 官方运行参数文档:https://github.com/google/cadvisor/blob/v0.60.6/docs/runtime_options.md
- 官方存储导出文档:https://github.com/google/cadvisor/blob/v0.60.6/docs/storage/README.md
- 官方 Web UI 文档:https://github.com/google/cadvisor/blob/v0.60.6/docs/web.md
- 官方 REST API 文档:https://github.com/google/cadvisor/blob/v0.60.6/docs/api.md
- License:Apache License 2.0(仓库 LICENSE 文件,版权声明 "Copyright 2014 The cAdvisor Authors")
- 开发语言:Go(go.mod 声明
module github.com/google/cadvisor,go 1.25.0)
💡 说明: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)。
它的核心价值可以拆成三点:
- 零侵入采集:cAdvisor 读取宿主机
/sys、cgroup 层级与容器运行时(Docker、containerd、CRI-O、podman)的接口获取指标,被监控的容器不需要安装任何 agent 或修改任何配置。 - 开箱即用的出口:默认监听 8080 端口,同时提供三种出口——人类可读的 Web UI(
/containers/)、Prometheus 文本指标(/metrics)、版本化 REST API(/api/v1.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 / Forks | 19k stars(shields.io 于查询日实查) |
| License | Apache 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 与各专题文档中声明的能力归纳成可核对的功能清单,并逐项注明能力出处与适用前提。
- 多运行时容器采集:原生支持 Docker,并通过运行时接口支持 containerd(默认端点
/run/containerd/containerd.sock)、CRI-O、podman(默认端点unix:///var/run/podman/podman.sock);官方 README 称对其他容器类型也应开箱即用(出处:README 与--help参数默认值,查询日期 2026-10-18)。 - 整机指标:除容器外同时导出机器维度指标(
machine_cpu_cores、machine_memory_bytes、文件系统分区与用量、网络设备统计等),一个采集进程同时覆盖「机器 + 容器」两层。 - 指标族开关:内置约 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)。 - Prometheus 原生暴露:默认
/metrics端点,并支持把容器标签/环境变量选择性转为 Prometheus label(--store_container_labels、--whitelisted_container_labels、--env_metadata_whitelist),这是高基数治理的关键能力。 - 历史数据外发(Storage Drivers):除内存缓存外,可把统计推送到 influxdb、kafka、redis、elasticsearch、statsd、bigquery、stdout 等 8 类后端(出处:
--storage_driver参数选项,查询日期 2026-10-18)。 - REST API:提供版本化 API
/api/v1.3/containers/...,返回 JSON 格式的原始与聚合统计,另有官方 Go 客户端库(出处:docs/api.md 与官方 client/ 目录)。 - Web UI:树形浏览 cgroup/容器层级,逐容器查看 CPU、内存、网络、文件系统、事件(OOM 等)曲线,页面数据同样来自内存缓存。
- 事件流:捕获容器创建/销毁与 OOM 事件,在 Web UI 的事件页与 API 中可见,事件保留量与时长可配(
--event_storage_event_limit默认default=100000、--event_storage_age_limit默认default=24h)。 - Kubernetes DaemonSet 部署:官方 deploy/kubernetes 目录提供 DaemonSet 清单与 kustomize 支持(出处:官方 README)。
- 安全与运维辅助: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 适用场景
- 容器化服务器的统一指标采集:一台跑着 Docker/containerd 的服务器,只需一个 cAdvisor 实例即可拿到整机 + 全部容器的 CPU/内存/IO/网络指标,并以 /metrics 供 Prometheus 抓取,是最经典的「cAdvisor + Prometheus + Grafana」监控栈起点。
- K8s 指标体系平滑下沉到虚拟机/裸机:团队已在 K8s 中使用
container_*指标体系,希望在非 K8s 节点保持同一套指标命名与看板,cAdvisor 是唯一与 kubelet 内嵌实现同源的选项。 - 容器事件审计:需要留存 OOM、容器创建/销毁事件流的场景,cAdvisor 的事件存储可按类型配置保留时长与数量。
- 作为上游采集器的短周期缓冲:cAdvisor 内存缓存默认保留 2 分钟,适合作为「实时值 + 短期回溯」的查询源,长期存储交给 Prometheus 或 storage driver 目标库。
6.2 已知限制
- 无内置长期存储:历史数据默认仅驻留内存 2 分钟(
--storage_duration默认2m0s),持久化必须依赖外部组件(Prometheus 抓取或 storage driver 推送);这是架构取舍而非缺陷,但选型时必须为「历史数据去哪儿」准备好答案。 - 资源开销与容器数量正相关:housekeeping 默认 1 秒一轮、逐容器维护统计缓存,宿主机容器规模大(数百以上)时进程内存与 CPU 开销显著,需通过
--housekeeping_interval、--docker_only、--store_container_labels=false等参数治理(治理手法与实测数据见《cAdvisor v0.60.6 配置参数详解》)。 - Prometheus 标签基数高:默认把容器全部 labels/环境变量转为 Prometheus label,容器多且标签杂时 /metrics 体积与抓取成本暴涨,官方提供白名单机制收敛。
- 特权运行:官方容器化部署要求
--privileged(或按 docs/running.md 精细配置所需 capability),特权面较大,属于采集内核级指标的固有要求;安全敏感环境应收敛网络暴露(如仅监听内网网卡)并启用 Web UI 认证。 - 非容器主机的定位重叠:cAdvisor 也导出机器级指标,但若目标是不跑容器的主机监控,node-exporter 一类专用导出器更轻;两者可并存但没必要。
七、同类选型对比
本章在同类监控组件间做量化横向对比,帮助读者判断「cAdvisor 之外还有哪些路」。数据全部实查于 GitHub(stars 取自 shields.io 徽章接口,版本取自各仓库 Releases 页重定向,License 取自各仓库 LICENSE 文件),查询日期统一为 2026-10-18。
7.1 候选组件与定位
| 组件 | 定位 | 采集对象 | Stars | 最新版本(发布日期) | License |
|---|---|---|---|---|---|
| cAdvisor | 容器资源指标采集守护进程 | 容器 + cgroup 层级 + 整机 | 19k | v0.60.6(2026-09-18) | Apache 2.0 |
| Netdata | 全栈实时观测平台(自带 UI/存储) | 整机全维度 + 应用 + 容器 | 81k | v2.12.1(2026-10-08) | GPLv3 |
| Prometheus node_exporter | 主机指标 Prometheus 导出器 | 主机硬件与 OS | 14k | v1.12.1(2026-07-14) | Apache 2.0 |
| Beszel | 轻量服务器监控(Hub+Agent,自带 UI) | 主机 + Docker stats | 26k | v0.21.0(2026-10-02) | MIT |
| Scrutiny | 硬盘 S.M.A.R.T. 健康监控 | 磁盘 SMART 数据 | 8.3k | v0.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 个月) | 活跃度判断 |
|---|---|---|
| cAdvisor | v0.56.x(2026-01)→ v0.57.0(2026-05)→ v0.60.x(2026-06 起 7 个版本) | patch 密集、维护稳定,Google 主导 |
| Netdata | v2.x 系列持续滚动发布,v2.12.1 距查询日 10 天 | 极活跃 |
| node_exporter | v1.12.1(2026-07-14) | 稳定维护,Prometheus 官方子项目 |
| Beszel | v0.21.0(2026-10-02),仍处 0.x 快速迭代 | 活跃,功能演进期 |
| Scrutiny | v0.9.5(2026-09-30) | 维护型更新,功能已稳定 |
7.3 能力矩阵(量化维度)
| 能力 | cAdvisor | Netdata | node_exporter | Beszel | Scrutiny |
|---|---|---|---|---|---|
| 容器级 CPU/内存/IO/网络指标 | ✅(cgroup 全层级) | ✅ | ❌ | ✅(Docker stats 粒度) | ❌ |
| percpu/粒度可调指标组(22 组开关) | ✅ | 部分 | ✅(collector 开关) | ❌ | ❌ |
| Prometheus /metrics 原生输出 | ✅ | ✅ | ✅ | ❌(自带 UI/API) | ❌ |
| 内置长期历史存储 | ❌(内存 2 分钟) | ✅ | ❌ | ✅(SQLite) | ✅ |
| 自带可视化 UI | ✅(浏览型) | ✅(完整看板+告警) | ❌ | ✅ | ✅ |
| 容器事件流(OOM/创建/销毁) | ✅ | ✅ | ❌ | ❌ | ❌ |
| 部署重量(单机) | 单容器,特权 | 单容器,agent 资源占用中等 | 单进程极轻 | hub+agent 双容器,极轻 | 单容器 |
7.4 选型建议
- 已有/计划上 Prometheus:选 cAdvisor(容器)+ node_exporter(主机)组合,指标体系最标准,长期存储交给 Prometheus,无 Vendor 锁定。
- 不想搭 Prometheus、要一个自带面板的「装完就用」:Netdata(功能最全、License 需评估)或 Beszel(更轻、MIT)。
- 只关心硬盘健康:Scrutiny 专项即可,与上述任一方案并存。
- K8s 节点:无需独立部署,kubelet 已内嵌 cAdvisor 指标端点;只有非 K8s 的容器宿主机才需要本方案的独立部署。
- 本文推荐的主线:cAdvisor 负责容器指标采集出口,配合 Prometheus/Grafana 组成长期存储与看板——这一组合的落地实测见《cAdvisor Docker Compose 部署指南》,参数级调优见《cAdvisor v0.60.6 配置参数详解》。
八、参考链接
- cAdvisor 官方仓库(README/源码/LICENSE):https://github.com/google/cadvisor
- v0.60.6 Release 页(发布时间 2026-09-18):https://github.com/google/cadvisor/releases/tag/v0.60.6
- 官方运行文档(standalone 与容器化部署):https://github.com/google/cadvisor/blob/v0.60.6/docs/running.md
- 官方运行参数文档:https://github.com/google/cadvisor/blob/v0.60.6/docs/runtime_options.md
- 官方存储驱动文档:https://github.com/google/cadvisor/blob/v0.60.6/docs/storage/README.md
- 官方 REST API 文档:https://github.com/google/cadvisor/blob/v0.60.6/docs/api.md
- 官方 Web UI 文档:https://github.com/google/cadvisor/blob/v0.60.6/docs/web.md
- ghcr.io 镜像仓库:https://ghcr.io/google/cadvisor
- 本文竞品数据(stars/版本/License)实查来源:GitHub 各仓库 Releases 页、LICENSE 文件与 shields.io 徽章接口,查询日期 2026-10-18
- 本组件配套文档:《cAdvisor Docker Compose 部署指南》《cAdvisor v0.60.6 配置参数详解》