2010-02-25 13 views
11

Chcę móc rejestrować wszystkie dane JMX dostępne przez jconsole. Czy istnieje sposób, aby to zrobić programowo? Buduję formę rejestrowania systemu i chcę, aby dane interwałowe były widoczne za pomocą narzędzia podobnego do jconsole.Jak programowo zrzutu danych JMX?

Jak miałbym to zrobić?

Odpowiedz

20

java.lang.management.ManagementFactory daje dostęp do danych JMX.

i.g.

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

Niektóre próbki są dostępne na SO zapytania: [Java] + managementfactory

warto przeczytać: https://www.ibm.com/developerworks/library/j-jtp09196/index.html

Dla pełnej realizacji podłączenia do zdalnego VM:

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()); 
} 

Od informacje, możesz zapytać o nazwy obiektów i atrybuty według potrzeb.

+0

To działa, ale czy istnieje prosty sposób na uzyskanie wszystkich wartości ze wszystkich nazw obiektów? Teraz wydaje mi się, że muszę pobrać na MBeanServerConnection, a następnie przesyłać każdą wartość osobno za pomocą mbs.getAttributes (..). Czy istnieje lepszy sposób? –

+0

OK, mogę pobrać wszystkie ObjectNames za pomocą zapytaniaMBeans, ale nadal nie mogę automatycznie uzyskać wszystkich atrybutów. –

+0

: P. Teraz mogę sprawdzać wszystkie atrybuty, ale sposób w jaki to robisz jest wyjątkowo okrężny. Zmienię twoją odpowiedź i sprawię, że będzie bardziej kompletna, a potem ją zaakceptuj. –

5

Użyłem tego command line JMX client jako punktu wyjścia, kiedy chciałem zrobić to samo.

+0

Wygląda na to, że naprawdę chcę 10.4, dla polecenia "Atrybuty", ale link na stronie jest uszkodzony. Wszelkie pomysły, w których mogę znaleźć lustro? –

+0

Myślę, że to jest wersja, którą mam. Możesz go pobrać tutaj: http://drop.io/jmxclient – Mark

Powiązane problemy