Ubuntu Docker监控设置指南
一 快速上手的内置与命令行监控
- 查看容器状态与基本信息:
- 查看运行中容器:docker ps
- 查看全部容器:docker ps -a
- 查看容器详情:docker inspect <容器名或ID>
- 查看容器日志:docker logs <容器名或ID>
- 实时资源监控:
- 查看所有容器资源:docker stats
- 查看单个容器并取消持续流:docker stats <容器名或ID> --no-stream
- 系统级资源观察:
- 安装并使用 htop:sudo apt-get install -y htop,运行 htop 查看进程与资源占用
- 适用场景:临时排查、单机快速巡检、无侵入观测。
二 基于 Prometheus Grafana 的可视化监控
- 组件与端口规划
- cAdvisor:收集容器指标,默认 8080 或 9323(取决于启动方式)
- node-exporter:收集主机指标,端口 9100
- Prometheus:时序数据库与抓取器,端口 9090
- Grafana:可视化平台,端口 3000
- 启动采集器
- cAdvisor(推荐以主机网络运行,减少权限与端口映射复杂度)
- 命令:docker run -d --name=cadvisor --net=host --privileged google/cadvisor:latest
- 验证:访问 http://<主机IP>:8080 或 http://<主机IP>:9323/metrics
- node-exporter(主机指标)
- 命令:docker run -d -p 9100:9100 -v “/proc:/host/proc:ro” -v “/sys:/host/sys:ro” -v “/:/rootfs:ro” prom/node-exporter
- 验证:访问 http://<主机IP>:9100/metrics
- 配置与启动 Prometheus
- 配置目录与文件:/opt/prometheus/prometheus.yml
- 最小可用配置示例:
- global:
- scrape_interval: 15s
- evaluation_interval: 15s
- scrape_configs:
- job_name: ‘prometheus’
static_configs:
- targets: [‘localhost:9090’]
- job_name: ‘cadvisor’
static_configs:
- job_name: ‘node’
static_configs:
- 启动命令:
- docker run -d -p 9090:9090 -v /opt/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml --name prometheus prom/prometheus
- 验证抓取状态:访问 http://<主机IP>:9090/targets,各 Job 状态应为 UP
- 配置 Grafana
- 安装(Ubuntu APT 仓库):
- sudo apt-get update
- sudo apt-get install -y apt-transport-https software-properties-common wget
- wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add -
- sudo add-apt-repository “deb https://packages.grafana.com/oss/deb stable main”
- sudo apt-get update && sudo apt-get install -y grafana
- sudo systemctl daemon-reload && sudo systemctl start grafana-server && sudo systemctl enable grafana-server
- 访问 http://<主机IP>:3000,默认账号 admin/admin
- 添加数据源:选择 Prometheus,URL 填 http://<主机IP>:9090,保存并测试
- 导入面板:在 Grafana 导入 Docker 容器监控 官方面板(如 ID 193 或 315),即可查看容器与主机指标图表。
三 安全与权限建议
- 运行 cAdvisor 时使用了 –privileged 与 –net=host,仅在可信环境使用;生产可改为更细粒度的 –device 授权并限制端口访问。
- 将 Prometheus、Grafana、cAdvisor、node-exporter 仅绑定内网或加防火墙策略,避免公网暴露。
- Grafana 首次登录后立即修改默认密码,并为团队创建只读/编辑角色。
- Prometheus 配置中避免使用明文密码,必要时使用 file_sd_configs 或 Kubernetes Secret 管理抓取目标与凭据。
四 常见问题与排查
- cAdvisor 端口不一致:有的镜像默认 8080,有的使用 9323;以实际容器映射与 /metrics 输出为准,Prometheus 的 target 需与之匹配。
- Prometheus 抓取失败:在 http://<主机IP>:9090/targets 查看 Health,确认目标 IP/端口 可达、防火墙放行、容器运行中。
- Grafana 无法显示数据:确认 Prometheus 数据源 URL 正确(如 http://<主机IP>:9090),并使用支持 Docker 的面板模板。
- 主机指标缺失:确认 node-exporter 容器运行且 9100 端口可访问,Prometheus 中对应 job 为 UP。