温馨提示×

Ubuntu Docker性能监控如何进行

小樊
46
2025-11-22 19:58:36
栏目: 智能运维

Ubuntu Docker性能监控实操指南

一 快速上手 内置与系统工具

  • 使用 docker stats 实时查看容器的 CPU、内存、网络、磁盘 I/O:运行 docker stats 查看所有容器,或 docker stats <容器名或ID> 查看单个容器;加 --no-stream 输出一次快照,便于脚本采集。
  • docker inspect 查看容器详细配置与状态:docker inspect <容器名或ID>
  • 结合系统工具定位宿主机与容器进程:top/htop 可查看容器对应的宿主机进程,配合容器名或命令行关键字定位具体进程,辅助排查高占用来源。
  • 快速查看容器日志以关联性能异常:docker logs <容器名或ID>,必要时加 --since/--tail 聚焦时间窗口。

二 可视化与长期存储 推荐架构

  • 组件选型与职责:
    • cAdvisor:采集容器 CPU、内存、网络、文件系统 等资源指标,提供 Web 界面。
    • Prometheus:按配置抓取(scrape)cAdvisor 暴露的指标并存储为时间序列。
    • Grafana:对接 Prometheus,构建可视化仪表盘与告警面板。
  • 快速部署步骤(示例):
    1. 启动 cAdvisor(推荐 host 网络与最小权限):
      docker run -d --name=cadvisor --privileged --net=host google/cadvisor:latest
      访问 http://<宿主机IP>:8080 查看指标与容器列表。
    2. 配置 Prometheus 抓取 cAdvisor:在 prometheus.yml 增加 job
      scrape_configs:
        - job_name: 'docker'
          static_configs:
            - targets: ['<宿主机IP>:8080']
      
      启动/重启 Prometheus 后,在 http://:9090 的 Targets 页面确认抓取状态为 UP
    3. 部署 Grafana 并添加数据源:
      sudo apt-get update && sudo apt-get install -y grafana
      sudo systemctl start grafana-server && sudo systemctl enable grafana-server
      访问 http://:3000,添加 Prometheus 数据源(URL 如 http://:9090),导入容器监控仪表盘(如 Docker 或 cAdvisor 官方模板)。

三 进阶与扩展

  • 日志与性能联动分析:将容器日志接入 ELK(Elasticsearch、Logstash、Kibana),对错误、慢查询、重启等事件做可视化与检索,与指标数据交叉定位根因。
  • 商业与托管方案:如 Datadog、New Relic 提供开箱即用的 Docker/ECS/K8s 监控、分布式追踪与告警,适合团队化运维与合规审计。
  • 容器编排场景:在 Kubernetes 中可使用 Kubernetes Dashboard 获取集群维度的资源与工作负载视图,与 Prometheus/Grafana 组合实现统一观测。

四 实践要点与排错清单

  • 权限与安全:cAdvisor 为容器采集系统指标通常需要 –privileged;在云环境或生产环境优先采用 最小权限只读 采集方式,并限制 /sys/fs/cgroup 等敏感挂载。
  • 网络与连通性:确保 Prometheus 能访问 cAdvisor 8080Grafana 能访问 Prometheus 9090;在防火墙/安全组中放行对应端口。
  • 资源开销:cAdvisor 本身会消耗一定 CPU/内存,在大规模集群中建议使用 DaemonSet 部署并合理设置采集间隔。
  • 指标口径:区分 容器视角(cAdvisor/Prometheus)与 进程视角(top/htop),CPU 使用率注意 多核归一化采样周期 的影响。
  • 告警策略:在 Grafana 或 Prometheus 中配置阈值告警(如容器 CPU > 80% 持续 5 分钟内存使用率 > 90%重启次数异常),并绑定通知渠道(邮件、企业微信、Slack)。

0