使用 Jolokia Telegraf 获取 JMX 属性



我有一个JAVA应用程序,我想使用telegraf工具监视其JMX属性。

该工具提供了jolikia插件来监视 JMX 属性。我已将以下依赖项添加到我的应用程序的pom.xml文件中Maven涉及Jolokia文档的部分:

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

找到了解决方案。

我跳过了maven解决方案并尝试了javaagent方法,但我之前误解了javaagent的用法;我应该解决jolokia jvm代理(这有帮助):

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控制台中不再有错误jolokia

所有的观察都暗示 jolokia jvm 库已经启动并成功运行。

我还找到了jolokia jmx文档,用于将其用作项目中的依赖项;但由于我不是JAVA专家(我正在测试该应用程序),因此我更喜欢当前使用javaagent方法并将其留给将来的学习/经验。顺便说一句,它可能会帮助其他人。

编辑 1:

我已经找到并部署了使用其弹簧支撑的jolokia jvm agent

springXML 文件中配置它,我现在可以jolokia jvm agent应用程序启动时开始侦听。

相关内容

  • 没有找到相关文章

最新更新