JMeter往往需要执行完之后拼凑完测试报告,才能看到结果。命令行里的内容也不够详细。那么如何在执行过程中实时监控执行效果呢?
最近在朋友的推荐下学习k6,发现k6有一套完善的监控平台生态,就是k6 + InfluxDB + Grafana。
简单介绍一下
k6是一个新兴的性能测试工具
InfluxDB是一种时序数据库,用来存放监控数据
Grafana是一个可视化图表平台
这个组合可以解决我们的痛点,那就是性能测试过程中的不透明。同时官方很早就支持了InfluxDB,甚至还有官方报告样式直接套用。这篇文章就给大家演示一下如何部署,一起学习。
经过查阅发现
JMeter 2.13版本开始支持向InfluxDB的2003监听端口传数据
*这个方式要在InfluxDB上启一个2003监听服务,不推荐这个方式
(这个方式我试了好几次,都没有成功InfluxDB就是收不到数据)
JMeter 3.2版本开始支持直接向InfluxDB的8086端口写数据(和Grafana方式一样)
*推荐这个方式,本教程演示的也是此方法
JMeter 5.0版本增加了一些支持的字段,建议使用JMeter 5.0以上版本搭配 InfluxDB + Grafana
本人将演示
a. InfluxDB 1.8 Windows 平台 下载与安装
b. Grafana 6.7.2 Windows 平台 下载与安装
c. JMeter 5.0 配置 连接InfluxDB的方法
d. Grafana 展示 InfluxDB 数据的方法,并使用第三方报表样式
我这也有一个下好的安装包集合 可以直接下载
https://download.csdn.net/download/tomoya_chen/12347268
Mac & Linux 安装可以参考官方文档(通过命令行安装)
https://docs.influxdata.com/influxdb/v1.8/introduction/install/
Windows或以上系统想下载文件进行安装的话,访问下面这个链接
https://portal.influxdata.com/downloads/
根据你的系统选择,我这里演示的是Windows平台
下载完解压出来你会得到这样一个目录
命令行启动influxdb服务,这样你就启动了一个8086端口(默认)的一个服务。
> influxd
> influxd --config influxdb.conf
InfluxDB自带一个客户端程序,InfluxDB也支持web平台管理查看,这里不需要。
> influx
# 查看数据库列表
show databases
# 查看表列表
show measurements
# 创建数据库
create database 数据库名
# 删除数据库
drop database 数据库名
# 删除表
drop measurements 表名
# 使用数据
use 数据库名
# sql语句和MySQL等关系型数据库很相似
select * from 表名 where 列名 = 值
Mac & Linux 安装可以参考官方文档(通过命令行安装)
https://grafana.com/docs/grafana/latest/installation/
Windows或以上系统想下载文件进行安装的话,访问下面这个链接
https://grafana.com/grafana/download
*推荐安装版,比解压版省心,不用自己配服务
安装完成后,可以正常访问http://127.0.0.1:3000表示安装成功
默认用户名密码 admin admin
命令行启动influxdb服务,这样你就启动了一个8086端口(默认)的一个服务,这个cmd框不能关闭。
> influxd
命令行创建一个数据库,名为"jmeter",用来存放测试数据。
influx
create database jmeter
show databases
添加一个后端监听器(英文版: Backend Listener)
Backend Listener implementation 选择 InfluxdbBackendListenerClient
influxdbUrl中域名改成InfluxDB所在服务器地址,这里是本地。db需要与3.1中创建的数据库名一致。
application 与 testTitle根据实际填写
*summaryOnly的意思是,ture:所有HTTP采样器一起统计,false:每个HTTP采样器分开统计。
点击执行,之前启influxdb服务的cmd框一直有打印监听到的数据说明接受到了JMeter传来的信息
首先需要配置一个数据源,自然也就是我们刚才安装的InfluxDB了。
在左侧齿轮选择Data Sources(或者直接点首页步骤链路里的"Add data source")
选择新增一个数据源,然后搜索"InfluxDB"
最少只需要更改2处,URL改成InfluxDB所在服务器地址,这里是本地。
http://127.0.0.1:8086
数据库名这里填jmeter
*此前3.1里创建的数据库
Grafana的dashboards下载地址:
https://grafana.com/grafana/dashboards?search=jmeter&orderBy=name&direction=asc
推荐第一个,用的人多,点一下进入详情页
复制一下这里的id数字
回到Grafana页面,左侧导航选择+号的import菜单
把刚才报表id粘贴在这里,就可以使用这个报表样式了
导入前,需要填一些信息,这里DB name就是刚才配置的数据源,Measurement name是表名的意思
如果之前步骤都正确的话,此时报表已经可以看到数据了。是不是很酷炫。
*如果JMeter是5.0版本以下,是没有Received Btyes和 Send Bytes
添加一个新的dashboard
在dashboard上添加panel,panel可以理解为面板。
未完。。有时间再码。