Как я программно вывожу данные JMX?

Я хочу быть в состоянии регистрировать все данные JMX, доступные через jconsole. Существует ли способ сделать это программно? Я создаю форму из журналирования системы, и я хочу создать intervaled данные, просматриваемые с некоторым инструментом, подобным jconsole.

Как я пошел бы о выполнении этого?

11
задан Stefan Kendall 25 February 2010 в 17:14
поделиться

2 ответа

java.lang.management.ManagementFactory предоставляет вам доступ к данным JMX.

например.

List<MemoryPoolMXBean> memPoolBeans = ManagementFactory.getMemoryPoolMXBeans();
for (MemoryPoolMXBean mpb : memPoolBeans) {
    System.out.println("Memory Pool: " + mpb.getName());
}

Некоторые образцы доступны по запросу SO: [java] + managementfactory

Хорошее прочтение: https://www.ibm.com/developerworks/library/j-jtp09196/index.html

Для полной реализации подключения к удаленной виртуальной машине:

Map<String,String[]> env = new HashMap<String, String[]>();
env.put( JMXConnector.CREDENTIALS, new String[]{"user","pass"} );
JMXServiceURL address = new JMXServiceURL("service:rmi:///jndi/rmi://host:port/jmxrmi");
JMXConnector connector = JMXConnectorFactory.connect(address,env);
MBeanServerConnection mbs = connector.getMBeanServerConnection();

//get all mbeans
Set<ObjectInstance> beans = mbs.queryMBeans(null,null);

for( ObjectInstance instance : beans )
{
    MBeanInfo info = mbs.getMBeanInfo( instance.getObjectName() );
}

Из информации вы можете запросить имена и атрибуты объектов по желанию.

20
ответ дан 3 December 2019 в 04:13
поделиться

Я использовал этот клиент JMX командной строки в качестве отправной точки, когда я хотел сделать то же самое.

5
ответ дан 3 December 2019 в 04:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: