如果这些内容对你有帮助,也可以打开微信扫一扫,加关注:
一、前言
本文中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.2InfluxDB shell version: 1.6.2> show databases #查询库名name: databasesname----_internal> CREATE DATABASE "jmeterTest" #创建jmeter传送数据的库> use jmeterTestUsing 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 2name: jmetertime 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 internal1595929362786000000 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 descname: jmetertime application count countError hit responseCode startedT statut transaction---- ----------- ----- ---------- --- ------------ -------- ------ -----------1596166285577000000 jmeter07312 130 ok getDemoNoParam-pass1596166285355000000 jmeter07312 2710 ok getDemoNoParam-pass
示例2: samplersRegex设置为:.*
> select * from jmeter order by time desc limit 10name: jmetertime 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 internal1596165795354000000 jmeter07312 6.460000000000001 2666 26 1 16.900000000000006 24 25.989999999999995 ok getDemoNoParam-pass1596165795354000000 jmeter07312 6.460000000000001 2666 26 1 16.900000000000006 24 25.989999999999995 242606 0 all getDemoNoParam-pass1596165795354000000 jmeter07312 5.630000000000001 2663 26 1 14.900000000000006 23.94999999999999 26 242333 0 all getDemoNoParam-faile1596165795354000000 jmeter07312 5.630000000000001 2663 26 1 14.900000000000006 23.94999999999999 26 ko getDemoNoParam-faile1596165795354000000 jmeter07312 6.460000000000001 5329 2663 5329 26 1 14 23.94999999999999 25.97999999999999 484939 0 all all1596165790355000000 jmeter07312 2721 Assertion failed Test failed: text expected to contain /无参getDemo222/ getDemoNoParam-faile1596165790355000000 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.countjmeter.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
写在最后
经过上面几篇文章的总结,jmeter压测监控环境总算是倒腾出来了,但是中间也遇到了各种坑,一次次的掉进去又爬出来,收获了不少经验,下一篇将会总结下各种填坑经验以及优化后Grafana中的模版、Sql。希望能帮助有需要的朋友。
#####欢迎加好友交流切磋####
QQ:464314378
微信群请先加群主微信,群主会拉各位小伙伴进群,注意添加备注。