Sun Java Enterprise System 5 監視ガイド (UNIX 版)

Java ES の監視のしくみ

監視とは、実行時データを収集して公開し、サービス基準の品質を計測することにより、システム管理者がパフォーマンスを評価したり、アラームの通知を受けたりできるようにするプロセス全般のことです。実行時の運用中、管理者はパフォーマンス統計の表示、自動監視のためのルールの作成、アラームの確認などの作業を、すべて Monitoring Console との対話操作により実行することができます。ただし、Monitoring Framework のアーキテクチャーや、Monitoring Framework が Monitoring Console に接続するしくみを理解しておくと、設定、トラブルシューティング、および高度な監視を実行する際に役立ちます。

Java ES での監視は、次の概念に基づいて行われます。

次の節では、監視アーキテクチャーのこれらの各概念についてさらに詳しく説明します。

Common Monitoring Model (CMM)

標準化された監視機構の基本は、監視されるオブジェクトを定義し、すべての監視対象コンポーネントを横断してこれらのオブジェクトを採用することです。監視アーキテクチャーではこの目的のために、Common Monitoring Model (CMM) を定義しています。CMM は、Distributed Management Task Force (DMTF) が管理する Common Information Model (CIM) の拡張です。CMM は、コンピュータやアプリケーションなどの監視対象オブジェクトの仕様を定める情報モデルであると同時に、運用ステータス値などの統一された値の仕様を定めるデータモデルでもあります。CMM では情報モデルの一部として、オブジェクトの属性も定義します。これには、サービスによって処理される要求の数や、あるサービスは特定のコンピュータ上でホストされる、といったオブジェクト間の関係などがあります。

CMM により、配下の実装が異なる場合も含めて、アプリケーション、サービス、アクセスポイントなどの概念がすべての製品コンポーネント間で共通化されます。たとえば、Web Server は HTTP 要求を処理するサービスを公開し、Directory Server は LDAP 要求を処理するサービスを公開します。CMM で定義される標準オブジェクトは、これら 2 つの機能に共通する要素 (処理される要求数を計測する能力、特定の期間中に要求に応答する平均時間など) を捕捉します。

また、値の意味がシステム全体を通して一貫するように、特定のデータ値が標準化されます。たとえば、監視対象の製品コンポーネントに関係なく、DEGRADED という運用ステータスは常に、「サービスはまだ利用できるがパフォーマンスが著しく低下している」ことを意味します。

CMM 仕様は、インストゥルメンテーションに使用される Java のインタフェースおよびクラスに組み込まれています。これらのインタフェースやクラスについては付録 A 「CMM オブジェクトリファレンス」で説明しています。

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

Monitoring Framework で、インストゥルメンテーションとは、CMM 定義を実装する Java のインタフェースおよびクラスの集合のことです。Java ES の新しい監視機能のために、製品コンポーネントのコードがインストゥルメントされています。その目的は、CMM オブジェクトをインスタンス化し、監視対象オブジェクトの属性を通して実行時の値を公開できるようにすることです。各コンポーネントによって実装される CMM オブジェクトは、監視可能な要素を決定します。またこの理由のため、一部のコンポーネントはほかのコンポーネントよりも公開する属性が少なくなります。付録 B 「各コンポーネントが公開する監視対象オブジェクト」では、各製品コンポーネントによって監視対象として公開されるオブジェクトおよび属性の一覧を示しています。

ノードエージェント

監視に関する用語で、ノードとは、一意な完全指定ドメイン名または IP アドレスによって識別される、単一の論理ホストのことです。システム全体、または仮想システムとして構成されたSolaris ゾーンのどちらかがノードとして機能できます。ノードエージェントは、配備先ホスト上のすべてのインストゥルメント済みコンポーネントと通信し、それらのコンポーネントの監視対象オブジェクトをすべて公開します。またノードエージェントは、エージェントに含まれる監視対象オブジェクトに関して、パフォーマンス統計を収集したり、ルールで定義されたしきい値を監視したり、アラームを生成したりするためのすべてのロジックを管理します。

次の図は、1 つのホスト上のノードエージェントの内容を表しています。このホストには、3 つの Java ES 製品コンポーネントのインスタンスが存在します。またこの図では、製品コンポーネントによって提供される値を公開するために、ノードエージェント内でインストゥルメンテーションがインスタンス化されるしくみも示しています。

図 1–1 ノードエージェントの図

ノードエージェントの内部には、インストゥルメントされる属性を表すオブジェクトと、しきい値アラームの監視などの監視ルールを表すオブジェクトが存在します。

ノードエージェントは、それ自体が Java 仮想マシンである共通エージェントコンテナにロードされるモジュールとして実装されます。ノードエージェントの実装は、監視およびリモート管理のための標準 Java 拡張機能である Java Management Extensions (JMX) に基づいています。CMM を認識するすべての JMX 対応監視アプリケーションが、ノードエージェント内の監視対象オブジェクトにアクセスできます。ノードエージェントは JMX の機能を利用して、特定の監視対象オブジェクトを Simple Network Monitoring Protocol (SNMP) 経由で公開することもできます。

マスターエージェント

マスターエージェントは、Monitoring Console インストールの一部として独立したマシン上に配備されます。マスターエージェントには、すべてのノードエージェント内の監視対象オブジェクトを集約できるように、すべてのノードの名前またはアドレスが設定されます。マスターエージェントも JMX に基づいています。マスターエージェントは JMX を利用してノードエージェントと通信し、そのローカル共通エージェントコンテナにロードされます。

次の図は、2 つのノードに接続されたマスターエージェントを表します。Monitoring Console はマスターエージェントに接続して、各ノード上の 3 つのコンポーネントを監視します。マスターエージェントは SNMP 属性を集約しないため、監視のために SNMP を使用する場合、各ノードに個別に接続する必要があります。マスターエージェントは Monitoring Console のみとの組み合わせで使用することを前提に設計されており、ほかの監視アプリケーションからのアクセスはできません。

図 1–2 監視アーキテクチャー全体の図

マスターエージェントは複数の JMX ノードエージェントに接続し、すべての監視対象オブジェクトを Monitoring Console に公開します。