Доступны следующие утилиты командной строки JMX:
- jmxterm - кажется, наиболее полнофункциональная утилита.
- cmdline-jmxclient - используется в проекте WebArchive, кажется, очень голым (и, похоже, с 2006 года разработки не было)
- Groovy script и JMX - предоставляют действительно мощную функциональность JMX, но требуют настройки groovy и других библиотек.
- Функциональность командной строки JManage - (недостатком является то, что для выполнения команд прокси требуется работающий сервер JManage)
Пример Groovy JMX:
import java.lang.management.*
import javax.management.ObjectName
import javax.management.remote.JMXConnectorFactory as JmxFactory
import javax.management.remote.JMXServiceURL as JmxUrl
def serverUrl = 'service:jmx:rmi:///jndi/rmi://localhost:9003/jmxrmi'
String beanName = "com.webwars.gameplatform.data:type=udmdataloadsystem,id=0"
def server = JmxFactory.connect(new JmxUrl(serverUrl)).MBeanServerConnection
def dataSystem = new GroovyMBean(server, beanName)
println "Connected to:\n$dataSystem\n"
println "Executing jmxForceRefresh()"
dataSystem.jmxForceRefresh();
Пример cmdline-jmxclient:
Если у вас есть
- MBean: com.company.data:type=datasystem,id=0
С помощью операции под названием:
Затем вы можете написать простой сценарий bash (при условии, что вы загрузили cmdline-jmxclient-0.10.3.jar и поместили в тот же каталог, что и ваш сценарий):
#!/bin/bash
cmdLineJMXJar=./cmdline-jmxclient-0.10.3.jar
user=yourUser
password=yourPassword
jmxHost=localhost
port=9003
#No User and password so pass '-'
echo "Available Operations for com.company.data:type=datasystem,id=0"
java -jar ${cmdLineJMXJar} ${user}:${password} ${jmxHost}:${port} com.company.data:type=datasystem,id=0
echo "Executing XML update..."
java -jar ${cmdLineJMXJar} - ${jmxHost}:${port} com.company.data:type=datasystem,id=0 jmxForceRefresh
Я разработал jmxfuse, который предоставляет JMX Mbeans как файловую систему Linux FUSE с функциональностью, аналогичной / proc fs. Он полагается на Jolokia как на мост к JMX. Атрибуты и операции доступны для чтения и записи.
http://code.google.com/p/jmxfuse/
Например, чтобы прочитать атрибут:
написать атрибут:
для вызова операции:
источник
Плагин Syabru Nagios JMX предназначен для использования с Nagios, но не требует Nagios и очень удобен для использования командной строки:
источник
Возможно, проще всего написать это на Java
Это будет компилироваться в один .class и не требует никаких зависимостей на сервере или какой-либо сложной упаковки maven.
назови это с
источник
Немного рискованно, но вы можете запустить команду curl POST со значениями из формы из консоли JMX, ее URL-адресом и HTTP-аутентификацией (если требуется):
Осторожно: индекс метода может измениться при изменении программного обеспечения. И реализация веб-формы может измениться.
Вышеупомянутое основано на источнике страницы службы JMX для операции, которую вы хотите выполнить:
Источник формы:
источник
HttpURLConnection
и могу подтвердить, что это работает. (кстати,submit=Invoke
не нужно)rmi
, и вот я вижуhttp
. Означает ли это, что сервер должен быть настроен для поддержки запросов jmxhttp
?Взгляните на JManage . Он может выполнять методы MBean и получать / устанавливать атрибуты из командной строки .
источник
Вы можете также взглянуть на jmx4perl . Он обеспечивает доступ без Java к MBeans удаленного сервера Java EE. Однако на целевой платформе необходимо установить небольшой сервлет агента, который обеспечивает спокойный доступ к JMX через HTTP с полезной нагрузкой JSON. (Версия 0.50 добавит режим без агента, реализовав прокси JSR-160).
Преимущества заключаются в быстром запуске по сравнению с запуском локальной Java JVM и простоте использования. jmx4perl поставляется с полным набором модулей Perl, которые можно легко использовать в ваших собственных скриптах:
Вы также можете использовать псевдоним для общих комбинаций MBean / Attribute / Operation (например, для большинства MXBean-компонентов). Для дополнительных функций (Nagios-Plugin, доступ к сложным типам атрибутов в стиле XPath и т. Д.), Пожалуйста, обратитесь к документации jmx4perl.
источник
Ответ @Dougnukem мне очень помог. Я использовал подход Groovy (используя Groovy 2.3.3).
Я внес некоторые изменения в код Dougnukem. Это будет работать с Java 7 и будет печатать два атрибута в стандартный вывод каждые 10 секунд.
Скомпилируйте этот код в jar с помощью maven-compiler-plugin, поэтому вам не потребуется установка groovy, только groovy-all.jar. Ниже приведено определение соответствующего плагина и его зависимости.
Оберните его битой или оболочкой, и он выведет данные на стандартный вывод.
источник
Я не уверен в среде, подобной bash. Вы можете попробовать несколько простых программ-оболочек на Java (с программными аргументами), которые вызывают ваши MBeans на удаленном сервере. Затем вы можете вызвать эти оболочки из сценария оболочки
Если вы можете использовать что-то вроде Python или Perl, вас может заинтересовать JSR-262, который позволяет вам предоставлять операции JMX через веб-службы. Это планируется включить в Java 7, но вы можете использовать релиз-кандидат эталонной реализации.
источник