一、方案概述
JMeter 自带的 HTML 报告适合单次测试分析,但对于长期性能监控、对比和实时可视化分析,结合 InfluxDB(时序数据库)和 Grafana(可视化平台)才是更专业、可扩展的解决方案。
该方案实现目标:
- ✅ 实时查看测试过程中接口响应趋势
- ✅ 历史性能指标长期存储(InfluxDB)
- ✅ Grafana 可视化展示 TPS、响应时间、错误率等指标
- ✅ 一键启动与销毁(通过 Docker Compose)
二、系统架构

组件说明
| 组件 | 作用 |
|---|---|
| JMeter | 执行性能测试,采集数据并通过 Backend Listener 实时推送到 InfluxDB |
| InfluxDB | 时序数据库,存储性能测试的原始指标数据 |
| Grafana | 数据可视化工具,从 InfluxDB 获取指标并展示为仪表盘 |
三、环境准备
要求:
- 已安装 Docker 和 Docker Compose
- 网络可访问(默认使用 8086、3000 端口)
目录结构建议:
performance/
├── docker-compose.yml
├── grafana/
│ └── dashboards/
│ └── jmeter-dashboard.json
└── influxdb/
└── influxdb.conf
四、Docker Compose 部署
1. docker-compose.yml 示例
version: '3.7'
services:
influxdb:
image: influxdb:1.8
container_name: influxdb
restart: always
ports:
- "8086:8086"
volumes:
- ./influxdb:/var/lib/influxdb
environment:
- INFLUXDB_DB=jmeter
- INFLUXDB_ADMIN_ENABLED=true
- INFLUXDB_HTTP_AUTH_ENABLED=false
grafana:
image: grafana/grafana:latest
container_name: grafana
restart: always
ports:
- "3000:3000"
environment:
- GF_SECURITY_ADMIN_USER=admin
- GF_SECURITY_ADMIN_PASSWORD=admin
volumes:
- ./grafana:/var/lib/grafana
networks:
default:
driver: bridge
五、启动与验证
# 启动服务
docker-compose up -d
# 查看状态
docker ps
启动后:
- InfluxDB 地址:http://localhost:8086
- Grafana 地址:http://localhost:3000(账号密码:admin / admin)
六、JMeter 配置 InfluxDB Backend Listener
在 JMeter GUI 中配置:
路径:
Test Plan
└── Thread Group
└── Backend Listener
选择类:
org.apache.jmeter.visualizers.backend.influxdb.InfluxdbBackendListenerClient
参数设置:
| 参数名 | 示例值 | 说明 |
|---|---|---|
| influxdbMetricsSender | org.apache.jmeter.visualizers.backend.influxdb.HttpMetricsSender | 默认 |
| influxdbUrl | http://influxdb:8086/write?db=jmeter | 指向 Docker 内的容器名 |
| application | my-jmeter-test | 自定义测试名 |
| measurement | jmeter | 存储表名 |
| summaryOnly | false | 是否仅汇总指标 |
| samplersList | .* | 匹配所有接口 |
| percentiles | 90;95;99 | 响应时间分位 |
| testTitle | DemoTest | 测试标题 |
💡 注意:
在 Docker Compose 网络下,
influxdb是容器名,因此http://influxdb:8086可直接访问。
七、Grafana 配置与可视化
1. 添加数据源
-
打开 Grafana → 登录
-
左侧菜单 → ⚙️ Configuration → Data Sources → Add data source
-
选择 InfluxDB
-
配置:
- URL:
http://influxdb:8086 - Database:
jmeter - 点击 “Save & Test”
- URL:
2. 导入 JMeter Dashboard 模板
- 点击左侧菜单 → 📊 Dashboards → Import
- 选择 “Upload JSON file”
- 上传:
grafana/dashboards/jmeter-dashboard.json - 点击 “Import”
推荐模板 ID(可在线导入):
👉 JMeter Load Test Dashboard - 5496
八、测试执行与结果查看
执行命令:
jmeter -n -t test_plan.jmx -l result.jtl
执行时:
- InfluxDB 会实时接收指标
- Grafana 仪表盘可实时刷新展示响应时间、TPS、错误率、Active Threads 等
九、报告与数据分析对比
| 报告类型 | 生成方式 | 适用场景 |
|---|---|---|
| JMeter HTML 报告 | -e -o ./report | 单次测试总结 |
| Grafana Dashboard | 实时展示 | 压测过程监控、对比分析 |
| InfluxDB 查询 | API 或 CLI | 定制化数据分析、统计报表生成 |
十、常见问题与优化建议
| 问题 | 原因 | 解决办法 |
|---|---|---|
| Grafana 数据无变化 | Backend Listener URL 错误 | 改为容器名 http://influxdb:8086/write?db=jmeter |
| 数据过多 | 长期运行导致存储膨胀 | 设置 InfluxDB 数据保留策略(Retention Policy) |
| Grafana 面板空白 | 未配置 Dashboard 或变量错误 | 重新导入 Dashboard 模板 |
| 无法启动 | 端口冲突 | 修改 docker-compose.yml 中的端口映射 |
十一、总结与推荐实践
✅ 推荐部署方式: Docker Compose 一键启动
✅ 推荐版本:
- JMeter ≥ 5.6
- InfluxDB 1.8(2.x 需要额外授权 Token)
- Grafana ≥ 9.x
✅ 推荐操作流程:
- 启动
docker-compose - 配置 JMeter Backend Listener → 运行测试
- 打开 Grafana 实时查看性能指标
- 测试结束后导出 HTML 报告做总结


260

被折叠的 条评论
为什么被折叠?



