簡體   English   中英

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

[英]Jmeter PerfMon Metrics collection on different jmx port

想要發布此內容,因為我搜索了很多內容,卻找不到解決方案。

使用jmeter和ServerAgent(2.2.1),我無法在自定義JMX端口(而不是4711)上運行它。 根據文檔,您需要像這樣指定參數:

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

資源

所以我嘗試使用

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

但是,這導致服務器代理具有以下堆棧跟蹤

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

令人難以置信的是,解決方案是將url部分放在第一位。 希望有人能找到此頁面,並且可以節省時間。

例如

URL =本地主機:9080:GC-時間

我知道這個問題,您沒有在JMeter監視中使用JMX端口,但是您可能正在使用application port,但是JMeter監視需要JMX端口。

驗證您的應用服務器的JMX端口詳細信息。 以下是最常用的應用程序服務器,並按照以下步驟獲取端口詳細信息。

“ Tomcat”:在catalina.sh或setenv.sh文件中,查找“ Dcom.sun.management.jmxremote.port” = 9004,如果未看到此條目,請嘗試通過以下鏈接https://來配置您的tomcat服務器。 /www.mkyong.com/tomcat/jconsole-jmx-remote-access-on-tomcat/

Jboss:在standalone.conf中查找“ Dcom.sun.management.jmxremote.port” = 9004,如果未看到此條目,請嘗試通過下面的鏈接使用VisualVM連接到JBoss 7來配置tomcat服務器。

有了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