Jmeter压力测试可视化

最近在看并发编程相关的知识,觉得单从书本的字面意思看各种吞吐量、延迟等等概念比较虚无缥缈。遂产生了搭建一个压力测试的可视化环境。故有此文,记录一下搭建过程。

软件及版本

此可视化环境使用到的软件及版本如下
软件 | 用途
—|—
CentOS Linux release 7.6 | 操作系统
jmeter-5.1.1 | 压力测试工具
influxdb-1.7| 时间序列数据库
grafana-6.1.0 | 时序性统计和监控平台

环境搭建

influxdb

安装

1
2
wget https://dl.influxdata.com/influxdb/releases/influxdb-1.7.5_linux_amd64.tar.gz
tar xvfz influxdb-1.7.5_linux_amd64.tar.gz

启动

1
2
# 到解压后的根目录下执行
usr/bin/influx

启动后,influxdb默认使用端口8086对外提供服务,供写入数据

创建数据库和账号

1
2
3
4
5
6
7
8
9
# 打开influxdb的console
usr/bin/influx

# 创建数据库jmeter,供jmeter测试过程中写入数据
create database jmeter

# 授权,在设置jmeter的backend listener和grafana DataSource时需要
use jmeter
create user "admin" with password 'admin' with all privileges

grafana

安装

1
2
wget https://dl.grafana.com/oss/release/grafana-6.1.0.linux-amd64.tar.gz 
tar -zxvf grafana-6.1.0.linux-amd64.tar.gz

启动

1
2
# 到解压后的根目录下执行
./bin/grafana-server web

启动后,grafana默认使用端口3000对外提供服务。
启动成功后,我们可以通过访问http://localhost:3000打开grafana界面(默认账号/密码为admin/admin)

配置influxdb DataSource




之后,保存即可

jmeter

安装

1
2
wget https://mirrors.tuna.tsinghua.edu.cn/apache//jmeter/binaries/apache-jmeter-5.1.1.tgz
tar -zxvf apache-jmeter-5.1.1.tgz

由于我们需要使用jmeter在新版本中提供的listener来讲数据实时传输到influxdb中,之后通过grafana dashboard来展示我们的实时数据,因此我们还需要下载一个扩展。即JMeter-InfluxDB-Writer,下载后放置${JMETER_HOME}/lib/ext目录下。

启动

1
bin/jmeter.sh

启动jmeter之后,我们就可以配置需要测试的接口了。
配置相关的线程组、HTTP请求等等。

着重看一下后端监听器的配置,如下

这里的JMeterInfluxDBBackendListenerClient后端监听器是我们要使用的grafana dashboard(JMeter Load Test Dashboard)的一个插件实现。
完成jmeter的测试后,influxdb将存储着我们本次测试所产生的数据,我们的可视化界面将基于这些数据来完成。在此之前,我们还需要配置一下grafana的dashboard。

配置grafana的dashboard

我们将JMeter Load Test导入到grafana中


压测实时数据


可以看到以下信息:

  • 当前有10个并发线程
  • 总的吞吐量为196.0ops(即每秒处理196个请求)
  • 100%的成功率
  • 从启动测试开始计数,当前总共执行了14907次请求
  • 0%错误率
  • 实时的吞吐量波形图

总结

结合influxdb、grafana、jmeter初步打造了一个压力测试可视化环境。比较直观的可以看到吞吐量、请求数。其实grafana的应用场景很广泛,还可以结合promethues实现优雅的监控图。