получить атрибуты 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

person Zeinab Abbasimazar    schedule 14.01.2018    source источник


Ответы (1)


Решение найдено.

Я пропустил решение 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 запущена и успешно работает.

Я также нашел документацию по jmx jolokia для использования ее в качестве зависимостей в проекте; но поскольку я не эксперт по JAVA (я тестирую приложение), я предпочитаю в настоящее время использовать подход javaagent и оставить его для будущего изучения/опыта. Кстати, это может помочь другим.

ИЗМЕНИТЬ 1:

Я нашел и развернул jolokia jvm agent, используя его поддержку Spring.

Настроив его в spring XML-файле, я теперь могу jolokia jvm agent начать прослушивание при запуске моего приложения.

person Zeinab Abbasimazar    schedule 15.01.2018