Cosminexus システム構築ガイド
障害検知時コマンドは,Management Serverで管理している論理サーバにトラブルが発生した場合に,システムによって実行されるコマンドです。この節では,トラブルシューティングの資料を障害検知時コマンドで取得するための設定について説明します。障害検知時コマンドを利用して,トラブル発生時のスレッドダンプやユーザダンプの取得などの処理を実行することで,トラブル発生時のタイムリーな資料を取得できるようになります。また,障害検知時コマンドを利用している場合,次のどちらかのタイミングでsnapshotログを自動収集することもできます。
なお,障害検知時コマンドで取得した資料はsnapshotログとして収集できます。
障害検知時コマンドには,システムで提供しているコマンドとユーザが作成したコマンドの2種類があります。障害検知時コマンドの種類を次の表に示します。
表5-4 障害検知時コマンドの種類
| コマンドの種類 | コマンドの動作 | コマンドを利用するための設定 |
|---|---|---|
| システム提供の障害検知時コマンド | 論理サーバにトラブルが発生したときに,トラブルが発生した論理サーバのスレッドダンプや性能解析トレースなどを取得できます。 ただし,J2EEサーバまたはSFOサーバのプロセスが存在しない場合は,スレッドダンプを取得できません。また,パフォーマンストレーサのプロセスが存在しない場合は,性能解析トレースを取得できません。 |
|
| ユーザ作成の障害検知時コマンド | 論理サーバにトラブルが発生したときに,任意の処理を記述したコマンドファイルを実行できます。 例えば,コマンドファイルにdrwtsn32コマンドまたはkillコマンドの実行を記述しておくことで,J2EEサーバにトラブルが発生したときに,ユーザダンプまたはcoreダンプを取得できます。 |
デフォルトの設定では,論理サーバにトラブルが発生した場合にシステム提供の障害検知時コマンドが実行されて,スレッドダンプや性能解析トレースなどが取得されます。また,トラブルが発生した論理サーバの停止前にsnapshotログが収集されます。
システム提供の障害検知時コマンドで取得できる情報について,次の表に示します。
表5-5 システム提供の障害検知時コマンドで取得できる情報
| 論理サーバ | OS | 取得できる情報 | |
|---|---|---|---|
| プロセスダウンを検出した場合 | ハングアップを検出した場合 | ||
| 論理パフォーマンストレーサ | Windows UNIX |
|
− |
| 論理J2EEサーバ | Windows |
|
|
| UNIX |
|
|
|
| 論理SFOサーバ | Windows |
|
|
| UNIX |
|
|
|
| 論理Webサーバ | Windows UNIX |
|
|
| ほかの論理サーバ | Windows UNIX |
|
|
システム提供の障害検知時コマンドの動作設定を変更する場合,またはユーザ作成の障害検知時コマンドを利用する場合に必要な設定について,(1)〜(3)で説明します。
mserver.properties(Management Server環境設定ファイル)で,障害検知時コマンドの動作を設定します。
次のキーで,障害検知時コマンドの動作を設定します。
| キー | 説明 | 設定の要否 | |
|---|---|---|---|
| システム | ユーザ | ||
| com.cosminexus.mngsvr.sys_cmd.abnormal_end.enabled | システム提供の障害検知時コマンドを利用するかどうかを指定します。デフォルトは,true(利用する)です。 | △ | − |
| com.cosminexus.mngsvr.usr_cmd.abnormal_end.enabled | ユーザ作成の障害検知時コマンドを利用するかどうかを指定します。デフォルトは,false(利用しない)です。 | − | ○ |
| com.cosminexus.mngsvr.sys_cmd.abnormal_end.timeout | システム提供の障害検知時コマンドの終了を待つ時間を指定します。指定時間を経過してもコマンドが終了しない場合は,ユーザ回復処理を続行します。 | △ | − |
| com.cosminexus.mngsvr.usr_cmd.abnormal_end.timeout | ユーザ作成の障害検知時コマンドの終了を待つ時間を指定します。 | − | △ |
| com.cosminexus.mngsvr.snapshot.auto_collect.enabled | 障害発生時,または一括再起動時にsnapshotログを取得するかどうかを指定します。デフォルトは,true(snapshotログを取得する)です。 | △ | △ |
| com.cosminexus.mngsvr.snapshot.collect.point | snapshotログの収集タイミングとして,次のどちらかを指定します。
|
△ | △ |
adminagent.properties(運用管理エージェントプロパティファイル)で,障害検知時コマンドで取得する資料を設定します。
adminagent.propertiesの次のキーで,障害検知時コマンドで取得する資料の数や取得の有無,障害検知時コマンドのパスなどを設定します。なお,snapshotログの収集先を定義するためのリストファイルについては,「5.2(3) snapshotログの収集先のカスタマイズ」を参照してください。
| キー | 説明 | 設定の要否 | |
|---|---|---|---|
| システム | ユーザ | ||
| adminagent.snapshotlog.num_snapshots | 一次送付資料として収集する,論理サーバごとのsnapshotログファイルの数を指定します。 | △ | △ |
| adminagent.snapshotlog.listfile.2.num_snapshots | 二次送付資料として収集する,論理サーバごとのsnapshotログファイルの数を指定します。 | △ | △ |
| adminagent.j2ee.sys_cmd.abnormal_end.threaddump | システム提供の障害検知時コマンドで,スレッドダンプを取得するかどうかを指定します。 | △ | − |
| adminagent.sys_cmd.abnormal_end.prftrace | システム提供の障害検知時コマンドで,性能解析トレースファイルを取得するかどうかを指定します。 | △ | − |
| adminagent.<論理サーバの種類>.usr_cmd.abnormal_end | 論理サーバの種類ごとに,実行する障害検知時コマンドのパスを指定します。 | ○ | ○ |
ユーザ作成の障害検知時コマンドは,コマンドファイル(バッチファイルまたはシェルスクリプトファイル)に記述できます。このとき,次の表に示す環境変数をコマンドファイルに記述しておくことで,障害の発生した論理サーバの情報や障害に関する情報を利用してコマンドを実行できます。
表5-6 ユーザ作成の障害検知時コマンドのコマンドファイルに記述できる環境変数
| 環境変数 | 説明 |
|---|---|
| COSMI_MNG_LSNAME | 障害の発生した論理サーバの論理サーバ名。なお,論理CTM内のネーミングサービスで障害が発生した場合は,論理CTMの論理サーバ名が設定されます。 |
| COSMI_MNG_RSNAME | 障害の発生した論理サーバの実サーバ名。J2EEサーバまたはSFOサーバ以外の論理サーバの場合,論理サーバ名が設定されます。 |
| COSMI_MNG_LSPID | 論理サーバのプロセスID。 |
| COSMI_MNG_LSARGS | 論理サーバを起動したときのコマンドライン。 |
| COSMI_MNG_TIME_SUSPENDED | ハングアップを検知した時刻。万国標準時(UTC)の1970年1月1日午前0時からの経過時間(単位:ms)。なお,無応答を検知しない場合,値は設定されません。 |
| COSMI_MNG_TIME_TERMINATED | 異常停止(プロセスダウン)を検知した時刻。万国標準時(UTC)の1970年1月1日午前0時からの経過時間(単位:ms)。なお,ハングアップの場合,値は設定されません。 |
| COSMI_MNG_WEB_SYSTEM | 障害が発生した論理サーバが所属するWebシステム。Smart Composer機能を使用しない場合,値は設定不要です。 |
| COSMI_MNG_TIER | 障害が発生した論理サーバが所属する物理ティア。Smart Composer機能を使用しない場合,値は設定不要です。 |
| COSMI_MNG_UNIT | 障害が発生した論理サーバが所属するサービスユニット。Smart Composer機能を使用しない場合,値は設定不要です。 |
| COSMI_MNG_HWS | Hitachi Web Serverのインストールディレクトリ。 |
なお,障害検知コマンドとして実行するコマンドから出力される標準出力,標準エラー出力は,Management Serverでは取得しません。このため,コマンドの標準出力,標準エラー出力を取得する場合は,コマンドの中でファイルに出力する必要があります。
J2EEサーバの障害発生時にdrwtsn32コマンドまたはkillコマンドを実行してユーザダンプまたはcoreダンプを取得する場合の例を次に示します。
rem 障害がプロセスダウンかハングアップかを,プロセスダウンを検知した時刻から判断する。 if defined COSMI_MNG_TIME_TERMINATED goto END rem 障害がハングアップであるため,ユーザダンプを取得する。 "C:\WINDOWS\system32\drwtsn32.exe" -p %COSMI_MNG_LSPID% :END |
#!/bin/sh # 障害がプロセスダウンかハングアップかを,プロセスダウンを検知した時刻から判断する。 if [ "$COSMI_MNG_TIME_TERMINATED" = "" ] ; then # 障害がハングアップであるため,coreダンプを取得する。 /bin/kill -6 $COSMI_MNG_LSPID fi |
論理CTMでは,グローバルCORBAネーミングサービスとCTMデーモンの二つのプロセスが起動,停止,監視されます。そのため,論理CTM内のグローバルCORBAネーミングサービスの障害を検知した場合とCTMデーモンの障害を検知した場合とでは,実行するコマンドが異なります。
また,論理CTM内の二つのプロセス(CTMデーモン,グローバルCORBAネーミングサービス)のどちらのプロセスで障害を検知しても,Management Serverのログには,論理サーバ(CTM)の障害検知時コマンドの開始を通知するログが出力されます。
All Rights Reserved. Copyright (C) 2006, 2007, Hitachi, Ltd.