JMXベースのモニタリングを5分で実現
2344 ワード
JMX 初期はJ 2 EEの一部であるため、開発が「重い」という感じがし、多くのJavaプログラマーが自ら「軽量級」の案を実現することを選んだ.今日に至るまで、優れたオープンソースプロジェクトを借りて、JMXも「軽い」ことができるようになった.
pojo-mbeanを使用してMBeanを宣言
pojo-mbeanはAnnotationを使用してMBeanを宣言し、多くのJMX仕様で要求されているくどいコードを省き、どれだけくどいかはここを参照してください.例えば、ManagableServerはMBeanとして宣言することを望んでいます.2つのステップしかありません.
注釈
登録
実行後、jconsoleでパブリッシュされたMBeanを表示できます.
jconsoleが監視に対する要求を満たすことができれば、以下の内容はもう見る必要はありません.
jolokiaを使用してMBeanにアクセス
jconsoleはJDKが持っている無料の仕事としてはやはり強力で、JVMの最も基本的な監視能力を提供しているが、デフォルトのRMI通信方式は安全上の理由で使用が制限される可能性がある.jololokiaはHTTP+JSONを通じてMBeanにアクセスすることを実現し、この問題をよく解決した.コードを追加する必要がなく使用することができる.起動コマンドで-javaagentオプションを指定するだけで実現できます.
jolokiaが提供するjavascript APIを使用すると、図のような超軽量のweb consoleを作成できます.
jmxetricを使用してGangliaと統合
本当にアプリケーションを満たすweb consoleを開発するのは5分ではないに違いない.専門的な監視プラットフォームには多くの使用可能なものがあり、Gangliaはその一つである.問題のように、jmxetricはGangliaとの統合ソリューションを提供し、コードを追加する必要がなく、実現する2つのステップは:
データ収集ポイントの宣言
起動時(javaagent)ロード
jmxetric-0.0.6でwireformat 31 xをtrueに設定するにはjavaagent optionでのみ有効にするにはissue 25を参照してください.
Gangliaでの効果は次のとおりです.
終わりの言葉
細部は悪魔だ!「5分」は少しタイトル党ですが、豊富なオープンソース資源は確かにJMXの使用を非常に容易にしました.完全なDemoはここにあります.もっともっと良いアイデアを期待しています.
pojo-mbeanを使用してMBeanを宣言
pojo-mbeanはAnnotationを使用してMBeanを宣言し、多くのJMX仕様で要求されているくどいコードを省き、どれだけくどいかはここを参照してください.例えば、ManagableServerはMBeanとして宣言することを望んでいます.2つのステップしかありません.
注釈
@MBean(objectName="jsmx:type=Demo")
class ManagableServer {
@ManagedAttribute
public long getCount() {...}
@ManagedAttribute
public int getGauge() {...}
@ManagedOperation
public void shutdown() {...}
}
登録
ManagableServer mBean = new ManagableServer();
new MBeanRegistration(mBean).register();
実行後、jconsoleでパブリッシュされたMBeanを表示できます.
jconsoleが監視に対する要求を満たすことができれば、以下の内容はもう見る必要はありません.
jolokiaを使用してMBeanにアクセス
jconsoleはJDKが持っている無料の仕事としてはやはり強力で、JVMの最も基本的な監視能力を提供しているが、デフォルトのRMI通信方式は安全上の理由で使用が制限される可能性がある.jololokiaはHTTP+JSONを通じてMBeanにアクセスすることを実現し、この問題をよく解決した.コードを追加する必要がなく使用することができる.起動コマンドで-javaagentオプションを指定するだけで実現できます.
java -javaagent:/path/to/jolokia-jvm-jdk6-x.xx-agent.jar=port=7777,host=localhost -cp ...
jolokiaが提供するjavascript APIを使用すると、図のような超軽量のweb consoleを作成できます.
jmxetricを使用してGangliaと統合
本当にアプリケーションを満たすweb consoleを開発するのは5分ではないに違いない.専門的な監視プラットフォームには多くの使用可能なものがあり、Gangliaはその一つである.問題のように、jmxetricはGangliaとの統合ソリューションを提供し、コードを追加する必要がなく、実現する2つのステップは:
データ収集ポイントの宣言
<jmxetric-config>
<jvm process="JSMX" />
<sample delay="10">
<mbean name="jsmx:type=Demo" pname="Demo">
<attribute name="count" type="int32" pname="Count" />
<attribute name="gauge" type="int32" pname="Gauge" />
</mbean>
</sample>
<ganglia hostname="localhost" port="8649" mode="multicast" wireformat31x="true" />
</jmxetric-config>
起動時(javaagent)ロード
java -javaagent:/path/to/jmxetric-0.0.x.jar=config=etc/jmxetric.xml,wireformat31x=true -cp ...
jmxetric-0.0.6でwireformat 31 xをtrueに設定するにはjavaagent optionでのみ有効にするにはissue 25を参照してください.
Gangliaでの効果は次のとおりです.
終わりの言葉
細部は悪魔だ!「5分」は少しタイトル党ですが、豊富なオープンソース資源は確かにJMXの使用を非常に容易にしました.完全なDemoはここにあります.もっともっと良いアイデアを期待しています.