この章では、クラスタ内でJMX管理を有効化および構成する手順を示すほか、Coherence MBeanへのアクセス方法を説明します。
この章には次の項が含まれます:
JMX管理は、tangosol-coherence-override.xmlファイルの<management-config要素内で、または起動時に管理用のシステム・プロパティを設定することで構成します。<management-config要素内で使用可能な各要素の詳細は、『Oracle Coherence開発者ガイド』を参照してください。
この項には、次のトピックが含まれます:
リモートJMX管理では、1つ以上のクラスタ・メンバーがそれぞれMBeanサーバーをホスティングできるようにします。このMBeanサーバーは、すべてのクラスタ・メンバーの管理対象オブジェクトの管理を担当しています。これらのクラスタ・メンバーのMBeanサーバーにアクセスすることで、すべてのクラスタ・メンバーの管理情報が表示されます。専用のJMXクラスタ・メンバーを使用すると、1つ1つのクラスタ・メンバーにJMXソフトウェアがロードされることはありませんが、1つのJMXメンバーに問題が発生してもフォルト・トレランスは依然として提供されるため、専用のJMXクラスタ・メンバーの使用は一般的なパターンとなっています。
クラスタ・メンバーに対するリモートJMX管理を有効にするには、<managed-nodes>要素をallまたはremote-onlyに設定します。次に例を示します。
<?xml version='1.0'?>
<coherence xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xmlns="http://xmlns.oracle.com/coherence/coherence-operational-config"
   xsi:schemaLocation="http://xmlns.oracle.com/coherence/
   coherence-operational-config coherence-operational-config.xsd">
   <management-config>
      <managed-nodes system-property="tangosol.coherence.management">all
      </managed-nodes>
   </management-config>
</coherence>
remote-only設定では、リモートMBeanのみを管理するMBeanサーバーが起動されます。all設定では、リモートMBeanおよびローカル(同一JVM上の)MBeanを管理するMBeanサーバーが起動されます。
オペレーション・オーバーライド・ファイルを使用するかわりに、tangosol.coherence.managementシステム・プロパティを使用してリモートJMX管理を有効にします。次に例を示します。
-Dtangosol.coherence.management=all
ローカルJMX管理では、MBeanサーバーの管理対象がクラスタ・メンバーのローカル(同一JVM上の)MBeanに制約されます。クラスタ・メンバーのMBeanサーバーにアクセスしても、ローカル管理情報しか表示されません。しかし、そのクラスタ・メンバーのMBeanは、リモートJMX管理が有効化されたクラスタ・メンバーによって引き続き管理できます。ローカルJMX管理は一般的に、拡張クライアントまたは一時的なクラスタ・クライアントで使用されます。
クラスタ・メンバーでのローカルJMX管理を有効化するには、<managed-nodes>要素をlocal-onlyに設定します。次に例を示します。
<?xml version='1.0'?>
<coherence xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xmlns="http://xmlns.oracle.com/coherence/coherence-operational-config"
   xsi:schemaLocation="http://xmlns.oracle.com/coherence/
   coherence-operational-config coherence-operational-config.xsd">
   <management-config>
      <managed-nodes system-property="tangosol.coherence.management">local-only
      </managed-nodes>
   </management-config>
</coherence>
オペレーション・オーバーライド・ファイルを使用するかわりに、tangosol.coherence.managementシステム・プロパティを使用してローカルJMX管理を有効にします。次に例を示します。
-Dtangosol.coherence.management=local-only
便宜上、COHERENCE_HOME/bin/cache-serverおよびCOHERENCE_HOME/bin/coherenceの起動スクリプトには、クラスタ・メンバーでJMX管理を有効化するほか、MBeanサーバーへのアクセスも有効化する-jmx引数が含まれています。次に例を示します。
cache-server -jmx
この引数は、スクリプト内で必要に応じて変更できる次のシステム・プロパティを自動的に設定します。このプロパティはデフォルトで、メンバー上のリモートJMX管理を有効化するほか、そのメンバーをリモートで管理できるように設定されています。
-Dcom.sun.management.jmxremote -Dtangosol.coherence.management=all -Dtangosol.coherence.management.remote=true
com.sun.management.jmxremoteシステム・プロパティは、MBeanサーバーへのリモート・アクセスを許可するために必要です。
デフォルトでは、すべてのクラスタ・メンバーのMBeanで、リモートMBeanサーバーによる管理が許可されています。メンバーのMBeanのリモート管理を制限するには、<allow-remote-management>要素をfalseに設定する必要があります。次に例を示します。
<?xml version='1.0'?>
<coherence xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xmlns="http://xmlns.oracle.com/coherence/coherence-operational-config"
   xsi:schemaLocation="http://xmlns.oracle.com/coherence/
   coherence-operational-config coherence-operational-config.xsd">
   <management-config>
      <allow-remote-management
         system-property="tangosol.coherence.management.remote">false
      </allow-remote-management>
   </management-config>
</coherence>
オペレーション・オーバーライド・ファイルを使用するかわりに、tangosol.coherence.management.remoteシステム・プロパティを使用してリモート管理を無効にします。次に例を示します。
-Dtangosol.coherence.management.remote=false
クラスタ・メンバーでのJMX管理を無効化するには、<managed-nodes>要素をnoneに設定します。次に例を示します。
<?xml version='1.0'?>
<coherence xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xmlns="http://xmlns.oracle.com/coherence/coherence-operational-config"
   xsi:schemaLocation="http://xmlns.oracle.com/coherence/
   coherence-operational-config coherence-operational-config.xsd">
   <management-config>
      <managed-nodes system-property="tangosol.coherence.management">none
      </managed-nodes>
   </management-config>
</coherence>
メンバーのJMX管理を無効にしても、そのメンバーのリモート管理は停止されません。次の例では、JMX管理を無効化してメンバーのリモート管理を停止します。
<?xml version='1.0'?>
<coherence xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xmlns="http://xmlns.oracle.com/coherence/coherence-operational-config"
   xsi:schemaLocation="http://xmlns.oracle.com/coherence/
   coherence-operational-config coherence-operational-config.xsd">
   <management-config>
      <managed-nodes system-property="tangosol.coherence.management">none
      </managed-nodes>
      <allow-remote-management
         system-property="tangosol.coherence.management.remote">false
      </allow-remote-management>
   </management-config>
</coherence>
Coherence管理フレームワークでは、MBeanをMBeanサーバーに登録する前にそれらのMBeanをフィルタできます。すぐに使用できるMBeanフィルタが提供されており、カスタムのフィルタを必要に応じて作成することもできます。組み込まれているMBeanフィルタ(com.tagosol.net.management.ObjectNameExcludeFilter)は、標準のRegexパターンを使用するJMXオブジェクト名に基づいて、MBeanが登録されないように除外する場合に使用します。このフィルタは事前の構成に従って、一部のプラットフォームMBeanを管理フレームワークへの登録から除外します。MBeanフィルタは、<mbean-filter>要素を使用して定義します。
次の例は、すぐに使用できる構成を示しています。
...
<mbean-filter>
   <class-name>com.tangosol.net.management.ObjectNameExcludeFilter</class-name>
   <init-params>
      <init-param>
         <param-type>string</param-type>
         <param-value system-property="tangosol.coherence.management.exclude">
              .*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システム・プロパティを使用してMBeanをフィルタ処理します。次に例を示します。
-Dtangosol.coherence.management.exclude=.*type=Service,name=Management,.*
<refresh-expiry>、<refresh-policy>および<refresh-timeout>の各要素は、管理情報の待機時間を制御します。次に例を示します。
<?xml version='1.0'?>
<coherence xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xmlns="http://xmlns.oracle.com/coherence/coherence-operational-config"
   xsi:schemaLocation="http://xmlns.oracle.com/coherence/
   coherence-operational-config coherence-operational-config.xsd">
   <management-config>
      <refresh-policy
         system-property="tangosol.coherence.management.refresh.policy">
         refresh-ahead</refresh-policy>
      <refresh-expiry
         system-property="tangosol.coherence.management.refresh.expiry">1s
      </refresh-expiry>
      <refresh-timeout
         system-property="tangosol.coherence.management.refresh.timeout">250ms
      </refresh-timeout>
   </management-config>
</coherence>
<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システム・プロパティを使用して失効を設定します。次に例を示します。
-Dtangosol.coherence.management.refresh.expiry=2s
<refresh-policy>要素は、リモート管理情報のリフレッシュに使用されるメソッドの指定に使用します。各ポリシーで異なるリフレッシュ・アルゴリズムが使用されるため、MBeanの使用パターンに基づいて待機時間を向上できます。表2-1は、各ポリシーを説明しています。
表2-1 リフレッシュ・ポリシー
| 設定 | 説明 | 
|---|---|
| 
 | 有効期間が経過した後、リクエストされる前に、MBeanが前の使用パターンに基づいてリフレッシュされます。この設定は、ネットワーク消費量を多少増加させることで管理情報の待機時間を低減します。MBeanが繰返しまたはプログラム的にアクセスされる場合に最適です。 | 
| 
 | 各MBeanのリフレッシュはデータがアクセスされた後になります。この方法では最適なレスポンス・タイムが確保されます。ただし返される情報は、最後のリフレッシュ時刻からのオフセットになります。 | 
| 
 | MBeanがアクセスされ、最後のリフレッシュから有効期間が経過すると、各MBeanがリモート・メンバーからリフレッシュされます。この設定は、MBeanがランダムなパターンでアクセスされる場合に最適です。 | 
オペレーション・オーバーライド・ファイルを使用するかわりに、tangosol.coherence.management.refresh.policyシステム・プロパティを使用してポリシーを設定します。次に例を示します。
-Dtangosol.coherence.management.refresh.policy=refresh-expired
<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システム・プロパティを使用してタイムアウトを設定します。次に例を示します。
-Dtangosol.coherence.management.refresh.timeout=500ms
Coherence MBeanにアクセスする前にクラスタ・メンバーでJMX管理を有効化する必要があります。「JMX管理の構成」を参照してください。この項のプロシージャでは、Coherence起動スクリプトと-jmx引数を使用してJMX管理を有効化します。
この項には、次のトピックが含まれます:
Java Visual VMは、JDK(JDK_HOME\bin\jvisualvm)とともに組み込まれた管理ユーティリティで、Coherence MBeanの表示およびCoherence MBeanとのやり取りに使用されます。
Java VisualVMユーティリティを使用してCoherence MBeanにアクセスするには:
COHERENCE_HOME\bin\cache-serverスクリプトを使用してキャッシュ・サーバーを起動し、-jmx引数を指定してそのメンバーに対する管理を有効化します。次に例を示します。
COHERENCE_HOME\bin\cache-server -jmx
JDK_HOME\bin\jvisualvmを起動します。Java VisualVMウィンドウが表示されます。
「Applications」ツリーから、「Local」をクリックして開き(開かれていない場合)、クラスタ・メンバーのプロセスをダブルクリックします。プロセス情報は、このウィンドウの右側にあるプロセス・タブに表示されます。
選択したプロセス・タブで「MBeans」タブをクリックし、Coherenceノードを展開してCoherence MBeanにアクセスします。

JConsoleは、JDK(JDK_HOME\bin\jconsole)とともに組み込まれた管理ユーティリティで、Coherence MBeanの表示およびCoherence MBeanとのやり取りに使用されます。
JConsoleユーティリティを使用してCoherence MBeanにアクセスするには:
COHERENCE_HOME\bin\cache-serverスクリプトを使用してキャッシュ・サーバーを起動し、-jmx引数を指定してそのメンバーに対する管理を有効化します。次に例を示します。
COHERENCE_HOME\bin\cache-server -jmx
JDK_HOME\bin\jconsoleを起動します。Java Monitoring & Management Consoleウィンドウが表示され、「JConsole: 新規接続」ダイアログ・ボックスが表示されます。
「JConsole: 新規接続」ダイアログ・ボックスで「ローカル・プロセス:」をクリックし、クラスタ・メンバーのプロセスを選択します。次に例を示します。

「接続」をクリックします。
Java Monitoring & Management Consoleウィンドウで「MBeans」タブを選択し、Coherenceノードを展開してCoherence MBeanにアクセスします。

HTMLアダプタWebアプリケーションでは、JMX参照実装の一部として同梱されているHTTPアダプタ(HtmlAdaptorServer)が使用されます。このアダプタでは、jmxri.jarとjmxtools.jarライブラリを両方ともクラスパスに含める必要があります。JMX参照実装は、次のページからダウンロードできます。
http://www.oracle.com/technetwork/java/javase/tech/download-jsp-141676.html
HTMLアダプタを使用してCoherence MBeanにアクセスする手順は次のとおりです。
COHERENCE_HOME\bin\coherenceスクリプトを編集して、クラスパスにjmxri.jarとjmxtools.jarを含めます。たとえば、Windowsの場合は次のようにします。
-cp "jmxri-1.2.1.jar;jmxtools-1.2.1.jar;%coherence_home%\lib\coherence.jar"
スクリプトを使用してキャッシュ・ファクトリ・インスタンスを起動し、-jmx引数を指定してメンバー管理を有効化します。次に例を示します。
COHERENCE_HOME\bin\coherence -jmx
キャッシュ・ファクトリ・インスタンスが起動したら、コマンド・プロンプトでjmx 8082と入力します。これにより、クラスタ・メンバーのポート8082でHTTPアダプタが起動します。
Webブラウザで、アダプタにアクセスします。ホスト名とポート8082からなるアドレスを使用します。

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つが必要です。
表2-2は、JMX RMIの構成に使用できるオプションのプロパティについて説明しています。
表2-2 JMX RMIの構成に使用できるオプションのプロパティ
| プロパティ | 説明 | 
|---|---|
| 
 | JMXサーバーがバインドされているホスト。デフォルトは | 
| 
 | JMX RMIのレジストリに使用するポート。デフォルトは | 
| 
 | JMX RMI接続に使用するポート。デフォルトは | 
表2-3は、HTTPの構成に使用できるオプションのプロパティについて説明しています。
表2-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エージェントのドキュメントを参照してください。 
 |