温馨提示×

Ubuntu Docker如何监控资源

小樊
34
2025-11-26 19:06:35
栏目: 智能运维

Ubuntu Docker 资源监控实用指南

一 快速上手 内置命令

  • 查看容器清单与状态
    • 运行容器:docker ps
    • 全部容器(含已停止):docker ps -a
    • 按状态过滤:docker ps -f status=running
  • 查看容器详细信息(含资源限制)
    • docker inspect <容器ID或名称>
    • 示例:提取状态与内存限制
      • docker inspect --format ‘{{.State.Status}} {{.HostConfig.Memory}}’ <容器ID>
  • 实时资源监控
    • 全部运行中容器:docker stats
    • 指定容器:docker stats <容器ID或名称>
    • 非流式一次性输出:docker stats --no-stream <容器ID或名称>
  • 容器内进程与日志
    • 容器内进程:docker top <容器ID或名称>
    • 容器日志:docker logs -f <容器ID或名称>(按 Ctrl+C 退出)

二 可视化与长期观测 cAdvisor Prometheus Grafana

  • 部署 cAdvisor(采集容器指标)
    • 推荐方式(使用宿主机网络,减少端口映射复杂性):
      • docker run -d --name=cadvisor --net=host --privileged=true google/cadvisor:latest
    • 访问 Web UI:http://<宿主机IP>:8080
  • 部署 Prometheus(拉取与存储指标)
    • 示例(解压即用,生产建议以 systemd 托管):
      • 下载并解压 Prometheus(示例版本:2.30.3
      • 启动:./prometheus --config.file=prometheus.yml &
    • 配置抓取 Docker 指标(prometheus.yml 片段):
      • 抓取 cAdvisor:
        • - job_name: ‘docker’
        • static_configs: [ { targets: [‘localhost:8080’] } ]
      • 若使用 cAdvisor 的 /metrics HTTP 接口(部分部署为 9323):
        • - job_name: ‘docker-metrics’
        • static_configs: [ { targets: [‘localhost:9323’] } ]
  • 部署 Grafana(可视化)
    • 安装与启动:
      • sudo apt-get update && sudo apt-get install -y grafana
      • sudo systemctl start grafana-server && sudo systemctl enable grafana-server
    • 访问 Web UI:http://<宿主机IP>:3000
    • 添加数据源:选择 Prometheus,URL 例如 http://localhost:9090,保存并测试
  • 建议的展示面板
    • 容器 CPU、内存、网络 I/O、磁盘 I/O 使用率与趋势
    • 宿主机资源与容器维度的对比视图

三 进阶与系统层面工具

  • Sysdig(系统级观测,含容器视角)
    • 运行示例(需特权与挂载宿主机关键目录):
      • *docker run -it --rm --name sysdig --privileged=true *
        • *–volume=/var/run/docker.sock:/host/var/run/docker.sock *
        • *–volume=/dev:/host/dev *
        • *–volume=/proc:/host/proc:ro *
        • *–volume=/boot:/host/boot:ro *
        • *–volume=/lib/modules:/host/lib/modules:ro *
        • –volume=/usr:/host/usr:ro sysdig/sysdig
  • Weave Scope(拓扑与资源可视化)
    • 一键启动后可查看容器间调用关系、资源占用与快速排障入口
  • htop(宿主机进程视角)
    • 安装:sudo apt-get install -y htop
    • 运行:htop,用于观察 dockerd 及容器相关进程的资源占用

四 生产实践 告警阈值与资源限制

  • 设置资源限制(预防单容器失控)
    • CPU:限制最多使用 0.5
      • docker run -d --cpus 0.5 --name app1 my-image
    • 内存:最大 512MB,内存+交换分区总和 1GB
      • docker run -d --memory 512m --memory-swap 1g --name app1 my-image
    • 动态调整运行中容器(Docker 20.10+
      • docker update --cpus 1.0 --memory 1g <容器ID>
  • 告警阈值建议(示例)
    • 容器内存使用率持续 > 80%
    • 容器 CPU 使用率持续 > 80%
    • 容器重启次数异常增长
    • 宿主机剩余内存 < 10% 或负载持续偏高
  • 排查路径简表
    • 先看实时:docker stats
    • 再看配置与状态:docker inspect
    • 看容器内进程:docker top
    • 看事件与日志:docker eventsdocker logs -f
    • 长期趋势与可视化:cAdvisor + Prometheus + Grafana

0