1、简介&架构图
这是一个小小的实验,主要通过prometheus、cadvisor、grafana进行实现,通过这套链路,能低成本实现 “容器资源从产生到可视化” 的闭环,是入门容器监控的经典小实验。架构图如下:

2、具体技术链路
1. 容器层(最上层)
- 容器:
- 运行用户的业务应用(如 Web 服务、后台任务等),是资源消耗的 “载体”。
- 资源行为:产生 CPU 计算、内存占用、磁盘 I/O 读写、网络流量等资源使用数据。
2. 数据采集层(cAdvisor)
- cAdvisor(端口
8080):- 角色:容器资源监控代理,自动发现主机上的所有容器。
- 采集逻辑:通过 Linux
cgroups、namespaces等内核接口,实时采集容器的资源指标(如 CPU 使用率、内存用量、磁盘 IOPS、网络吞吐量等)。 - 数据输出:将采集到的容器指标以 Prometheus 格式(时序数据)暴露在
http://<cAdvisor-IP>:8080/metrics接口,供下游系统拉取。
3. 数据存储与处理层(Prometheus)
- Prometheus(端口
9090):- 角色:时序数据库 + 监控数据处理引擎。
- 配置逻辑:通过
prometheus.yml配置 抓取规则,定时(默认 15 s,我这里设置为5s)向 cAdvisor 的metrics接口发起请求,拉取容器指标。 - 存储逻辑:将拉取到的指标按 “时间序列” 存储(带标签
labels,如容器 ID、镜像名、命名空间等),支持多维度查询。 - 处理能力:提供 PromQL(Prometheus 查询语言),可对指标做聚合、过滤、计算(如求容器 CPU 使用率的平均值、筛选特定命名空间的容器等)。
4. 数据可视化与展示层(Grafana)
- Grafana:
- 角色:监控数据可视化平台。
- 数据源配置:在 Grafana 中添加 “Prometheus 数据源”,配置地址为
http://<Prometheus-IP>:9090,建立与 Prometheus 的数据连接。 - 仪表盘(Dashboard):
- 支持自定义面板,选择 PromQL 查询 Prometheus 中的容器指标(如用
container_cpu_usage_seconds_total查询 CPU 用量)。 - 支持多种图表类型(折线图、柱状图、仪表盘等),将时序数据转化为直观的资源趋势、对比图。
- 支持多种模版,该实验中我使用了cadvisor相关模版导入
- 支持自定义面板,选择 PromQL 查询 Prometheus 中的容器指标(如用
5. 用户交互层(最下层)
- User:
- 操作行为:通过浏览器访问
http://<Grafana-IP>:3000(Grafana 默认端口,该实验使用了默认端口),查看容器资源监控面板。 - 价值:无需关心底层采集 / 存储逻辑,直接通过可视化图表感知容器资源状态(如判断 “哪个容器内存泄漏”“业务高峰时 CPU 是否过载”)。
- 操作行为:通过浏览器访问
3、实现步骤
(1)拉取prometheus镜像,并验证是否能正常访问
docker run -d -p 9090:9090 --name loren-prom-1 prom/prometheus (云服务器记得放开防火墙)

(2)docker cp 将prometheus的配置文件拷贝出来&&调整时间同步
将prometheus配置文件导出的原因是:需要修改prometheus.yml配置文件,增加需要监控的主机

timedatectl set-timezone Asia/Shanghai
(3)安装部署cadvisor+prometheus
安装cadvisor:首先cadvisor,是Google开发的,要想办法去github上下载压缩包(https://github.com/goharbor/harbor/releases),然后放在本地进行。
编辑prometheus.yml主配置文件,添加监控的容器cadvisor为目标容器
cat prometheus.yml |egrep -v "#|^$"


(4)编辑好compose.yml文件,用compose来启容器(前提是已经装了compose)
*安装compose:
sudo curl -L "https://github.com/docker/compose/releases/download/v2.17.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

起来之后去访问cadvisor(使用浏览器访问8080端口),看看效果


(5)使用grafana工具
首先通过docker安装grafana
docker run -d --name=grafana -p 3000:3000 grafana/grafana
然后通过web 3000端口登入到grafana界面
http://xxx.xxx.xx.xxx:3000/login
初始密码为admin admin,进入后会修改新密码
在grafana里面添加数据源
点开后直接添加源为http://宿主机:9090,该项目没有设置认证,直接保存即可



grafana可以去官方找模版,前面提到的模版没有很好,所以后面找了个cadvisor专用的模版,模版ID:14282 下面是我导入之后的效果

1016

被折叠的 条评论
为什么被折叠?



