当前位置: 代码迷 >> 综合 >> 4.centos下Jmeter+InfluxDB+Grafana环境的搭建1
  详细解决方案

4.centos下Jmeter+InfluxDB+Grafana环境的搭建1

热度:2   发布时间:2024-02-09 00:14:12.0

原创 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中后台监听器的配置

    这里有两种方式:influxdbGraphite,两种都可以用,注意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.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

 

  相关解决方案