4 JMXエージェントの使用

JMXエージェントは、JVM内で実行される管理エンティティです。管理対象Bean (MBean)と管理アプリケーションとのパイプ役として機能します。次のセクションでは、JMXエージェントの様々なコンポーネントについて説明します。

MBeanサーバー

MBeanサーバーは、JMXエージェントのコア・コンポーネントです。管理操作に公開されているJMXエージェント内のオブジェクトのレジストリです。MBeanサーバーに登録されているオブジェクトが、管理アプリケーションに公開されます。MBeanサーバーはMBeanの管理インタフェースのみを公開し、オブジェクトの直接参照は公開しません。

エージェントのJVMの外部から管理するリソースは、MBeanとしてサーバーに登録する必要があります。MBeanサーバーには同じJVM内でMBeanにアクセスするための標準化されたインタフェースがあり、ローカル・オブジェクトにとって管理可能なリソースを操作できるという利点があります。MBeanは次によってインスタンス化され登録されます。

  • 別のMBean
  • エージェント自身
  • リモート管理アプリケーション

MBeanを登録する場合は、一意のオブジェクト名を割り当てる必要があります。管理アプリケーションではオブジェクト名を使用して、管理操作を実行する対象となるオブジェクトを特定します。MBeanで利用可能な操作には、次の操作があります。

  • MBeanの管理インタフェースの検出
  • 属性値の読み書き
  • MBeanによって定義された操作の実行
  • MBeanによって送られた通知の取得
  • オブジェクト名または属性値を使用したMBeanのクエリー

エージェント・サービス

エージェント・サービスとは、MBeanサーバーに登録されたMBeanの管理操作を実行できるオブジェクトのことです。エージェント内に管理機能を持たせることで、JMXを使用すればより強力な管理ソリューションを構築できます。エージェント・サービスはMBeanでも提供できるため、エージェント・サービスとその機能をMBeanサーバーから制御できます。Java Management Extensions (JMX)仕様バージョン1.4では、次のエージェント・サービスを定義します:

  • モニター: MBean属性の数値または文字列値をモニターし、各種の変更を他のオブジェクトに通知できます。
  • タイマー: タイマーにより、スケジューリング・メカニズムを提供し、事前に定義した間隔で通知を送信できます。
  • 関係サービス: 関係サービスではMBean間の関係を定義し、その関係の一貫性を維持します。

プロトコル・アダプタとコネクタ

プロトコル・アダプタとコネクタを使用すると、リモート管理アプリケーションからエージェントにアクセスできます。MBeanサーバーでインスタンス化され登録された、すべてのMBeanに特有のプロトコルを使用してビューを提供します。JVMの外部の管理アプリケーションでは、次のことが可能になります。

  • 既存のMBeanの属性の取得または設定
  • 既存のMBean上で操作の実行
  • 新しいMBeanのインスタンス化と登録
  • MBeanが送る通知の登録と受信

したがってJMXエージェントを管理するには、少なくとも1つはプロトコル・アダプタやコネクタを含まなければなりません。Java SEプラットフォームには、標準Remote Method Invocation (RMI)コネクタが含まれています。エージェントは1つ以上のプロトコル・アダプタやコネクタを含めることができ、様々なプロトコルによって同時にリモートで管理およびモニターできます。

プロトコル・アダプタ

プロトコルアダプタは、指定されたプロトコルを介したJMXエージェントの管理ビューを提供します。MBeanの操作およびMBeanサーバーを指定されたプロトコルの形式に変換します。また、SNMPのような別の情報モデルへの変換も行います。Java SEプラットフォームは、プロトコルアダプタを標準装備していません。

プロトコル・アダプタに接続する管理アプリケーションは、通常、指定されたプロトコル専用です。これは、特定の管理プロトコルに依存した従来の管理ソリューションの典型的なケースです。管理アプリケーションはJMXエージェントに対して、MBeanサーバーのリモート形式でアクセスするのではなく、MBeanサーバーの操作にマップされた操作でアクセスします。

コネクタ

コネクタは、エージェントとリモート管理アプリケーションを接続するために使用されます。この場合のリモート管理アプリケーションは、JMXテクノロジに対応し、つまり、JMX仕様の分散サービスを使用して開発された管理アプリケーションのことです。この種の通信は、エージェント内のコネクタ・サーバーや、マネージャ内のコネクタ・クライアントが行います。

これらのコンポーネントは、特定のプロトコルを使用してポイントツーポイントで管理操作を透過的に伝送します。JMXリモートAPIはMBeanサーバーに対するリモート・インタフェースを提供し、管理アプリケーションはこのインタフェースを通じて操作を実行します。コネクタは指定されたプロトコル専用ですが、リモート・インタフェースが同じであるため、管理アプリケーションではどのコネクタも同じように使用できます。

標準JMXコネクタの詳細は、JMXコネクタを使用したリソースのリモート管理を参照してください。