监控 Docker 容器 CPU 使用率:Prometheus+Grafana 配置指南

1. 架构组件
  • Prometheus:采集容器指标
  • cAdvisor:收集 Docker 容器资源数据
  • Node Exporter:采集主机级指标
  • Grafana:可视化与告警
  • Alertmanager:告警路由(可选)
2. 部署步骤

① 启动 cAdvisor(容器指标采集):

docker run -d \
  --name=cadvisor \
  -v /:/rootfs:ro \
  -v /var/run:/var/run:rw \
  -v /sys:/sys:ro \
  -v /var/lib/docker:/var/lib/docker:ro \
  -p 8080:8080 \
  google/cadvisor:latest

② 配置 Prometheusprometheus.yml):

scrape_configs:
  - job_name: "docker"
    static_configs:
      - targets: ["cadvisor:8080"]  # cAdvisor 地址
  - job_name: "node"
    static_configs:
      - targets: ["node-exporter:9100"]  # Node Exporter 地址

③ Grafana 数据源配置

  1. 登录 Grafana > Configuration > Data Sources
  2. 添加 Prometheus 数据源(URL:http://prometheus:9090
3. CPU 使用率计算

核心 PromQL 查询:

sum(rate(container_cpu_usage_seconds_total{container!=""}[1m])) by (container) 
/ 
sum(container_spec_cpu_quota{container!=""}/container_spec_cpu_period{container!=""}) by (container) 
* 100

该公式计算每个容器的 CPU 使用百分比,其中:

  • container_cpu_usage_seconds_total:容器 CPU 累计使用时间
  • container_spec_cpu_quota:容器 CPU 配额
  • container_spec_cpu_period:CPU 周期(通常为 100,000μs)
4. Grafana 仪表板配置
  1. 创建新仪表板 > Add panel
  2. 数据源选择 Prometheus
  3. 输入上述 PromQL 查询
  4. 设置图表类型:StatTime series
  5. 添加单位:%(百分比)
5. 阈值告警配置

在 Grafana 面板中设置告警:

  1. 编辑面板 > Alert 选项卡
  2. 创建告警规则:
    • Rule name: 容器 CPU 告警
    • ConditionWHEN max() OF query(A, 1m, now) IS ABOVE 80
    • Duration5m(持续超过阈值时长)
  3. 通知渠道配置:
    • 添加邮件/Slack/Webhook 等通知方式
    • 设置告警消息模板:
      {{ $labels.container }} CPU 使用率超过 80%!
      当前值: {{ $value }}%
      主机: {{ $labels.instance }}
      

6. 告警优化建议
  1. 动态阈值:使用 quantile_over_time(0.9, 7d) 计算历史百分位数
  2. 分级告警
    • 警告:> 80% 持续 5 分钟
    • 严重:> 95% 持续 2 分钟
  3. 告警抑制:避免重复告警(如容器重启时)
7. 验证流程
  1. 制造 CPU 负载:
    docker run --rm -it progrium/stress --cpu 4
    

  2. 观察 Grafana 仪表板数据变化
  3. 触发阈值后检查告警通知

注意事项

  1. 确保所有容器暴露 cgroups 指标(Kubernetes 环境需配置 cAdvisor)
  2. 对于 Swarm/K8s 集群,需部署 kube-state-metrics
  3. 关键告警建议配置 ACK 机制自动恢复检测


(示意图:数据采集 → Prometheus → Grafana → 告警通知)

最终效果:实时监控容器 CPU 使用率,当超过阈值时自动触发多级告警通知,支持历史数据回溯分析。

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐