jmxtrans示例和参考文档

编程

目录

  • 快速运行DEMO
  • 开启JMX监控功能
  • 编译jmxtrans
  • 创建jmxtrans的JSON配置文件
  • 使用jconsole

1. 快速运行DEMO

1.1 下载DEMO

DEMO的github地址:https://github.com/JiamingMai/jmxtrans-demo

下载DEMO:

git clone https://github.com/JiamingMai/jmxtrans-demo.git

用maven编译:

mvn clean install -DskipTests

1.2 运行DEMO程序

进入target目录:

cd target

运行可执行jar文件

java -jar -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=1090 -Dcom.sun.management.jmxremote.rmi.port=1090 -Dcom.sun.management.jmxremote.local.only=false -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=127.0.0.1 jmxtrans-demo-1.0-SNAPSHOT.jar

1.3 运行jmxtrans脚本进行监控

进入classes目录:

cd target/classes

运行jmxtrans脚本:

./jmxtrans.sh ./demo.json

1.4 观察结果

输出结果如下:

2020-01-02 15:09:50 [main] INFO  c.googlecode.jmxtrans.JmxTransformer - Starting Jmxtrans on : ./demo.json

Result(attributeName=HeapMemoryUsage, className=sun.management.MemoryImpl, objDomain=java.lang, typeName=type=Memory, valuePath=[committed], value=128974848, epoch=1577949020783, keyAlias=jvm.memory)

Result(attributeName=HeapMemoryUsage, className=sun.management.MemoryImpl, objDomain=java.lang, typeName=type=Memory, valuePath=[init], value=134217728, epoch=1577949020783, keyAlias=jvm.memory)

Result(attributeName=HeapMemoryUsage, className=sun.management.MemoryImpl, objDomain=java.lang, typeName=type=Memory, valuePath=[max], value=1908932608, epoch=1577949020783, keyAlias=jvm.memory)

Result(attributeName=HeapMemoryUsage, className=sun.management.MemoryImpl, objDomain=java.lang, typeName=type=Memory, valuePath=[used], value=8862320, epoch=1577949020783, keyAlias=jvm.memory)

Result(attributeName=NonHeapMemoryUsage, className=sun.management.MemoryImpl, objDomain=java.lang, typeName=type=Memory, valuePath=[committed], value=13041664, epoch=1577949020783, keyAlias=jvm.memory)

Result(attributeName=NonHeapMemoryUsage, className=sun.management.MemoryImpl, objDomain=java.lang, typeName=type=Memory, valuePath=[init], value=2555904, epoch=1577949020783, keyAlias=jvm.memory)

Result(attributeName=NonHeapMemoryUsage, className=sun.management.MemoryImpl, objDomain=java.lang, typeName=type=Memory, valuePath=[max], value=-1, epoch=1577949020783, keyAlias=jvm.memory)

Result(attributeName=NonHeapMemoryUsage, className=sun.management.MemoryImpl, objDomain=java.lang, typeName=type=Memory, valuePath=[used], value=12021712, epoch=1577949020783, keyAlias=jvm.memory)

2. 开启JMX监控功能

Java程序运行时加入以下参数可以打开JMX:

-Dcom.sun.management.jmxremote.port=1090 

-Dcom.sun.management.jmxremote.ssl=false

-Dcom.sun.management.jmxremote.authenticate=false

-Djava.rmi.server.hostname=127.0.0.1

3. 编译jmxtrans

jmxtrans的github地址:https://github.com/jmxtrans/jmxtrans

maven编译jmxtrans的时候要加上参数忽略Cobertura Checks:

mvn install -DskipTests=true -Dmaven.javadoc.skip=true -Dcobertura.skip=true -B -V

4. 创建jmxtrans的JSON配置文件

jmxtrans.sh需要一个JSON配置文件来指定待监控JVM的host、JMX端口、监控项以及所使用的OutputWriter等信息:

{

"servers":[

{

"port":"1090",

"host":"127.0.0.1",

"runPeriodSeconds":30,

"numQueryThreads":2,

"queries":[

{

"obj":"java.lang:type=Memory",

"attr":[

"HeapMemoryUsage",

"NonHeapMemoryUsage"

],

"resultAlias": "jvm.memory",

"outputWriters":[

{

"@class" : "com.googlecode.jmxtrans.model.output.StdOutWriter",

"settings" : {

}

}

]

}

]

}

]

}

5. 使用jconsole

jconsole在jdk目录${JAVA_HOME}的bin目录下面:

ls ${JAVA_HOME}/bin/jconsole

如果有开启了JMX的JVM进程,运行jconsole可以连上去监控到它的信息:

jconsole

以上是 jmxtrans示例和参考文档 的全部内容, 来源链接: utcz.com/z/512288.html

回到顶部