背景
我们很多时候使用JMeter做性能测试,很难及时察看压测过程中应用的性能状况,总是需要等到测试完成后去看Report。
另一方面,如果需要把结果分享给其他人员,我们需要一个简单漂亮的图形,比如HTMLDashboard但需要等待整个测试完成。
今天我们来讲讲该如何使用JMeter+InfluxDB+Grafana打造压测可视化实时监控。
解决方案
JMeter引入Backend Listener,用于在压测过程中实时发送统计指标数据给时序数据库Influxdb。
通过配置Grafana(开源的WEB可视化看板)数据源连接到Influxdb,我们就可以创建炫酷的可视化看板,并可以实时获取到测试指标数据。
JMeter&InfluxDB集成
InfluxDB配置
安装并启动,搭建方式网上很多,这里不做阐述。
安装完成后登录进去创建数据库:
JMeter配置
Jmeter脚本编写好后,添加BackendListener,参考下图配置好:
参数说明:
influxdbUrl:目标influxdb类型数据库的连接方式,这里为jmeter_demo数据库。端口为8086
application:建议按照测试业务命名
measurement:数据写入哪个数据表,建议按照业务线命名
samplersRegex:.*表示捕获所有的HTTP请求。如果需要过滤,请使用正则表达式
验证结果
执行业务脚本,查看jmeter_demo数据库中表:积分系统
OK,我们已经可以将统计指标数据成功发送到jmeter_demo数据库。
Grafana&InfluxDB集成
Grafana是一个开源软件,拥有丰富的指标仪表盘和图形编辑器,适用Graphite,Elasticsearch, OpenTSDB, Prometheus,InfluxDB。
简单点说就是一套开源WEB可视化平台。安装启动自行百度,这里不重复介绍。
使用浏览器打开 http://IP:3000/login,访问Grafana主页:
创建InfluxDB数据源,连接上jmeter_demo数据库:
Dashboard设计如果让大家去设计一个好看的Dashboard,估计大家都不太想从零开始自己设计。
其实Grafana官网提供丰富的模版的库,大家可以自己上去找,然后进行二次扩展。
官网模版库:https://grafana.com/dashboards
此处我参考网上模板并进行了二次开发,其中包含了两部分:
第一部分:Templating定义3个变量,$request为表名称,这里指的是业务线,$Application为表中的按照标签分类的数据,这里指的是当次测试业务(业务+时间戳保证唯一性)
第二部分:添加Graph
配置sql,包含实时并发数,总请求数,成功请求数,失败请求数,响应时间,QPS。
配置并发数Graph,核心Metrics为:
整体效果图如下,至此我的监控页面完成:
经过我的简单介绍,大家是否对用JMeter+InfluxDB+Grafana打造压测可视化实时监控有了更清楚的了解呢?快实践看看吧~