Prometheus 采集 Docker 指标

Prometheus 采集 Docker 指标

为什么用 Prometheus 监控 Docker

Docker 提供了丰富的运行时指标(CPU、内存、网络、磁盘 I/O 等),但 docker stats 只能看当前状态,无法做历史趋势分析、告警和多维度聚合。Prometheus 作为云原生监控的事实标准,天然支持 Docker 指标采集。

采集架构

Docker Host → cAdvisor / Docker Daemon Metrics API → Prometheus → Grafana

方式一:通过 cAdvisor 采集

cAdvisor(Container Advisor)是 Google 开源的工具,直接集成在 kubelet 中,也可以独立运行。

docker run -d \
  --name=cadvisor \
  --restart=always \
  -p 8080:8080 \
  -v /:/rootfs:ro \
  -v /var/run:/var/run:ro \
  -v /sys:/sys:ro \
  -v /var/lib/docker/:/var/lib/docker:ro \
  -v /dev/disk/:/dev/disk:ro \
  gcr.io/cadvisor/cadvisor:latest

访问 http://host:8080/metrics 即可看到容器指标。

方式二:直接使用 Docker Engine Metrics

Docker 19.03+ 内置了 Prometheus 端点,需要在 daemon.json 中启用:

{
  "metrics-addr": "0.0.0.0:9323",
  "experimental": true
}

重启后访问 http://host:9323/metrics

Prometheus 配置

scrape_configs:
  - job_name: 'docker'
    static_configs:
      - targets: ['localhost:9323']

  - job_name: 'cadvisor'
    static_configs:
      - targets: ['localhost:8080']

关键指标

类别 指标示例 说明
CPU container_cpu_usage_seconds_total CPU 累计使用秒数
内存 container_memory_usage_bytes 当前内存使用量
网络 container_network_receive_bytes_total 网络接收字节数
磁盘 container_fs_usage_bytes 文件系统使用量

面试要点

  1. cAdvisor vs Engine Metrics:cAdvisor 指标更丰富(细分到每个容器),Engine Metrics 更轻量
  2. 数据保留:Prometheus 本地存储有保留期限制,生产环境建议配合 Thanos 或 VictoriaMetrics
  3. 告警规则:推荐配置容器 OOM、CPU 持续飙高、磁盘空间不足等告警
  4. 标签优化:用 container_label_* 做精细化分组查询

面试官可能追问:容器级别的监控和宿主机级别有什么区别?监控数据的精度如何保证?

© 版权声明
THE END
喜欢就支持一下吧
点赞9 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容