Debian Docker 监控方案总览
在 Debian 上监控 Docker 的运行状态,通常分为三层:主机层(CPU、内存、磁盘、网络)、容器层(每个容器的资源与状态)、日志与可视化层(历史趋势、告警与面板)。下面按“快速上手 → 进阶可视化 → 日志告警 → 选型建议”给出可落地的做法与命令示例。
一、快速上手 原生命令
- 查看容器运行状态与基本信息
- 查看运行中容器:docker ps
- 查看全部容器(含已停止):docker ps -a
- 查看容器详细信息(含 ExitCode、状态等):docker inspect <容器名或ID>
- 实时查看容器资源使用
- 全部容器:docker stats
- 指定容器:docker stats <容器名或ID>
- 实时查看容器内进程
- docker container top <容器名或ID>
- 实时观察容器生命周期事件
- 查看容器日志(定位启动失败等)
- 查看日志:docker logs <容器名或ID>
- 实时跟踪:docker logs -f <容器名或ID>
- 查看 Docker 服务自身状态
- sudo systemctl status docker
以上命令覆盖了日常排障与巡检所需的关键信息,适合作为第一响应手段。
二、进阶可视化与历史趋势
- cAdvisor(单机容器指标采集与可视化)
- 运行示例(注意挂载必要目录以获取完整指标):
- docker run -d --name=cadvisor -p 8080:8080
–volume=/:/rootfs:ro --volume=/var/run:/var/run:rw
–volume=/sys:/sys:ro --volume=/var/lib/docker/:/var/lib/docker:ro
google/cadvisor:latest
- 访问 http://<主机IP>:8080 查看容器 CPU、内存、网络、文件系统等指标。
- Prometheus + Grafana(多主机、长期存储与告警)
- 基本思路:用 cAdvisor 采集容器指标,Prometheus 抓取指标,Grafana 做可视化与告警。
- 快速启动(示例,使用 Docker 网络与卷持久化):
- 创建网络:docker network create monitoring
- Prometheus:
- docker run -d --name=prometheus --network=monitoring
-p 9090:9090 -v /path/to/prometheus.yml:/etc/prometheus/prometheus.yml
prom/prometheus
- cAdvisor(暴露 8080,供 Prometheus 抓取):
- docker run -d --name=cadvisor --network=monitoring
-p 8080:8080
–volume=/:/rootfs:ro --volume=/var/run:/var/run:rw
–volume=/sys:/sys:ro --volume=/var/lib/docker/:/var/lib/docker:ro
google/cadvisor:latest
- Grafana:
- docker run -d --name=grafana --network=monitoring
-p 3000:3000 grafana/grafana
- 在 Grafana 中添加数据源 Prometheus(URL:http://prometheus:9090),导入容器监控面板(如 Docker 官方或社区面板),即可查看历史趋势与配置告警规则。
- 可选替代与补充
- Glances(终端/Web,支持 Docker 指标,易集成 InfluxDB)
- Netdata(轻量实时 Web 监控,开箱即用)
- Weave Scope(容器拓扑与资源交互视图)
- sysdig(系统级观测,容器场景强,需更高权限)
上述组合中,cAdvisor 适合单机快速可视化,Prometheus+Grafana 适合多主机与长期趋势;Glances/Netdata/Weave Scope/sysdig 可作为补充视角与能力增强。
三、日志集中与告警
- ELK/EFK(Elasticsearch + Logstash/Fluent Bit + Kibana)
- 思路:用 Filebeat/Logstash/Fluent Bit 采集容器与主机日志,写入 Elasticsearch,在 Kibana 做检索与可视化。
- 典型组件与端口:Elasticsearch 9200、Kibana 5601、Logstash/Fluent Bit 作为采集与处理管道。
- 适用场景:日志全文检索、故障复盘、指标外关联分析。
- 第三方 SaaS
- Datadog / New Relic 等:部署代理即可获得主机与容器指标、日志与分布式追踪,并提供丰富的告警与看板能力(适合团队化与托管化运维)。
四、选型与部署建议
- 规模与复杂度
- 单机或少量节点:优先 cAdvisor + Grafana(或 Glances/Netdata 快速上墙)。
- 多主机/生产级:采用 Prometheus + Grafana 作为时序与可视化底座,配合 cAdvisor/Node Exporter 采集主机与容器指标。
- 数据保留与容量
- 为 Prometheus 配置合适的 retention 与 storage.tsdb.retention.time,并规划磁盘容量;Grafana 面板与告警规则纳入版本管理。
- 权限与安全
- 运行 cAdvisor 需挂载 /sys、/var/lib/docker 等敏感目录;在受限环境中谨慎授予权限。
- 采集容器内进程与系统调用(如使用 sysdig)通常需要更高权限或特权模式,建议隔离部署与最小权限原则。
- 告警策略
- 对关键指标设置阈值告警(如容器 CPU/内存 持续高占用、RestartCount 增长、容器 OOMKilled、主机 磁盘/Inode 告警等),并结合 日志异常 与 事件流 做根因定位。
以上建议可帮助在不同规模与团队成熟度下,构建从“即时观测 → 历史趋势 → 日志告警”的完整闭环。