【问题标题】:get jmx attributes with jolokia telegraf使用 jolokia telegraf 获取 jmx 属性
【发布时间】:2018-01-14 11:11:34
【问题描述】:

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

该工具提供jolikia插件来监控JMX属性。我已将以下依赖项添加到我的应用程序的 pom.xml 文件中关于 Jolokia documentationMaven 部分:

<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

【问题讨论】:

    标签: jmx telegraf jolokia


    【解决方案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 控制台中的 jolokia 不再出现错误。

    所有观察结果都表明 jolokia jvm 库已启动并成功运行。

    我还发现jolokia jmx documentation 将其用作项目中的依赖项;但由于我不是 JAVA 专家(我正在测试应用程序),我更喜欢目前使用 javaagent 方法并将其留待将来学习/体验。顺便说一句,它可能会帮助其他人。

    编辑 1:

    我已使用其spring support 找到并部署了jolokia jvm agent

    spring XML 文件中配置它,我现在可以让jolokia jvm agent 在我的应用启动时开始监听。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-06-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-03
      • 1970-01-01
      相关资源
      最近更新 更多