JMXによるモニタリング

基礎知識とか細かい設定とか置いといて、おきらくごくらくな感じで、とりあえず動かしてみた。

デフォルトで用意されているMBeanだけでも、スレッドダンプやメモリの使用状況をリモートから監視できるので、結構いい感じです。

参考

ローカルマシン上でのモニタリング。

JSE6より前の場合は、VMのオプションとして、以下の設定を行う必要があります。JSE6以降では、デフォルトとなっています。

com.sun.management.jmxremote

リモートマシンのモニタリング

ネットワークを介してJMXサーバを公開するためには、VMのオプションとして JMX のための RMI 用ポートを指定する必要があります。

com.sun.management.jmxremote.port=<ポート番号>

パスワードの設定や、SSLの設定をしたほうがセキュリティ上好ましいのですが、そのような必要性がない場合は、以下の設定をすることにより、セキュリティ設定を外すことができます。

com.sun.management.jmxremote.authenticate=false
com.sun.management.jmxremote.ssl=false

ということで、リモートから監視したいJVMを起動するときに、とりあえず以下のようなVMオプションつけとけということですね。(セキュリティ上問題あるので、このように暗号化や認証を省略するのは推奨はできませんが)

-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=<ポート番号>
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false

JConsole

javaと同じフォルダに、jconsole というアプリがあり、GUIJMXサーバにアクセスできます。

ローカルマシン上のJMXエージェントにアクセスする場合は、アクセス可能なローカルプロセスの一覧が出るので、それを選択すればOKです。リモートマシンの場合は、

<ホスト名>:<ポート>

もしくは、

service:jmx:rmi:///jndi/rmi://<ホスト名>:<ポート番号>/jmxrmi

でアクセスします。