在Linux系统中部署容器服务后,配置合理的监控方案能够帮助我们及时掌握容器的运行状态,快速定位资源瓶颈和故障问题。目前主流的容器监控方案通常结合指标采集、存储、展示三个核心环节,下面以Docker容器为例,介绍基于cAdvisor和Prometheus的监控配置方法。

监控组件选型说明
常用的容器监控组件各有侧重,我们可以根据实际需求选择组合:
- cAdvisor:Google开源的容器监控工具,能够自动采集宿主机上所有容器的资源使用数据,包括CPU、内存、网络、磁盘等,支持Docker容器开箱即用。
- Prometheus:开源的监控告警系统,负责拉取cAdvisor采集的指标数据进行存储,支持灵活的查询语法和告警规则配置。
- Grafana:可视化展示工具,对接Prometheus数据源,可自定义容器监控仪表盘,直观展示各项监控指标。
安装cAdvisor采集容器指标
cAdvisor可以直接以Docker容器的形式运行在Linux宿主机上,无需复杂的环境配置。执行以下命令启动cAdvisor容器:
# 拉取cAdvisor镜像 docker pull gcr.io/cadvisor/cadvisor:v0.47.0 # 启动cAdvisor容器,挂载宿主机相关目录用于采集容器数据 docker run --volume=/:/rootfs:ro --volume=/var/run:/var/run:rw --volume=/sys:/sys:ro --volume=/var/lib/docker/:/var/lib/docker:ro --publish=8080:8080 --detach=true --name=cadvisor gcr.io/cadvisor/cadvisor:v0.47.0
容器启动后,访问http://宿主机IP:8080即可看到cAdvisor的监控页面,其中/metrics路径会暴露Prometheus格式的指标数据,供后续Prometheus拉取。
安装配置Prometheus存储指标
首先创建Prometheus的配置文件,指定cAdvisor作为指标采集目标:
# prometheus.yml 配置文件内容
global:
scrape_interval: 15s # 每15秒拉取一次指标
scrape_configs:
- job_name: "cadvisor" # 任务名称
static_configs:
- targets: ["127.0.0.1:8080"] # cAdvisor的访问地址,如果是远程宿主机替换为对应IP
然后启动Prometheus容器,挂载上述配置文件:
# 拉取Prometheus镜像 docker pull prom/prometheus:v2.45.0 # 启动Prometheus容器,挂载配置文件到容器内 docker run --volume=$(pwd)/prometheus.yml:/etc/prometheus/prometheus.yml --publish=9090:9090 --detach=true --name=prometheus prom/prometheus:v2.45.0
启动后访问http://宿主机IP:9090,在Prometheus的Targets页面可以看到cAdvisor的采集状态为UP,说明指标拉取正常。
配置Grafana可视化展示
启动Grafana容器并配置数据源对接Prometheus:
# 拉取Grafana镜像 docker pull grafana/grafana:9.5.2 # 启动Grafana容器 docker run --publish=3000:3000 --detach=true --name=grafana grafana/grafana:9.5.2
访问http://宿主机IP:3000,默认账号密码为admin/admin,登录后按以下步骤配置:
- 进入Configuration -> Data Sources,点击Add data source,选择Prometheus。
- 在URL栏填写
http://127.0.0.1:9090(如果Prometheus和Grafana不在同一宿主机,替换为Prometheus的实际IP),点击Save & Test验证连通性。 - 进入Dashboards -> Import,输入容器监控仪表盘ID(如193),选择刚才配置的Prometheus数据源,即可导入现成的容器监控仪表盘,查看容器的各项运行指标。
常见问题排查
如果监控数据无法正常展示,可以按照以下思路排查:
- 检查cAdvisor容器是否正常运行,访问
http://宿主机IP:8080/metrics是否能获取到指标数据。 - 检查Prometheus配置文件中targets的地址是否正确,在Prometheus的Targets页面查看采集任务状态是否为UP。
- 检查Grafana的数据源配置是否正确,测试数据源连通性是否通过。
注意:如果是在生产环境使用,还需要配置Prometheus的数据持久化,避免容器重启后监控数据丢失,同时可以根据需求配置Prometheus的告警规则,当容器指标异常时及时发送告警通知。
Dockercontainer_monitoringPrometheuscAdvisor修改时间:2026-07-19 23:42:23