Получить атрибуты jmx с помощью jolokia telegraf
У меня есть приложение JAVA, которое я хочу контролировать его атрибуты JMX, используя telegraf
инструмент.
Инструмент обеспечивает 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-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
1 ответ
Нашел решение.
Я пропустил maven
Решение и попробовал javaagent
подход, но я неправильно понял использование javaagent
ранее; Я должен обратиться к jolokia jvm agent ( это помогло):
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
используя свою пружинную опору.
Настройка его в spring
XML-файл, теперь я могу иметь jolokia jvm agent
начать слушать при запуске моего приложения.