温馨提示×

如何在CentOS上使用JMeter监控系统

小樊
33
2025-12-07 21:41:33
栏目: 智能运维

在CentOS上使用JMeter进行系统监控的可选方案

  • 推荐两种落地方式:
    • 方案一:JMeter + InfluxDB 1.x + Grafana(实时写入与可视化,适合压测过程中的指标趋势与大盘展示)。
    • 方案二:JMeter + ServerAgent + PerfMon 监听器(轻量,直接采集被测服务器的 CPU、内存、磁盘、网络 等)。
    • 可选扩展:JMeter + Prometheus + Grafana(以 Pull 方式暴露指标,适合与现有 Prometheus 体系融合)。

方案一 JMeter + InfluxDB 1.x + Grafana 实时监控

  • 组件与端口
    • InfluxDB 1.x:用于存储压测时序数据,开放写入端口 2003(Graphite 兼容写入)与查询端口 8086(Grafana 数据源)。
    • Grafana:可视化展示,默认端口 3000
  • 安装与启动(以 CentOS 7 为例)
    • InfluxDB 1.7(RPM 安装示例):
      • 安装:yum install -y https://dl.influxdata.com/influxdb/releases/influxdb-1.7.9.x86_64.rpm
      • 编辑配置 /etc/influxdb/influxdb.conf:
        • [[graphite]] enabled = true;database = “jmeter”;bind-address = “:2003
        • [http] enabled = true;bind-address = “:8086
      • 启动:systemctl start influxdb(或 influxd 前台调试)
      • 建库与用户:influx → create database jmeter;CREATE USER “admin” WITH PASSWORD ‘admin’ WITH ALL PRIVILEGES
    • Grafana:
      • 安装:yum install -y https://dl.grafana.com/oss/release/grafana-6.4.3-1.x86_64.rpm
      • 启动:systemctl start grafana-server;访问 http://服务器IP:3000(默认账号/密码 admin/admin)
  • JMeter 配置
    • 在测试计划中添加监听器:Add → Listener → Backend Listener
    • 选择 Backend Listener 实现:InfluxdbBackendListenerClient
    • 关键参数:influxdbUrl=http://InfluxDB_IP:8086/write?db=jmeter;testTitle=自定义名称
  • Grafana 可视化
    • 添加数据源:Type=InfluxDB;URL=http://InfluxDB_IP:8086;Database=jmeter;User/Password=admin/admin
    • 导入面板:Grafana 官方模板库搜索 “JMeter”,常用模板 ID:5496(Apache JMeter Dashboard using Core InfluxdbBackendListenerClient)
  • 验证
    • 执行压测后,在 InfluxDB 中执行:use jmeter;select * from jmeter limit 10;确认有数据写入
    • Grafana 面板应实时刷新响应时间、吞吐量、错误率、活跃线程等指标。

方案二 JMeter + ServerAgent 监控被测服务器资源

  • 适用场景
    • 需要直接观察被测服务器(应用/数据库所在机器)的 CPU、内存、磁盘 IO、网络 IO 等资源曲线。
  • 部署步骤
    • 在被测服务器安装 JDK(ServerAgent 依赖 Java)
    • 下载并解压 ServerAgent-2.2.x 到 /opt/ServerAgent
    • 启动:cd /opt/ServerAgent;chmod +x startAgent.sh;./startAgent.sh(默认 TCP/UDP 4444
    • 如需自定义端口:./startAgent.sh --tcp-port 7081 --udp-port 7082
  • JMeter 配置
    • 安装插件管理器:将 plugins-manager.jar 放入 JMeter 的 lib/ext,重启 JMeter
    • 通过 Plugins Manager 安装 PerfMon (Servers Performance Monitoring)
    • 在测试计划中添加监听器:Add → Listener → PerfMon Metrics Collector
    • 添加要监控的主机与指标(Host/IP、Port=4444、CPU、Memory、Disk I/O、Network I/O 等)
  • 防火墙与连通性
    • 开放被测服务器的 4444(或自定义)端口;在 JMeter 所在机器测试:telnet 被测IP 4444
  • 观察
    • 运行压测后,PerfMon 监听器将实时绘制各指标曲线,便于定位瓶颈。

可选扩展 JMeter + Prometheus + Grafana

  • 思路
    • 使用 jmeter-prometheus-plugin 在 JMeter 中暴露 /metrics 端点(Pull 模型),由 Prometheus 抓取,再在 Grafana 展示。
  • 关键步骤
    • 下载并放置 jmeter-prometheus-plugin 的 JAR 到 JMeter 的 lib/ext
    • 在测试计划中添加监听器:Prometheus Listener(可配置指标与标签)
    • 启动 JMeter 后确认指标可访问:http://JMeter_IP:9270/metrics(默认端口 9270
    • Prometheus 配置抓取 job(targets 指向 JMeter 的 /metrics)
    • Grafana 添加 Prometheus 数据源并导入 JMeter 面板模板
  • 适用
    • 已有 Prometheus 监控体系,希望统一指标采集与告警策略。

防火墙与网络要点

  • 常见端口与用途
    • 2003/TCP:JMeter → InfluxDB(Graphite 写入)
    • 8086/TCP:Grafana → InfluxDB(查询)
    • 3000/TCP:浏览器 → Grafana
    • 4444/TCP+UDP:JMeter → ServerAgent(资源采集)
    • (可选)9270/TCP:Prometheus → JMeter(/metrics)
  • 快速放行(firewalld)
    • firewall-cmd --permanent --add-port={2003,8086,3000,4444}/tcp
    • firewall-cmd --permanent --add-port=4444/udp
    • firewall-cmd --reload
  • 云服务器还需在 安全组 放行对应端口。

常见问题与排错

  • InfluxDB 写入失败
    • 核对 influxdbUrl=http://IP:8086/write?db=jmeter;确保 InfluxDB 已启动且数据库 jmeter 存在;在 InfluxDB 中执行 show measurements 验证
  • Grafana 无法显示数据
    • 数据源 Test 是否通过;Database 名、用户名/密码是否正确;面板中 Measurement 是否选择 jmeter
  • ServerAgent 连不通
    • 被测机防火墙/安全组是否放行 4444;netstat -anp | grep 4444 检查监听;必要时改用自定义端口并同步修改 JMeter 配置
  • JMeter 分布式压测配合监控
    • 多台 Slave 也需部署 ServerAgent;Master 的 jmeter.properties 中 remote_hosts 配置所有 Slave IP:端口。

0