Coherenceには、JMX(Java Management Extensions)APIを使用してリソースを管理および監視する機能があります。JMXは、Javaアプリケーションやサービスを管理および監視するためのJava標準であり、Java対応リソースを管理する一般的なソリューションを構築するための管理アーキテクチャ、設計パターン、APIおよびサービスを定義します。この項は、読者がJMXの用語に習熟していることを前提としています。JMXの経験がない場合は、次の記事を参照してください。
http://java.sun.com/developer/technicalArticles/J2SE/jmx.html
Coherenceクラスタ・サービスで登録されている様々なMBeanタイプの詳細は、Oracle Coherence Java APIリファレンスのcom.tangosol.net.management.Registryインタフェース、または付録E「Coherence MBeanのリファレンス」を参照してください。
| 注意:Coherence Enterprise Edition以上では、クラスタ化されたJMXがサポートされます。これにより、任意のメンバーがクラスタ全体のJMXの統計にアクセスできるようになります。Coherence Standard Editionでは、ローカルのJMX情報のみ提供されます。 | 
この章は次の各項で構成されています。
Coherenceの管理フレームワークは一般に、Coherenceオペレーション・オーバーライド・ファイル(tangosol-coherence-override.xml)にある<management-configuration>要素内で構成します。Coherence管理フレームワークに構成できる各要素の詳細は、「management-config」を参照してください。
この項は、次のトピックで構成されています。
JMX管理は、1つ以上のノードを、その他すべてのクラスタ・ノードの管理オブジェクトを管理するMBeanサーバーをホストするように構成することによって有効になります。専用のJMXクラスタ・メンバーを使用すると、1つ1つのクラスタ・メンバーにJMXソフトウェアがロードされることはありませんが、1つのJMXメンバーに問題が発生してもフォルト・トレランスは依然として提供されるため、専用のJMXクラスタ・メンバーの使用は一般的なパターンとなっています。
クラスタでのJMX管理は、デフォルトで無効になっています。JMX管理を有効にするには、オペレーション・オーバーライド・ファイルの<management-config>要素内に<managed-nodes>要素を追加します。<managed-nodes>要素は、クラスタ・ノードのJVMにインプロセスMBeanサーバーを設定するかどうか、また設定する場合は、そのノードに他ノードの管理オブジェクトの管理を許可するかどうかを指定します。次の例では、現在のクラスタ・ノード上のMBeanサーバーを有効にして、ローカルとリモートの両方の管理オブジェクトの管理に使用するよう設定します。
<coherence>
   <management-config>
      <managed-nodes>all</managed-nodes>
   </management-config>
</coherence>
<managed-nodes>要素では、次の値がサポートされます。
none: MBeanサーバーはインスタンス化されません。
local-only: そのクラスタ・ノードにローカルな(つまり、同じJVM内の)MBeanのみを管理します。
remote-only: リモートで管理できる他のクラスタ・ノードのMBeanを管理します。<allowed-remote-management>サブ要素を参照してください。このオプションには、Coherence Enterprise Edition以降が必要です。
all: ローカルとリモートの両方で管理できるクラスタ・ノードを管理します。このオプションには、Coherence Enterprise Edition以降が必要です。
デフォルトでは、クラスタ内のすべてのノードでリモートのMBeanサーバーによるそのMBeanの管理が許可されます。特定のノードのMBeanのリモート管理を制限するには、<allow-remote-management>要素をfalseに設定する必要があります。次の例では、あるノードでそのMBeanがリモートのMBeanサーバーに管理されないよう制限します。
<coherence>
   <management-config>
      <allow-remote-management>false</allow-remote-management>
   </management-config>
</coherence>
<managed-nodes>要素および<allow-remote-management>要素の値もJavaシステム・プロパティを使用して設定できます。
-Dtangosol.coherence.management=all -Dtangosol.coherence.management.remote=true
Coherence管理フレームワークでは、MBeanをMBeanサーバーに登録する前にそれらのMBeanをフィルタできます。すぐに使用できるMBeanフィルタが提供されており、カスタムのフィルタを必要に応じて作成することもできます。組み込まれているMBeanフィルタ(com.tagosol.net.management.ObjectNameExcludeFilter)は、標準のRegexパターンを使用するJMXオブジェクト名に基づいて、MBeanが登録されないように除外する場合に使用します。デフォルトの構成では、このフィルタによっていくつかのプラットフォームMBeanが管理フレームワークに登録されないように除外されます。MBeanフィルタは、オペレーション・オーバーライド・ファイルの<management-config>要素内の<mbean-filter>要素を使用して定義します。
次の例は、すぐに使用できる構成を示しています。
<mbean-filter>
   <class-name>com.tangosol.net.management.ObjectNameExcludeFilter</class-name>
   <init-params>
      <init-param>
         <param-type>string</param-type>
         <param-value>
              .*type=Service,name=Management,.*
              .*type=Platform,Domain=java.lang,subType=ClassLoading,.*
              .*type=Platform,Domain=java.lang,subType=Compilation,.*
              .*type=Platform,Domain=java.lang,subType=MemoryManager,.*
              .*type=Platform,Domain=java.lang,subType=Threading,.*
         </param-value>
      </init-param>
   </init-params>
</mbean-filter>
管理サービスまたはプラットフォームMBeanを有効にするには、<param-value>要素内の名前のリストから対応するオブジェクト名を削除します。特定のMBeanを登録されないように除外するには、そのMBeanオブジェクト名をリストに追加します。この除外リストは、tangosol.coherence.management.exclude Javaシステム・プロパティを使用して入力することもできます。
Coherence管理フレームワークでは、管理情報の待機時間を制御するための、<refresh-expiry>、<refresh-policy>および<refresh-timeout>要素が用意されています。これらの要素は、<management-config>要素内で定義し、一緒に設定する必要があります。
<refresh-expiry>要素は、リモート・ノードの管理情報をリモートで取得する最小間隔を指定します。この要素の値は、次の形式で指定する必要があります。
[\d]+[[.][\d]+]?[MS|ms|S|s|M|m|H|h|D|d]?
前述の文字は(左から右へ)それぞれ、次の時間間隔の単位を示しています。
MSまたはms(ミリ秒)
Sまたはs(秒)
Mまたはm(分)
Hまたはh(時)
Dまたはd(日数)
値に単位が含まれていない場合は、ミリ秒が単位として適用されます。デフォルト値は1sです。このリフレッシュ・ポリシーは、tangosol.coherence.management.refresh.expiry Javaシステム・プロパティを使用して設定することもできます。
<refresh-policy>要素は、リモート管理情報のリフレッシュに使用されるメソッドの指定に使用します。各ポリシーで異なるリフレッシュ・アルゴリズムが使用されるため、MBeanの使用パターンに基づいて待機時間を向上できます。表34-1は、各ポリシーを説明しています。
表34-1 リフレッシュ・ポリシー
| 設定 | 説明 | 
|---|---|
| 
 | 有効期間が経過した後、リクエストされる前に、MBeanが前の使用パターンに基づいてリフレッシュされます。この設定は、ネットワーク消費量を多少増加させることで管理情報の待機時間を低減します。MBeanが繰返しまたはプログラム的にアクセスされる場合に最適です。 | 
| 
 | データがアクセスされた後、それぞれのMBeanがリフレッシュされます。この方法では最適なレスポンス・タイムが確保されます。ただし返される情報は、最後のリフレッシュ時刻からのオフセットになります。 | 
| 
 | MBeanがアクセスされ、最後のリフレッシュから有効期間が経過すると、それぞれのMBeanがリモート・ノードからリフレッシュされます。この設定は、MBeanがランダムなパターンでアクセスされる場合に最適です。 | 
このリフレッシュ・ポリシーは、tangosol.coherence.management.refresh.policy Javaシステム・プロパティを使用して設定することもできます。
<refresh-time>要素は、MBean情報のリフレッシュ時に管理ノードがリモート・ノードからのレスポンスを待つ期間の指定に使用します。この値は<refresh-expiry>値より小さくする必要があります。この要素の値は、次の形式で指定する必要があります。
[\d]+[[.][\d]+]?[MS|ms|S|s|M|m|H|h|D|d]?
前述の文字は(左から右へ)それぞれ、次の時間間隔の単位を示しています。
MSまたはms(ミリ秒)
Sまたはs(秒)
Mまたはm(分)
Hまたはh(時)
Dまたはd(日数)
値に単位が含まれていない場合は、ミリ秒が単位として適用されます。デフォルト値は250msです。このリフレッシュ・ポリシーは、tangosol.coherence.management.refresh.timeout Javaシステム・プロパティを使用して設定することもできます。
Coherence MBeanにアクセスする前に、少なくとも1つのCoherenceノードでJMX管理を有効にしておく必要があります。「Coherenceの管理フレームワークの構成」を参照してください。
Coherence MBeanの表示および操作には、JConsoleユーティリティとHTMLアダプタWebアプリケーションの2つのオプションを使用できます。
JConsoleユーティリティ(JDKの/binディレクトリにある)をCoherence MBeanの表示と操作に使用できます。これを実行するには、Coherenceノードの起動時に次のシステム・プロパティを設定します。
-Dcom.sun.management.jmxremote -Dtangosol.coherence.management=all -Dtangosol.coherence.management.remote=true
ノードが起動したら、JConsoleユーティリティを起動して、Coherenceコマンドライン・アプリケーションを実行しているJVMプロセスへの新しい接続を開きます。
HTMLアダプタWebアプリケーションでは、JMX参照実装(jmxtools.jar)の一部として同梱されているHTTPアダプタ(HtmlAdaptorServer)が使用されます。このWebアプリケーションを実行するには、次のようにCoherenceノードを起動します。
Windowsの場合:
java -cp jmxri.jar;jmxtools.jar;coherence.jar -Dtangosol.coherence.management=all -Dtangosol.coherence.management.remote=true com.tangosol.net.CacheFactory
Unixの場合:
java -cp jmxri.jar:jmxtools.jar:coherence.jar -Dtangosol.coherence.management=all -Dtangosol.coherence.management.remote=true com.tangosol.net.CacheFactory
Coherenceコマンドライン・アプリケーションが起動したら、jmx 8082と入力します。これによって、クラスタ・ノードのJVMでhttp://localhost:8082上にHTTPアダプタが起動され、そのクラスタ・ノードがMBeanServerホストになります。
Coherenceには、クラスタ・ノードを専用のMBeanサーバー・ホストとして起動するためのプログラムが用意されています。このプログラムは、SunのJMX RIで提供されるRMIまたはHTTPサーバーを介してJMX Remote APIを使用することにより、Coherence MBeanへのアクセスを提供しています。RMIおよびHTTPポートは構成可能で、ファイアウォールを経由してアクセスできます。次のコマンドを使用してサーバーを起動します(ここでは形式上複数行に分けて表示してありますが、実際は単一のコマンドとして1行に入力します)。
java -Dtangosol.coherence.management=all 
     -Dcom.sun.management.jmxremote.ssl=false 
     -Dcom.sun.management.jmxremote.authenticate=false 
     -cp coherence.jar;jmxri.jar;jmxtools.jar 
     com.tangosol.net.management.MBeanConnector [-http -rmi]
JMX RMIを介したアクセスを許可するには、-rmiフラグを指定します。HTTPおよびWebブラウザを介したアクセスを許可するには、-httpフラグを指定します。両方のフラグを指定することも可能ですが、ノードの起動には少なくとも1つが必要です。
表34-2は、JMX RMIの構成に使用できるオプションのプロパティについて説明しています。
表34-2 JMX RMIの構成に使用できるオプションのプロパティ
| プロパティ | 説明 | 
|---|---|
| tangosol.coherence.management.remote.host | JMXサーバーがバインドするホスト。デフォルトは | 
| tangosol.coherence.management.remote.registryport | JMX RMIのレジストリに使用するポート。デフォルトは | 
| tangosol.coherence.management.remote.connectionport | JMX RMIの接続に使用するポート。デフォルトは | 
表34-3は、HTTPの構成に使用できるオプションのプロパティについて説明しています。
表34-3 HTTPの構成に使用できるオプションのプロパティ
| プロパティ | 説明 | 
|---|---|
| tangosol.coherence.management.remote.httpport | HTTPの接続に使用するポート。デフォルトは | 
JConsoleを使用してデフォルト設定で接続するには、次のコマンドを使用します。
jconsole service:jmx:rmi://localhost:3000/jndi/rmi://localhost:9000/server
HTTPを使用してデフォルト設定で接続するには、次のURLを使用します。
http://localhost:8888
| 注意:認証およびSSLを使用したセキュアなアクセスを設定するには、次のJMXエージェントのドキュメントを参照してください。 Java 1.5の場合: 
 Java 1.6の場合: 
 |