Sun ONE Application Server 7, Enterprise Edition 管理者ガイド |
第 6 章
Sun ONE Application Server の監視この章では、Sun ONE Application Server で利用可能な、監視と SNMP (Simple Network Management Protocol) の機能と特徴について、説明しています。
この章には次の節が含まれます。
Sun ONE Application Server の監視についてSun ONE Application Server は、システム内の戦略的なデータポイントから、稼働統計情報を収集することによって監視できます。統計情報は、サーバーが処理している要求の数と、その処理状況を示します。個々の仮想サーバーに関する統計情報や、アプリケーションサーバーインスタンス全体に関する統計情報を表示できます。Sun ONE Application Server 7, Enterprise Edition の監視には、asadmin ユーティリティや SNMP を使用します。
この節では次の項目について説明します。
統計情報
HTTP サーバーなどほとんどの Sun ONE Application Server 7, Enterprise Edition のアプリケーションコンポーネントとサブシステムの統計情報は、特に監視機能を有効に設定しなくても、常に収集されます。ただし、サブシステムでの監視を明示的に有効に設定した場合や、それと同等の機能を有効に設定した場合だけ収集される統計情報もあります。これらの統計情報には、次のデータポイントが含まれます。
管理インタフェースからアプリケーションのサブシステムまたはコンポーネントの監視機能を有効にする方法については、「アプリケーションコンポーネントとサブシステムの監視」を参照してください。
サーバーモニターを通してサーバーが多数の要求を処理していることが判明した場合、要求数に合わせてサーバー設定またはシステムのネットワークカーネルを調整する必要があります。サーバー設定の調整方法の詳細は、『Sun ONE Application Server 7, Enterprise Edition パフォーマンスおよびチューニングガイド』を参照してください。
SNMP
Sun ONE Application Server は、SNMP (Simple Network Management Protocol) を使用する情報収集ツールによって、ネットワーク管理のための情報を提供します。SNMP は、ネットワークで管理情報や監視情報を交換するためのプロトコルです。SNMP を使用するエージェントと呼ばれるプログラムが、ネットワーク上のさまざまなデバイス (ハブ、ルーター、ブリッジなど) を監視します。別のプログラムが、エージェントから受け取ったデータを収集します。オペレーションの監視によって作成されたデータベースは MIB (management information base) と呼ばれます。このデータを使用して、ネットワーク上のすべてのデバイスが適切に動作していることをチェックします。
SNMP で監視できるのは HTTP サーバーだけですが、コマンド行インタフェース (CLI) を使用するとすべてのコンポーネントとシステムを監視できます。
SNMP の詳細は、「SNMP について」および「SNMP の設定」を参照してください。
HTTP サーバーの監視
HTTP サーバーの監視は、デフォルトで有効になっているため、有効に設定する作業は不要です。HTTP サーバーの監視は XML ファイルをベースにしていて、管理可能な 3 種類の属性一式には、asadmin コマンドを使用してアクセスできます。この XML ファイルの要素、サブ要素、および属性については、「監視可能な HTTP サーバー要素」および「監視可能な HTTP サーバー属性」を参照してください。
注
SNMP では、HTTP サーバーの統計情報だけを利用できます。HTTP サーバーも含めた Sun ONE Application Server 7, Enterprise Edition のすべてのサブシステムに関する統計情報を利用するには、コマンド行インタフェースを使用します。
asadmin の使用方法の詳細は、「コマンド行インタフェースの使用」を参照してください。
アプリケーションコンポーネントとサブシステムの監視
Sun ONE Application Server 7, Enterprise Edition のサブシステムやコンポーネントには、関連する統計情報が常に収集されているために、監視を有効に設定する必要がないものもあります。たとえば、コンテナなどのアプリケーションコンポーネントでは、監視機能を有効にしても無効にしても構いません。監視機能を有効にすると、常時収集される統計情報に加えて、すべての EJB メソッドに関する追加の統計情報も収集されます。JDBC 接続プールの監視は、常に有効になっています。接続プールは最初にアクセスされたときに初期化され、その後は常に関連する統計情報が監視されます。
監視対象となるデータポイントの詳細は、「監視可能な属性名」を参照してください。
管理インタフェースまたはコマンド行インタフェース (CLI) を使って、選択したアプリケーションコンポーネントおよびサブシステムの監視機能を有効にすることができます。たとえば、CLI から EJB コンテナの監視機能を有効に設定するには、端末ウィンドウで次のコマンドを入力します。
server1 はインスタンス名です。
上記と同等の機能には、「Containers (コンテナ)」ノードの下の管理インタフェースからアクセスできます。
この節では次の項目について説明します。
コンテナサブシステムの監視
EJB コンテナの場合、監視機能を有効にすると、エンティティ Beans、ステートフルセッション Beans、およびステートレスセッション Beans のメソッドに関連する統計情報が収集されます。次の統計情報があります。
コンテナサブシステムでは、その他すべての統計情報が常に収集されます。監視されるデータポイントには、次のような統計情報が含まれます。
ORB サービスの監視
ORB サービスの場合、監視されるデータポイントには、ORB 接続および ORB スレッドプール用に収集される統計情報が含まれます。ORB 統計情報は常に収集されるため、ORB サービスの監視機能を有効に設定する必要はありません。
トランザクションサービスの監視
Java トランザクションサービス (JTS) の場合、監視されるデータポイントには、次の統計情報が含まれます。
詳細は、「CLI によるトランザクションサービスの管理」を参照してください。
サービス品質 (QOS)
サービス品質は、サーバーインスタンスの仮想サーバークラス、または仮想サーバーに対して設定するパフォーマンスの制限です。たとえば、ISP (Internet Service Provider) であれば、許可する帯域幅に応じて仮想サーバーの課金額を変えたい場合があります。この場合、帯域幅の量と接続数に制限を課すことができます。
Sun ONE Application Server が提供するサービス品質を使用すると、次の項目に関して実行時のサーバーの効率を判断できます。
詳細は、「CLI によるトランザクションサービスの管理」を参照してください。
CLI を使用した監視データの抽出コマンド行インタフェース (CLI) で asadmin コマンドに list コマンドや get コマンドを使用すると、監視されたデータを抽出できます。
注
set コマンドは、トランザクションサービスの監視を設定する場合にのみ使用されます。「CLI によるトランザクションサービスの管理」を参照してください。
この節では次の項目について説明します。
list --monitor コマンド
list コマンドは、指定されたサーバーインスタンス名について、現在監視されているアプリケーションコンポーネントおよびサブシステムに関する情報を提供します。このコマンドを使用すると、サーバーインスタンスで監視可能なコンポーネントおよびサブコンポーネントを表示できます。
例
asadmin> list --monitor server1
監視機能が有効になっている次のアプリケーションコンポーネントおよびサブシステムのリストが返されます。
iiop-service
transaction-service
application.converter
application.myApp
http-server指定されたサーバーインスタンス内で現在監視されているアプリケーションを一覧表示することもできます。この機能は、get コマンドを使ってアプリケーションから特定の監視統計情報を取得する際に役立ちます。
例
asadmin> list --monitor server1.application
戻り値
converter
myAppより詳細な例については、「Petstore の例」を参照してください。
get --monitor コマンド
このコマンドは、次の監視情報を取得します。
特定のコンポーネントまたはサブシステムについて、要求された属性が存在しない場合は、エラーが返されます。同様に、コンポーネントまたはサブシステムについて要求された特定の属性がアクティブでない場合も、エラーが返されます。
get コマンドの使用方法の詳細は、「CLI ネームマッピング」を参照してください。
例 1
特定の属性について、サブシステムからすべての属性を取得する例
asadmin> get --monitor server1.iiop-service.orb.system.orb-connection.*
total-inbound-connections=1
total-outbound-connections=1例 2
J2EE アプリケーションからすべての属性を取得する例
asadmin> get --monitor server1.application.converter.*
Attribute name(s) not found
J2EE アプリケーションレベルで公開されている監視可能な属性はないため、コマンドは失敗します。
例 3
サブシステムから特定の属性を取得する例
asadmin> get --monitor server1.transaction-service.inflight-tx
Attribute name = inflight-tx Value = No active transaction found.
例 4
サブシステム属性内に存在しない属性を取得する例
asadmin> get --monitor server1.iiop-service.orb.system.orb-connection.bad-name
Could not get the attribute
Execution failed for the command:get --monitor server1.iiop-service.orb-connection.bad-name
CLI ネームマッピング
Sun ONE Application Server では、ツリー構造によって、監視対象オブジェクトを探すことができます。ツリー内のノードごとに名前とタイプがあります。タイプが単独の場合は、親ノードの下には、そのタイプのノードが 1 つだけ存在します。ツリー内のノードタイプの詳細は、「監視可能なオブジェクトタイプ」を参照してください。
ツリーのルートオブジェクトは、Sun ONE Application Server 7, Enterprise Edition のインスタンス名で表されます。たとえば、server1 と名前付けされているインスタンスのルートの監視オブジェクトは、次のようになります。
すべての子オブジェクトのアドレスは、ドット (.) で区切って指定されます。子ノードが単独の場合、その監視オブジェクトのアドレスを指定するには、オブジェクトのタイプだけが必要となります。単独でない場合は、オブジェクトのアドレス指定には、type.name の形式の名前が必要となります。
たとえば、単独の有効な監視可能オブジェクトタイプとしては、http-server などがあります。インスタンス server1 の http-server を表す単体の子ノードをアドレス指定する場合、名前は次のようになります。
また、単独ではない有効な監視可能オブジェクトタイプとしては、application などがあります。アプリケーション Petstore を表す単独ではない子ノードをアドレス指定する場合、名前は次のようになります。
CLI 名では、監視可能オブジェクトの特定の属性をアドレス指定することもできます。たとえば、http-server には、監視可能属性の summary があります。次の名前は、summary 属性のアドレス指定となります。
監視オブジェクトが公開する属性名に対するネーミング規則は定められていません。
CLI で使用するための有効な名前が分からない場合もあります。list コマンドを使用すると、有効な監視可能オブジェクトを調べることができます。get コマンドにワイルドカードのパラメータを指定すると、どの監視可能オブジェクトについても、すべての有効な属性を調べることができます。
次の例では、クライアントのネームマッピングのシナリオを示します。
Petstore の例
server1 という名前の Sun ONE Application Server 7, Enterprise Edition インスタンスに配備された Petstore アプリケーションのメソッドに対して、何回の呼び出しがあったかについて調査します。list コマンドと get コマンドを組み合わせて使用して、該当するメソッドの統計情報にアクセスします。
- マルチモードで CLI を呼び出します。
- 次のように、有用な環境変数を設定して、コマンドを使用するたびに同じ変数を入力する手間を省きます。
asadmin>export AS_ADMIN_USER=admin AS_ADMIN_PASSWORD=admin123
asadmin>export AS_ADMIN_HOST=localhost AS_ADMIN_PORT=4848
- 次のコマンドを入力して、インスタンス server1 の監視可能なコンポーネントを一覧表示します。
asadmin>list --monitor server1
出力
iiop-service
transaction-service
application.CometEJB
application.ConverterApp
application.petstore
http-server
resources監視可能なコンポーネントの一覧には、iiop-service、http-server、transaction-service、resources、およびすべての配備済み (かつ有効な) アプリケーションが含まれます。
- 次のコマンドを入力して、Petstore アプリケーションの監視可能なサブコンポーネントを一覧表示します。--monitor の代わりに -m を使用できます。
asadmin>list -m server1.application.petstore
出力
ejb-module.signon-ejb_jar
ejb-module.catalog-ejb_jar
ejb-module.uidgen-ejb_jar
ejb-module.customer-ejb_jar
ejb-module.petstore-ejb_jar
ejb-module.AsyncSenderJAR_jar
ejb-module.cart-ejb_jar- 次のコマンドを入力して、Petstore アプリケーションの EJB モジュール sigon-ejb_jar に含まれる監視可能なサブコンポーネントを一覧表示します。
asadmin>list -m server1.application.petstore.ejb-module.signon-ejb_jar
出力
entity-bean.UserEJB
stateless-session-bean.SignOnEJB- 次のコマンドを入力して、Petstore アプリケーションの EJB モジュール sigon-ejb_jar のためのエンティティ Bean UserEJB に含まれる監視可能なサブコンポーネントを一覧表示します。
asadmin>list -m server1.application.petstore.ejb-module.signon-ejb_jar.entity-bean.UserEJB
出力
bean-method.create0
bean-method.findByPrimaryKey1
bean-method.remove2
bean-method.getUserName3
bean-method.setPassword4
bean-method.getPassword5
bean-method.matchPassword6
bean-method.remove7
bean-method.isIdentical8
bean-method.getEJBLocalHome9
bean-method.getPrimaryKey10
bean-pool
bean-cache- 次のコマンドを入力して、Petstore アプリケーションの EJB モジュール sigon-ejb_jar にあるエンティティ Bean UserEJB のメソッド getUserName3 に含まれる監視可能なサブコンポーネントを一覧表示します。
asadmin>list -m server1.application.petstore.ejb-module.signon-ejb_jar.entity-bean.UserEJB.bean-m ethod.getUserName3
出力
No monitorable entities for element
server1.application.petstore.ejb-module.signon-ejb_jar.entity-bean.UserEJB.bean-m ethod.getUserName3- メソッドには監視可能なサブコンポーネントはありません。次のコマンドを入力して、メソッド getUserName3 の監視可能な統計情報をすべて取得します。
asadmin>get -m server1.application.petstore.ejb-module. signon-ejb_jar.entity-bean.UserEJB.bean-method.getUserName3.*
method-name = public abstract java.lang.String com.sun.j2ee.blueprints.signon.user.ejb.UserLocal.getUserName()
total-num-errors = 0
total-num-success = 2
execution-time-millis = 1
total-num-calls = 2- 次のコマンドを入力して、実行時間など特定の統計情報を取得することもできます。
asadmin>get -m server1.application.petstore.ejb-module. signon-ejb_jar.entity-bean.UserEJB.bean-method.getUserName3.execution-time-millis
execution-time-millis = 1監視可能なオブジェクトタイプ
監視に使用するオブジェクトのツリーには、複数のノードが含まれています。ノードとはオブジェクトツリー内の特定のエントリで、タイプ、名前、および親ノードによって一意に識別されます。ノードタイプには単独のものがあり、その場合は親ノードの下にノードのタイプが 1 つだけあることを意味します。名前は、単独のノードには必要ありません。
単独ではないタイプのノードには、名前が必要です。「インスタンス名」の列に、有効な名前空間を示します。
次の表に、さまざまなノードタイプ間の有効な親と子の関係についてのツリー構造と、いくつかのノードタイプについては名前空間を示します。
監視可能な属性名
すべての監視可能なオブジェクトについて、監視可能な属性名を公開する必要があるわけではありません。オブジェクトには、その他のオブジェクトをグループ化するためだけに使用されるものもあります。Sun ONE Application Server 7, Enterprise Edition では、http-server ノード以外は、ツリーのリーフノードだけが属性を持ちます。http-server ノードタイプは、子ノードと属性を持ちます。次の表では、さまざまなノードについての有効な監視可能属性名を示します。
表 6-2 http-server
属性名
データ型
説明
summary
文字列 (形式設定済み)
HTTP サーバーの要約。仮想サーバーとプロセスが含まれる
注 : 形式設定済みの文字列で公開されるデータについては、「HTTP サーバーの監視可能オブジェクト」を参照
表 6-3 virtual-server
属性名
データ型
説明
<vs-id>
文字列 (形式設定済み)
仮想サーバーの情報。各アプリケーションサーバーインスタンスには、1 つ以上の仮想サーバーを設定できる。http-server の要約属性から、仮想サーバー ID の一覧を取得できる。get コマンドパラメータに server1.http-server.virtual-server.<vs-id> という形式を指定すると、特定の仮想サーバーに関する統計情報を検索できる。get コマンドパラメータに server1.http-server.virtual-server.* という形式を指定すると、すべての仮想サーバーに関する統計情報を検索できる
注 : 形式設定済みの文字列で公開されるデータについては、「HTTP サーバーの監視可能オブジェクト」を参照
表 6-4 process
属性名
データ型
説明
<pid>
文字列 (形式設定済み)
プロセスの情報。各アプリケーションサーバーインスタンスに対して、1 つのプロセスがある。http-server の要約属性から、プロセス ID を取得できる。get コマンドパラメータに server1.http-server.process.<pid> という形式を指定すると、プロセスの統計情報を取得できる
注 : 形式設定済みの文字列で公開されるデータについては、「HTTP サーバーの監視可能オブジェクト」を参照
表 6-5 orb-connection
属性名
データ型
説明
total-inbound-connections
整数
ORB への受信総接続数
total-outbound-connections
整数
ORB への送信総接続数
表 6-6 orb-thread-pool
属性名
データ型
説明
thread-pool-size
整数
ORB スレッドプールのスレッド総数
waiting-thread-count
整数
スレッドプール内で受信待機中のスレッド数
表 6-7 jdbc-connection-pool
属性名
データ型
説明
total-threads-waiting
整数
JDBC 接続を待機するスレッド総数
total-outbound-connections
整数
JDBC 接続検証の失敗総数
total-connections-timed-out
整数
タイムアウトになった接続要求の総数
HTTP サーバーの監視可能オブジェクト
HTTP サーバーの監視可能属性名 summary は、Server 要素の属性値とそのサブ要素に関する要約情報を出力します。要約情報には、各サブ要素の数や、各サブ要素の属性値も含まれます。HTTP サーバーの virtual-server 属性は、VirtualServer 要素の属性とその各サブ要素の詳細を出力します。process 属性は、Process 要素の属性値とその各サブ要素の詳細を出力します。
NSAPI パフォーマンスプロファイルを有効にして、Profile 要素と ProfileBucket 要素の統計情報を取得するには、『Sun ONE Application Server 7, Enterprise Edition Developer's Guide to NSAPI』を参照してください。
パフォーマンスチューニングに監視統計情報を使用する方法については、『Sun ONE Application Server 7, Enterprise Edition パフォーマンスおよびチューニングガイド』を参照してください。
監視可能な HTTP サーバー要素
次の表に、HTTP サーバーの監視可能な要素を示します。
監視可能な HTTP サーバー属性
次の表に、HTTP サーバーの監視可能な属性を示します。
表 6-16 Profile
属性名
値
説明
Id
NSAPI パフォーマンスプロファイルバケット ID
Name
NSAPI パフォーマンスプロファイルバケットのシンボリック名
Description
NSAPI パフォーマンスプロファイルバケットの説明
表 6-23 Thread
属性名
値
説明
Mode
unknown、idle、DNS、request、processing、response、updating
最後に検知されたスレッドの状態
TimeStarted
GMT
スレッドの起動時刻
ConnectionQueue
スレッドが処理している ConnectionQueue の ID
CLI によるトランザクションサービスの管理set コマンドを使用すると、監視対象とする JTS の統計情報を管理できます。
例 1
ロールバックリストにトランザクションを追加するには (その結果ロールバックトランザクションまたは指定のトランザクションになる)、次のように set コマンドを実行します。
set --monitor server1.transaction-service.rollback-list=txnid1
例 2
トランザクションサービスを凍結するには、次のように set コマンドを実行します。
set --monitor server1.transaction-service.freeze=true
JTS の統計情報を収集する場合に監視できる属性については、表「トランザクションサービス」を参照してください。これらの属性は、「CLI ネームマッピング」で説明した規則に従ってコマンド行から設定できます。
Java トランザクションサービスの詳細は、第 8 章「トランザクションサービスの使用」を参照してください。
HTTP サービス品質の使用トラフィックのカウント方法と帯域幅の再計算頻度は、次の設定によって管理します。
管理インタフェースでは、サーバーインスタンスまたは仮想サーバーのクラスに対する、サーバーレベルまたはクラスレベルの設定を有効にすることができます。ただし、個々の仮想サーバーごとに設定をオーバーライドすることもできます。
この節には次の項目があります。
サービス品質 (QOS) の例
次の例では、サービス品質の情報を収集および計算する方法を示します。
再計算間隔も同様に機能します。このサーバーの再計算間隔は 100 ミリ秒です。
前の例に引き続き、帯域幅は 100 ミリ秒ごとに再計算されます。この計算は、トラフィック量とメトリック間隔に基づいて行われます。
- 0 秒の時点では、帯域幅の 1 回目の計算が行われる。この時点での合計トラフィックは 0 で、測定時間の 30 秒で割ると、帯域幅は 0
- 1 秒の時点では、帯域幅の 10 回目 (1000 ミリ秒/100 ミリ秒) の計算が行われる。この時点での合計トラフィックは 5000 バイト。これを 30 秒で割ると、帯域幅は 5000/30 = 166 バイト / 秒
- 30 秒の時点では、帯域幅の 300 回目の計算が行われる。この時点での合計トラフィックは 5000 バイト。これを 30 秒で割ると、帯域幅は 5000/30 = 166 バイト / 秒
- 32 秒の時点では、帯域幅の 320 回目の計算が行われる。この時点でのトラフィックは 0 バイト (トラフィックを生成した接続が古くなってカウントされなくなるため)。これを 30 秒で割ると、帯域幅は 0 バイト / 秒
サービス品質 (QOS) の設定
サーバーインスタンスまたは仮想サーバーのクラスについてのサービス品質は、管理インタフェースで設定されます。
注
サービス品質の設定内容を有効にするためには、obj.conf ファイルの Server Application Function (SAF) も設定する必要があります。「obj.conf ファイルへの必要な変更」を参照してください。
サービス品質を設定するには、次の手順に従います。
- 左のペインで「App Server Instances (アプリケーションサーバーインスタンス)」ノードを選択します。
- サーバーインスタンスノードを展開して、「HTTP Server (HTTP サーバー)」ノードを表示します。
- 「HTTP Server (HTTP サーバー)」ノードをクリックして、「QOS」タブを表示します。
- 「QOS」タブをクリックします。
次のページでは、サービス品質の一般的な設定と、「Propaeties (プロパティ)」ボタンが表示されています。
図 6-1 仮想サーバーインスタンスの「QOS」タブ
- この HTTP サーバーに対するサービス品質を有効にするために、「QOS Enable (QOS を有効)」をクリックします。
注 : デフォルトでは、サービス品質は無効になっています。サービス品質を有効にすると、サーバーのオーバーヘッドがわずかに増えます。
- 「QOS Metrics Interval (QOS メトリック間隔)」を指定します。
メトリック間隔は、サーバートラフィック計算中にデータがサンプリングされる時間 (秒単位) です。デフォルト値は 30 秒です。
サイズの大きいファイルを転送することが多い場合は、このフィールドの値を大きくします (数分またはそれ以上)。サイズの大きいファイルを転送する際、メトリック間隔が短いと、許容帯域幅がすべて占有される可能性があります。この場合、最大帯域幅の設定が有効になっていると接続が拒否されます。帯域幅はメトリック間隔によって平均化されるため、間隔を長くすれば、サイズの大きいファイルによるトラフィックスパイクを防ぐことができます。
帯域幅の制限値が使用可能な帯域幅よりもはるかに小さい場合 (たとえば、帯域幅の制限値が 1M バイト / 秒で、バックボーンとの接続が 1G バイト / 秒の場合) は、メトリック間隔を短くする必要があります。
注 : 転送する静的ファイルのサイズが大きいという問題の解決策と、帯域幅の制限値が使用可能な帯域幅よりもはるかに小さいという問題の解決策は相反しています。どちらの問題を調整するかを決定する必要があります。
- 「QOS Recompute Time Interval (QOS 再計算時間間隔)」を指定します。
再計算時間間隔は、すべてのサーバー、クラス、および仮想サーバーの帯域幅の計算間隔を示すミリ秒数です。デフォルトは 100 ミリ秒です。
- 「Bandwidth Limit (帯域幅制限)」を指定します。
これは、サーバーインスタンスに対する最大帯域幅 (バイト / 秒) です。ある程度「QOS Metrics Interval (QOS メトリック間隔)」と依存関係があります。
- 最大帯域幅の設定を強制するかどうかを選択します。
最大帯域幅を強制する場合は、帯域幅の制限値に達したとき、それ以上の接続が拒否されます。
最大帯域幅を強制しない場合は、制限値を超えたとき、サーバーのイベントログにメッセージが記録されます。
- 「Connection Limit (接続制限)」を指定します。
これは、同時に処理できる要求の数です。
- 接続制限の設定を強制するかどうかを選択します。
最大接続数を強制する場合は、制限値に達したとき、それ以降の接続が拒否されます。最大接続数を強制しない場合は、制限値を超えたとき、サーバーのイベントログにメッセージが記録されます。
- この指定はオプションです。サービス品質に関する追加の名前 - 値ペアを指定するには、「Properties (プロパティ)」ボタンをクリックします。
サービス品質のプロパティで有効な名前 - 値ペアの一覧については、オンラインヘルプを参照してください。
- 「Save (保存)」をクリックして、サーバーインスタンスへの変更をコミットします。
- 左ペインでアプリケーションサーバーインスタンスを選択してサーバーインスタンスにアクセスし、「Apply Changes (変更を適用)」をクリックします。
obj.conf ファイルへの必要な変更
サービス品質を強制するには、指令 (ディレクティブ) を obj.conf ファイルに追加して、次の Server Application Function (SAF) を呼び出す必要があります。
AuthTrans 指令 qos-handler を正しく動作させるためには、デフォルトのオブジェクト内で最初の AuthTrans として設定する必要があります。サービス品質ハンドラには、仮想サーバー、仮想サーバークラス、グローバルサーバーの現在の統計情報を調べ、エラーを返して制限値を強制する働きがあります。Sun ONE Application Server には、qos-handler という組み込みのサービス品質ハンドラ SAF のサンプルが付属しています。この SAF は、制限値に達した時刻を記録したあと、サーバーに 503 Server busy エラーを返して、NSAPI で処理されるようにします。
Sun ONE Application Server には、qos-error という組み込みのエラー SAF のサンプルも付属しています。このサンプルは、503 エラーの原因となった制限値と、その制限値を決定付けた統計値を示すエラーページを返します。
SAF とその使用方法の詳細は、『Sun ONE Application Server Developer's Guide to NSAPI』を参照してください。
サービス品質に関する既知の制限事項
サービス品質の機能を使用するときは、次の制限事項に留意してください。
- サービス品質の機能では、アプリケーションレベルの HTTP 帯域幅だけが測定されます。HTTP 帯域幅は、次のようなさまざまな理由により、実際の TCP ネットワーク帯域幅とは異なる場合があります。
- サービス品質の機能では、PR_TransmitFile 呼び出しからのトラフィックを正確に測定できません。PR_Send()/net_write、PR_Recv()/net_read などの基本入出力操作では、通常、1 回のシステムコールで転送されるバイト数とバッファのサイズが等しくなり、呼び出しの時間も短いため、転送されたデータ量を帯域幅マネージャで迅速に計算できます。この機能は、動的なコンテンツアプリケーションの瞬間的な帯域幅の測定に最適です。しかし、PR_TransmitFile から転送されるデータの量は転送が終了するまで測定できません。
サービス品質の機能は、PR_TransmitFile が短時間であれば適切に動作します。一方、PR_TransmitFile が長時間に及ぶ場合、たとえばダイアルアップユーザーがサイズの大きいファイルをダウンロードする場合などは、転送の完了時に転送された全体のデータ量が算入されます。次の再計算間隔では、その大規模な PR_TransmitFile が原因で、帯域幅マネージャによって計算される帯域幅の値が非常に大きくなります。このような場合、サーバーは、次のメトリック間隔まですべての要求を拒否することがあります。そして、帯域幅マネージャが期限切れになったファイル転送操作を終了したときに、ふたたび帯域幅の値が小さくなります。静的ファイルを長時間かけてダウンロードするようなサイトでは、メトリック間隔をデフォルトの 30 秒よりも長くする必要があります。
- 計算される帯域幅は、瞬間的なものではなく、一定の間隔で一定期間にわたって計算されるものなので、常に近似値になります。たとえば、メトリック間隔がデフォルトの 30 秒で、サーバーが 29 秒間アイドル状態だったとします。この場合、次の 1 秒間で、クライアントが帯域幅の制限値の 30 倍を使用することもあります。
- 帯域幅のサービス品質に関する統計情報は、サーバーが動的に再設定されると失われます。また、サービス品質の制限は、アクティブでない古い設定上で接続したスレッドには適用されません。これは、帯域幅マネージャのスレッドが、アクティブな設定の帯域幅の統計情報だけを計算するためです。クライアントが長時間ソケットを終了せず、ずっとアクティブになっている場合、サーバーはこのクライアントをタイムアウトにしません。このようなクライアントは、サーバーを動的に再設定しても、サービス品質の制限の影響を受けない場合があります。
- 同時に複数の接続が存在する場合、統計情報は、仮想サーバークラスやグローバルサーバーインスタンスとは異なった細分度で計算されます。個々の仮想サーバーの接続カウンタは、要求が解析されて仮想サーバーに配信された直後、アトミックに増分されます。そして、その要求の応答処理が終了した時点でアトミックに減分されます。このため、仮想サーバーの接続に関する統計情報は、どの時点でも常に正確です。
ただし、仮想サーバークラスとグローバルサーバーインスタンスの接続に関する統計情報は、すぐには更新されません。これらの統計情報は、再計算間隔ごとに帯域幅マネージャのスレッドによって更新されます。仮想サーバークラスの接続数は、そのクラスのすべての仮想サーバー上の接続の合計数であり、グローバルサーバーインスタンスの接続数は、すべての仮想サーバークラス上の接続の合計数です。
これらの値の計算方法によって、仮想サーバーの接続数は常に正確になります。また、接続数の制限を強制すると、制限を超えた接続は許可されません。仮想サーバークラスとサーバーインスタンスの値は、再計算間隔だけで計算されるため、接続数に比較すると正確ではありません。
SNMP についてSNMP (Simple Network Management Protocol) は、ネットワークの管理情報と監視情報を交換するために使用されるプロトコルです。管理対象デバイスとネットワーク管理ステーション (NMS) 間のデータのやりとりは、SNMP によって行われます。ネットワーク上のホスト、ルーター、HTTP サーバー、その他のサーバーなど、SNMP を実行するすべてのデバイスが管理対象デバイスとなります。
この節では次の項目について説明します。
ネットワーク管理ステーション (NMS)
NMS (ネットワーク管理ステーション) は、特定のネットワークをリモート管理するマシンです。通常、NMS ソフトウェアには、収集されたデータをグラフに表示する機能や、そのデータを使ってサーバーが特定の許容範囲内で動作していることを確認する機能があります。
通常、NMS には強力なワークステーションを使用し、1 つ以上のネットワーク管理アプリケーションがインストールされます。HP OpenView のようなネットワーク管理アプリケーションでは、HTTP サーバーをはじめとする管理対象のデバイスに関する情報がグラフィカルに表示されます。たとえば、社内のどのサーバーが稼動または停止しているかを表示することや、受け取ったエラーメッセージの数と種類を表示することができます。このような情報は、Sun ONE Application Server で SNMP を使用する場合、サブエージェントとマスターエージェントという 2 種類のエージェントを使用して、NMS とサーバーの間で転送されます。
サブエージェントは、さまざまなドメインで実行しているサーバーインスタンスに関する情報を収集し、マスターエージェントに情報を渡します。マスターエージェントとサブエージェントは、Sun ONE Application Server のインストールごとに存在します。
マスターエージェントは、さまざまなサブエージェントと NMS との間で情報を交換します。マスターエージェントは、Sun ONE Application Server 7, Enterprise Edition のインストール時にインストールされます。
1 台のホストコンピュータに複数のサブエージェントをインストールできますが、マスターエージェントは 1 つしかインストールできません。たとえば、Sun ONE Directory Server、Sun ONE Application Server、Sun ONE Messaging Server を同じホストにインストールしている場合、各サーバーのサブエージェントは、同じマスターエージェントと通信します。
NMS は、サーバー情報の要求、またはサーバー MIB に保存されている変数値の変更のいずれかを行います。次に例を示します。
- NMS が管理サーバーのマスターエージェントにメッセージを送信します。このメッセージは、データの要求 (GET メッセージ) か MIB の変数の設定命令 (SET メッセージ) です。
- マスターエージェントは、受信したメッセージを適切なサブエージェントに転送します。
- サブエージェントは、このデータを取得するか、MIB 内の変数を変更します。
- サブエージェントは、マスターエージェントにデータまたは状態を報告します。マスターエージェントは、報告内容 (GET メッセージ) を NMS に返送します。
- NMS は、ネットワーク管理アプリケーションを通して、データをテキストまたはグラフィックで表示します。
管理情報ベース (MIB) オブジェクト
Sun ONE Application Server には、ネットワーク上の管理情報や監視情報に関する変数が保存されています。マスターエージェントがアクセスできる変数は、管理対象オブジェクトと呼ばれます。これらのオブジェクトは、MIB (管理情報ベース) と呼ばれるツリー構造で定義されます。MIB によって、HTTP サーバーのネットワーク設定、状態、および統計情報へアクセスできます。SNMP を使用すると、これらの情報を NMS (ネットワーク管理ステーション) から確認できます。
MIB ツリーのトップレベルを見ると、インターネットオブジェクト識別子には次の 4 種類のサブツリーがあることがわかります。
private (4) のサブツリーには、enterprises (1) ノードが含まれます。enterprises (1) ノードの各サブツリーは、個々の企業 (独自の MIB 拡張を登録している組織) に割り当てられます。企業は、自社のサブツリーの下に製品固有のサブツリーを作成できます。企業によって作成された MIB は、enterprises (1) ノードの下に置かれます。
Sun ONE Application Server のサブエージェントは、SNMP 通信で使用する MIB を提供します。サーバーは、これらの変数が含まれたメッセージまたはトラップを送信することにより、重大なイベントを NMS に報告します。NMS はサーバーの MIB のデータをクエリできます。
Sun ONE Application Server ごとに独自の MIB が、install_dir/lib に格納されています。
Sun ONE Application Server の MIB は、appserv.mib というファイルです。この MIB には、Sun ONE Application Server のネットワーク管理に関する各種変数の定義が格納されています。
Sun ONE Application Server の MIB は、
appserver 1 (as appserver7 OBJECT IDENTIFIER ::= {appserver 1 }) というオブジェクト識別子を持ち、install_dir/lib ディレクトリに格納されます。
Sun ONE Application Server の MIB を使用すると、Sun ONE Application Server 7, Enterprise Edition に関する管理情報をリアルタイムで確認および監視できます。次の表に、appserv.mib ファイルに格納されている管理対象オブジェクトとその説明を示します。
SNMP メッセージ
SNMP では、GET と SET の 2 種類のメッセージが定義されています。
各オブジェクトには、MIB 内で一意の識別子が割り当てられます。SNMP マネージャでオブジェクトにアクセスするには、その識別子を指定する GET コマンドおよび GETNEXT コマンドを発行します。プロキシエージェントは、指定されたオブジェクトの値を取得し、SNMP マネージャに転送します。ログに追加されたイベントがトラップフィルタの条件を満たしている場合、SNMP トラップが生成されます。トラップを生成しないイベントは、単に管理ログテーブルのエントリとして記録されます。これらには、標準の GET コマンドおよび GETNEXT コマンドで SNMP マネージャからアクセスできます。
GET メッセージと SET メッセージは、NMS からマスターエージェントに送信されます。管理インタフェースでは、このいずれかまたは両方のメッセージを使用できます。
SNMP は、プロトコルデータユニット (PDU) の形式でネットワーク情報をやり取りします。このユニットには、HTTP サーバーなどの管理対象デバイスに格納されている変数の情報が収められています。これらの変数は、必要に応じて NMS に報告される値とタイトルを含んでおり、管理対象オブジェクトとも呼ばれます。サーバーから NMS に送信されるプロトコルデータユニットを「トラップ」と呼びます。GET、SET、トラップの各メッセージの使用については、以降の各節で説明します。
SNMP トラップの送信先
SNMP トラップは、SNMP エージェントが NMS に送信するメッセージです。SNMP エージェントは、インタフェースの状態が稼動から停止に変わったときなどにトラップを送信します。SNMP エージェントは、NMS のアドレスを元にトラップの送信先を認識します。
SNMP マスターエージェントのトラップの送信先は、Sun ONE Application Server の管理インタフェースで設定できます。設定済みのトラップの送信先の表示、編集、および削除も可能です。管理インタフェースを使ってトラップの送信先を設定すると、実際に CONFIG ファイルが編集されます。
サーバーのサブエージェントは、重大なイベントが発生したとき、NMS にメッセージまたはトラップを送信します。次に例を示します。
SNMP トラップポートの設定方法については、「SNMP マスターエージェントのインストール」を参照してください。
SNMP エージェントコミュニティ
SNMP エージェントコミュニティは、指定されたコミュニティに割り当てられたコミュニティ文字列と操作で構成されます。コミュニティ文字列は、SNMP エージェントが承認に使用する NMS 名を示すテキスト文字列です。NMS は、エージェントに送信するメッセージとともにコミュニティ文字列を送信します。
割り当てられる操作は、get、set のいずれか、または両方です。SNMP エージェントは、データ交換のために get、set のいずれか、または get と set の両方を実行する権限が NMS に与えられているかどうかを検証します。SNMP パケット内のコミュニティ文字列は秘匿されず、ASCII テキストで送信されます。
管理インタフェースを使用すると、指定されたコミュニティごとのコミュニティ文字列と許可された操作を設定および管理できます。SNMP エージェントコミュニティの設定方法については、「SNMP マスターエージェントのインストール」を参照してください。
SNMP の設定通常、SNMP を使用するには、システムにマスターエージェントと 1 個以上のサブエージェントをインストールし、実行している必要があります。サブエージェントを有効にする前に、マスターエージェントをインストールする必要があります。「SNMP マスターエージェントのインストール」を参照してください。
SNMP の設定手順はシステムによって異なります。次の表に、さまざまな条件下での設定手順の概要を示します。実際の手順は、この章の後半で詳しく説明します。
最初に、次の点について確認します。
確認方法については、ご使用のシステムのマニュアルを参照してください。
この節では次の項目について説明します。
プロキシ SNMP エージェントの使用
すでに実行中のネイティブエージェントを Sun ONE Application Server のマスターエージェントと同時に継続して使用する場合は、プロキシ SNMP エージェントを使用する必要があります。その前に、ネイティブマスターエージェントを停止します。詳しい手順については、ご使用のシステムのマニュアルを参照してください。
注
プロキシエージェントを使用するには、プロキシエージェントをインストールして起動する必要があります。加えて、ネイティブ SNMP エージェントは、Sun ONE Application Server マスターエージェントで使用しているものとは異なるポート番号を設定した上で、再起動が必要になります。
この節には次の項目があります。
プロキシ SNMP エージェントのインストール
システム上で SNMP エージェントが稼働中で、ネイティブ SNMP デーモンを継続して使用する場合は、次の手順に従います。
- SNMP マスターエージェントをインストールします。「SNMP マスターエージェントのインストール」を参照してください。
- プロキシ SNMP エージェントをインストールし、起動して、ネイティブ SNMP デーモンを再起動します。「プロキシ SNMP エージェントの使用」を参照してください。
- SNMP マスターエージェントを起動します。「SNMP マスターエージェントの有効化と起動」を参照してください。
- サブエージェントを有効にします。「サブエージェントの有効化」を参照してください。
SNMP プロキシエージェントをインストールするには、サーバーのルートディレクトリの install_dir/lib/snmp/sagt にある CONFIG ファイル (別の名前を付けることも可能) を編集して、SNMP デーモンの待機ポートを指定します。さらに、プロキシ SNMP エージェントが転送する MIB ツリーおよびトラップも指定します。
CONFIG ファイルの例を示します。
AGENT AT PORT 1161 WITH COMMUNITY public
SUBTREES 1.3.6.1.2.1.1,
1.3.6.1.2.1.2,
1.3.6.1.2.1.3,
1.3.6.1.2.1.4,
1.3.6.1.2.1.5,
1.3.6.1.2.1.6,
1.3.6.1.2.1.7,
1.3.6.1.2.1.8
FORWARD ALL TRAPS;
プロキシ SNMP エージェントの起動
プロキシ SNMP エージェントを起動するには、コマンドプロンプトで次のように入力します。
ネイティブ SNMP デーモンの再起動
プロキシ SNMP エージェントの起動後、CONFIG ファイルに指定されているポートでネイティブ SNMP デーモンを再起動します。
ネイティブ SNMP デーモンを再起動するには、コマンドプロンプトで次のように入力します。
port_number は CONFIG ファイルに指定されているポート番号です。たとえば、Solaris プラットフォームで、前述した例の CONFIG ファイルのポート番号を使用する場合は、次のように入力します。
SNMP マスターエージェントのインストール
マスター SNMP エージェントをインストールするには、次の手順に従います。
- root としてログインします。
- SNMP デーモン (snmpd) がポート 161 で実行されているかどうかを確認します。
SNMP デーモンが実行されていない場合は、手順 4 に進みます。
SNMP デーモンが実行中の場合は、再起動の方法と、どの MIB ツリーがサポートされているかを確認してください。
- SNMP デーモンが実行されている場合は、そのプロセスを強制終了します。
- 管理インタフェースの左側のペインで、管理サーバーノードを選択します。
- 「Monitoring (監視)」タブを選択して、次の図で示される「SNMP Agent Trap (SNMP エージェントトラップ)」ページを表示します。
図 6-2 「SNMP Agent Trap (SNMP エージェントトラップ) ページ
このページには、マネージャエントリの情報が表示されます。
- ネットワーク管理ソフトウェアを実行しているシステムの名前を入力します。
- ネットワーク管理システムがトラップを待機しているトラップポート番号を入力します。一般的なポート番号は 162 です。トラップの詳細は、「SNMP トラップの送信先」を参照してください。
- トラップで使用するコミュニティ文字列を入力します。コミュニティ文字列の詳細は、「SNMP エージェントコミュニティ」を参照してください。
- 「OK (了解)」をクリックします。
- 「Monitoring (監視)」タブの「SNMP Agent Community (SNMP エージェントコミュニティ)」リンクをクリックします。
次の図に示すコミュニティ文字列の情報が表示されます。
図 6-3 「SNMP Agent Community (SNMP エージェントコミュニティ)」ページ
- マスターエージェントのコミュニティ文字列を入力します。
- コミュニティの動作レベルを選択します。
コミュニティが確立されると、このページの「Current Communities (現コミュニティ)」という見出しの下のボタンで、コミュニティ設定の編集や削除を行うことができます。
- 「OK (了解)」をクリックします。
- 左ペインでアプリケーションサーバーインスタンスを選択してサーバーインスタンスにアクセスし、「Apply Changes (変更を適用)」をクリックします。
SNMP マスターエージェントの有効化と起動マスターエージェントの動作は、CONFIG という名前のエージェント設定ファイルに定義されています。このファイルは手動で編集できます。SNMP サブエージェントを有効にする前に、マスター SNMP エージェントをインストールする必要があります。
この節には次の項目があります。
別のポートを使用したマスターエージェントの起動
管理インタフェースでは、161 以外のポートで SNMP マスターエージェントを起動することはできません。別のポートを使用するには、次の手順に従って手動でマスターエージェントを起動してください。
指定のポートでマスターエージェントが起動します。手動で起動した場合も、管理インタフェースで、このマスターエージェントが実行されていることを確認できます。
SNMP マスターエージェントの手動設定
SNMP マスターエージェントを手動で設定するには、次の手順に従います。
- サーバーのルートディレクトリの lib/snmp/magt にある CONFIG ファイルを編集します。
- CONFIG ファイルに sysContact 変数と SysLocation 変数を定義します (オプション)。「sysContact 変数と sysLocation 変数の定義」を参照してください。
マスターエージェントの CONFIG ファイルの編集
CONFIG ファイルでは、マスターエージェントで動作するコミュニティおよびマネージャを定義します。マネージャの値は、有効なシステム名または IP アドレスにしてください。
基本的な CONFIG ファイルの例を示します。
COMMUNITY public
ALLOW ALL OPERATIONS
MANAGER manager_station_name
SEND ALL TRAPS TO PORT 162
WITH COMMUNITY public
sysContact 変数と sysLocation 変数の定義
CONFIG ファイルを編集して、MIB-II 変数の sysContact および sysLocation を指定する sysContact および sysLocation の初期値を追加できます。この例の sysContact および sysLocation の文字列が二重引用符で囲まれていることに注意してください。スペース、改行、タブなどが含まれている文字列は、二重引用符で囲む必要があります。16 進数の値を指定することもできます。
次に、sysContact 変数と sysLocation 変数が定義された CONFIG ファイルの例を示します。
SNMP サブエージェントの設定
SNMP サブエージェントを設定するには、次の手順に従います。
- 管理サーバーの左側のペインでサーバーインスタンスノードを選択します。
- 右側のペインで「Monitoring (監視)」タブを選択します。
- 「SNMP Subagent Configuration (SNMP サブエージェント設定)」リンクを選択します。
次に示すページが表示されます。
図 6-4 「SNMP Subagent Configuration (SNMP サブエージェント設定)」ページ
- (UNIX のみ)「Master Host (マスターホスト)」フィールドにサーバーの名前とドメインを入力します。
- サーバーの説明 (オペレーティングシステムの情報を含む) を入力します。
- サーバーを管理する組織を入力します。
- サーバーインスタンスの名前を入力します。
- 「Contact (連絡先)」フィールドに、サーバーの管理担当者の名前と連絡先を入力します。
- 「Enable the SNMP Statistics Collection (SNMP 統計収集を有効」で「On (オン)」を選択します。
- 「OK (了解)」をクリックします。
- 左ペインでアプリケーションサーバーインスタンスを選択してサーバーインスタンスにアクセスし、「Apply Changes (変更を適用)」をクリックします。
SNMP マスターエージェントの起動
SNMP マスターエージェントのインストール後、手動または管理インタフェースから管理サーバーを使用して SNMP マスターエージェントを起動できます。
SNMP マスターエージェントの手動による起動
マスターエージェントを手動で起動するには、コマンドプロンプトに次のように入力します。
INIT ファイルは、システムの場所や連絡先情報など、MIB-II システムグループからの情報が格納された不揮発性ファイルです。INIT ファイルが存在しない場合、ファイルはマスターエージェントの初回の起動時に作成されます。
標準以外のポートでマスターエージェントを手動で起動するには、次の 2 種類の方法のいずれかを使用してください。
方法 1 : CONFIG ファイルに、マスターエージェントがマネージャからの SNMP 要求を待機する各インタフェースのトランスポートマッピングを指定します。トランスポートマッピングを使うと、マスターエージェントは標準ポートと標準以外のポートで接続を受け入れることができます。また、マスターエージェントは、標準以外のポートで SNMP トラフィックを受け入れることができます。最大同時 SNMP 数は、1 プロセスあたりのオープンソケット数またはファイル記述子数に関するシステムの制限値によって決まります。トランスポートマッピングのエントリの例を示します。
TRANSPORT extraordinary SNMP
OVER UDP SOCKET
AT PORT 11161CONFIG ファイルを手動で編集した後、コマンドプロンプトに次のように入力し、マスターエージェントを手動で起動します。
方法 2 :/etc/services ファイルを編集して、マスターエージェントが標準ポートと標準以外のポートでも接続を受け入れることができるようにします。
管理サーバーによる SNMP マスターエージェントの起動
管理サーバーを使って SNMP マスターエージェントを起動するには、次の手順に従います。
サブエージェントの有効化
管理サーバーに付属するマスターエージェントをインストールしたら、マスターエージェントを起動する前に、サーバインスタンスのサブエージェントを有効にする必要があります。マスターエージェントのインストール方法の詳細は、「SNMP マスターエージェントのインストール」を参照してください。
UNIX/Linux プラットフォームでは、サブエージェントを使用して SNMP 機能を停止できます。サブエージェントを停止してから、マスターエージェントを停止する必要があります。マスターエージェントを先に停止すると、サブエージェントを停止できなくなることがあります。その場合は、マスターエージェントを再起動し、サブエージェントを停止したあと、マスターエージェントを停止します。
SNMP サブエージェントを有効化するには、次の手順に従います。
このページで、SNMP サブエージェントの起動、停止、再起動を行うことができます。サブエージェントの状態が、制御ボタンの上に表示されます。
注
SNMP の設定を変更したときは、「Apply (適用)」ボタンをクリックしてから、「SNMP Subagent Control (SNMP サブエージェント制御)」ページで SNMP サブエージェントを再起動する必要があります。