全部学科
Python全栈
python
NodeJS全栈
nodejs
小程序首页
📅 2026-05-21 5 分钟 ✍️ juanwangdev

资源监控与统计

容器资源监控是运维基础,下面介绍 Docker 内置统计与 cgroups 分析。

docker stats

实时统计

Bash
# 查看所有容器统计
docker stats

# 输出
CONTAINER ID   NAME      CPU %     MEM USAGE / LIMIT   MEM %    NET I/O         BLOCK I/O   PIDS
abc123         web       0.50%     128MiB / 512MiB     25%      1.2MB / 500KB   10MB / 5MB  45
def456         db        2.30%     384MiB / 1GiB       37%      500KB / 1.2MB   50MB / 20MB 120

指定容器

Bash
# 查看指定容器
docker stats web db

# 单次输出(不实时)
docker stats --no-stream

# 输出 JSON 格式
docker stats --no-stream --format "{{json .}}"

统计字段

字段说明
CPU %CPU 使用百分比
MEM USAGE / LIMIT内存使用 / 限制
MEM %内存使用百分比
NET I/O网络输入/输出
BLOCK I/O磁盘输入/输出
PIDS进程数

格式化输出

Bash
# 自定义格式
docker stats --format "table {{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}"

# 仅输出特定字段
docker stats --format "{{.Name}}: CPU {{.CPUPerc}}, MEM {{.MemPerc}}"

# 输出 CSV
docker stats --no-stream --format "{{.Name}},{{.CPUPerc}},{{.MemUsage}}" > stats.csv

cgroups 分析

查看 cgroups 信息

Bash
# cgroups v2
cat /sys/fs/cgroup/docker/<container_id>/memory.current
cat /sys/fs/cgroup/docker/<container_id>/cpu.stat

# cgroups v1
cat /sys/fs/cgroup/memory/docker/<container_id>/memory.usage_in_bytes
cat /sys/fs/cgroup/cpu/docker/<container_id>/cpu.stat

进程统计

Bash
# 查看容器进程
docker top my-app

# 输出
PID   USER   TIME   COMMAND
1234  root   0:10   node server.js
1235  root   0:05   worker

历史数据

Bash
# docker stats 仅实时,不保存历史
# 需配合外部监控系统

# Prometheus + cAdvisor
docker run -d \
  --name=cadvisor \
  -p 8080:8080 \
  -v /:/rootfs:ro \
  -v /var/run:/var/run:ro \
  -v /sys:/sys:ro \
  -v /var/lib/docker:/var/lib/docker:ro \
  gcr.io/cadvisor/cadvisor:latest

# 访问 http://localhost:8080

告警配置

Bash
# 脚本监控 + 告警
#!/bin/bash
THRESHOLD=80

docker stats --no-stream --format "{{.MemPerc}}" | while read line; do
  usage=$(echo $line | tr -d '%')
  if (( $(echo "$usage > $THRESHOLD" | bc -l) )); then
    echo "WARNING: Memory usage > $THRESHOLD%"
    # 发送告警通知
  fi
done

要点总结

  • docker stats 实时查看容器 CPU、内存、网络、磁盘 IO
  • --no-stream 单次输出,--format 自定义格式
  • cgroups 提供底层资源统计,适合深入分析
  • cAdvisor 集成 Prometheus 实现历史数据和可视化
  • 生产环境建议配合外部监控系统(Prometheus + Grafana)

📝 发现内容有误?点击此处直接编辑

← 上一篇 内存限制与 OOM
下一篇 → 进程数与 PID 限制
想查看更多题目和详细解析?
小程序提供完整的题库、模拟考试和详细解析
马上就来

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库