ナビゲーションをスキップ

JMX による管理の容易なアプリケーションの開発

  前 次 前/次ボタンと目次ボタンとの区切り線 目次  

JMX について

Java Management Extensions (JMX) は、Java アプリケーションをモニタおよび管理するための仕様です。JMX を使用すると、汎用管理システムでアプリケーションをモニタし、注意が必要なときに通知を生成し、アプリケーションの状態を変更して問題を解決できます。SNMP やその他の管理規格と同様に、JMX は公開された仕様で、一般に使用されている監視製品を提供する多くのベンダによってサポートされています。

WebLogic Server は、JDK 1.5 に含まれている Java Management Extensions (JMX) 1.2 実装を使用します。以下の節では、Java アプリケーションで JMX を使用して実行時メトリックと制御ポイントを管理システムに通知する方法について説明します。

WebLogic Server で J2EE アプリケーションを管理するために使用できるその他の API については、『WebLogic Server および WebLogic Express の紹介』の「WebLogic Server システム管理の概要」を参照してください。

 


JMX で開発できる管理サービス

アプリケーションのモニタと管理に使用する場合、JMX は通常、管理アプリケーションが管理データを収集する Java クラスのプロパティにアクセスできるようにします (図 2-1 を参照)。多くの場合、これらのクラス プロパティは、アプリケーションが消費するリソースをトラッキングする単純なカウンタです。また、JMX は、アプリケーションのプロセスの開始または停止、またはクラス プロパティ値のリセットを行う Java クラスのメソッドへのアクセスも提供します。JMX を介して管理データをエクスポーズするクラスを、管理対象 Bean (MBean) と言います。また、MBean を介してエクスポーズされるクラス プロパティを属性、メソッドを処理と言います。

図 2-1 JMX が提供する管理プロパティへのアクセス

JMX が提供する管理プロパティへのアクセス


 

JMX 対応管理ユーティリティへのこのようなアクセスを実現したら、システム管理者または運用スタッフは管理データをシステムの全体図に統合できます。JMX 管理ユーティリティを使用することで、MBean 属性の現在の値を参照したり、JMX モニタを設定して MBean 属性値を定期的にポーリングしたり、属性値が特定のしきい値を超えた場合にのみ管理ユーティリティに通知が送信されるようにしたりできます。

高度な JMX プログラミング : 管理対応アプリケーションを作成する

システム管理者または運用スタッフにすべての管理責任を負わせる代わりに、MBean をモニタする管理対応アプリケーションを作成して、一部のタスクを自動的に実行することができます。たとえば、次のようなアプリケーションを作成できます。

 


いつ JMX を使用するか

データベース、JMS 接続、JMS キャッシュなど、リソースを大量に消費する重要な J2EE アプリケーションは、そのリソース消費をモニタする機能を備えている必要があります。このようなアプリケーションでは、データベースに対する読み書きが常に行われるため、ロギング機能を使用して読み書き操作のたびにメッセージを出力することは不可能です。このようなモニタ機能の場合、JMX を使用することによって、容易に管理でき、ネットワーク リソースの利用を最適化する管理 (インスツルメンテーション) コードを記述できます。

アプリケーションの基本的な実行時メトリックをモニタする場合は、WebLogic Server に用意されているさまざまな独自の MBean を使用できます (『JMX によるカスタム管理ユーティリティの開発』の「ベスト プラクティス : WebLogic Server イベントのリスン」を参照)。たとえば、既存の WebLogic Server MBean を使用してアプリケーションのサーブレットのヒット率や、サーブレット リクエストの処理時間をトラッキングできます。

WebLogic Server MBean はオペレーション センターに対してそのリソースの全般的な状態を通知できますが、特定のアプリケーションがどのようにリソースを使用しているかについての詳細な情報は提供できません。たとえば、WebLogic Server MBean は接続プール内の使用中の接続数を通知することはできますが、接続プールを使用しているアプリケーションは通知できません。ドメインに複数のアクティブなアプリケーションが存在し、一部の接続が常に使用されていることに気づいた場合、各アプリケーションがいつ接続を取得し、解放するかをモニタする MBean を作成します。また、停止していると見なされたセッションを終了する管理処理を組み込むこともできます。

さらに、アプリケーションが独自のキャッシュを作成および保持し、アプリケーション コンテナの制御下にないデータ リポジトリに書き込む場合、そのキャッシュのサイズまたはリポジトリに書き込まれるデータの量をモニタする MBean を作成します。

 


BEA パートナが開発した管理サービス

BEA パートナは、WebLogic Server MBean と (場合によっては) 独自のアプリケーション用のカスタム MBean からのデータをモニタおよび解析できる管理コンソールを提供しています。これらのコンソールによって、WebLogic Server をネットワークまたはデータ センター処理の管理方式に統合できます。使用できる管理ソフトウェアのリストについては、http://www.beasys.co.jp/index.html のパートナ ページを参照してください。

 


JMX の構造

以降の節では、JMX について説明します。

JMX レイヤ

J2EE と同じように、JMX はコンポーネント ベースの技術であり、さまざまな種類のベンダが多様なコンポーネントを提供しています。こうした分業化によって、各ベンダはそれぞれの専門分野のソフトウェアだけの開発に専念できます。JMX では、これらのコンポーネントは以下のレイヤにまとめられます。

間接性と内部参照

JMX を理解するための 2 つの主要な概念は、間接性と内部参照です。これらの概念を採用することで、JMX アプリケーションは独自のクラス定義にアクセスすることなく独自のリソースを管理できるようになります。

JMX の一般的なモデルでは、分散サービス レイヤに属するアプリケーションは、インスツルメント レイヤに属するクラスと直接対話することがありません。代わりに、この間接性のモデルでは、JMX エージェントは以下のことを行う標準インタフェース (javax.management.MBeanServerConnection) を提供します。

各クラスは、JMX を介してエクスポーズするプロパティとメソッドのセットを MBean サーバに通知します。クラスが JMX を介してエクスポーズするプロパティを MBean 属性と呼び、公開するメソッドを処理と呼びます。JMX は、クラスがその属性と処理を通知するために使用できる複数の方法 (設計パターン) を指定します。これらの設計パターンは、標準、動的、モデル、オープンというタイプの MBean として形式化されています。

標準 MBean タイプをインスツルメントするクラスは、その管理インタフェースを Java プログラミングとほぼ同じ方法で記述します。開発者は、JMX を介してエクスポーズされる各クラス プロパティのゲッターおよびセッター メソッドを備えた JMX インタフェース ファイルを作成します。インタフェース ファイルには、エクスポーズされる各クラス メソッドのラッパー メソッドも含まれます。クラスは、その JMX インタフェースの名前を宣言します。標準 MBean を MBean サーバに登録すると、MBean サーバはクラスとその JMX インタフェースを内部参照して、分散サービス レイヤにエクスポーズする JMX 属性および処理を決定します。また、MBean サーバは、インタフェースを記述する MBeanInfo オブジェクトを作成します。管理クライアントは、この MBeanInfo オブジェクトを調べてクラスの管理インタフェースについて学びます。

モデル MBean タイプをインスツルメントするクラスは、その独自の MBeanInfo オブジェクトを作成することによってその管理インタフェースを記述します。MBeanInfo オブジェクトは、JMX を介してエクスポーズするプロパティとメソッドを記述するメタデータ オブジェクト セットです。モデル MBean を MBean サーバに登録すると、MBean サーバはクラスを内部参照する代わりに既存の MBeanInfo オブジェクトを使用します。

通知とモニタ MBean

JMX では、2 通りの方法で MBean の変更をモニタできます。MBean は、特定のイベント (属性値の変更など) の発生時に通知を送信できます。また、モニタ MBean は、MBean を定期的にポーリングして属性値を取得できます。

以下の節では、JMX 通知とモニタ MBean について説明します。

JMX 通知をブロードキャストおよび受信する方法

MBean を作成する一部として、javax.management.NotificationEmitter インタフェースを実装できます。これにより、MBean はさまざまな種類のイベントが発生したときに通知を送信できます。たとえば、アプリケーションによる接続プールの使用状態を管理する MBean を作成するとします。この場合、アプリケーションが接続を作成したときに通知を送信し、接続を破棄したときに別の通知を送信するように MBean をコンフィグレーションできます。

通知をリスンするには、javax.management.NotificationListener.handleNotification() メソッドを実装するリスナ クラスを作成します。このメソッドの実装には、リスナが通知の受信時にアクションを実行するためのロジックを組み込みます。リスナ クラスを作成したら、リスナを MBean に登録する別のクラスを作成します。

デフォルトによって、MBean は登録されているすべてのリスナにすべての通知を送信します。しかし、リスナのフィルタを作成して登録することもできます。フィルタは、javax.management.NotificationFilter.isNotificationEnabled() メソッドを実装するクラスです。このメソッドの実装では、1 つまたは複数の通知タイプを指定します。この場合、タイプは、イベントを識別する通知オブジェクト内のユニークな文字列です (vendorA.appB.eventC など)。イベントの発生によって MBean が通知を生成する場合、MBean は通知をリスナに送信する前にフィルタの isNotificationEnabled() メソッドを呼び出します。通知タイプが isNotificationEnabled() で指定した値の 1 つと一致した場合、フィルタは true を返し、MBean は関連付けられているリスナにメッセージを送信します。

図 2-2 に、MBean が送信した通知の一部だけを通知リスナが受信する基本システムを示します。

図 2-2 MBean からの通知の受信

MBean からの通知の受信


 

JMX 通知の詳細については、JMX 1.2 仕様を参照してください。「関連ドキュメント」を参照してください。

モニタ MBean によるアクティブなポーリング

JMX には、モニタ MBean という MBean の仕様が含まれています。モニタ MBean をインスタンス化してコンフィグレーションすることにより、他の MBean を定期的に検査できます。モニタ MBean は、特定の MBean 属性が指定されたしきい値を超えた場合に JMX 通知を送信します。モニタ MBean では、MBean の属性の値そのもの、または数値属性の 2 つの連続する値の差異 (オプション) を観察できます。モニタ MBean が観察する値は、派生ゲージと呼びます。

派生ゲージが一連の条件を満たす場合、モニタ MBean は特定の通知タイプを送信します。また、属性値のモニタ中に一定のエラー状態が発生した場合にも通知を送信できます。

モニタ MBean を使用するには、モニタをコンフィグレーションして、観察対象の MBean に登録します。次に、リスナ クラスを作成して、そのクラスをモニタ MBean に登録します。モニタ MBean は非常に特殊な種類の通知のみを送信するので、通常、モニタ MBean からの通知をリスンする際にはフィルタは使用しません。

図 2-3 に、モニタ MBean を MBean に登録する基本システムを示します。NotificationListener がモニタ MBean に登録され、モニタ MBean 内の条件が満たされたときに通知を受信します。

図 2-3 モニタ MBean

モニタ MBean


 

 

フッタのナビゲーションのスキップ  ページの先頭 前 次