原创 George555 公众号:测试江湖路
如果这些内容对你有帮助,也可以打开微信扫一扫,加关注:
一、前言
本文中influxdb和Grafana下载、安装、配置及使用见另外3篇文章:
1.Influxdb使用1
2.Influxdb使用2
3.Grafana使用
【开篇说明】:本文使用工具环境约定:influxdb-1.6.2、GrafanaV4.2.0、jmeterV5.1
Grafana效果展示图:
对应的jmeter聚合报告数据:
二、influxdb中jmeter数据库创建
环境部署运行正常后,这里需要配置和jmeter关联的数据库、表、及管理用户。见如下全部命令:
[root@georgeComputer ~]# influx #另外开1个linux端连接数据库
Connected to http://localhost:8086 version 1.6.2
InfluxDB shell version: 1.6.2
> show databases #查询库名
name: databases
name
----
_internal
> CREATE DATABASE "jmeterTest" #创建jmeter传送数据的库
> use jmeterTest
Using database jmeterTest
> CREATE USER "admin" WITH PASSWORD '123456' WITH ALL PRIVILEGES #创建数据库账号和密码
三、Jmeter中后台监听器的配置
这里有两种方式:influxdb和Graphite,两种都可以用,注意influxdb的配置文件进行对应协议的修改即可。
1.添加【InfluxdbBackendListener】后台监听器
Jmeter->测试计划-监听器(Listener)-后端监听器(Backend Listener),在Backend Listener implementation中选择->org.apache.jmeter.visualizers.backend.influxdb.InfluxdbBack...
【参数说明】:
influxdbMetricsSender:org.apache.jmeter...influxdb...
influxdbUrl:http://192.168.2.253:8086/write?db=jmeterTest #数据库连接配置修改ip/端口/数据库名(influxdb中创建的jmeter数据库名)即可
application:Jmeter压测Demo #可以看成是场景名,可用来分类筛选
measurement:jmeter #数据库表名
summaryOnly:true #true:统计总请求;false:统计子请求,要配合samplersRegex使用
samplersRegex:.* #请求名匹配正则规则
percentiles:90;95;99
testTitle:getDemoNoParam接口测试
eventTags:测试demo
##用了Influxdb的http协议后,measurements会多出如下这么多对应数据表:jmeterTest、events
> select * from jmeter limit 2
name: jmeter
time application avg count countError endedT hit max maxAT meanAT min minAT pct90.0 pct95.0 pct99.0 rb sb startedT statut transaction
---- ----------- --- ----- ---------- ------ --- --- ----- ------ --- ----- ------- ------- ------- -- -- -------- ------ -----------
1595929357925000000 jmeter072801 0 0 0 0 0 internal
1595929362786000000 jmeter072801 5.929999999999997 5208 0 5208 34 0 12 32 33.989999999999995 473928 0 all all
time:时间戳
application:应用名、场景名,即jmeter配置中的application
avg:平均响应时间
count:请求数,也就是TPS的T
countError:错误请求数
endedT:Finished threads-结束线程数
hit:每秒点击数
max:成功采样最大响应时间
maxAT:Max active threads-最大活跃线程数
minAT:Min active threads-最小活跃线程数
meanAT:Mean active threads-活跃线程数
min:成功采样最小响应时间
pct90:采样器90%响应百分比
pct95:采样器95%响应百分比
pct99:采样器99%响应百分比
rb:接收包,单位bit 转换到jmeter中接收KB/sec,需要运算下,如487942/8/1024=59KB/s
sb:发送包,单位bit 转换到jmeter中发送KB/sec
startedT:Started threads-启动线程数
statut:值为ok 、ko、all,用于设置了summaryOnly=false和samplersRegex,开启了子请求数据抓取的场景,如果不抓取子请求信息,则这里无ok和ko的值
transaction:事务名,只要设置发送子请求方式,设置summaryOnly=false和samplersRegex的这里才有值,否则都是all
示例1: samplersRegex设置为:getDemoNoParam-p.*
> select time,application,count,countError,hit,responseCode,startedT,statut,transaction from jmeter where "transaction"!= 'internal' and "transaction" != 'all' and "statut" != 'all' order by time desc
name: jmeter
time application count countError hit responseCode startedT statut transaction
---- ----------- ----- ---------- --- ------------ -------- ------ -----------
1596166285577000000 jmeter07312 130 ok getDemoNoParam-pass
1596166285355000000 jmeter07312 2710 ok getDemoNoParam-pass
示例2: samplersRegex设置为:.*
> select * from jmeter order by time desc limit 10
name: jmeter
time application avg count countError endedT hit max maxAT meanAT min minAT pct90.0 pct95.0 pct99.0 rb responseCode responseMessage sb startedT statut transaction
---- ----------- --- ----- ---------- ------ --- --- ----- ------ --- ----- ------- ------- ------- -- ------------ --------------- -- -------- ------ -----------
1596165795354000000 jmeter07312 0 7 7 7 7 internal
1596165795354000000 jmeter07312 6.460000000000001 2666 26 1 16.900000000000006 24 25.989999999999995 ok getDemoNoParam-pass
1596165795354000000 jmeter07312 6.460000000000001 2666 26 1 16.900000000000006 24 25.989999999999995 242606 0 all getDemoNoParam-pass
1596165795354000000 jmeter07312 5.630000000000001 2663 26 1 14.900000000000006 23.94999999999999 26 242333 0 all getDemoNoParam-faile
1596165795354000000 jmeter07312 5.630000000000001 2663 26 1 14.900000000000006 23.94999999999999 26 ko getDemoNoParam-faile
1596165795354000000 jmeter07312 6.460000000000001 5329 2663 5329 26 1 14 23.94999999999999 25.97999999999999 484939 0 all all
1596165790355000000 jmeter07312 2721 Assertion failed Test failed: text expected to contain /无参getDemo222/ getDemoNoParam-faile
1596165790355000000 jmeter07312 0 7 7 7 7 internal
2.添加【GraphiteBackendListener】后台监听器
Jmeter->测试计划-监听器(Listener)->后端监听器(Backend Listener)->在Backend Listener implementation中选择->org.apache.jmeter.visualizers.backend.graphite.Graphite.....
注意:使用此协议需要在influxdb的配置文件中开启graphite协议;和1中influxdb协议不同的是这里的数据库名是在配置文件中设置的
配置项说明:
graphiteHost:influxdb中开启了graphite协议的机器IP
graphitePort:2003是influxdb配置文件中graphite板块里的bind-address
rootMeticsPrefix:设置指标前缀,查看时更方便区分,比如jmeter.all.a.avg
summaryOnly:true/false 是否统计总量,如果是false就需要设置samplersList
samplersList:测试Sampler名称,支持正则表达式,全部的话使用 .*
useRegexpForSamplerList:true/false Sampler名称是否支持正则
percentiles:90;95;99
#influxdb的配置文件中的graphite板块如下:
[[graphite]]# Determines whether the graphite endpoint is enabled.是否启用enabled = true#数据库名配置database = "jmeterTestGra"retention-policy = ""#数据库连接ip和端口配置bind-address = ":2003"#协议配置protocol = "tcp"consistency-level = "one"
##用了Graphite协议后,measurements会多出如下这么多对应数据表:
详细参数如下:
#####响应相关指标##############
jmeter.all.a.avg:ok.count和ko.count的平均值
jmeter.all.a.count:ok.count+ko.count
jmeter.all.a.max:ok.count和ko.count的最大响应时间
jmeter.all.a.min:ok.count和ko.count的最小响应时间
jmeter.all.a.pct90:采样器90%响应百分比,成功加失败总数的百分比
jmeter.all.a.pct95:采样器95%响应百分比,成功加失败总数的百分比
jmeter.all.a.pct99:采样器99%响应百分比,成功加失败总数的百分比
jmeter.all.h.count:每秒点击数
jmeter.all.ko.count:失败响应数
jmeter.all.ok.avg:成功采样平均响应时间
jmeter.all.ok.count:成功响应数
jmeter.all.ok.max:成功采样最大响应时间
jmeter.all.ok.min:成功采样最小响应时间
jmeter.all.ok.pct90:成功采样90%响应时间
jmeter.all.ok.pct95:成功采样95%响应时间
jmeter.all.ok.pct99:成功采样99%响应时间
jmeter.all.rb.bytes:接收的字节数
jmeter.all.sb.bytes:发送的字节数
######线程数及用户相关指标#########
jmeter.test.endedT:Finished threads-结束线程数
jmeter.test.maxAT:Max active threads-最大活跃线程数
jmeter.test.meanAT:Mean active threads-活跃线程数
jmeter.test.minAT:Min active threads-最小活跃线程数
jmeter.test.startedT:Started threads-启动线程数
这些参数详细说明可参考jmeter官网:
https://jmeter.apache.org/usermanual/realtime-results.html