写点什么

软件测试 / 测试开发|Docker+Jmeter+InfluxDB+Grafana 搭建性能监控平台

  • 2023-12-13
    北京
  • 本文字数:2080 字

    阅读完需:约 7 分钟

为什么要搭建性能监控平台?

1.1 需求背景


在用 Jmeter 获取性能测试结果的时候, Jmeter 本身带有聚合报告如下图所示:



这个报告有几个很明显的缺点:


  • 只能自己看,无法实时共享;

  • 报告信息的展示比较简陋单一,不直观;


1.2 需求方案


为了解决上述问题,必须要请出了 InfluxDB + Grafana


  • InfluxDB :持续型数据库,有时间戳组件,以时间的形式去存储数据

  • Grafana :一款采用 Go 语言编写的开源应用,主要用于大规模指标数据的可视化展现,是网络架构和应用分析中最流行的时序数据展示工具


简单总结起来就是:Jmeter 的数据导入 InfluxDB ,再用 Grafana InfluxDB 中获取数据并以特定的模板进行展示


本次实践是用目前较为流行的 Docker 的方式进行部署,也推荐使用,作为一名普通的测试,会了点 Docker 的皮毛就已经爱不释手了,对于头疼的环境问题真的太好用了,强烈推荐。

性能监控平台部署实践

2.1 Docker 环境


本文的重点并不是介绍 Docker,所以不了解的小伙伴需要自己去学习一下基本的安装和操作,可参考之前发送的 Docker 文章


2.2 InfluxDB 部署


1)首先去下载 InfluxDB 的镜像,下载很简单,直接 pull 就好,默认为下载最新的镜像:


$ docker pull influxdb
复制代码


目前最新的 influxdb 不支持网页端的查看,仅可用命令行的形式,不过没有什么影响,如果真的想要有网页端的显示的话可以尝试下载较前的镜像:tutum/influxdb


2)启动一个容器,并将端口 80838086 映射出来,如果用的是 tutum/influxdb 镜像,在访问 8083 端口时就可以看到网页端的展示,我这里用的是最新的,所以就没有啦:


$ docker run -d --name jmeter-influx -p 8083:8083 -p 8086:8086 influxdb
复制代码


3)进入容器内部,创建名为 jmeter 的数据库:


进入 jmeter-influx 容器


$ docker exec -it jmeter-influx bash
复制代码


root@517f57017d99:/#
复制代码


进入 influxcreate database jmeter 创建名为 jmeter 的数据库, show databases 命令查看数据库创建成功


root@517f57017d99:/# influx
复制代码


Connected to http://localhost:8086 version 1.7.10
复制代码


InfluxDB shell version: 1.7.10
复制代码


> create database jmeter
复制代码


> show databases
复制代码


name: databases
复制代码


name
复制代码


----
复制代码


_internal
复制代码


jmeter
复制代码


4)使用 J meter 库, select 查看数据,这个时候应该是没有数据的:


$ > use jmeter
复制代码


Using database jmeter
复制代码


> select * from jmeter
复制代码


>
复制代码


2.3 Jmeter 脚本设置


这里需要创建一个登录注册场景的 Jmeter 脚本,往期文章有发布,本次就以此来进行测试结果演示。具体可参考之前发送的公众号文章。文章末尾的「往期回顾」第二篇文章即可阅读。


1)想要将 jmeter 的测试数据导入 influxDB ,就需要在 Jmeter 中使用 Backend Listener 配置



先看一下配置好的 Backend Listener



2)主要配置说明:implementation 选择 influxdb 所对应的:



  • influxdbUrl:需要改为自己 influxdb 的部署 ip 和映射端口,我这里是部署在本地,所以就是 localhost ,端口是容器启动时映射的 8086 端口, db 后面跟的是刚才创建的数据库名称


  • application:可根据需要自由定义,只是注意后面在 grafana 中选对即可

  • measurement:表名,默认是 jmeter ,也可以自定义

  • summaryOnly:选择 true 的话就只有总体的数据, false 会将每个 transaction 都分别记录



3)运行验证


运行 Jmeter 脚本,然后再次在 influxdb 中查看数据,发现类似下面的数据说明输入导入成功:



2.4、Grafana 部署


1)首先我们需要下载 grafana 的镜像:


$ docker pull grafana/grafana
复制代码


2)启动一个 grafana 容器,将 3000 端口映射出来:


$ docker run -d --name grafana -p 3000:3000 grafana/grafana
复制代码


3)网页端访问 locahost:3000 验证部署成功



4)选择添加数据源



5)找到并选择 influxdb :



6)配置数据源



数据源创建成功时会有绿色的提示:



7)导入模板


模板导入分别有以下 3 种方式:

  • 直接输入模板 id 号

  • 直接上传模板 json 文件

  • 直接输入模板 json 内容

8)下载模板,在 grafana 的官网下载我们需要的展示模板

https://grafana.com/grafana/dashboards?dataSource=influxdb&search=jmeter



下面这两个是我尝试过的模板:



9)导入模板,我这里选择的是导入 json 文件的方式,导入后如下,配置好模板名称和对应的数据源,然后 import 即可



10)展示设置,首先选择我们创建的application



注意: 如果我们修改过表名,也就是在 jmeter 的 Backend Listener 的 measurement 配置(默认为 jmeter),这个时候就需要去设置中进行修改(我这里使用的就是默认的,所以无需修改):


效果展示及推荐学习

经过一系列的奋斗之后,该到了我们检验成果的时候了。使用 Docker + JMeter + InfluxDB + Grafana 到底可以搭建怎样的性能监控平台呢?相比较 JMeter 自带的监控平台,我们搭建的性能监控平台究竟有什么优势呢?接下来就是展示成果的时候啦!




Appium 官方说明文档:http://appium.io/docs/en/writing-running-appium/finding-elements/http://appium.io/docs/en/commands/element/find-elements/


Uiautomator2 源码路径:


https://github.com/appium/appium-uiautomator2-server/blob/master/app/src/main/java/io/appium/uiautomator2/handler/FindElement.java


更多Python基础语法趣味学习视频,请点击!



用户头像

社区:ceshiren.com 微信:ceshiren2021 2019-10-23 加入

微信公众号:霍格沃兹测试开发 提供性能测试、自动化测试、测试开发等资料,实时更新一线互联网大厂测试岗位内推需求,共享测试行业动态及资讯,更可零距离接触众多业内大佬。

评论

发布
暂无评论
软件测试/测试开发|Docker+Jmeter+InfluxDB+Grafana 搭建性能监控平台_霍格沃兹测试开发学社_InfoQ写作社区