简体   繁体   English

不同jmx端口上的Jmeter PerfMon Metrics集合

[英]Jmeter PerfMon Metrics collection on different jmx port

Wanted to post this because I searched around a lot and could not find a solution. 想要发布此内容,因为我搜索了很多内容,却找不到解决方案。

Using jmeter and ServerAgent (2.2.1), I was having trouble getting it work on a custom JMX port (not 4711). 使用jmeter和ServerAgent(2.2.1),我无法在自定义JMX端口(而不是4711)上运行它。 Per the documentation you need to specify the parameters like so: 根据文档,您需要像这样指定参数:

By default the Server Agent will try to connect to JMX server at localhost with port 4711. If you started JMX server at different host/port or using authentication with username/password, please, use following additional parameters:

url=<hostname>\:<port>
user=<username>
password=<password>
Available JMX metric types:

gc-time - time spent in garbage collection, milliseconds (used method)
memory-usage - heap memory used by VM, bytes (method used)
memory-committed - heap memory committed by VM, bytes (method used)
memorypool-usage - heap memory pool usage, bytes (method used)
memorypool-committed - heap memory pool committed size, bytes (method used)
class-count - loaded class count in VM (used method)
compile-time - time spent in compilation, milliseconds (used method)
Examples:

gc-time - monitor GC time at localhost:4711
memory-usage:url=somehost.com\:4715 - use alternative hostname/password
class-count:url=somehost.com\:4715:user=apc:password=SecurityPlease123 - some secure setup access

Source 资源

So I tried that using 所以我尝试使用

localhost 4444 JMX gc-time:url=localhost:9080 本地主机4444 JMX gc-time:url =本地主机:9080

This however resulted in the server agent having the following stack trace 但是,这导致服务器代理具有以下堆栈跟踪

INFO    2017-02-23 20:53:51.352 [kg.apc.p] (): Starting measures: jmx:gc-time:url=localhost\:9080
ERROR   2017-02-23 20:53:51.445 [kg.apc.p] (): Failed to get MX Bean data provider
java.lang.IllegalArgumentException: Can't define JMX type
        at kg.apc.perfmon.metrics.jmx.AbstractJMXDataProvider.getProvider(AbstractJMXDataProvider.java:48)
        at kg.apc.perfmon.metrics.JMXMetric.<init>(JMXMetric.java:42)
        at kg.apc.perfmon.metrics.AbstractPerfMonMetric.createMetric(AbstractPerfMonMetric.java:65)
        at kg.apc.perfmon.PerfMonMetricGetter.setUpMetrics(PerfMonMetricGetter.java:138)
        at kg.apc.perfmon.PerfMonMetricGetter.processCommand(PerfMonMetricGetter.java:63)
        at kg.apc.perfmon.PerfMonMetricGetter.processNextCommand(PerfMonMetricGetter.java:101)
        at kg.apc.perfmon.PerfMonWorker.read(PerfMonWorker.java:210)
        at kg.apc.perfmon.PerfMonWorker.processCommands(PerfMonWorker.java:97)
        at kg.apc.perfmon.AgentTool.processParams(AgentTool.java:72)
        at kg.apc.cmdtools.PluginsCMD.processParams(PluginsCMD.java:63)
        at kg.apc.cmdtools.PluginsCMD.processParams(PluginsCMD.java:23)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:483)
        at kg.apc.cmd.UniversalRunner.main(UniversalRunner.java:175)
ERROR   2017-02-23 20:53:51.446 [kg.apc.p] (): Invalid metric specified: jmx
java.lang.RuntimeException: Failed to get MX Bean data provider
        at kg.apc.perfmon.metrics.JMXMetric.<init>(JMXMetric.java:45)
        at kg.apc.perfmon.metrics.AbstractPerfMonMetric.createMetric(AbstractPerfMonMetric.java:65)
        at kg.apc.perfmon.PerfMonMetricGetter.setUpMetrics(PerfMonMetricGetter.java:138)
        at kg.apc.perfmon.PerfMonMetricGetter.processCommand(PerfMonMetricGetter.java:63)
        at kg.apc.perfmon.PerfMonMetricGetter.processNextCommand(PerfMonMetricGetter.java:101)
        at kg.apc.perfmon.PerfMonWorker.read(PerfMonWorker.java:210)
        at kg.apc.perfmon.PerfMonWorker.processCommands(PerfMonWorker.java:97)
        at kg.apc.perfmon.AgentTool.processParams(AgentTool.java:72)
        at kg.apc.cmdtools.PluginsCMD.processParams(PluginsCMD.java:63)
        at kg.apc.cmdtools.PluginsCMD.processParams(PluginsCMD.java:23)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:483)
        at kg.apc.cmd.UniversalRunner.main(UniversalRunner.java:175)
Caused by: java.lang.IllegalArgumentException: Can't define JMX type
        at kg.apc.perfmon.metrics.jmx.AbstractJMXDataProvider.getProvider(AbstractJMXDataProvider.java:48)
        at kg.apc.perfmon.metrics.JMXMetric.<init>(JMXMetric.java:42)
        ... 14 more

The solution, unbelievably, was to put the url portion first. 令人难以置信的是,解决方案是将url部分放在第一位。 Hopefully someone finds this page and time can be saved. 希望有人能找到此页面,并且可以节省时间。

eg 例如

url=localhost:9080:gc-time URL =本地主机:9080:GC-时间

I know the issue, you are not using JMX port in your JMeter monitoring,but you might be using application port , but JMeter monitoring required JMX port. 我知道这个问题,您没有在JMeter监视中使用JMX端口,但是您可能正在使用application port,但是JMeter监视需要JMX端口。

Verify your application servers for JMX port details. 验证您的应用服务器的JMX端口详细信息。 Below are most commonly used application servers and step to follow to get port details. 以下是最常用的应用程序服务器,并按照以下步骤获取端口详细信息。

"Tomcat": In catalina.sh or setenv.sh file, look for "Dcom.sun.management.jmxremote.port"=9004, if you are not seen this entry try to configure your tomcat server by following below link https://www.mkyong.com/tomcat/jconsole-jmx-remote-access-on-tomcat/ “ Tomcat”:在catalina.sh或setenv.sh文件中,查找“ Dcom.sun.management.jmxremote.port” = 9004,如果未看到此条目,请尝试通过以下链接https://来配置您的tomcat服务器。 /www.mkyong.com/tomcat/jconsole-jmx-remote-access-on-tomcat/

Jboss: In standalone.conf look for "Dcom.sun.management.jmxremote.port"=9004, if you are not seen this entry try to configure your tomcat server by following below link Connect to JBoss 7 using VisualVM . Jboss:在standalone.conf中查找“ Dcom.sun.management.jmxremote.port” = 9004,如果未看到此条目,请尝试通过下面的链接使用VisualVM连接到JBoss 7来配置tomcat服务器。

Once you have JMX port, JMeter will be able to monitor. 有了JMX端口后,JMeter将可以进行监视。

Monitoring Demo App:


     1. Start you JMeter instance
     2. Start java application (New instance jmeter, cd {JMeter_home}/bin) using following command 

        java -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=6969 -Dcom.sun.management.jmxremote.rmi.port=6969 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -jar ApacheJMeter.jar

    3. Download jmeter_mon.jmx file from Github using [link][1]
    4. Open "jmeter_mon.jmx" file from JMeter instance 1.
    5. Start Server monitoring script sh {ServerAgent}/startAgent.sh 
    6. Run the Jmeter

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM