2016-08-15 11 views
0

Есть ли существующие настройки/агент/код, которые позволят мне собирать, и легко пересылать данные JMX на удаленный сервер: порт?отправить данные JMX на удаленный сервер (JMX-форвардер?)

java -DjmxForwardAddr=x.x.x.x -DjmxForwardPort=12345 ... ? 

Контекст: Я использую Splunk для поиска корпоративных данных/отчетности, и хотел бы настроить его с помощью JMX слушателя (легкая часть) и настроить все виртуальные машины как-то просто доставить эти данные, как JSON/XML/etc для Splunk.

Я ищу подход «push», а не метод «pull», где я выделяю и управляю тысячами портов и опросу их.

У нас есть много приложений, и я бы хотел, чтобы вы просто настраивали запуск, чтобы включить это.

Java и JMX - это не то, с чем у меня есть много опыта, поэтому, возможно, я ищу неправильные условия/задаю неправильные вопросы. Я открыт для любых лучших способов приблизиться к этому.

Редактировать 2016/09/01:

Я не смог найти что-нибудь маленькое и надежное, чтобы сделать это. Благодаря исследованиям я также стал беспокоиться об этом подходе (работает как агент Java), поскольку любое неправильное поведение может негативно повлиять на родительскую программу.

Принимая внешний подход, я, хотя jmxtrans, подойдет к счету. Он работал несколько, но все равно потребовался бы написание пользовательского Output Writer для очистки вывода для Splunk.

В настоящее время я продвигаюсь вперед с помощью поставляемого по сети Splunk solution, который опроса настраиваемого списка целей и глотает эти данные. Не всегда можно получить то, что вы хотите (если вы не напишете его сами ...)

ответ

0

JMX API предоставляет способ создания MBeans, которые генерируют уведомления.

Посмотрите https://docs.oracle.com/javase/8/docs/api/javax/management/NotificationEmitter.html и https://docs.oracle.com/javase/8/docs/api/javax/management/NotificationBroadcaster.html

+0

Это действительно полезно, но я искал что-то уже построенное. –

+0

Вы имеете в виду что-то вроде appdynamics? –

+0

возможно, хотя я не знаком с этим. CA APM (wily/introscope) имеет эту функциональность, в которой он отправляет метрики на центральный сервер. –

0

я столкнулся с подобными проблемами с Zabbix. Он использовал для чтения (вытягивания) данных JMX из приложения Java, открывающего огромное количество портов. Здесь проблема заключалась в том, что в производственной среде нет гарантии, что эти порты будут за брандмауэром или нет. Чтобы решить эту проблему, мы использовали Jolokia. Jolokia работает как другое приложение (если вы используете tomcat и т. Д.) Вместе с вашим приложением. Или, если ваше приложение представляет собой обычное Java-приложение с ванилью, оно может использоваться как jar в пути к классу (т. Е. Очень просто интегрироваться с существующими Java-приложениями). Он предоставляет данные JMX через HTTP (JSON). Итак, если у Splunk есть любой плагин, который может читать данные по HTTP, вам будет хорошо идти.

+0

спасибо за предложение - он выглядит очень удобно. хотя с этим я должен был бы также внедрить поисковую систему для получения данных. Я отметил Jolokia как будущую тему исследования, если я слишком недовольна решением поставщика. –

+0

Для zabbix я использовал сторонний шлюз для выполнения этой работы. https://bitbucket.org/ryanrupp/zabbix-java-gateway/wiki/Home. Не уверен, что что-то похожее для Splunk. –