Docker容器监控体系由cAdvisor采集、Prometheus存储计算、Grafana可视化、Alertmanager告警四部分构成:cAdvisor通过/metrics暴露指标,Prometheus定时拉取并运行PromQL,Grafana对接Prometheus展示面板,Alertmanager处理告警分发与通知。

给 Docker 容器配监控,核心是把“数据怎么拿、存哪、怎么看、出问题怎么通知”这四件事串起来。不改业务容器、不侵入应用,用现成工具搭一套轻量又可靠的体系,是主流做法。
cAdvisor 抓指标:让每个容器自己“报数”
cAdvisor 是专为 Docker 设计的采集器,开箱就能暴露 CPU、内存、网络、磁盘等二十多项指标,全部通过 /metrics 接口以文本格式提供,Prometheus 直接能拉。
- 启动命令推荐用容器方式运行,挂载关键路径(
/、/var/run、/sys、/var/lib/docker),端口映射到 8080 - 访问
http://localhost:8080/metrics能看到类似container_cpu_usage_seconds_total{container="nginx"} 42.5的原始数据,说明采集通了 - 注意宿主机的
/var/run/docker.sock权限,cAdvisor 需要读它才能发现所有容器,某些安全策略会默认禁止
Prometheus 存和算:定时拉取+规则判断
Prometheus 不推不收,只主动从 cAdvisor 拉数据,按时间序列存本地,还能跑 PromQL 查询、评估告警规则。
MiniMax 图片理解 + 网络搜索 MCP 工具。适配 Docker 环境(极空间等),支持图片 OCR 识别、图像内容理解、网络搜索。API Key 安全存储在本地 credentials 文件,不暴露在代码中。
- 在
prometheus.yml里加一个 job,target 填 cAdvisor 地址(本机填localhost:8080,跨主机填实际 IP) -
scrape_interval: 5s控制采集频率,太短增加负载,太长影响告警及时性,一般 5–15 秒合适 - 启动后打开
http://localhost:9090/targets,确认 cadvisor 状态是 UP;再输container_memory_usage_bytes能查到数值,说明存储和查询都正常
Grafana 看数据:三步搭可视化面板
Grafana 不存数据,只连 Prometheus 当数据源,靠模板快速建图,适合运维日常巡检。
- 在 Grafana 添加数据源,类型选 Prometheus,URL 填
http://host.docker.internal:9090(Docker for Mac/Windows)或宿主机真实 IP(Linux) - 导入社区成熟模板,比如 ID 893(Docker 全面监控)、ID 1860(主机+容器综合)、ID 16576(Docker Compose 服务)
- 面板加载后,可按容器名、命名空间、镜像等维度筛选,CPU 使用率、内存占用、网络吞吐这些关键曲线一目了然
Alertmanager 告警:规则写在哪、通知发给谁
告警逻辑由 Prometheus 定义,但分发、去重、静默、抑制这些功能交给 Alertmanager 处理,两者配合才完整。
- 在 Prometheus 配置里引用告警规则文件(如
alerts.yml),里面写类似expr: container_memory_usage_bytes > 1e9的触发条件 - Alertmanager 配置邮件或 Slack Webhook,定义路由规则(比如内存超限发 Slack,CPU 持续飙高发邮件)
- 改完配置记得重启两个服务,再用
curl -X POST http://localhost:9093/alertmanager/api/v1/alerts手动触发测试,确认消息能收到

















