Hitachi

OpenTP1 Version 7 分散トランザクション処理機能 TP1/Server Base Enterprise Option 使用の手引


6.3.6 メッセージログファイルの運用

メッセージログファイルは,稼働状況管理,障害発生時の切り分けなどをするために,システムの稼働状況を示すメッセージを付加情報付きで取得します。

メッセージログファイルは,メッセージログ関連定義のlog_file_sizeオペランドに指定したサイズで,TP1/EEのプロセス(サービスグループ)ごとにUNIXファイルとして作成されます。プロセスごとに,メッセージログ関連定義のlog_file_maxオペランドで指定した数のメッセージログファイルが作成され,ラウンドロビン方式で使用されます。

メッセージログファイルのサイズおよびファイル数は,ハードディスク容量などのシステム構成を考慮して指定してください。

メッセージログファイルは,テキストファイルです。メッセージログファイル内のメッセージは,テキストエディタなどで参照できます。メッセージログファイルは,先頭の1行がファイルヘッダ情報,2行目以降がメッセージです。ファイルヘッダ情報は,製品形名,TP1/EEのバージョン,ファイル出力日時,サービスグループ名,および定義ファイルパスです。

〈この項の構成〉

(1) メッセージの出力先

メッセージの出力タイミングは,稼働状況の変化,障害発生,コマンド実行,UAPからの出力要求などです。メッセージログは,その種別や出力タイミングによって,メッセージログファイル以外の場所にも出力します。メッセージの出力先を次の表に示します。

表6‒6 メッセージの出力先

出力先

出力するメッセージログ

メッセージログファイル※1

メッセージログファイル出力設定があるTP1/EEのメッセージ,およびUAPのメッセージを出力します。すべてのメッセージを付加情報付きで出力します。

syslog※1

syslog出力設定があるTP1/EEのメッセージ,およびUAPのメッセージを出力します。メッセージログ関連定義のlog_syslog_outオペランドで,出力するメッセージのレベルを指定できます。また,付加情報付きで出力することもできます。

標準出力※2

標準出力の出力設定があるTP1/EEのメッセージを出力します。

標準エラー出力※2

標準エラー出力の出力設定があるTP1/EEのエラーメッセージおよび警告メッセージを出力します。また,障害などが原因で,メッセージログファイルにメッセージを出力できない場合は,該当するメッセージを出力します。

注※1

標準出力,および標準エラー出力に複数行で出力するメッセージ,またはUAPから出力するメッセージテキスト内に改行「\n」を含んだメッセージは,1行で出力します。

注※2

コマンドが出力するメッセージおよびエラーメッセージを除いて,デフォルト(TP1/Server Baseの設定)では,製品ログファイルとは別のUNIXファイルに出力します。標準出力および標準エラー出力の出力設定があるメッセージは,標準出力および標準エラー出力に出力するかどうかをメッセージログ関連定義のlog_msg_consoleオペランドで指定できます。標準出力および標準エラー出力に出力する場合は,log_msg_consoleオペランドにYを指定します。log_msg_consoleオペランドにYを指定した場合,プロセスID,プロセス内メッセージ通番,出力要求時の日時などの付加情報を出力するかどうかをメッセージログ関連定義で指定できます。

標準出力および標準エラー出力の詳細については,マニュアル「TP1/Server Base Enterprise Option メッセージ」,およびマニュアル「OpenTP1 運用と操作」を参照してください。

作成したUAPからも,メッセージを出力できます。UAPからメッセージの出力要求を受け付けると,TP1/EEのメッセージとして,メッセージログファイルとsyslogに出力します。

ただし,メッセージの出力量が多い場合は,メッセージの出力処理に大量のCPUを消費したり,運用監視をするためにメッセージを収集しているプログラムの処理が遅延したりするおそれがあります。UAPからメッセージを出力する場合は,メッセージを多量に出力しないように設計してください。

(a) syslog遅延出力

syslogでメモリ不足またはバッファ不足が発生すると,syslogにメッセージを出力できません。TP1/EEでは,syslogに出力できないメッセージをsyslog失敗リストに保管できます(syslog遅延出力)。syslogへのメッセージの出力タイミングとは別のタイミングで,syslog失敗リストからsyslogにメッセージを出力できます。syslog失敗リストを使用して,syslog遅延出力するには,次の条件を満たす必要があります。

  • OSがAIX 5L V5.2の場合,APAR番号IY54076を適用している。OSがAIX 5L V5.3の場合,APAR番号IY86571を適用している。

  • OSがLinuxの場合,拡張SYSLOG機能がインストールされている。

  • メッセージログ関連定義のlog_syslog_outオペランドに1以上,およびメッセージログ関連定義のlog_syslog_elistオペランドに1以上を指定している。

メッセージをsyslog失敗リストに保管するのは,次のどちらかの場合です。

  • syslog失敗リスト内のメッセージ数が0で,メッセージのsyslogへの出力が,メモリ不足またはバッファ不足で失敗した場合。

  • syslog失敗リスト内のメッセージ数が1以上で,メッセージログ関連定義のlog_syslog_elistオペランドの指定値未満の場合。

メッセージが,syslog失敗リストのエレメントのメッセージ格納領域長より長い場合は,(超過文字列+4バイト)の文字列をメッセージ終端から切り捨てます。文字列を切り捨てたメッセージは,文字列の最後に,「(EL)」(4バイトの半角英字記号)を付加します。

syslog失敗リストが取得したメッセージ数がメッセージログ関連定義のlog_syslog_elistオペランドの指定値を超えた場合,標準エラー出力にsyslog出力失敗のメッセージを出力します。

(b) 文字コード変換機能

文字コード変換機能は,拡張SYSLOG機能を利用して,UAPおよびTP1/EEがsyslogに出力するメッセージの文字コードをUTF-8に変換する機能です。次の条件を満たす場合に使用できます。

  • OSがLinuxである。

  • 拡張SYSLOG機能(02-00以降)をインストールしている。

  • 日立コード変換をインストールしている。

文字コード変換機能の使用は,メッセージログ関連定義のlog_hsyslog_cmodeオペランドで指定します。log_hsyslog_cmodeオペランドにSJISを指定すると,文字コードをシフトJISからUTF-8に変換します。

TP1/EEが出力するシステムメッセージは,環境変数LANGで指定した言語種別がlog_hsyslog_cmodeオペランドに指定した文字コードと一致する場合にだけ,文字コード変換したメッセージをsyslogに出力します。

また,ee_logprint関数(COBOL言語の場合,CBLEELOG('PRINT '))によってUAPがメッセージを出力する場合,変換前の文字コードに関係なく,出力要求されたすべてのメッセージをlog_hsyslog_cmodeオペランドで指定した文字コードと仮定して,文字コードを変換したメッセージをsyslogへ出力します。そのため,log_hsyslog_cmodeオペランドに指定した文字コードと異なる文字コードを出力要求すると,syslogへの出力で文字化けが発生するおそれがあります。

文字コード変換機能を使用するときの注意事項を次に示します。

  • 変換前の文字コードが定義されていない文字コードの場合,該当する文字を「??」(0x3f3f)で出力します。

  • 拡張SYSLOG機能で出力できるメッセージの最大長は,syslogのヘッダ文字列を含めて1018バイトです。シフトJISからUTF-8に変換すると,文字列長は最大で3倍に増加するため,変換前の文字列長が340バイト以上のメッセージは,変換後に切り捨てられることがあります。

  • UAPをCOBOL言語で作成し,COBOL言語のSYSLOG出力機能を使用(環境変数CBLSYSLOGにYESを指定)する場合は,メッセージログ関連定義のlog_syslog_elistオペランドに1以上を指定する必要があります。環境変数CBLSYSLOGにYESを指定していて,かつlog_syslog_elistオペランドに0を指定しているときは,KFSB61902-Eメッセージを出力してプロセス起動を終了します。

  • インストールしている拡張SYSLOG機能が01-02以前の場合,KFSB61901-Eメッセージを出力してプロセス起動を終了します。

  • 日立コード変換がインストールされていない場合や,日立コード変換の初期化に失敗した場合は,文字コード変換機能は無効となります。該当するメッセージは,変換前の文字コードでsyslogに出力します。

  • 文字コード変換の対象となるのは,syslogに出力するメッセージだけです。メッセージログファイル,標準出力,および標準エラー出力には,文字コード変換をしないでメッセージを出力します。

(2) メッセージログファイルの作成

メッセージログファイルは,TP1/EEの起動時にTP1/EEが作成します。TP1/EEの起動時に,すでにメッセージログファイルが存在する場合は,最も古いファイルから,ファイルの内容を初期化したあとに上書きして再利用します。

メッセージログファイルが取得するメッセージの付加情報は,TASKTM情報と対応させるために取得します。メッセージログファイルが取得する付加情報の詳細については,マニュアル「TP1/Server Base Enterprise Option メッセージ」のメッセージログファイルの付加情報の説明を参照してください。

メッセージログファイルを格納するディレクトリ,およびメッセージログファイルのファイル名を次に示します。

格納ディレクトリ

$DCDIR/spool/dceeinf/log/*

メッセージログファイル名

xx....xxlognnn

  • xx....xx:サービスグループ名  〜〈最大31バイトの半角英数字〉

  • log:メッセージログファイルを示す固定文字列

  • nnn:メッセージログファイルのID  〜((001〜010))

(3) メッセージログファイルの保存

出力中のメッセージログファイルのサイズが,メッセージログ関連定義のlog_file_sizeオペランドに指定した値を超える場合,出力先が新しいメッセージログファイルに切り替わります。この場合,出力先が新しいメッセージログファイルに切り替わったことを通知するKFSB81901-Iメッセージが出力されます。KFSB81901-Iメッセージが出力されるタイミングで,メッセージログのバックアップを取得して,同一論理ボリューム上でファイル移動(mvコマンド)することをお勧めします。

JP1/Baseを使用してTP1/EEのメッセージログファイルを監視する場合は,メッセージログのバックアップを取得するときに,ファイル移動(mvコマンド)ではなく,ファイル複写(cpコマンド)をしてください。ファイル移動をすると,メッセージログファイルがいったん削除されるため,ファイル移動をしたメッセージログファイルはJP1/Baseの監視対象外となります。

(4) 出力するメッセージログの言語種別の設定

メッセージログを英語で出力するか日本語で出力するかを選択できます。出力するメッセージログの言語種別は,TP1/Server Baseのシステム共通定義のputenv形式でLANG変数に設定します。次に示す表に従って,環境変数LANGを設定してください。

表6‒7 メッセージログの言語種別に対する環境変数LANGの設定値

言語種別

AIXの場合

Linuxの場合

英語

C

C

シフトJISコード

Ja_JP

日本語EUCコード

ja_JP

日本語UTF-8コード

ja_JP.UTF-8

環境変数LANGを設定していない場合,またはサポートしていない文字列を環境変数LANGに設定した場合は,メッセージログは英語で出力されます。