docker

关注公众号 jb51net

关闭
首页 > 网站技巧 > 服务器 > 云和虚拟化 > docker > Docker容器资源监控

Docker容器资源监控的终极指南

作者:sg_knight

容器化应用突发高负载、内存泄漏等问题时常困扰运维团队,所以本文给大家介绍了Docker容器资源监控的完整指南,并通过代码示例介绍的非常详细,需要的朋友可以参考下

核心痛点

容器化应用突发高负载、内存泄漏等问题时常困扰运维团队。掌握以下监控手段,5分钟内精准定位资源瓶颈:

一、原生监控三板斧

1. 实时资源仪表盘:docker stats

docker stats --no-stream [容器名]

输出解读

CONTAINER   CPU %   MEM USAGE / LIMIT   MEM %   NET I/O       BLOCK I/O   PIDS
nginx       0.12%   35.8MiB / 1.944GiB   1.8%   1.2kB / 0B    0B / 0B     3
mysql       45.7%   1.2GiB / 2GiB       60.0%   15.4MB/3.2MB  2.1GB/0B    28

关键字段

2. 进程级洞察:docker top

docker top mysql_container -o pid,ppid,user,cmd,%cpu,%mem

输出示例

PID   PPID  USER   CMD          CPU% MEM%
6723  6718  mysql mysqld        24.3 18.7
6789  6723  mysql mysqld_safe   0.2  0.5

3. 磁盘空间监控

docker system df -v

输出分析

TYPE        ACTIVE    RECLAIMABLE
Images      5         1.2GB (35%)
Containers  8         350MB (22%)
Volumes     3         800MB (61%)

二、企业级监控方案

1. cAdvisor + Prometheus + Grafana 黄金组合

部署架构

快速部署

# 启动cAdvisor
docker run -d \
  --volume=/:/rootfs:ro \
  --volume=/var/run:/var/run:ro \
  --publish=8080:8080 \
  --name=cadvisor \
  google/cadvisor:v0.47.0

# Prometheus配置示例
scrape_configs:
  - job_name: cadvisor
    static_configs:
      - targets: ['cadvisor:8080']

2. 关键监控指标

指标类型PromQL示例告警阈值
CPU使用率rate(container_cpu_usage_seconds_total[5m])>75%持续5分钟
内存使用量container_memory_working_set_bytes>90% Limit
网络丢包率container_network_transmit_packets_dropped_total>1%
存储空间container_fs_usage_bytes>85%

三、场景化诊断技巧

1. CPU异常飙升排查

诊断步骤

2. 内存泄漏定位

# 监控RSS内存增长
watch -n 5 "docker stats --no-stream --format '{{.Name}} {{.MemUsage}}'"

# 生成内存快照(Java示例)
docker exec my_app jcmd 1 GC.heap_dump /tmp/dump.hprof

3. 网络瓶颈分析

# 查看容器网络接口
docker exec -it nginx ip addr show eth0

# 抓取容器网络包
docker run --net container:nginx -it nicolaka/netshoot tcpdump -i eth0

四、监控避坑指南

1. 指标认知误区

指标真实含义常见误判
CPU%占满单核=100%误以为总CPU率
MEM USAGE包含Page Cache高估实际用量
MEM LIMIT不设置则默认主机内存突发OOM

2. 生产环境铁律

强制设置资源限制

docker run -d --cpus=2 --memory=1g --memory-swap=0 nginx

启用实时监控告警

# Prometheus Alertmanager配置示例
- alert: HighMemoryUsage
  expr: container_memory_usage_bytes / container_spec_memory_limit_bytes > 0.9
  for: 5m

五、免费监控工具推荐

Lens IDE:K8s容器实时监控(含Docker)
!不能放图

NetData:轻量级主机监控

docker run -d --cap-add SYS_PTRACE \
  -p 19999:19999 \
  netdata/netdata

Dozzle:实时日志仪表盘

docker run -d --volume=/var/run/docker.sock:/var/run/docker.sock \
  -p 8080:8080 \
  amir20/dozzle

终极建议

生产环境务必配置--memory和--cpus限制,配合Prometheus+Grafana实现:

  1. 资源使用率历史趋势分析
  2. 自动触发水平扩容(HPA)
  3. 生成季度容量规划报告

通过docker stats快速响应突发问题,结合APM工具深入诊断应用层性能,构建完整监控链条。

以上就是Docker容器资源监控的终极指南的详细内容,更多关于Docker容器资源监控的资料请关注脚本之家其它相关文章!

您可能感兴趣的文章:
阅读全文