プライマリ・コンテンツに移動
Oracle® Fusion Middleware Oracle WebLogic Server JMXによる管理可能アプリケーションの開発
12c (12.2.1.1.0)
E79367-01
目次へ移動
目次

前
次

2 JMXの理解

この章では、Javaアプリケーションをモニターおよび管理するための仕様である、Java Management Extensions (JMX)の概要について説明します。JMXにより、汎用管理システムでアプリケーションをモニターし、注意が必要なときに通知を生成し、アプリケーションの状態を変更して問題を解決できます。JMXは、SNMPなどの管理規格と同様に、公開された仕様であり、一般的に使用されるモニタリング製品のベンダーの多くによってサポートされています。WebLogic Server は、JDKに含まれているJava Management Extensions (JMX) 1.4実装を使用します。

この章の内容は以下のとおりです。

WebLogic ServerでJava EEアプリケーションを管理するために使用できるその他のAPIおよびユーティリティについては、Oracle WebLogic Serverの理解のWebLogic Serverシステム管理の概要を参照してください。

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

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

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

図2-1の説明が続きます
「図2-1 JMXが提供する管理プロパティへのアクセス」の説明

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

2.2 管理対応アプリケーションの作成

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

  • 接続プールをモニターし、必要に応じてプールを拡張または縮小するアプリケーション。

  • デプロイされているアプリケーションすべてをモニターするポータル・アプリケーション。新しいアプリケーションがデプロイされた場合、ポータル・アプリケーションはそのアプリケーションを新しいポートレットとして自動的に表示します。

  • コネクタ・モジュールのデプロイメントをリスニングし、新しくデプロイされたモジュールを使用するアプリケーション。

2.3 いつJMXを使用するか

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

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

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

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

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

Oracleパートナでは、WebLogic Server MBeansからのデータおよびユーザーが独自のアプリケーション用に開発する場合があるMBeanからのデータを監視および分析できる広範な管理コンソールが開発されています。これらのコンソールで、ユーザーのネットワークまたはデータ・センターの操作のための全体的な管理戦略にWebLogic Serverを統合できます。使用可能な管理ソフトウェアを参照するには、www.bea.comのパートナ・ページにアクセスしてください。

2.5 JMXレイヤー

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

  • インストゥルメンテーション

    開発するアプリケーション、リソース、およびその他の管理可能オブジェクトで構成されます。このレイヤーでは、アプリケーション開発者がマネージドBean (MBean)を作成します。MBeanは、外部の管理システムに公開するプロパティ(属性)とメソッド(操作)を備えています。

  • エージェント

    JVMとアプリケーション・サーバー(WebLogic Serverなど)で構成されます。このレイヤーには、MBeanのレジストリと、MBeanの作成、破棄、およびアクセスを行うための標準インタフェースが含まれます。

    また、エージェント・レイヤーには、モニターおよびタイマー・サービスに加えてリモート・クライアント用のサービスが含まれます。Oracle WebLogic Server JMXによるカスタム管理ユーティリティの開発WebLogic Server JMXタイマー・サービスの使用および通知とモニターMBeanの使用方法を参照してください。

  • 分散サービス

    管理コンソールまたはその他のJava EEアプリケーションで構成されます。管理アプリケーションがエージェント・レイヤーのリクエストを送受信します。多くの場合、このレイヤーは管理コンソールが様々な管理プロトコル(JMXやSNMPなど)をサポートできるようにするためのプラグインまたはアダプタとして使用できます。

2.6 間接性と内部参照

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

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

  • クラス管理インタフェースを分散サービス・レイヤーの管理クライアントに公開する

  • 管理クライアントからリクエスト(クラスがJMXを介して公開するプロパティの値を取得するためのリクエストなど)を受け取る

  • クラスと対話してリクエストを実行し、その結果を管理クライアントに返す

各クラスは、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オブジェクトを使用します。

2.7 通知とモニターMBean

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

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

2.7.1 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は関連付けられているリスナーにメッセージを送信します。

リスナーおよびフィルタの作成および登録については、Oracle WebLogic Server JMXによるカスタム管理ユーティリティの開発のWebLogic Server MBeanからの通知のリスニングの主な手順を参照してください。JMX通知の詳細は、JMX 1.4仕様を参照してください。関連ドキュメントを参照してください。

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

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

図2-2の説明が続きます
「図2-2 MBeanからの通知の受信」の説明

2.7.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内の条件が満たされたときに通知を受信します。