我有一个JAVA应用程序,我希望使用telegraf
工具监视其JMX属性。
该工具提供jolikia
插件来监控JMX属性。我已将以下依赖项添加到我应用的pom.xml
文件中Maven
Jolokia documentation部分:
<dependency>
<groupId>org.jolokia</groupId>
<artifactId>jolokia-core</artifactId>
<version>1.3.7</version>
</dependency>
<dependency>
<groupId>org.jolokia</groupId>
<artifactId>jolokia-client-java</artifactId>
<version>1.3.7</version>
</dependency>
这是我的/etc/telegraf/telegraf.conf
文件:
[[inputs.jolokia]]
context = "/jolokia/"
[[inputs.jolokia.servers]]
name = "wr-core"
host = "192.168.100.175"
port = "1998"
[[inputs.jolokia.metrics]]
name = "send_success"
mbean = "wr-core:type=monitor,name=execution"
attribute = "MessageSendSuccessCount"
应用程序在提供的IP /端口上(我可以使用jconsole
连接到它)。该应用程序有一个监视部分,其对象名称(如jconsole
所示)为wr-core:type=monitor,name=execution
,并具有属性MessageSendSuccessCount
。但是,当我启动telegraf
服务时,会发生以下错误:
Jan 14 14:30:32 ZiZi telegraf[17258]: 2018-01-14T11:00:32Z E! Error in plugin [inputs.jolokia]: error performing request: Error decoding JSON response: invalid character '\x00' looking for beginning of value:
请注意1998
是我应用的jmx端口。我也尝试使用8778
jolokia-agent
端口;得到:
Jan 14 14:40:03 ZiZi telegraf[9150]: 2018-01-14T11:10:03Z E! Error in plugin [inputs.jolokia]: error performing request: Post http://192.168.100.175:8778/jolokia/: dial tcp 192.168.100.175:8778: getsockopt: connection refused
编辑1:
我已查看我的CLASSPATH
,jolokia-client
和jolokia-core
列出了../lib/jolokia-client-java-1.3.7.jar:../lib/jolokia-core-1.3.7.jar
。
编辑2:
我已将以下行添加到我的应用执行文件中:
JOLOKIA_OPTS=-javaagent:$LIB_PATH/jolokia-core-java-1.3.7.jar=port=8778,host=0.0.0.0
JAVA_OPTS="-mx4096M $JAVA_OPTS $JACOCO_OPTS $JOLOKIA_OPTS"
但是当我运行该文件时,我收到此错误(即使../lib/jolokia-core-java-1.3.7.jar
中已列出CLASSPATH
):
Error opening zip file or JAR manifest missing : ../lib/jolokia-core-java-1.3.7.jar
Error occurred during initialization of VM
agent library failed to init: instrument
答案 0 :(得分:1)
找到了解决方案。
我已跳过maven
解决方案并尝试javaagent
方法,但我之前误解了javaagent
的使用情况;我应该jolokia jvm agent(this帮助):
JOLOKIA_OPTS=-javaagent:/root/jolokia-jvm-1.3.7-agent.jar=port=8778,host=0.0.0.0
JAVA_OPTS="-mx4096M $JAVA_OPTS $JACOCO_OPTS $JOLOKIA_OPTS"
现在,我的应用程序以此日志(成功)开始:
I> No access restrictor found, access to any MBean is allowed
Jolokia: Agent started with URL http://192.168.100.175:8778/jolokia/
另一方面,telegraf
的{{1}}控制台中没有错误。
所有观察结果都暗示jolokia jvm库已经启动并成功运行。
我还发现jolokia jmx documentation将其用作项目中的依赖项;但由于我不是JAVA专家(我正在测试应用程序),我更喜欢目前使用jolokia
方法并留待将来学习/体验。顺便说一句,它可能会帮助其他人。
编辑1:
我使用spring support找到并部署了javaagent
。
在jolokia jvm agent
XML文件中对其进行配置,我现在可以spring
开始在应用的启动时收听。