一、什么是cAdvisor

cAdvisor(Container Advisor) 是 Google 开发的一款开源工具,用于 实时收集、分析和展示容器的资源使用和性能数据

  • 官网:https://github.com/google/cadvisor
  • 支持容器类型:Dockerrkt、部分 containerd
  • 本质上是一个轻量级监控 agent,专注于容器级别的指标。

其核心功能可用于:

  1. 容器资源监控
    • CPU 使用率、CPU 核心分布
    • 内存占用(RSS、Cache、Swap 等)
    • 磁盘 I/O(读写字节和次数)
    • 网络 I/O(发送、接收流量)
  2. 容器生命周期信息
    • 容器运行状态(Running、Stopped)
    • 容器启动时间和运行时长
    • 镜像信息、标签、名称等
  3. 历史数据统计
    • 支持短期数据存储,用于趋势分析
    • 可配合外部存储(Prometheus、InfluxDB 等)实现长期监控
  4. Web UI 可视化
    • 内置 Dashboard 展示各容器指标
    • 支持实时刷新
  5. Prometheus 兼容
    • 提供 /metrics 接口
    • 可以直接被 Prometheus 拉取指标

本文简要介绍使用cAdvisor+Prometheus数据库用于采集容器数据的信息的方法,在本文中,可执行文件位于/usr/bin/cadvisor,使用systemd管理cAdvisor。

二、下载和部署cAdvisor

1、下载cAdvisor并复制到/usr/bin/advisor中:

# 1️⃣ 下载到 /tmp
wget -O /tmp/cadvisor https://github.com/google/cadvisor/releases/download/v0.55.1/cadvisor-v0.55.1-linux-amd64

# 2️⃣ 移动到 /usr/bin
sudo mv /tmp/cadvisor /usr/bin/cadvisor

# 3️⃣ 赋予可执行权限
sudo chmod +x /usr/bin/cadvisor

# 4️⃣ 验证安装
/usr/bin/cadvisor --version

2、将cAdvisor配置为通过systemd管理的服务:

sudo vim /etc/systemd/system/cadvisor.service

写入以下内容:

[Unit]
Description=cAdvisor - Container Resource Usage and Performance Analysis
Documentation=https://github.com/google/cadvisor
After=docker.service
Requires=docker.service

[Service]
Type=simple
ExecStart=/usr/bin/cadvisor \
  --logtostderr=true \
  --port=8080 \
  --housekeeping_interval=10s \
  --docker_only=true \
  --store_container_labels=false

Restart=always
RestartSec=10
LimitNOFILE=1048576

[Install]
WantedBy=multi-user.target

3、设置启动与开机自启:

sudo systemctl daemon-reexec
sudo systemctl daemon-reload
sudo systemctl enable --now cadvisor

4、检查运行状态:

systemctl status cadvisor

三、通过Prometheus采集cAdvisor数据

这里我们通过容器(Docker-Compose)的方式启动Prometheus数据库,创建与切换到Prometheus数据库目录:

mkdir -p /opt/Prometheus/prometheus_data
cd /opt/Prometheus
chmod 777 -R prometheus_data

写入docker-compose.yaml的文件如下:

version: "3.7"
services:
  prometheus:
    image: prom/prometheus:latest
    container_name: "prometheus"
    restart: always
    network_mode: host
    volumes:
      - "./prometheus.yml:/etc/prometheus/prometheus.yml"
      - "./prometheus_data:/prometheus"
    command:
      - "--config.file=/etc/prometheus/prometheus.yml"
      - "--storage.tsdb.path=/prometheus"
      - "--storage.tsdb.retention.time=7d"

这里数据默认保留7天,可根据需要自行修改。

编辑Prometheus数据库的配置文件:

vim prometheus.yml

写入如下内容:

global:
  scrape_interval: 1s
scrape_configs:
  - job_name: 'RockChip-Docker-Monitor'
    static_configs:
      - targets: ['10.32.0.25:8080']

job_name和Targets均可替换,Targets需要替换成你的cAdvisor的服务器地址,保证Prometheus数据库和cAdvisor之间可以正常通信和访问。

启动Prometheus容器:

cd /opt/Prometheus && docker compose up -d

然后在Grafana面板中配置监控项即可,这里我们使用的是14282模板: