使用jolokia telegraf获取jmx属性

时间:2018-01-14 11:11:34

标签: jmx telegraf jolokia

我有一个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:

我已查看我的CLASSPATHjolokia-clientjolokia-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

1 个答案:

答案 0 :(得分:1)

找到了解决方案。

我已跳过maven解决方案并尝试javaagent方法,但我之前误解了javaagent的使用情况;我应该jolokia jvm agentthis帮助):

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开始在应用的启动时收听。