如何美化Jmeter性能测试监控

发表于:2020-9-16 10:11

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:﹏猴子请来的救兵    来源:博客园

  序章
  前几天在群里看到大神们在讨论Jmeter + InfluxDB + Grafana监控。说起来Jmeter原生的监控确实太丑了。当年不断安慰自己说“丑一点没关系,只要能用,好用,就行了!”。但是内心并不是这样,做为一名测试人员,都有一颗精益求精的心。看到有东西可以替代那原生的监控数据,果断亲自动手部署了一套。

  是吧,很帅吧!数据是用InfluxDB来存储的,展示则是用Grafana来展示的
  InfluxDB是一个年轻的时序数据库,是用同样很年轻的语言“GO”开发出来的。小数据量的时候还性能还不错,但是数据量大一点,性能问题就体现出来了。不过只是收集一下我几个小时测试的数据,还是足够了。要是几个月的测试数据那还是挑别的数据库吧。
  Grafana是纯粹用js编写出来的,专门用来展示数据用的。
  基本上,就是Jmeter通过“Backend Listener”,将测试的数据上传到我的虚拟机上,通过InfluxDB来存储,Grafana来展示出来。我们访问web,稍微配置一下,就可以看到展示的数据了。
  我的InfluxDB和Grafana都是部署在一台Linux虚拟机下面的。
  虚拟机 --- IP 192.168.245.131
  1. 安装InfluxDB
  新建InfluxDB下载源
cat << EOF | tee /etc/yum.repos.d/influxdb.repo
[influxdb]
name = InfluxDB Repository - RHEL \$releasever
baseurl = https://repos.influxdata.com/rhel/\$releasever/\$basearch/stable
enabled = 1
gpgcheck = 1
gpgkey = https://repos.influxdata.com/influxdb.key
EOF
  使用yum下载InfluxDB
yum install -y influxdb
  修改InfluxDB的配置,主要配置jmeter存储的数据库与端口号,还有需要将UI端口开放
[root@localhost ~]# vi /etc/influxdb/influxdb.conf
 
# 找到graphite并且修改它的库与端口
[[graphite]]
  enabled = true
  database = "jmeter"
  bind-address = ":2003"
  protocol = "tcp"
  consistency-level = "one"
 
# 找到admin,将前面的#号去掉,开放它的UI端口
[admin]
  # Determines whether the admin service is enabled.
  enabled = true

  # The default bind address used by the admin service.
  bind-address = ":8083"

  # Whether the admin service should use HTTPS.
  # https-enabled = false

  # The SSL certificate used when HTTPS is enabled.
  # https-certificate = "/etc/ssl/influxdb.pem
  启动InfluxDB
[root@localhost ~]# /etc/init.d/influxdb restart
Stopping influxdb...
influxdb process was stopped [ OK ]
Starting influxdb...
influxdb process was started [ OK ]
  打开浏览器,访问虚拟机IP“http://192.168.245.131:8083”
  如果启动成功应该会InfluxDB的web ui界面。查看有没有jmeter库,没有就新建一个。
  在输入框中,输入如下,来新建库:
CREATE DATABASE "jmeter"
  2. 安装Grafana
  使用yum下载Grafana并且安装
  yum install https://grafanarel.s3.amazonaws.com/builds/grafana-3.0.1-1.x86_64.rpm
  启动Grafana
[root@localhost ~]# /etc/init.d/grafana-server restart
OKopping Grafana Server ...                                [  OK  ]
Starting Grafana Server: .... OK
  打开浏览器,访问虚拟机IP“http://192.168.245.131:3000”
  输入用户名,密码登录系统。用户名与密码都是"admin"
  添加需要展示数据的数据库
  添加InfluxDB数据库配置。输入帐号密码“admin / admin”,点击Test & Save 提示“Success”说明成功了
  【注意】URL的端口是8086,而刚才配置的8083是UI的端口。
  - 8083端口是InfluxDB的UI界面展示的端口
  - 8086端口是Grafana用来从数据库取数据的端口
  - 2003端口则是刚刚设置的,Jmeter往数据库发数据的端口
  3. 配置Jmeter
  1)jmeter中,添加“监听器 -> Backend Listener”
  2)配置“Backend Listener”,主要配置Host,如下图
  3)添加一个Java请求,方便测试。(因为想偷懒,Java请求我什么都不用写,直接运行就能成功)
  4)添加“监听器 -> 查看结果树” 运行一下Jmeter,主要看Java请求是否发送出去了
  没有什么问题,这个时候访问InfluxDB“http://192.168.245.131:8083”, 在输入框中输入如下,点击回车:
# 可以使用这个,这个是查询所有表,显示1条记录
select * from /.*/ limit 1
 
# 也可以使用这个,这个是显示所有表
show measurements
  点击回车后,就应该有数据了,会出现下图:
  这个时候再回来配置Grafana,来展示这些数据。
  添加一个展示项目
  点击“Home -> New”
  添加一个图表
  点击旁边的绿点“Add Panel -> Graph”
  配置图表
  配置好了,就能看到图了。如果看不到图,请用Jmeter多发几次Java请求。下图中选择监控的选项,可以在Jmeter的官网上查看到对应的解释。
  大致介绍几种我常用的监控。
  【注意】如果要监控<请求名称>的话,Jmeter上的“Backend Listener”修改如下参数
  1. 将“summanyOnly”修改成False,
  2. 将“userRegexpForSamplersList”修改成True,
  3. 并且要设置“samplersList”的值,“samplersList”是可以支持正则表达式的,“samplersList”的设置要与请求对应,否则找不到该请求。如图
  设置好了,运行一下,在Grafana里面,就可以看到自己的请求了。
  如果想要了解这些监控都代表什么意思,可以访问Jmeter的官网地址去查看阅读“http://jmeter.apache.org/usermanual/realtime-results.html”
  最后来一张帅气的图:

  本文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理

《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号