测试报告 .vs. 压测监控
JMeter原生测试报告带来的“痛苦”
• 不具备实时性
• 报告中的数据是测试时间段内的平均值
• 长相问题
压测监控平台的优势
• 实时展示JMeter压测数据
• 数据范围可选
• 界面更友好
• JMeter:压测工具, 产生压测数据
• InfluxDB: 开源时序数据库, 特别适合用于处理和分析资源监控数
据,用于存储压测数据
• Grafana:度量分析与可视化图标展示工具,可以支持不同种类的
数据源,用于将存储于InfluxDB中的数据以图表的形式展示出来
部署方法: Docker 部署
1、事先准备:
• 安装Docker
• 下载influxDB镜像: docker pull influxdb:1.8
2、启动 influxDB 容器
将新 influxDB 容器命名为 jmeterdb, 执行docker创建容器命令
docker run -d -p 8086:8086 -p 8083:8083 --name=jmeterdb
influxdb:1.8
执行如下命令进入容器内部
docker exec –it jmeterdb bash
3、在容器内部创建jmeter数据库,用于收集JMeter发送的压测数据
执行 influx命令进入命令台
root@1b2e93bb7534:/# influx
Connected to http://localhost:8086 version 1.8.10
InfluxDB shell version: 1.8.10
4、执行类sql语句 创建jmeter数据库:create database jmeter;
> create database jmeter;
> show databases;
name: databases
name
----
_internal
jmeter
> use jmeter;
Using database jmeter
5、创建完jmeter数据库之后执行如下命令验证数据库已经创建成功:
show databases;
> show databases;
name: databases
name
----
_internal
jmeter
1、在JMeter中添加 Backend Listener 组件
Backend Listener 组件,用于收集数据并发送给influxdb
在Backend Listener implementation 中选择 InfluxdbBackendListenerClient (注
意:必须使用jmeter 5.0以上版本,否则需要单独装插件才可以看到这个组件)
• 在influxdbURL中将实际的influxdb hostname填写进去
• application中填写 baidu
• 在testTitle中填写 Baidu Testing
• percentiles 中填写 50;90;95;99
• 将 summaryOnly 设置为false(让influxdb收集更多的详细信息)
• 其余配置保持不变
2、运行JMeter , 然后在 influxdb中检验是否已经能够接受到数据
在influxdb 命令台中使用查询语句,检查是否已经能够收到数据
> select * from jmeter;
name: jmeter
time application avg count countError endedT hit max maxAT meanAT min minAT pct50.0 pct90.0 pct95.0 pct99.0 rb responseCode responseMessage sb startedT statut transaction
---- ----------- --- ----- ---------- ------ --- --- ----- ------ --- ----- ------- ------- ------- ------- -- ------------ --------------- -- -------- ------ -----------
1684502522446000000 baidu 0 0 0 0 0 internal
1684502523664000000 baidu 42 5 0 5 94 25 30 94 94 94 12485 575 all all
1684502523667000000 baidu 42 5 94 25 30 94 94 94 12485 575 all Baidu Request
1684502523668000000 baidu 42 5 94 25 30 94 94 94 ok Baidu Request
1684502523669000000 baidu 5 3 2 1
1、事先准备
部署方法: Docker 部署
下载镜像: docker pull grafana/grafana
启动镜像:
docker run -d -p 3000:3000 --name=jmeterGraf
grafana/grafana
2、访问 Grafana 的控制台链接,验证它已经运行正常
默认用户名/密码:admin / admin,登录之后请跳过修改密码
3、在Grafana中添加数据源
• 选择 Add data source
• 找到 InfluxDB
• 单击选择该DB
4、配置InfluxDB 数据源
输入 URL : http://[hostname or IP]:8086
Database : jmeter
其余参数保持默认值
5、单击 Save & Test 按钮,确认返回消息提示正确确认信息
6、在Grafana 内导入JMeter Dashboard
进入Home Dashboard 页面,选择Import
打开实现准备好的URL:https://grafana.com/grafana/dashboards/4026
单击Load按钮导入
7、在 DB name 中选择 InfluxDB
单击 Import 按钮完成 Dashboard 导入
8、打开刚刚导入的JMeter Dashboard 查看结果
在JMeter中,分别将线程数分别调整为 10, 20, 30; 持续压
测时间为20秒
分别对系统施加压力测试,然后在 Grafana 面板中可以看到运行
结果