11

jconsoleを介してアクセス可能なすべてのJMXデータをログに記録できるようにしたい。これをプログラムで行う方法はありますか?システムのロギングの形式を構築していて、jconsoleに似たツールで表示可能な間隔のあるデータを作成したいと思います。

どうすればこれを行うことができますか?

4

2 に答える 2

20

java.lang.management.ManagementFactory を使用すると、JMXデータにアクセスできます。

ig

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

リモート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() );
}

情報から、必要に応じてオブジェクト名と属性を照会できます。

于 2010-02-25T17:40:26.273 に答える
5

私は同じことをしたいときに、このコマンドライン JMX クライアントを出発点として使用しました。

于 2010-02-25T21:34:33.113 に答える