6.2.1 プロセス監視の概要
(1) プロセス監視の共通機能
TPBrokerでは,プロセス監視として四つの方法を提供しています。四つの方法に共通な機能を次の表に示します。
表6-1 プロセス監視の共通機能
項目 | 説明 |
---|
監視対象となるプロセス | アプリケーションプログラム,リソースマネージャ,OTSやORBのデーモンなど |
最大監視対象プロセス数 | 運用定義/ADM/max_process_numに設定された数 |
異常が発生した場合の処置 | - (UNIX)
- メッセージをsyslogおよびログファイルに出力する
- (Windows)
- メッセージをイベントログおよびログファイルに出力する
|
(2) プロセス監視方法
TPBrokerのプロセス監視には,次に示す四つの方法があります。システム環境に応じてプロセス監視の方法を選択してください。
- 直接起動によるプロセス監視(直接起動方式)
プロセス監視定義ファイルに監視対象プロセスを直接設定して監視する方法
- 間接起動によるプロセス監視(間接起動方式)
プロセス監視定義ファイルに監視対象プロセス群を定義したコマンドを設定して監視する方法
- 運用コマンドによるプロセス監視
運用コマンドを使用してプロセスを起動し,動的に監視対象に参加させる方法
- C++のAPIによるプロセス監視
TPBrokerが提供するC++のAPIを使用して,手動で起動したC++アプリケーションを動的に監視対象に参加させる方法。この方法はC++ OTSでだけ使用できます。
(3) 監視対象プロセスの出力情報
- (UNIX)
- 監視対象プロセスの標準出力および標準エラー出力は自動的にファイルに切り替わります。出力先は,$ADMSPOOL/log/stdlog1およびstdlog2です。環境変数ADMSPOOLが未設定の場合は,$TPDIR/spool/log/stdlog1およびstdlog2となります。
- (Windows)
- 監視対象プロセスの標準出力および標準エラー出力は運用定義/ADM/set_redirect_modeの設定値によってファイルに切り替わります。出力先は運用定義/ADM/set_redirect_filenameに従います。
- ただし,C++のAPIによるプロセス監視の場合は,監視対象プロセスの標準出力および標準エラー出力はファイルに切り替わることはありません。
監視対象プロセスの出力情報の注意事項を次に示します。
- 監視対象プロセスの標準出力および標準エラー出力は,パイプを経由してファイルに出力されます。パイプに対して高負荷での書き込みばかりが発生するとメッセージが破棄されることがあります。
- アプリケーションプログラムからprintfなどストリームを使用した出力を行う場合,出力前に出力ストリームバッファを切るか,出力後にストリームをフラッシュしてください。この処理を行わない場合,出力内容がファイルに反映されないことがあります。
- Windows版の場合,監視対象プロセスの標準出力および標準エラー出力メッセージは,admtee.exeコマンドプロセスを経由して指定されたファイルに出力されます。そのため,オンライン中にadmtee.exeプロセスが異常終了した場合,監視対象プロセスの標準出力および標準エラー出力メッセージは,ファイルに出力されなくなります。このような場合には,サービス「TPBroker」を停止し,再開始してください。
- Windows版の場合,運用定義/ADM/set_redirect_filenameに設定されたファイルのオープン処理に失敗した場合(ディレクトリが存在しないなど),監視対象プロセスの標準出力および標準エラー出力先ファイルとして%ADMSPOOL%¥log¥stdlog1と%ADMSPOOL%¥log¥stdlog2が作成されます。
(4) 監視対象プロセスのカレントディレクトリ
(a) TPBrokerの監視対象プロセスのカレントディレクトリの設定
TPBrokerの監視対象プロセスのカレントディレクトリを次のように変更します。
- 環境変数ADMSPOOLが設定済みの場合
$ADMSPOOL/tmp/home/"識別子"
- 環境変数ADMSPOOLが未設定の場合
$TPDIR/spool/tmp/home/"識別子"
- (UNIX)
- 監視対象プロセスがcoreを出力して異常終了した場合の,coreファイルの退避ディレクトリを次のようにします。
- 環境変数ADMSPOOLが設定済みの場合
$ADMSPOOL/errinfo/save
- 環境変数ADMSPOOLが未設定の場合
$TPDIR/spool/errinfo/save
- 監視対象プロセスのcoreファイルは"識別子.N"という名称になります。ここでNは1から始まる通番で,三つまで退避します。通番が小さいほど,新しいcoreファイルとなります。ただし本機能はcoreファイル名称が"core"である場合に限られます。
- 例
- 識別子が「OSAgent」の場合(環境変数ADMSPOOLには/opt/TPBrokerV5/admspoolが設定されているものとする)
- 監視対象プロセスのカレントディレクトリ
/opt/TPBrokerV5/admspool/tmp/home/OSAgent
- 監視対象プロセスのcoreファイルの退避ディレクトリ
/opt/TPBrokerV5/admspool/errinfo/save
- 監視対象プロセスの退避したcoreファイルの名称
OSAgent.1,OSAgent.2,OSAgent.3
(b) 監視対象プロセスのカレントディレクトリが作成/削除されるタイミング
- admsetup -c入力時
$ADMSPOOL/tmp/homeおよび$ADMSPOOL/errinfo/saveを作成します。
(UNIX)owner = root, group = sys, パーミッション = 777
- admsetup -d入力時
$ADMSPOOL/tmp/homeおよび$ADMSPOOL/errinfo/saveを削除します。
- 監視対象プロセスの起動時
各プロセスのカレントディレクトリが作成されます。カレントディレクトリが作成できない場合,またはカレントディレクトリを移動できない場合は$ADMSPOOLがカレントディレクトリになります。
- ADMデーモンの起動時
前回のセションで作成した各監視対象プロセスのカレントディレクトリを削除します。
(5) 作業ディレクトリの自動退避
TPBrokerのプロセス監視機能は,環境変数ADMSPOOLで設定された作業ディレクトリを使用します。
TPBrokerのプロセス監視機能が運用中に異常終了した場合,次回起動時に自動的に前回使用した作業ディレクトリを退避します。退避するディレクトリ名は$ADMSPOOL_logNです。ここでNは1,2,...,Nとなり,最大値は運用定義/ADM/backup_countで設定された値になります。
例えば,環境変数ADMSPOOLに/opt/TPBrokerV5/admspoolを指定していた場合,退避ディレクトリは/opt/TPBrokerV5/admspool_log1になります。