cAdvisor监控Docker容器做性能测试

cAdvisor监控Docker容器做性能测试

缘起

当前有个服务做技术选型,服务要求比较高的性能,要做性能测试。部署的环境是容器话部署,但申请新的容器流程较长,于是我打算在流程走完之前简单评估下性能,来确定技术选型是否可行。当前有一个测试服务器上装有Docker。

Docker启动容器并部署

将服务打包上传至服务器,启动一个Docker容器

shell 复制代码
docker run -it -d -v /home/xxx:/opt -p 0.0.0.0:9002:8080 --name=test-service  debian11:latest
# -i: 代表使用交互
# -t: 代表打开一个终端
# -d: 代表后台运行
# -v: 代表挂载目录  冒号之前是本机目录,冒号之后是容器内部目录
# -p: 端口映射 冒号之前是本机端口,冒号之后是容器端口
# --name=容器名: 代表给容器起一个别名

启动完成后将服务的可执行文件上传至/home/xxx下,进入容器:

shell 复制代码
docker exec -it test-service /bin/bash
# -it同上
# /bin/bash是打开/bin/bash作为交互的终端

进入后拷贝容器内/opt下的服务的可执行文件到发布目录,启动服务。

给Docker加限制,使其和要求CPU,内存资源一致

shell 复制代码
docker update --cpus 1 test-service
docker update -m 1024M test-service

安装监控工具cAdvisor

执行压力测试肯定要监控资源使用情况,虽然top命令可以看,但毕竟看到的是Docker这个进程的使用情况,并不能真实反映Docker内部服务的,并且只是数据展示的话也不直观。Docker提供了docker stats 容器名/容器ID查看资源使用情况,效果如下:
但看下来也不是很直观,那么有没有一个比较直观的工具呢,有,那就是cAdvisor。

github地址: https://github.com/google/cadvisor

项目建议启动容器去查看:

shell 复制代码
VERSION=v0.36.0 # use the latest release version from https://github.com/google/cadvisor/releases
sudo docker run \
  --volume=/:/rootfs:ro \
  --volume=/var/run:/var/run:ro \
  --volume=/sys:/sys:ro \
  --volume=/var/lib/docker/:/var/lib/docker:ro \
  --volume=/dev/disk/:/dev/disk:ro \
  --publish=8080:8080 \
  --detach=true \
  --name=cadvisor \
  --privileged \
  --device=/dev/kmsg \
  gcr.io/cadvisor/cadvisor:$VERSION

我登陆上docker hub看了下,因为网络太卡就放弃,并且公司内网有限制,并不能去docker hub下载镜像,会被拦截。于是我在cAdvisor的releases翻了一下,发现有打好的二进制包,直接下载并启动

访问服务器的8080端口展示如下:

Subcontainers下面就是我启动的容器,点进去可以看到CPU,内存,磁盘等监控。

效果

贴几张效果图

CPU:

内存:

Docker内部进程占用:

相关推荐
筱_智4 分钟前
Docker学习-超详细-通俗易懂(从入门到精通)
学习·docker·容器
搞科研的小刘选手9 分钟前
【高届数传感机电会议】第十二届传感器、机电一体化和自动化系统国际学术研讨会(ISSMAS 2026)
运维·人工智能·自动化·控制·传感器·传感·机电
EAIReport28 分钟前
Docker与K8s核心解析:共同性、差异性及实战适配指南
docker·容器·kubernetes
李景琰31 分钟前
Debian12安装配置Mqtt之EMQX
linux·运维·服务器
SimLine芯见32 分钟前
专为空管环境打造的KVM切换器,满足主备自动化高速无缝切换需求
运维·自动化
长安链开源社区36 分钟前
动手开发 | 如何通过k8s部署长安链
云原生·容器·kubernetes·区块链
不做无法实现的梦~39 分钟前
PX4 机载电脑 Linux 环境安装、串口、网络、ROS 完整配置
linux·运维·网络
嵌入式×边缘AI:打怪升级日志39 分钟前
嵌入式Linux开发(了解交叉编译工具链的组成)
java·linux·运维
IT界的老黄牛42 分钟前
停电后 Redis 集群两节点起不来:fix 完还报 Bad file format?多部分 AOF 修复的正确姿势
运维·redis·缓存
接着奏乐接着舞44 分钟前
3D Tiles tileset.jso 数据格式
运维·服务器·3d