![5cbc4d615ec3854f8b3efe1fabae0215.png](https://i-blog.csdnimg.cn/blog_migrate/8f0aa9d8f639495d0f738199b295bfb1.jpeg)
上期我们以Jenkins为例,一边实战一边了解Docker的基础命令。这期,我们将带大家使用Docker搭建三个平时测试工作中非常有用的小工具。学会这三个实战之后,你就可以说对Docker不是浅尝即止在理论阶段,而是真正有一定了解,也能为你的工作,真正的解决一部分问题。
使用Docker搭建prometheus+grafana的服务器监控
使用Docker搭建prometheus+grafana的服务器监控。让你的服务器监控页面有颜有料且让人一目了然。让数据分析不再局限于数字和曲线图,能够多方位进行对比。
1.Docker启动prometheus
官网下载node_exporter 。地址:https://prometheus.io/
2.启动下载好的node_exporter文件
![f50d92bde86265213f9ec32abee9965f.png](https://i-blog.csdnimg.cn/blog_migrate/6cf51935b78f88197e2cbe33080a03b3.png)
3.填写prometheus.yml配置文件内容
![385aa4a8d667837011a7d2f6ee4a0025.png](https://i-blog.csdnimg.cn/blog_migrate/2214b6e1a19a5597f2ba0a09321bc5d1.png)
4.使用命令启动prometheus
docker run --name prometheus -d -p 9090:9090 -v `pwd`/prometheus.yml:/etc/prometheus/prometheus.yml -v `pwd`/rules/:/etc/prometheus/ prom/prometheus --config.file=/etc/prometheus/prometheus.yml
5.输入ip和端口号进入prometheus的前端界面,然后进入Targets
页面
![18f4e3a22e13ea62ac4f667654dbf6fb.png](https://i-blog.csdnimg.cn/blog_migrate/0523603307c451fc9c16a077c6ced55c.jpeg)
![26f981e6c1f8b25d59030f5b26cc0baf.png](https://i-blog.csdnimg.cn/blog_migrate/b824e45b7820c0d11eb57f8491a6987b.jpeg)
6.在首页输入命令,然后点击execute,命令有
cpu使用率:100 - (avg by (instance) (irate(node_cpu_seconds_total{mode="idle"}[1m])) * 100)
内存使用率:100*(node_memory_MemTotal_bytes - node_memory_MemFree_bytes - node_memory_Buffers_bytes - node_memory_Cached_bytes) / node_memory_MemTotal_bytes
磁盘使用:100.0 - 100 * ((node_filesystem_avail_bytes{mountpoint=~"/", device!="rootfs"} / 1000 / 1000 ) / (node_filesystem_size_bytes{mountpoint=~"/", device!="rootfs"} / 1024 / 1024))
![d7b927b5394ec315b6b4f832c36b2f11.png](https://i-blog.csdnimg.cn/blog_migrate/4d31684280437871befe7859e37cb63f.jpeg)
不过这个展示界面不够友好,而且不好保存。所以在业内,我们常常将prometheus+grafana配合使用
7.启动grafana
docker run --name grafana -d -p 8011:3000 grafana/grafana
进入grafana界面,初始账号密码为admin/admin
进入Add data sourcs->选择prometheus
配置prometheus
![f46de7199f6411a428876be1ac468328.png](https://i-blog.csdnimg.cn/blog_migrate/509f3ffe1617450fe1e81448933c0a3b.png)
8.import模板
![ea348a61e9b625a10b93c04535c7d240.png](https://i-blog.csdnimg.cn/blog_migrate/e69104b985b9e7d64fe72adf17f91e3b.png)
grafana dashboard内填写https://grafana.com/grafana/dashboards/8919
Prometheus Data Source字段选择prometheus
点击 Import,就搭建成功了
![07548de5e4c53ace93a10288b6a71a1b.png](https://i-blog.csdnimg.cn/blog_migrate/5b782fed5d2a22fb372b9f5a1c562b2b.jpeg)
注意,前方有坑
:
1.如果被监控的node_exporter是mac的话,要去prometheus官网下载mac版本的node_exporter执行,且mac需要修改一些配置参数。
2.如果修改了prometheus.yml 需要重启镜像
使用Docker搭建Prometheus监控MySQL
1.下载prom/mysqld-exporter镜像
docker pull prom/mysqld-exporter
2.启动mysql服务
docker run --name some-mysql -v /home/ubuntu/mysql/:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=1qaz9ol. -p 8888:3306 -d mysql:5.5
3.启动mysqld-exporter镜像
docker run --name some-mysql -v /home/ubuntu/mysql/:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=1qaz9ol. -p 8888:3306 -d mysql:5.5
docker run -d --name mysql-exporter -p 9104:9104 -e DATA_SOURCE_NAME="root:1qaz9ol.@(47.95.238.18:8888)/mysql" prom/mysqld-exporter
注意
:-e 之后的参数要填对,分别对应 用户名/密码@(ip:端口号)/mysql
4.在prometheus.yml的配置文件中添加mysql的配置,并docker restart prometheus
,重新加载prometheus的配置(可以参考上面的步骤2
)
5.进入prometheus页面,查看Targets
中mysql是否启动成功
![c3809b2e4c71bb38f54185dda1cbf337.png](https://i-blog.csdnimg.cn/blog_migrate/2d1332821d0de8445b9755c0f4c4ff30.jpeg)
6.按照上面的docker启动prometheus过程,配置好之后进去grafana页码,然后选择data source
,进入prometheus,输入prometheus的url,选择“Save&Test”
![6df1936c5393aeef14c8bc3cdcb7cd7c.png](https://i-blog.csdnimg.cn/blog_migrate/be9acba4962eb9d242d506a769b95aca.png)
![10e7db62f6652027b8416cfe8b823f33.png](https://i-blog.csdnimg.cn/blog_migrate/7e18b67d157d40fce8f201de7a8ee38b.jpeg)
7.导入mysql模板到grafana,mysql的模板id为6239
,其他步骤和前面搭建服务器监控是一样的哦。
![80573e2ad9771704f2826f4872fe6720.png](https://i-blog.csdnimg.cn/blog_migrate/ace4ab2c2e9ad84df6bce6a8b57c758c.png)
下面是mysql的监控效果
![3743aeecf7e656151b30f62b0caeeaf2.png](https://i-blog.csdnimg.cn/blog_migrate/3fc96d5743d2bc4d1edbd7c9840e0bd3.jpeg)
使用Docker搭建分布式UI自动化环境
如果我们的Web UI自动化测试用例有上千条,执行时间常常需要1~2天,我们用什么方法可以节省这个执行时间呢?
接下来我们就通过分布式UI自动化
,即启动多个浏览器执行UI自动化测试用例,且每个浏览器执行的UI自动化测试用例都是不同的。这样子,就可以大大提升我们的UI自动化测试的效率。
分布式UI自动化架构
UITest层会将测试请求发送到GridHub层,而GridHub则会将这些测试请求转换为测试任务下发到每一个Node节点(在每台机器上面我们可以装一个或多个Node节点。),随后Node节点驱动浏览器进行自动化测试。测试完成后,Node节点将测试结果发送到GridHub上面,GridHub再将结果转发回我们的测试程序UITest中
![9704c0e029e802334cb6b6bc50e9adc4.png](https://i-blog.csdnimg.cn/blog_migrate/e10329d797b5a80eea2934d56662c05d.png)
(如下图所示)
Selenium镜像介绍
Selenium镜像网上有很多,官网下载即可。也可以定制化。而且还有非可视化的镜像。具有调试作用的远程UI服务的可视化镜像,还有轻量级简易版镜像版本。
1.底层镜像,可以做定制化
selenium/base: Base image which includes Java runtime and Selenium Server JAR file
selenium/node-base: Base image for Grid Nodes which includes a virtual desktop environment
selenium/hub: Image for running a Grid Hub
2.谷歌、火狐浏览器的非可视化镜像
selenium/node-chrome: Grid Node with Chrome installed, needs to be connected to a Grid Hub
selenium/node-firefox: Grid Node with Firefox installed, needs to be connected to a Grid Hub
3.具有远程UI服务的可视化镜像(调试作用):
selenium/node-chrome-debug: Grid Node with Chrome installed and runs a VNC server, needs to be connected to a Grid Hub
selenium/node-firefox-debug: Grid Node with Firefox installed and runs a VNC server, needs to be connected to a Grid Hub
4.简易版镜像,不需要GridHub和Node架构:
selenium/standalone-chrome: Selenium Standalone with Chrome installed
selenium/standalone-firefox: Selenium Standalone with Firefox installed
selenium/standalone-chrome-debug: Selenium Standalone with Chrome installed and runs a VNC server
selenium/standalone-firefox-debug: Selenium Standalone with Firefox installed and runs a VNC server
文档链接:
https://github.com/SeleniumHQ/docker-selenium
实战演示
使用docker启动GridHub
docker run --name=hub -p 5001:4444 -e GRID_TIMEOUT=0 -e GRID_THROW_ON_CAPABILITY_NOT_PRESENT=true -e GRID_NEW_SESSION_WAIT_TIMEOUT=-1 -e GRID_BROWSER_TIMEOUT=15000 -e GRID_TIMEOUT=30000 -e GRID_CLEAN_UP_CYCLE=30000 -d selenium/hub:3.7.1-beryllium
![06ae01178c132dc325fa315de8b4c0d1.png](https://i-blog.csdnimg.cn/blog_migrate/ee2e19a1a745cbbca9a1cbf5f8f1b026.png)
docker启动Node
docker run --name=chrome -p 5902:5900 -e NODE_MAX_INSTANCES=6 -e NODE_MAX_SESSION=6 -e NODE_REGISTER_CYCLE=5000 -e DBUS_SESSION_BUS_ADDRESS=/dev/null -v /dev/shm:/dev/shm --link hub -d selenium/node-chrome-debug:3.7.1-beryllium
如果想启动多个Node,可以重新修改一下端口映射比如,将5902:5900
修改为5903:5900
这时候我们就可以发现图片中又显示了一个Node信息。
![d007b1b311f586c0dadf592a9ac41f71.png](https://i-blog.csdnimg.cn/blog_migrate/76ff6549e5e49837f4a22064c67f3be1.png)
如果想在一个Node中启动多个浏览器,我们可以更改这两个字段的数量,比如我们将6修改为7NODE_MAX_INSTANCES=7
;NODE_MAX_SESSION=7
,这时候我们可以看到有7个谷歌浏览器的logo
![6f46dea02ac6e4bddadd3b6be2c9c2c2.png](https://i-blog.csdnimg.cn/blog_migrate/38c3b438425c4fc3690ae0ad8fd83df5.png)
准备一个自动化测试脚本,以Python为例
![d46e264a7a499aa7f5499d7f58491b9a.png](https://i-blog.csdnimg.cn/blog_migrate/000d2c3c0a9b2ed66267531d282090cf.jpeg)
运行脚本
查看运行结果,成功!
![db853eb5fa200fe181ff42aa04f70e9d.png](https://i-blog.csdnimg.cn/blog_migrate/ed229216072f87595b82d087519ac46b.png)
注意
:如果服务器系统不支持可视化不加这条会启动失败chrome_options.add_argument('--headless')
--福利福利:
初级测试到高级测试开发捷径分享
史上最全软件测试资料文档下载
一线名企大厂内推流程+资格+渠道
更多技术干货敬请关注霍格沃兹测试学院官方知乎机构号:测吧 @测吧
--推荐阅读:
测试开发是什么?为什么现在那么多公司都要招聘测试开发?
软件测试的岗位会越来越少吗?
软件测试真的干到35就干不动了吗?
二十五岁零基础转行做软件测试怎么样?www.zhihu.com![aa6b7c694ca9021edcc94da3864c7c2b.png](https://i-blog.csdnimg.cn/blog_migrate/bd890918f8901c9fcc928b0d025914b3.jpeg)
![63c1ab1b52ca4042f88a7a607b82768b.png](https://i-blog.csdnimg.cn/blog_migrate/8aab9a840a030873a273f0da3bf5e2a9.jpeg)
![948b9859573fb328a75a80f47e7f4eb3.png](https://i-blog.csdnimg.cn/blog_migrate/66de0cf8d2385582e51988f2b0aebe93.jpeg)