Debian Docker 容器监控实践指南
一 快速上手与内置工具
- 使用 docker stats 实时查看所有容器的 CPU、内存、网络 I/O、块 I/O,适合临时排查与巡检。示例:docker stats。
- 使用 docker logs 查看容器标准输出与错误日志,配合 grep/filter 做关键字定位。示例:docker logs <容器名>。
- 使用 docker inspect 获取容器详细配置与运行状态(环境变量、挂载、网络、重启策略等),用于配置核对与故障复盘。
- 小提示:若需对多主机统一监控与告警,建议引入时序数据库与可视化平台(见下文方案)。
二 开源方案 CAdvisor + InfluxDB + Grafana
-
组件分工:
- cAdvisor:采集容器 CPU、内存、网络、磁盘 I/O 等指标,内置 Web 页面(默认仅本地保留约 2 分钟 数据)。
- InfluxDB:时序数据库,用于持久化存储 cAdvisor 指标。
- Grafana:可视化与看板,支持多数据源与丰富图表。
-
快速部署(单机演示,生产请分离部署与持久化存储):
- 准备目录:mkdir -p monitor/{influxdb,grafana}
- 启动(示例 docker-compose.yml):
version: “3.8”
services:
influxdb:
image: tutum/influxdb:0.9
restart: always
environment:
- PRE_CREATE_DB=cadvisor
ports:
- “8086:8086”
- “8083:8083”
volumes:
- ./monitor/influxdb:/data
cadvisor:
image: google/cadvisor:latest
restart: always
volumes:
- /:/rootfs:ro
- /var/run:/var/run:rw
- /sys:/sys:ro
- /var/lib/docker/:/var/lib/docker:ro
- /dev/disk/:/dev/disk:ro
ports:
- “8080:8080”
depends_on:
- influxdb
grafana:
image: grafana/grafana:latest
restart: always
ports:
- “3000:3000”
volumes:
- ./monitor/grafana:/var/lib/grafana
depends_on:
- influxdb
3) 访问与配置:
- cAdvisor:http://:8080
- InfluxDB:http://:8083(8086 为 API)
- Grafana:http://:3000(默认账号 admin/admin)
- 在 Grafana 添加数据源 InfluxDB,URL 填 http://influxdb:8086,数据库填 cadvisor,导入容器监控面板即可。
-
适用场景:单节点或小规模集群的可视化监控与历史趋势查看。
三 企业级与托管方案
- Zabbix:通过 Zabbix Server/Web/Java Gateway 组件监控容器与主机,支持模板化与告警。示例容器运行可映射 80/10051/10052 端口,Web 默认账号 Admin/zabbix。
- Prometheus + Grafana:以 Prometheus 作为时序采集与告警引擎,抓取 cAdvisor/Docker/应用指标,Grafana 负责可视化与看板。
- 商业与 SaaS:如 Datadog、Dynatrace、SolarWinds、ManageEngine、Sematext、Sumo Logic、SignalFx 等,提供开箱即用的主机/容器/应用性能监控、日志聚合与智能告警,适合快速落地与大规模环境。
四 Debian 上的常见问题与优化
- cAdvisor 内存指标为 0 或缺失:部分 Debian 系统默认未启用 CGroup Memory,需修改内核启动参数。编辑 /etc/default/grub,在 GRUB_CMDLINE_LINUX 中加入 cgroup_enable=memory,执行 update-grub 并重启。
- cAdvisor 默认仅保留约 2 分钟数据:建议对接 InfluxDB 持久化,并在 Grafana 配置长期保留与告警规则。
- 网络指标统计偏差:cAdvisor 早期版本可能只统计第一个网卡,存在多网卡/Overlay 场景偏差,需升级版本或自定义构建以覆盖多网卡统计。
- 多主机规模化:单节点 cAdvisor 仅覆盖本机,跨主机建议部署多实例并结合 Prometheus 或企业监控平台做统一采集与聚合。