ESB Mule JMXエージェントはESB Muleへのローカル及びリモートJMX接続の構成を行い、ESB MuleリソースをMBeanサーバに登録します。JMXを有効にすると、ローカル及びリモート・コンピュータに以下の処理を行うことができます:
- ESB MuleManagerの設定状況を表示
- ESB Muleインスタンスの停止、開始
- モデルの停止、開始
- コンポーネントの停止、開始、一時停止、再開
- 指定されたコンポーネント又はサーバ全体のインスタンスのイベント処理やエンドポイント・ルーティングの統計情報を検索
ESB Muleでエージェントを設定するには、以下の設定をESB Muleの設定に追加します:
<agents>
<agent name="JmxAgent" className="org.mule.management.agents.JmxAgent"/>
</agents>
エージェントに以下のプロパティpropertiesを設定することができます:
| プロパティ |
説明 |
デフォルト |
| locateServer |
エージェントが新規にMBeanServerを作成する前に、既にあるか確認する |
true |
| createServer |
エージェントがMBeanサーバを見つけられなかった場合やlocateServerが false に設定された場合に、新規にMBeanサーバを生成するか |
true |
| connectorServerUrl |
利用するリモートJMXコネクタ・サーバのURL |
null |
| mBeanServer |
利用するmBeanサーバ。コンテナのMBeanServer又はファクトリ・プロパティに設定することもできます。 |
null |
| enableStatistics |
ESB Muleインスタンスの統計レポート機能を有効にするか |
true |
| domain |
ESB MuleサーバのJMXドメイン(ESB Mule1.3以降は未サポート) |
XML設定ファイルの Mule.<ESB Mule ID> 又は自動生成。以外は Mule.<UUID> |
| credentials |
リモートJMX接続認証用のユーザ/パスワードのMap。指定されていない場合、リモート・アクセスは制限付きとされます。(ESB Mule1.4以降) |
空のMap |
遠隔管理
MC4Jのような第三者ソフトウエアを使ってリモートESB Mule JMXサブシステムを管理することもできます:
<agents>
<agent name="RMI" className="org.mule.management.agents.RmiRegistryAgent"/>
<agent name="JMX" className="org.mule.management.agents.JmxAgent">
<properties>
<property name="connectorServerUrl" value="service:jmx:rmi:///jndi/rmi://localhost:1099/server"/>
<map name="connectorServerProperties">
<property name="jmx.remote.jndi.rebind" value="true"/>
</map>
<!--
Restrict access for remote JMX management (since Mule 1.4).
Here, 2 JMX admins are configured.
-->
<map name="credentials">
<property name="muleusername" value="mulepassword"/>
<property name="admin" value="secret"/>
</map>
</properties>
</agent>
</agents>
外部でRMIサーバを実行
JDK1.4を使ってJDK1.4に同梱されている rmiregistry.exe を使ってRMIレジストリを外で実行されている場合は、 JMX remoting JarをJDKクラスパス(classpath)に追加する必要があります。されていないと、外部RMIレジストリはリモートJMSクライアントにサービスを提供することができません。
JDK1.5以降からはJMXリモーティング・クラスがJDKの一部とされたため、クラスパスの設定は不要です。
JMXアダプタ・エージェント
JmxアダプタやMBeanを登録するために、JmxAgent以外のエージェントを設定することも可能です。
ESB Muleは、現在2つのJms Adaptorエージェントを同梱しています:Mx4JとJdmk。
Mx4j設定
以下はESB MuleをMx4j Htmlアダプタを使うように設定する例です:
<agents>
<agent name="JmxAgent" className="org.mule.management.agents.JmxAgent"/>
<agent name="Mx4jAgent" className="org.mule.management.agents.Mx4jAgent">
<properties>
<property name="jmxAdaptorUrl" value="http://localhost:9999"/>
</properties>
</agent>
</agents>
デフォルトURLは http://localhost:9999 _ であります。変更する必要がなければ、省略することもできます。_
 | セキュリティのために、管理コンソールは +ローカルホストのみからアクセスできます + 。このセキュリティを緩める必要がある場合は、「localhost」を「0.0.0.0」に変えてください。この設定を行うとLAN上のどの機器からの接続を許可します。詳細に付いてはMX4J docsを参照にしてください。 |
Mx4jセキュリティ
ESB Mule 1.3以降からは、JMX Webコンソールを開く場合にユーザ名とパスワードを要求するようにできます。 login プロパティを指定すると、要求されるようになります:
<agents>
<agent name="jmxAgent" className="org.mule.management.agents.JmxAgent"/>
<agent name="mx4jAgent" className="org.mule.management.agents.Mx4jAgent">
<properties>
<property name="login" value="user"/>
<property name="password" value="password"/>
</properties>
</agent>
</agents>
デフォルトでは、基本認証が使われます。
ESB Mule 1.3 SSLプロトコルを利用する場合は:
<agents>
<agent name="jmxAgent" className="org.mule.management.agents.JmxAgent"/>
<agent name="mx4jAgent" className="org.mule.management.agents.Mx4jAgent">
<properties>
<map name="socketFactoryProperties">
<property name="keyStoreName" value="serverKeystore"/>
<property name="keyStorePassword" value="mulepassword"/>
</map>
</properties>
</agent>
</agents>
 | 上の設定は通信中のデータも保護し、だれでもコンソールを利用することを許可します。
より強化なセキュリティが必要な場合は、上の2つの設定を合わせて使うことを推奨します。 |
socketFactoryProperties に1つ以上の設定がされると、エージェントはHTTPS接続に切り替わります。
 | jmxAdaptorUrl は重要ではありません。HTTP又はHTTPSが使われるかは socketFactoryProperties に依存します。この設定を省略した場合は、jmxAdaptorUrl プロパティにhttps://が指定された場合でも必ずHTTPが使われます。 |
| プロパティ |
説明 |
必須 |
デフォルト |
| authenticationMethod |
ログイン/パスワードを利用する場合のユーザ認証方式。(ESB Mule1.3以降で対応) |
|
BASIC |
| jmxAdaptorUrl |
WebコンソールのURL |
|
http://localhost:9999 |
| name |
JmxAgentの名前 |
|
|
| login |
認証を有効にする場合のユーザ名(ESB Mule 1.3以降で対応) |
|
|
| password |
login を使う場合のパスワード。空(emtpy)も可能(ESB Mule 1.3以降で対応) |
|
|
cacheXsl |
変換オブジェクトをキャッシュするか。処理時間を短縮します。普通はtrueに設定しますが、テスト中はfalseに設定すると便利です。(ESB Mule 1.3以降で対応) |
|
true |
xslFilePath |
アダプタのスタイルシートを変更する場合に設定します。XSLファイルの場所を設定します。ディレクトリが指定された場合は、ディレクトリ内にxslファイルがあると認識されます。その他の場合はxslファイルを同梱している.jar又は.zipファイルを指定します。テスト中はファイル・システムを指定すると便利です。(ESB Mule 1.3以降で対応) |
|
|
| pathInJar |
アダプタのスタイルシードを変更する場合に設定します。xslファイルが同梱されているjarファイルを指定します。(ESB Mule 1.3以降で対応) |
( xslFilePath はjar/zipであるか) |
|
| socketFactoryProperties |
SSLサーバ・ソケット・ファクトリの設定情報を持つMap。エージェントのHTTP/Sアダプタへ中継されます。利用できるプロパティに付いてはmx4j API docsを参照してください。 |
(HTTPS接続の場合のみ) |
|
統計情報の表示
ESB Muleではサーバの実行中の状態や処理したイベント等に付いての多くの統計情報を集めるように設定できます。
JMX管理コンソールから、ESB Muleの統計レポートを表示することができます。上の設定で下のような統計情報を表示するには、Webブラウザから次のURLを開きます:
表示するJMXドメイン名を選択して(JMImplementation以外)、「Statistics」(統計)タブを選択して、JMXドメインを検索します。
その他の管理エージェント
Log4Jエージェント
log4jエージェントからESB MuleのJmx管理で使っているLog4Jインスタンスに接続することができます。
<agents>
<agent name="JmxAgent" className="org.mule.management.agents.JmxAgent"/>
<agent name="Log4jAgent" className="org.mule.management.agents.Log4jAgent"/>
</agents>
 | 全てのJmxエージェントを組み合わせて使うことができます。また、自分のJmxエージェントを登録することもできます。
org.mule.management.agents.JmxAgent が登録されていることを確認してください。 |
デフォルトJMXサポート・エージェント
全てのJmxエージェントはクラス DefaultJmxSupportAgent から設定することができます。以下のエージェントにESB Muleインスタンスと登録します:
- RMIエージェント(必要であれば)URI:rmi://localhost:1099
- JMXレジストレーション・エージェント
- リモートJMXアクセス。サービス:jmx:rmi:///jndi/rmi://localhost:1099/server
- JMX通知エージェント。JMX通知を使ってサーバからの通知を受信するため。
- Log4J Jmxエージェント
- (任意) JDMKエージェント - loadJdmkAgent プロパティをtrueに設定 (ESB Mule 1.3.1以降)
- (任意) MX4Jエージェント - loadMx4jAgent プロパティをtrueに設定 (ESB Mule 1.3.1以降)
以下の設定を追加します:
<agent name="JMX" className="org.mule.management.agents.DefaultJmxSupportAgent"/>
ESB Mule 1.4以降からは、以下のプロパティも設定することができます:
- port - RMIレジストリを実行するポート番号。JMX管理でも利用されます。(デフォルト: 1099 )
- host - バインドするホスト。マルチNICサーバの場合のみに上書きする必要があります。(デフォルト: localhost )
- credentials - リモートJMXサーバへ接続する場合のユーザ名/パスワードのMap。設定はJmxAgentに中継されます。JmxAgentのドキュメントを参照にしてください。
エージェントはJMXのために多くの作業を行います。ただし、多くのパラメータにはデフォルト設定を使います。サブ・システムをカスタマイズする必要がある場合は、以下のような処置を取ることができます:
- DefaultJmxSupportAgent を継承して、 createXXX() ファクトリ・メソッドをオーバーライドする。
- サポート・エージェントのサービスを別々のサービスに分解して、サービス毎に設定を行う。