You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否通过JMeter Java API使用Perfmon采集服务器性能?

使用JMeter Java API结合Perfmon插件监控服务器性能

嘿,我之前刚好折腾过用JMeter Java API搭配Perfmon插件做服务器监控,给你梳理下具体的步骤和代码示例,应该能帮到你:

前置准备

首先得确保你的项目依赖里包含了JMeter核心库和Perfmon插件的jar包,如果用Maven的话,pom.xml里要加这些依赖(注意版本尽量和你用的JMeter版本匹配):

<dependencies>
    <!-- JMeter Core -->
    <dependency>
        <groupId>org.apache.jmeter</groupId>
        <artifactId>ApacheJMeter_core</artifactId>
        <version>5.6.3</version>
        <scope>provided</scope>
    </dependency>
    <!-- Perfmon Plugin -->
    <dependency>
        <groupId>kg.apc</groupId>
        <artifactId>jmeter-plugins-perfmon</artifactId>
        <version>2.13</version>
    </dependency>
    <!-- 其他必要依赖比如JMeter Java请求等,按需添加 -->
</dependencies>

另外,必须在你要监控的目标服务器上运行Perfmon的ServerAgent,这个Agent是用来收集服务器性能数据的,默认监听4444端口,启动命令就是./startAgent.sh(Linux)或者startAgent.bat(Windows)。

代码实现步骤

1. 初始化JMeter测试基础组件

先创建测试计划、线程组这些基础结构:

import org.apache.jmeter.engine.StandardJMeterEngine;
import org.apache.jmeter.reporters.ResultCollector;
import org.apache.jmeter.reporters.Summariser;
import org.apache.jmeter.testelement.TestPlan;
import org.apache.jmeter.threads.ThreadGroup;
import org.apache.jmeter.util.JMeterUtils;
import org.apache.jorphan.collections.HashTree;

// 初始化JMeter配置
JMeterUtils.loadJMeterProperties("path/to/jmeter.properties");
JMeterUtils.setJMeterHome("path/to/your/jmeter/home");
JMeterUtils.initLocale();

StandardJMeterEngine jmeter = new StandardJMeterEngine();
HashTree testPlanTree = new HashTree();

// 创建测试计划
TestPlan testPlan = new TestPlan("Perfmon监控测试计划");
testPlanTree.add(testPlan);

// 创建线程组
ThreadGroup threadGroup = new ThreadGroup();
threadGroup.setName("测试线程组");
threadGroup.setNumThreads(1);
threadGroup.setRampUp(1);
threadGroup.setSamplerController(null);
HashTree threadGroupTree = testPlanTree.add(testPlan, threadGroup);

2. 添加Perfmon Metrics Collector元件

这个元件是用来连接目标服务器的ServerAgent并收集性能数据的:

import kg.apc.jmeter.perfmon.PerfmonMetricsCollector;
import kg.apc.jmeter.perfmon.PerfmonMetricConfig;

// 创建Perfmon收集器
PerfmonMetricsCollector perfmonCollector = new PerfmonMetricsCollector();
perfmonCollector.setName("Perfmon服务器监控");
// 设置目标服务器地址和Agent端口
perfmonCollector.setHost("目标服务器IP");
perfmonCollector.setPort("4444");

// 添加要监控的指标,比如CPU、内存、磁盘IO
// CPU监控
PerfmonMetricConfig cpuConfig = new PerfmonMetricConfig();
cpuConfig.setMetric("CPU");
cpuConfig.setType("org.apache.jmeter.perfmon.CPUCollector");
perfmonCollector.addMetricConfig(cpuConfig);

// 内存监控
PerfmonMetricConfig memoryConfig = new PerfmonMetricConfig();
memoryConfig.setMetric("Memory");
memoryConfig.setType("org.apache.jmeter.perfmon.MemoryCollector");
perfmonCollector.addMetricConfig(memoryConfig);

// 磁盘IO监控(可选)
PerfmonMetricConfig diskConfig = new PerfmonMetricConfig();
diskConfig.setMetric("DiskIO");
diskConfig.setType("org.apache.jmeter.perfmon.DiskIOCollector");
perfmonCollector.addMetricConfig(diskConfig);

// 将Perfmon收集器添加到线程组下
threadGroupTree.add(perfmonCollector);

3. 添加结果收集器(可选)

如果你需要把监控数据保存到文件或者在代码里处理,可以添加ResultCollector:

// 创建结果收集器,保存监控数据到CSV
ResultCollector resultCollector = new ResultCollector(new Summariser("summary"));
resultCollector.setFilename("perfmon_results.csv");
threadGroupTree.add(resultCollector);

4. 运行测试并获取数据

最后启动JMeter引擎,运行测试,之后你可以读取CSV文件里的监控数据,或者通过代码直接处理收集到的指标:

// 配置并启动JMeter引擎
jmeter.configure(testPlanTree);
jmeter.run();

// 测试结束后,你可以读取perfmon_results.csv文件,里面包含了时间戳、CPU使用率、内存使用率等数据
// 或者通过自定义监听器来实时处理数据(需要继承ResultCollector类)

注意事项

  • 确保目标服务器的ServerAgent已经启动,并且防火墙开放了对应的端口(默认4444)
  • Perfmon插件的版本要和JMeter版本兼容,避免出现类找不到的问题
  • 如果需要监控多个服务器,可以创建多个PerfmonMetricsCollector实例,分别设置不同的服务器地址
  • 监控数据的采样间隔可以通过PerfmonMetricsCollector的setInterval()方法设置,单位是毫秒,默认是1000ms

内容的提问来源于stack exchange,提问作者Ras

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:44:07