さて、3つほどシステムにアクセスして状態を取得してどうのこうのというツールやコマンドの情報をかきましたが、これを自作できないか?と思う人がいると思います。
そして、自作できちゃいます。(さすがにコアな部分はNativeのプログラムにお任せすることになりますけど。)
では、やり方の概要
1:対象のプロセスにアクセスする。(いろんなやり方がある。)
2:MBeanServerConnectionを取得する。(MBeanServerでも良い。)
3:対象のBeanにアクセスして関数を実行したりいろいろする。
3で対象になるになるBeanとしては、次のものがあります。
・JMXにあらかじめ登録しているBean
・HotSpotDiagnostic(heapDumpを実行したりVMのオプションを書き換える)
・java.langに設定されているManagementFactoryから取得できるメモリー状態、CPU状態等のシステムBean
これらです。
例としてはこんな感じ
// JMXにつなぐ。
JMXServiceURL url =
new JMXServiceURL("service:jmx:rmi:///jnki/rmi://:9999/test");
JMXConnector connector = JMXConnectorFactory.connect(url);
// MBeanServerConnection取得
MBeanServerConnection mbeanserver = connector.getMBeanServerConnection();
// 一覧取得そして表示
Set<ObjectInstance> mbeans = mbeanserver.queryMBean(null, null);
for(ObjectInstance objInst : mbeans) {
System.out.println(objInst);
}
0 件のコメント:
コメントを投稿