一、什么是cAdvisor
cAdvisor(Container Advisor) 是 Google 开发的一款开源工具,用于 实时收集、分析和展示容器的资源使用和性能数据。
- 官网:https://github.com/google/cadvisor
- 支持容器类型:Docker、rkt、部分 containerd。
- 本质上是一个轻量级监控 agent,专注于容器级别的指标。
其核心功能可用于:
- 容器资源监控
- CPU 使用率、CPU 核心分布
- 内存占用(RSS、Cache、Swap 等)
- 磁盘 I/O(读写字节和次数)
- 网络 I/O(发送、接收流量)
- 容器生命周期信息
- 容器运行状态(Running、Stopped)
- 容器启动时间和运行时长
- 镜像信息、标签、名称等
- 历史数据统计
- 支持短期数据存储,用于趋势分析
- 可配合外部存储(Prometheus、InfluxDB 等)实现长期监控
- Web UI 可视化
- 内置 Dashboard 展示各容器指标
- 支持实时刷新
- 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模板:
