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.jsonResult(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