使用 jolokia telegraf 获取 jmx 属性
get jmx attributes with jolokia telegraf
我有一个 JAVA 应用程序,我想使用 telegraf
工具监视它的 JMX 属性。
该工具提供 jolikia
插件来监控 JMX 属性。我已将以下依赖项添加到我的应用程序的 pom.xml
文件中,关于 Jolokia documentation 的 Maven
部分:
<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/port 中启动(我可以使用 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
找到解决方案。
我跳过了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/
另一方面,jolokia
的 telegraf
控制台中没有错误。
所有观察都表明 jolokia jvm 库已经启动并成功运行。
我还发现 jolokia jmx documentation 将其用作项目中的依赖项;但由于我不是 JAVA 专家(我正在测试该应用程序),我更喜欢目前使用 javaagent
方法并留待以后使用 study/experience。顺便说一句,它可能会对其他人有所帮助。
编辑 1:
我找到并部署了 jolokia jvm agent
使用其 spring support。
在 spring
XML 文件中配置它,我现在可以 jolokia jvm agent
在我的应用程序启动时开始监听。
我有一个 JAVA 应用程序,我想使用 telegraf
工具监视它的 JMX 属性。
该工具提供 jolikia
插件来监控 JMX 属性。我已将以下依赖项添加到我的应用程序的 pom.xml
文件中,关于 Jolokia documentation 的 Maven
部分:
<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/port 中启动(我可以使用 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
找到解决方案。
我跳过了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/
另一方面,jolokia
的 telegraf
控制台中没有错误。
所有观察都表明 jolokia jvm 库已经启动并成功运行。
我还发现 jolokia jmx documentation 将其用作项目中的依赖项;但由于我不是 JAVA 专家(我正在测试该应用程序),我更喜欢目前使用 javaagent
方法并留待以后使用 study/experience。顺便说一句,它可能会对其他人有所帮助。
编辑 1:
我找到并部署了 jolokia jvm agent
使用其 spring support。
在 spring
XML 文件中配置它,我现在可以 jolokia jvm agent
在我的应用程序启动时开始监听。