在CentOS上监控JMeter测试结果的可选方案
- 实时监控:使用 JMeter Backend Listener + InfluxDB + Grafana,将采样指标写入时序库并可视化;适合看响应时间、吞吐、错误率等随时间变化的曲线。
- 命令行实时摘要:在 非GUI 模式启用 Summariser,在控制台按固定间隔输出每秒事务数、平均响应时间、错误率等汇总。
- 服务器资源监控:在目标或施压机上部署 ServerAgent,用 JMeter 的 PerfMon Metrics Collector 采集 CPU、内存、磁盘IO、网络 等系统指标。
- 分布式压测聚合:通过 JMeter 分布式(Remote) 将多台施压机结果集中到控制器查看与存储。
方案一 实时监控 JMeter + InfluxDB + Grafana
- 安装与启动 InfluxDB(示例为 1.x)
- 安装后编辑配置文件 /etc/influxdb/influxdb.conf:启用 [[graphite]](端口 2003,用于接收 JMeter 数据)与 [http](端口 8086,Grafana 取数)。
- 启动服务:
systemctl start influxdb && systemctl enable influxdb。
- 创建库与用户:
influx 进入 CLI,执行 CREATE DATABASE jmeter; CREATE USER admin WITH PASSWORD 'admin' WITH ALL PRIVILEGES;。
- 安装与启动 Grafana
- 安装后启动:
systemctl start grafana-server && systemctl enable grafana-server;访问 http://:3000(默认账号 admin/admin)。
- 添加数据源:选择 InfluxDB,URL 填 http://<InfluxDB_IP>:8086,数据库 jmeter,用户 admin/密码 admin,点击 Save & Test。
- JMeter 配置后端监听器
- 测试计划 → 添加 → 监听器 → Backend Listener,选择 InfluxdbBackendListenerClient。
- 关键参数:
influxdbUrl=http://<InfluxDB_IP>:8086/write?db=jmeter,设置 testTitle。
- 可视化
- Grafana 导入官方仪表板模板(如 ID 5496 的 “Apache JMeter Dashboard using Core InfluxdbBackendListenerClient”),选择数据源 jmeter 即可查看实时曲线。
- 端口与防火墙要点
- 开放 2003/TCP(JMeter→InfluxDB)、8086/TCP(Grafana→InfluxDB)、3000/TCP(浏览器→Grafana)。
方案二 命令行实时摘要与非GUI运行
- 非GUI执行并输出到文件
- 命令:
jmeter -n -t your.jmx -l result.jtl(适合长时间压测与后续分析)。
- 启用控制台实时汇总(Summariser)
- 在 jmeter.properties 中开启:
summariser.name=summary
summariser.interval=30(单位:秒)
summariser.out=true
- 运行后在控制台看到类似:
summary + 3036 in 3s = 1001.6/s Avg: 25 Min: 14 Max: 58 Err: 3036 (100.00%) Active: 61 Started: 58 Finished: 0
- 说明
- 该方式轻量、无外部依赖,适合在 SSH 会话中观察整体趋势;如需更细的指标与可视化,请配合 InfluxDB+Grafana。
方案三 监控被测服务器资源 PerfMon
- 在被测或施压的 CentOS 上部署 ServerAgent(建议版本 2.2.x)
- 启动:
./startAgent.sh(默认监听 TCP/UDP 4444)。
- 防火墙放行:
firewall-cmd --add-port=4444/tcp --permanent && firewall-cmd --reload。
- JMeter 侧添加监听器
- 测试计划 → 添加 → 监听器 → PerfMon Metrics Collector。
- 新增行填写目标 服务器IP 与要采集的指标(如 CPU、Memory、Disk IO、Network IO),运行测试即可实时绘制曲线。
- 适用场景
- 定位 瓶颈与异常(如 CPU 打满、IO 飙升)与 JMeter 指标关联分析。
方案四 分布式压测与结果聚合
- 基本思路
- 在多台施压机启动 jmeter-server,在控制机通过 GUI 的 Remote Start 或命令行
jmeter -n -t script.jmx -R host1,host2 发起测试;各 Slave 执行后把结果回传 Controller。
- 端口与网络
- RMI 默认端口 1099,且存在从 Slave 回到 Controller 的反向连接端口;如经防火墙/NAT,需固定端口并放通两端。
- 可在
jmeter.properties 设置 server.rmi.localport 固定本地端口;在 jmeter-server 启动脚本中通过 -Djava.rmi.server.hostname=<本机IP> 指定对外网卡。
- 使用建议
- 控制器仅做调度与聚合,尽量不要把应用/数据库装在控制器上,避免影响结果可信度。
- 多网卡/云环境需特别注意 RMI 主机名解析 与 端口可达性。
实践建议与常见问题
- 组合使用更清晰:用 InfluxDB+Grafana 看业务指标(吞吐、响应、错误),用 PerfMon 看系统资源,二者在 Grafana 同一看板联动分析。
- 版本选择:InfluxDB 1.x 与 JMeter Backend Listener 的写法更直观;若用 2.x,需采用 InfluxDB 2 API/Token 与相应插件写法。
- 防火墙与安全:仅开放必要端口(如 2003/8086/3000/4444/1099),生产环境建议配合 反向代理、认证与最小权限。
- 资源控制:ServerAgent 与分布式 Slave 会占用一定资源,避免与业务/数据库同机部署,以免影响压测真实性。