JMX エージェントへの明示的な接続
Java Management Extensions (JMX) テクノロジを使えば、ローカルまたはリモートの Java Virtual Machine (JVM) 上で実行されている任意の Java テクノロジベースのアプリケーション (Java アプリケーション) を監視および管理できます。Java アプリケーションを Java Platform, Standard Edition (Java SE プラットフォーム) Version 6 上で実行すると、監視および管理対象として JMX エージェントによって自動的に公開されます。Java アプリケーションを Java 2 Platform, Standard Edition (J2SE プラットフォーム) 5.0 上で実行している場合は、アプリケーション起動時に com.sun.management.jmxremote.* システムプロパティーを設定することで、監視および管理対象として手動で公開できます。これらのシステムプロパティーを設定するか、あるいは Java SE プラットフォームのバージョン 6 上でアプリケーションを実行すると、プラットフォームの「アウトオブボックス」の監視および管理機能が有効になります。自動的に、JVM ソフトウェア内のプラットフォーム MBean サーバーが有効になり、適切に設定された任意の JMX クライアントアプリケーションの管理対象としてアプリケーションを公開するための MBean が、そのサーバーに登録されます。VisualVM はそのような JMX クライアントアプリケーションの 1 つです。
注 -JMX テクノロジ、MBean、プラットフォーム MBean サーバー、および Java VisualVM を使って MBean を監視および管理する方法の簡単な概要については、「Java VisualVM MBeans Tab」ページを参照してください。Java SE プラットフォームのアウトオブボックスの監視および管理機能の概要については、「Java SE 監視および管理ガイド」の「JMX テクノロジを使用する監視と管理」を参照してください。
明示的な JMX 接続が必要になる場合
前述したように、Java VisualVM は、バージョン 6 の Java SE プラットフォーム上で実行されている Java アプリケーションや、バージョン 5.0 上で正しいシステムプロパティーを指定して起動された Java アプリケーションを自動的に検出して接続します。ただし、ターゲットとなる Java アプリケーション内で実行されている JMX エージェントを Java VisualVM が自動的に発見して接続できない場合があるため、明示的な JMX 接続を作成する方法も Java VisualVM に追加されました。
JMX エージェントおよびそれが公開する Java アプリケーションを Java VisualVM が自動的に発見しない場合を、次に示します。
- ターゲットアプリケーションが J2SE 5.0 プラットフォーム上で実行されており、-Dcom.sun.management.jmxremote* プロパティーが指定されなかった。
- Java VisualVM と同じホスト上でターゲットアプリケーションが実行されているが、そのアプリケーションを起動したユーザーが Java VisualVM を起動したユーザーとは異なる。Java VisualVM が実行中のアプリケーションを発見する際に使用するのは jps ツールですが、このツールで発見できるのは、Java VisualVM ツールを起動したユーザーと同じユーザーによって起動された Java アプリケーションだけです。
- ターゲットアプリケーションが実行されているリモートホスト上で、jstatd が実行されていないか、実行されているが異なるユーザーによって起動された。jstatd デーモンが提供するインタフェースを使えば、そのデーモンが動作するホスト上の Java アプリケーションに、リモート監視アプリケーションから接続できるようになります。
明示的な JMX 接続の確立
Java VisualVM から実行中のアプリケーションへの明示的な JMX 接続を確立するには、事前にそのアプリケーションを正しいシステムプロパティーを使って起動しておく必要があります。対象のシステムプロパティーを次に示します。
com.sun.management.jmxremote.port : アプリケーションの公開に使用するポート番号を指定する
com.sun.management.jmxremote.ssl : Secure Sockets Layer (SSL) 暗号化を有効にしてアプリケーションへの接続をセキュリティー保護するかどうかを指定する
com.sun.management.jmxremote.authenticate : 接続をパスワードで保護するかどうかを指定する
ローカル JMX 接続
ここでは、明示的な JMX 接続経由で Java VisualVM をローカルアプリケーションに接続する方法の例を示します。
- J2SE プラットフォームのバージョン 5.0 上で Java アプリケーションを起動しますが、その際、システムプロパティーを設定して Java SE プラットフォームのアウトオブボックスの監視および管理機能を有効にします。それには次に示すコマンドを使用します。
java -Dcom.sun.management.jmxremote.port=3333 \
-Dcom.sun.management.jmxremote.ssl=false \
-Dcom.sun.management.jmxremote.authenticate=false \
YourJavaApp
このコマンドでは、次のように設定された Java SE プラットフォームのアウトオブボックスの監視および管理機能を使って YourJavaApp が起動されます。
- ポート 3333 経由で監視および管理できるようにアプリケーションが公開されます。
- SSL 暗号化は無効化されます。
- パスワード認証は無効化されます。
- 同じマシン上で Java VisualVM を起動します。
- Java VisualVM の「Applications」ウィンドウで「Local」マシンを右クリックし、「Add JMX Connection」を選択します。
- 「Add JMX Connection」ダイアログボックスが開きます。
ホスト名 localhost がすでに設定されています。追加する必要があるのは、監視および管理対象としてアプリケーションを公開する際に使用するポート番号だけです。
- 「OK」をクリックします。JMX 接続が、特殊な JMX 接続アイコン付きでアプリケーションツリー内に表示されます。
- JMX 接続を右クリックし、「Open」を選択します。これで、JMX 接続経由で公開された JVM ソフトウェアを、Java VisualVM 経由で監視および管理できます。
リモート JMX 接続
リモートホスト上で実行されているアプリケーションへの明示的な JMX 接続を確立することもできます。その方法を次に説明します。
- アプリケーションツリーの下にある空白領域のどこかを右クリックし、「Add JMX Connection」を選択します。
- リモート管理を可能にする適切なシステムプロパティーを指定して起動された、実行中の JMX エージェントのマシン名とポート番号を入力します。ここでは、マシン curcuma のポート 2222 上で JMX エージェントが公開されています。
JMX エージェントがユーザー名とパスワードで保護されていることを知っている場合には、「Add JMX Connection」ダイアログでそれらを入力し、資格を保存すべきかどうかを指定します。 資格を保存するようにした場合には、Java VisualVM は再起動時に、セキュリティー資格の再入力をユーザーに要求することなしに、JMX エージェントに自動的に再接続します。
- JMX 接続がセキュリティー保護されているのに、「Add JMX Connection」ダイアログでユーザー名とパスワードを入力しなかった場合には、ユーザー名とパスワードの入力を求めるプロンプトが表示されます。
- 正しいユーザー名とパスワードを知っている場合には、JMX 接続が確立され、その JMX 接続が特殊な JMX 接続アイコン付きでアプリケーションツリー内に表示されます。
- リモート JMX 接続を右クリックし、「Open」を選択します。これで、リモートアプリケーションを JMX 接続経由で監視および管理したり、この接続で公開されている、MBean サーバーに登録された任意の MBean を操作したりできます (「MBeans」タブにアクセスするには、Java VisualVM-MBeans プラグインをインストールする必要がある)。
JMX テクノロジに関するより詳しいドキュメント
JMX テクノロジの詳細や、Java SE プラットフォームの監視および管理の詳細については、次のドキュメントを参照してください。
Java VisualVM ドキュメントの索引に戻る
|