Ubuntu 下 JMeter 监控方案总览
- 面向压测执行机与被压测服务器的实时监控,常用做法有两类:
- 使用 JMeter Backend Listener → InfluxDB → Grafana 构建可视化实时看板;
- 使用 PerfMon Metrics Collector + ServerAgent 采集被测服务器的 CPU、内存、磁盘 IO、网络 等资源指标。前者适合看并发、响应时间、错误率等业务指标,后者适合看系统资源瓶颈。
方案一 InfluxDB + Grafana 实时监控
- 组件与端口
- JMeter:压测引擎,通过 Backend Listener 写入时序数据
- InfluxDB:时序数据库,默认 HTTP 8086
- Grafana:可视化看板,默认 3000
- 部署步骤
- 安装 InfluxDB(Ubuntu 推荐 APT 安装或下载 .deb 包安装),启用 HTTP 写入:
- 配置 /etc/influxdb/influxdb.conf 的 [http] enabled = true,bind-address = “:8086”
- 启动服务:sudo systemctl start influxdb
- 创建库:influx → CREATE DATABASE jmeter
- 安装 Grafana(APT 或 .deb 包),启动服务:sudo systemctl start grafana-server
- Grafana 添加数据源:选择 InfluxDB,URL 填 http://<influxdb_ip>:8086,Database 填 jmeter
- JMeter 配置 Backend Listener
- 添加监听器:Test Plan → Add → Listener → Backend Listener
- 实现选择:org.apache.jmeter.visualizers.backend.influxdb.InfluxdbBackendListenerClient
- 关键参数:InfluxDB URL http://<influxdb_ip>:8086,Database jmeter,Application 自定义(用于多场景区分)
- 运行压测,Grafana 导入 JMeter 官方 Dashboard(如 ID:4026 或搜索 “jmeter”),即可实时查看响应时间、吞吐、错误率等
- 说明
- 若使用 InfluxDB 2.x,需改用对应的写入 API/组织与令牌,并选择 InfluxDB 2 数据源插件。
方案二 PerfMon 监控被测服务器资源
- 适用场景:需要观察 CPU、内存、磁盘 IO、网络 等系统资源瓶颈
- 部署步骤
- JMeter 安装插件管理器(jmeter-plugins-manager),在 Available Plugins 中安装 PerfMon(重启 JMeter)
- JMeter 添加监听器:jp@gc - PerfMon Metrics Collector
- 新增行,填写被测服务器 Host/IP、端口 4444(默认)、Metric(如 cpu、mem、disk、net)
- 在被测服务器部署 ServerAgent-2.2.3(Linux 解压后执行:./startAgent.sh)
- 确保 JMeter 机器可访问被测服务器的 4444/TCP
- 运行压测,PerfMon 面板实时绘制资源曲线
- 提示
- 如需监控 磁盘 IO/网络,在 ServerAgent 所在服务器具备相应权限与工具(如 iostat/sar),并开放防火墙 4444 端口。
网络与防火墙要点
- 常见端口与方向
- InfluxDB 8086/TCP:JMeter → InfluxDB(写入)
- Grafana 3000/TCP:浏览器/用户 → Grafana(访问)
- ServerAgent 4444/TCP:JMeter → 被测服务器(采集)
- Ubuntu 防火墙(UFW)示例
- sudo ufw allow 3000,8086,4444/tcp
- 云服务器还需在 安全组 放行对应端口。
快速排错清单
- InfluxDB 写入失败
- 在 JMeter 机器 curl 测试:curl -i -XPOST ‘http://<influxdb_ip>:8086/write?db=jmeter’ --data-binary ‘jmeter,application=test count=1’
- 若返回 204 表示连通;若超时/拒绝,检查 InfluxDB 服务、监听地址与防火墙
- Grafana 无数据
- 确认 InfluxDB 中已存在 jmeter 库且有数据:influx → USE jmeter → SHOW MEASUREMENTS
- 检查 Backend Listener 的 DB、URL、Application 是否与 Grafana 数据源一致
- PerfMon 无数据
- 在被测服务器确认:ServerAgent 进程存活(ps -ef | grep ServerAgent)、端口 4444 监听(ss -lntp | grep 4444)
- JMeter 中 Host/IP 与端口填写无误,且网络可达。