JMeter 在 Ubuntu 上的监控实践
一 监控方案总览
- 推荐两种互补方案:
- 方案A:JMeter → InfluxDB(时序库)→ Grafana(可视化),用于实时压测指标与趋势面板展示。
- 方案B:JMeter 插件 PerfMon + 被测服务器 ServerAgent,采集 CPU、内存、磁盘、网络 等系统资源。
- 常用端口一览:
- InfluxDB:8086
- Grafana:3000
- Prometheus:9090
- ServerAgent(PerfMon):默认 4444(可自定义)
- 在 Grafana 中可直接导入 JMeter 官方/社区仪表盘,快速获得吞吐、响应时间、错误率、活跃线程等指标的可视化面板。
二 方案A InfluxDB Grafana 实时监控
- 安装与启动
- InfluxDB(Ubuntu 18.04/20.04 示例)
- 添加仓库并安装:sudo apt-get update && sudo apt-get install -y influxdb
- 启动服务:sudo systemctl start influxdb && sudo systemctl enable influxdb
- Grafana
- 添加仓库并安装:sudo apt-get install -y adduser libfontconfig1 && sudo apt-get install -y grafana
- 启动服务:sudo systemctl start grafana-server && sudo systemctl enable grafana-server
- JMeter 配置 Backend Listener
- 安装插件:打开 JMeter → Options → Plugins Manager,安装 InfluxDB Backend Listener(或 jp@gc 系列 Backend Listener)。
- 在测试计划中添加 Backend Listener,常用实现选择 org.apache.jmeter.visualizers.backend.influxdb.InfluxdbBackendListenerClient(不同版本名称可能略有差异)。
- 关键参数示例:
- influxdbUrl:http://<influxdb_ip>:8086/write?db=<jmeter_db>
- application:自定义测试名(如:order_service_stress)
- measurement:jmeter(默认写入的 measurement 名)
- summaryOnly:false(采集更细粒度指标)
- InfluxDB 初始化
- 进入控制台:influx
- 建库:CREATE DATABASE jmeter
- Grafana 可视化
- 访问:http://<grafana_ip>:3000(默认账号/密码:admin/admin)
- 添加数据源:InfluxDB,URL 填 http://<influxdb_ip>:8086,Database 填 jmeter
- 导入 JMeter 仪表盘:在 Grafana 官网仪表盘搜索 “JMeter”,导入对应 Dashboard ID(如常见模板),选择 InfluxDB 数据源即可展示实时曲线。
三 方案B PerfMon 监控被测服务器资源
- 在被测服务器(Ubuntu)部署 ServerAgent
- 下载并解压 ServerAgent-2.2.x.zip
- 赋权并启动:chmod +x startAgent.sh && ./startAgent.sh
- 如需自定义端口:./startAgent.sh --udp-port 0 --tcp-port 12345(示例将 TCP 端口改为 12345)
- 在 JMeter 中添加监听器
- 安装插件:Plugins Manager 搜索并安装 PerfMon (Servers Performance Monitoring)
- 添加监听器:jp@gc - PerfMon Metrics Collector
- 配置示例:
- Host/IP:被测服务器 IP
- Port:4444(或自定义的 12345)
- Metric to collect:CPU、Memory、Disk I/O、Network I/O 等
- 连通性排查
- 若出现连接超时,检查被测服务器防火墙(如 ufw/iptables)是否放行对应端口;不同网段还需确认路由与安全组策略。
四 常见问题与排错要点
- InfluxDB/Grafana 访问异常
- 确认服务已启动:systemctl status influxdb / grafana-server
- 本机访问测试:curl http://127.0.0.1:8086/ping(InfluxDB 返回 204 为正常)
- 云服务器需放行 8086/3000 安全组与防火墙规则
- Backend Listener 写入失败
- 核对 influxdbUrl、数据库名、网络连通性;InfluxDB 中确认库已创建(CREATE DATABASE jmeter)
- 检查 JMeter 日志与 InfluxDB 日志,定位写入语句或权限问题
- PerfMon 连不上 ServerAgent
- 服务器上确认进程与端口监听:ss -lntp | grep 4444
- 客户端与服务器之间放通端口;注意 telnet 卡住 不代表不可用,可直接在插件内测试连通
- 面板无数据
- Grafana 选择正确的 Datasource 与 Dashboard;InfluxDB 中确认有对应时间范围的写入(use jmeter; SELECT count(*) FROM jmeter)
- 资源与规模
- 单机 JMeter 客户端线程建议控制在 1000–2000(视 CPU/网络/脚本复杂度而定),超出需考虑分布式压测或优化脚本与硬件。