许多小伙伴在使用Jmeter原生测试报告时,有以下四点困扰:
-
报告不具备实时性。
-
报告文件的大小随着测试时间的增长而增长,而磁盘存在读写瓶颈,随时都可能崩溃。
-
报告中的数据是测试时间段内的平均值。
-
报告较为冗余,可读性较差。在实际测试过程中,我们一般只关心三条曲线的数据:TPS、响应时间、错误率;但在生成的结果图中,有很多无需着重关注的图。
而性能监控平台能够有效地解决上述问题,它具备以下优势:
-
实时展示Jmeter压测数据,数据直观。
-
数据范围可选,筛选功能强大。
-
界面更友好,拓展能力强。
本期,小编就教大家如何打造Jmeter压测可视化监控平台,随我一起往下看吧~
1 工具介绍
打造Jmeter压测可视化监控平台,需要使用Jmeter、InfluxDB和Grafana三个工具,如下所示:
使用工具一览表
整体的流程原理为:Jmeter发送压力到服务器的同时,统计TPS、响应时间、线程数、错误率等信息,并配置Backend Listener,然后将统计出的结果异步发送到InfluxDB中,最后在Grafana中配置InfluxDB数据源和Jmeter显示模板,即可实时查看Jmeter的测试结果。
流程概览
介绍完工具,小编为大家逐一讲解InfluxDB、Grafana的安装方法及Jmeter、Grafana的配置方法。
2 Centos7安装InfluxDB
2.1 InfluxDB安装部署
软件包下载:
wget https://dl.influxdata.com/influxdb/releases/influxdb-1.7.11.x86_64.rpm
软件包安装:
yum install -y influxdb-1.7.11.x86_64.rpm
InfluxDB提供两种安装方式:二进制安装及rpm安装。新手推荐使用rpm包,并用yum安装,它可自动下载并安装依赖包。
2.2 InfluxDB配置文件修改
查看InfluxDB版本及配置文件路径,如下图所示:
InfluxDB版本及配置文件路径
修改InfluxDB的配置,配置Jmeter存储的数据库与端口号,如下图所示:
配置Jmeter存储的数据库与端口号
2.3 InfluxDB启动
启动命令为:systemctl start influxdb.service
查看状态命令为:
systemctl status influxdb.service
InfluxDB启动和查看状态命令及运行结果
查看端口命令为:
netstat –tnulp |grep influxd
查看端口命令及运行结果
3 Centos7安装Grafana
3.1 Grafana安装部署
软件包下载:wget https://dl.grafana.com/oss/release/grafana-7.3.0~beta2-1.x86_64.rpm
软件包安装:
yum grafana-7.3.0~beta2-1.x86_64.rpm
3.2 Grafana启动
启动命令为:systemctl start grafana-server.service
查看状态命令为:
systemctl status grafana-server.service
Grafana启动和查看状态命令及运行结果
3.3 Grafana浏览器访问
登录网址:http://xxx.xx.xx.xx:3000 ,输入用户名、密码登录系统。
注:用户名与密码都是"admin"。
访问Grafana浏览器
4 Jmeter配置
4.1 添加Backend Listener
首先,需要添加监听器Backend Listener,操作路径为:右击【线程组】→【添加】→【监听器】→【后端监听器】,如下图所示:
Backend Listener添加操作示意
4.2 配置Backend Listener
Backend Listener配置示意
配置Backend Listener时,Jmeter默认选中GraphiteBackendListenerClient,配置项具体说明如下:
-
graphiteHost:InfluxDB安装的服务器的IP。
-
graphitePort:端口,默认为2003。
-
rootMetricsPrefix:指标的根前缀,将测试结果存入数据库时,不同指标会生成不同表。
-
summaryOnly:当线程组有多个请求且需要获取每个请求的结果数据时,选false。true只会返回所有请求的集合数据报告,不会输出每条请求的数据报告。
-
samplersList:取样器列表,填写需要收集的请求,通过正则表达式匹配,以提高工作效率。
-
useRegexpForSamplersList:是否使用正则,如果true则使用。在samplersList里可以匹配正则表达式。
-
percentiles:百分比,即类似聚合报告里90% Line、95% Line、99% Line的数据。
此外,配置Backend Listener时,Jmeter也支持通过InfluxDBBackendListenerClient实现后端监听。
Backend Listener配置示意
配置项具体说明如下:
-
influxdbUrl:安装InfluxDB的路径,主要格式为:http://主机地址:8086/write?db=数据库名。
-
application:应用名称,在 events 表中对应的字段是 application 。
-
measurement:表名,用于存储数据,默认是jmeter。
-
summaryOnly:参数解释说明同配置GraphiteBackendListenerClient时的说明。
-
samplersRegex:参数解释说明同配置GraphiteBackendListenerClient时的说明。
-
percentiles:参数解释说明同配置GraphiteBackendListenerClient 时的说明。
-
testTitle:测试名称,在events表中对应的字段是text。Jmeter在测试的开始和结束时自动生成注释,该注释的值以'start'和'end'结尾。
-
eventTags:Grafana允许为每个注释显示标签,在events表中对应的字段是tags。
小知识:
若使用 GraphiteBackendListenerClient 采集数据,当请求越来越多时,会生成大量的表,增加维护成本;而使用InfluxDBBackendListenerClient采集数据,不管请求有多少,只会生成两张表。因此,推荐使用 InfluxDBBackendListenerClient来采集数据。
4.3 查看InfluxDB表结构
若使用 GraphiteBackendListenerClient 来采集数据,执行Jmeter测试脚本后,通过InfluxDB Studio(客户端工具)链接InfluxDB查看表结构,如下图所示:
InfluxDB表结构
Backend Listener配置了“rootMetricsPrefix” 值为“jmeter.” ,也可自定义前缀,在Backend Listener里直接修改“rootMetricsPrefix”的值即可。
从上图可以看到,一共生成了三种前缀的表,分别是:jmeter.all、jmeter.get、jmeter.post。
-
jmeter.all:代表所有请求,当summaryOnly=true时,只有samplerName=all的表。
-
jmeter.get:代表HTTP请求的名字是get,即samplerName=get。
-
jmeter.post:代表HTTP请求的名字是post,即samplerName=post。
若使用InfluxDBBackendListenerClient来采集数据,执行Jmeter测试脚本后,通过InfluxDB Studio(客户端工具)链接InfluxDB查看表结构,如下图所示:
InfluxDB表结构
其中,“events”表用于存储事件,“jmeter”表用于存储测试结果数据,Grafana也是从这个表获取数据再展示。
对于InfluxDB表结构的关键指标,解释如下:
InfluxDB表结构指标含义
注:指标的具体含义详见官方文档。
5 Grafana配置
5.1 配置数据源
首先,配置数据源,操作路径为:进入Grafana的首页→选择【Configuration】→ 点击“Add DataSource”,配置Name、URL、Database,如下图所示:
配置数据源示例
5.2 配置图形看板
接着,配置图形看板,具体操作方法见下述图解:
输入图表看板编号示例
配置图表看板编号示例
图表看板效果展示
至此, Grafana+Jmeter+Influxdb 性能实时监控平台则搭建完毕。
官方模板提供的看板能满足大多数要求,同时Grafana也支持图表自定义配置,可根据实际需求配置看板样式。
注:Grafana 官方看板地址为:https://grafana.com/grafana/dashboards/5496
6 划重点
-
通过“Grafana+Jmeter+Influxdb”搭建的性能监控平台,能够实时、直观地展示压测数据,且数据范围可选、拓展能力强。
-
搭建性能监控平台的过程原理为:Jmeter发送压力到服务器的同时,统计TPS、响应时间、线程数、错误率等信息,并配置Backend Listener,然后将统计结果异步发送到InfluxDB中,最后在Grafana中配置InfluxDB数据源和Jmeter显示模板,即可实时查看 Jmeter的测试结果。
-
配置Backend Listener时,推荐使用InfluxDBBackendListenerClient来采集数据,相较于使用GraphiteBackendListenerClient,数据的维护成本较低。
#往期推荐#
更多精彩内容,“码”上了解!↓
作者:shawyen
来源:金蝶云社区
原文链接:https://vip.kingdee.com/article/302366978746714880?productLineId=29&isKnowledge=2
著作权归作者所有。未经允许禁止转载,如需转载请联系作者获得授权。
标签:压测,配置,InfluxDB,Grafana,Listener,可视化,Jmeter,Backend From: https://www.cnblogs.com/gaoyanbing/p/17865446.html