説明

障害情報出力方法及びその実施装置並びにプログラム

【課題】
不揮発メモリ内に保存されている過去の障害情報を現在の障害情報と区別可能にして過去の障害情報のファイル出力を制御すること。
【解決手段】
不揮発メモリ内に保存されている障害情報を取り出し、不揮発メモリ内に保存されていた障害情報であることが判別できるように印を付与してログバッファに保存し、ログバッファに保存した障害情報をファイルへ出力するときに、障害情報に付与した印を参照して障害情報の種別を判定し、ファイル出力ポリシーファイルに定義したファイル出力条件に基づいて障害情報をファイルへ出力する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、コンピュータシステムで発生した障害のログを不揮発メモリへ保存する技術と、不揮発メモリへ保存した障害ログをファイルへ出力する技術に関する。
【背景技術】
【0002】
コンピュータシステムで発生した障害情報を記録するために、プログラムやデバイスドライバに障害情報をメモリに蓄積させ、それらをハードディスク上のログファイルへ出力するログ機能が一般に使用されている。
【0003】
障害情報は一度メモリ上へ蓄えられるため、メモリ上の障害情報をファイル出力する前にコンピュータシステムが終了すると、障害情報がファイルへ記録されずに損失する。この損失を防止するために、障害情報を不揮発メモリへ保存した後にコンピュータシステムを終了させ、次回システム起動時に不揮発メモリ内の障害情報を取り出してログファイルへ出力させる技術が存在する。
【0004】
次回のシステム起動が長期間経過後の場合、不揮発メモリへ保存された障害情報はそのシステム起動時と比べて古い情報となる。これら古い障害情報をログファイルへ出力させないため、障害情報を報告するための有効期間を設定し、有効期間を経過した障害情報はログファイルへ記録しないで破棄する方法が提案されている(特許文献1参照)。
【0005】
【特許文献1】特開2004−220582号公報
【発明の開示】
【発明が解決しようとする課題】
【0006】
従来技術で不揮発メモリへ保存された障害情報をログファイルへ出力すると、当該の障害の発生した日時が現時点より古い場合、ログファイルへ出力した障害が今現在に発生した障害であると誤認識される。
【0007】
具体的には、コンピュータシステムにログファイルを監視するプログラムが存在する場合、不揮発メモリ内の障害情報をログファイルへ出力すると、監視プログラムが障害情報を検知し、コンピュータシステムの管理者へメール等の手段で警告を送信する。実際には不揮発メモリ内の障害情報は過去に発生した障害に関する情報であるが、警告自体は今現在に送信されたものであるため、コンピュータシステムの管理者は障害の事実確認や対応のために不必要な作業が発生してしまう。
【0008】
特許文献1に記載の方法のように古い障害情報を記録しないで破棄する方法では、コンピュータシステムの管理者へ古い障害情報に基づく警告を送信することは防止できるが、障害情報がログファイルへ記載されないため、過去に発生した障害情報の詳細について解析したり原因追及したりといった作業が実施できない。
【0009】
またコンピュータシステムの管理者によって、不揮発メモリ内の障害ログをすべて別ファイルへ出力したいニーズや、重大な障害に関する障害情報のみをログファイルへ出力したいニーズ、コンピュータシステムが異常に終了した場合の障害ログのみログファイルへ出力したいニーズ、などの異なるログファイル出力方法のニーズが存在し、それらのニーズに対応可能なログファイル出力方法が必要である。
【0010】
そこで、本発明は、不揮発メモリに保存されていた障害ログとコンピュータシステムの通常運用時の障害ログとを区別可能とし、システム管理者が決定したファイル出力方法で不揮発メモリに保存されていた障害ログをファイル出力することを目的とするものである。
【課題を解決するための手段】
【0011】
前記課題を解決するために、本発明は、不揮発メモリに保存されている障害情報を取り出した際に、不揮発メモリに保存されていた障害情報であることが分かるように印を付ける。
さらに本発明は、システム管理者が設定したログファイル出力条件に基づいて前記印の付けられた障害情報のログファイル出力可否を決定する。
さらに本発明は、前記出力可否に従って監視プログラムの監視対象であるログファイルへ前記障害情報の出力制御を実行し、同時に監視プログラムの非監視対象であるログファイルへ全ての障害情報を出力する。
【発明の効果】
【0012】
本発明によれば、不揮発メモリに保存されている古い障害情報の監視対象のログファイルへの出力を抑止することでシステム管理者へ不要な障害発生の警告を送信することを防止し、全ての障害情報を非監視対象のログファイルへ記録することで障害情報の損失を防止できる。
【発明を実施するための最良の形態】
【0013】
図1は本実施形態のサーバシステムの概略構成を示す図である。図1に示す様に、本実施形態のサーバシステム100は、サーバ機器101と、アラート表示ディスプレイ109と、を備えている。サーバ機器101は、CPU(Central Processing Unit:中央処理装置)102と、メモリ103と、不揮発メモリ110と、HDD(Hard Disk Drive:ハードディスクドライブ)108と、を備えている。
【0014】
メモリ103内には、OS(Operating System:オペレーティングシステム)104が存在する。OS104内には、障害情報を一時的に蓄積するためのログバッファ800と、不揮発メモリに対して障害情報を保存したり取得したりするときに使用するための不揮発メモリ用バッファ400と、監視対象のログファイルに障害情報が出力されるとシステム管理者へ警告を送信するためのアラート処理部105と、不揮発メモリへ障害情報を保存したり不揮発メモリから障害情報を取得したりするための不揮発メモリ入出力処理部106と、ログバッファ800に蓄積された障害情報をログファイルへ出力するための障害ログ出力処理部107が存在する。
【0015】
不揮発メモリ入出力処理部106は後述の図3に示す不揮発メモリ保存処理と図5に示す不揮発メモリ取得処理と図13に示す不揮発メモリ削除処理とを実行する。障害ログ出力処理部107は後述の図9に示す障害ログファイル出力処理と図10に示すファイル出力方法決定処理と図12に示す障害ログエントリファイル出力処理とを実行する。
【0016】
不揮発メモリ110内には、障害に関する情報である障害ログ600が存在する。
HDD108内には、不揮発メモリ内に保存された障害情報のログファイル出力条件を設定するためのファイル出力ポリシーファイル200と、障害ログ出力処理部107が全ての障害ログエントリ700を出力する障害ログファイル1400と、障害ログ出力処理部107が障害ログエントリ700内のマークとファイル出力ポリシーファイル200の情報に基づいて出力制御を実行するシステムログファイル1500とが存在する。なお、本実施形態では、障害ログファイル1400はアラート処理部105の非監視対象であり、システムログファイル1500はアラート処理部105の監視対象とする。
アラート表示ディスプレイ109は、アラート処理部105が送信する警告の内容をシステム管理者へ表示する。
【0017】
本実施形態のサーバシステム100を前記処理部として機能させる為のプログラムは、CD−ROM等の記録媒体に記録され磁気ディスク等に格納された後、メモリにロードされて実行されるものとする。なお前記プログラムを記録する記録媒体はCD−ROM以外の他の記録媒体でも良い。
【0018】
図2は不揮発メモリ内に保存された障害情報をログファイルへ出力する条件を設定するためのファイル出力ポリシーファイルの概要図である。本実施形態では、ログファイル出力条件として、不揮発メモリ内に保存された障害情報をログファイルへ出力するか否かを設定する項目と、不揮発メモリ内に保存された障害情報の中でログファイルに出力する障害情報のレベルを設定する項目と、前回のシステム終了要因が異常要因の場合に、不揮発メモリ内に保存された障害情報のログファイルへの出力を抑止する設定の項目と、を条件項目としている。ここで障害情報のレベルにはINFORMATIONやWARNING等の複数の種類があり、それぞれ障害レベルの高さが異なるものとする。
【0019】
図4は、不揮発メモリへ障害情報を保存するときに使用するバッファ構成の概略図である。不揮発メモリ用バッファ400は、不揮発メモリへ保存する障害情報に関する情報を格納するヘッダ部分401と、障害情報を格納するボディ部分402とで構成される。ヘッダ部分401の中には、コンピュータシステムの終了要因を示す値を代入するシステム終了要因項目403を含む。本実施形態では、システム終了要因項目403には、コンピュータシステムが正常終了する場合には「0」を代入し、異常終了する場合は「1」を代入することとしているが、これらの要因を識別できれば、このような態様に限定されない。ボディ部分402は、障害情報を示す1つ以上の障害ログエントリ700を含む。障害ログエントリ700の個数は、ログファイルへ未出力の障害情報の個数に応じて変動する。障害ログエントリ700の個数は、本実施形態の場合では、ログファイルへ未出力の障害情報の個数と同数である。
【0020】
図6は、不揮発メモリに保存された障害情報の構成の概略図である。不揮発メモリ内の障害ログ600は、不揮発メモリへ保存する障害情報に関する情報を格納するヘッダ部分601と、障害情報を格納するボディ部分602とで構成される。ヘッダ部分601の中には、コンピュータシステムの終了要因を示す値を代入するシステム終了要因項目603を含む。本実施形態では、システム終了要因項目603の値に、コンピュータシステムが正常終了するときには「0」を代入し、異常終了する場合は「1」を代入することとしているが、これらの要因を識別できれば、このような態様に限定されない。ボディ部分602は、障害情報を示す1つ以上の障害ログエントリ700を含む。障害ログエントリ700の個数は、ログファイルへ未出力の障害情報の個数に応じて変動する。障害ログエントリ700の個数は、本実施形態の場合では、ログファイルへ未出力の障害情報の個数と同数である。
【0021】
図7は、各障害情報を示す障害ログエントリ構成の概要図である。障害ログエントリ700は、障害情報のヘッダ部分701と、障害の詳しい情報を示す障害詳細情報702とで構成される。ヘッダ部分701の中には、当該障害ログエントリが不揮発メモリに保存されていた障害情報であるか否かを示す値を代入する不揮発メモリ内ログ項目703と、各障害情報の種類を識別するための障害ログ識別子704とを含む。本実施形態では、不揮発メモリ内ログ項目703は、当該障害ログエントリが不揮発メモリ内に保存されていた障害情報である場合には値「1」を代入し、それ以外の障害情報である場合には値「0」を代入することとしているが、これらの障害情報を識別できれば、このような態様に限定されない。障害ログ識別子704は、障害の内容を一意に識別できる値を代入する。本実施形態では、障害ログ識別子704は、障害の内容を一意に識別できる数字「1100」と、障害のレベルを示す文字「W」(WはWARNINGを意味するものとする)を使用して識別子704を作成しているが、障害のレベルを示す文字は識別子704に含めずに、障害の内容を一意に識別できる数字と障害のレベルとの対応関係を示すテーブルを作成してそれを参照させてもよい。障害詳細情報702は、本実施形態では、障害が発生したときのメモリ情報を含む。
【0022】
図8は、障害が発生したときに障害情報を一時的に蓄積するログバッファを示す概要図である。ログバッファ800の中には、0個以上の障害ログエントリ700を含む。また、ログバッファ800に関連する情報として、ファイル出力済みポインタ801と、ログバッファ終端ポインタ802とを不揮発メモリ入出力処理部106が保持している。ファイル出力済みポインタ801は、ログバッファ800の中にある障害ログエントリ700の中で、ファイル出力の完了している障害ログエントリ700の終端を示す値である。ファイル出力済みポインタ801の示す障害ログエントリ700とそれよりも古い障害ログエントリ700は全てログファイルへ出力済みであり、ファイル出力済みポインタ801の示す障害ログエントリ700よりも新しい障害ログエントリ700はまだログファイルへ出力していないことを示す。ログバッファ終端ポインタ802は、ログバッファ800の中で障害ログエントリ700が蓄積されている終端を示す値である。ログバッファ終端ポインタ802の示す障害ログエントリ700よりも新しい障害ログエントリ700は、ログバッファ内には存在しない。このため、ログバッファ終端ポインタ802とファイル出力済みポインタ801の差分の障害ログエントリ700が、ログファイルへ未出力の障害ログエントリ700を示す。
【0023】
図11は、不揮発メモリに保存された障害情報のファイル出力条件を示すファイル出力ポリシーテーブルを表す図である。ファイル出力ポリシーテーブル1100は、障害ログ出力処理部107が、ファイル出力ポリシーファイル200に記載の各条件項目を読み込んで、障害ログ出力処理部107の内部に作成する。ファイル出力ポリシーテーブル1100は、前回のシステム終了要因を示す項目1101と、不揮発メモリ内の障害情報のログファイル出力可否を示す項目1102と、ログファイルへ出力する障害情報のレベルを示す項目1103と、前回のシステム終了要因が異常の場合にファイルへの出力を抑止するか否かを示す項目1104とで構成される。
【0024】
図14は、障害ログ出力処理部107が障害ログエントリ700の内容を保存する障害ログファイルの概要図である。障害ログファイル1400は、1個のヘッダ情報1401と、0個以上の障害情報1402とを含む。障害情報1402は、障害ログエントリ700の不揮発メモリ内ログ項目703の値を代入するための不揮発メモリ内ログ項目1403と、障害ログエントリ700の障害ログ識別子704の値を代入するための障害ログ識別子項目1404と、障害ログエントリ700の障害詳細情報の値を代入するための障害詳細情報項目1405とを含む。
【0025】
図15は、アラート処理部105が監視する対象のシステムログファイルの概要図である。本実施形態では、システムログファイル1500は、障害ログ出力処理部107により出力された障害ログエントリ700のヘッダ部分701と、システム内の他のプログラムにより出力された情報とを含む。
【0026】
図3は、本実施形態の不揮発メモリ入出力処理部106の不揮発メモリ保存処理の手順を示すフローチャートである。本実施形態では、図3の不揮発メモリ保存処理はコンピュータシステムの終了時に実行される。
【0027】
まず、不揮発メモリ入出力処理部106は、ファイル出力済みポインタ801の値と、ログバッファ終端ポインタ802の値を参照し、その差を計算して、ログバッファ800内の障害ログファイル1400にまだ出力していない障害ログエントリ700の個数を決定する(ステップ300)。
【0028】
次に、不揮発メモリ入出力処理部106は、不揮発メモリ用バッファ400のヘッダ部分401の中にあるシステム終了要因項目403に、コンピュータシステムの終了要因を示す値を代入する(ステップ301)。本実施形態では、コンピュータシステムが正常終了するときには「0」を代入し、異常終了する場合は「1」を代入することとしているが、これらの要因を識別できれば、このような態様に限定されない。
【0029】
次に、不揮発メモリ入出力処理部106は、ステップ300の処理で決定したファイル未出力の障害ログエントリ700の個数を参照して、ログバッファ800内にファイル未出力の障害ログエントリ700が存在するか否かを確認する(ステップ302)。
【0030】
ファイル未出力の障害ログエントリ700がログバッファ800内に存在しない場合、不揮発メモリ入出力処理部106は、不揮発メモリ用バッファ400の内容を不揮発メモリ110に保存する(ステップ304)。
【0031】
ファイル未出力の障害ログエントリ700がログバッファ800内に存在する場合、不揮発メモリ入出力処理部106は、不揮発メモリ用バッファ400のボディ部分402に、ファイル未出力の障害ログエントリ700を追加する(ステップ303)。不揮発メモリ入出力処理部106がファイル未出力の障害ログエントリ700の追加を完了した後に、不揮発メモリ用バッファ400の内容を不揮発メモリ110に保存する(ステップ304)。
【0032】
図5は、本実施形態の不揮発メモリ入出力処理部106の不揮発メモリ取得処理の手順を示すフローチャートである。本実施形態では、図5の不揮発メモリ取得処理はコンピュータシステムの起動時に実行される。
【0033】
まず、不揮発メモリ入出力処理部106は、不揮発メモリ内の障害情報を取得および保存するために使用する不揮発メモリ用バッファ400をメモリに割り当てる(ステップ500)。不揮発メモリ用バッファ400を割り当てるメモリのサイズは、不揮発メモリ入出力処理部106が不揮発メモリ110内に保存可能なサイズと同じである。
【0034】
次に、不揮発メモリ入出力処理部106は、不揮発メモリ110内の障害ログ600を不揮発メモリ用バッファ400へコピーする(ステップ501)。
次に、不揮発メモリ入出力処理部106は、ステップ501の処理で障害ログ600のコピーに成功したか否かを判定する(ステップ502)。コピーに失敗した場合、本処理を終了する。コピーに成功した場合、ステップ503の処理へ移行する。
【0035】
次に、不揮発メモリ入出力処理部106は、不揮発メモリ用バッファ400へコピーした障害ログ600のヘッダ部分601のシステム終了要因項目603の値を取得し、その値を保持する障害ログエントリ700を作成して、ログバッファ800へ作成した障害ログエントリ700をコピーする(ステップ503)。システム終了要因項目603は、障害ログエントリ700の障害詳細情報702に含める。
【0036】
次に、不揮発メモリ入出力処理部106は、不揮発メモリ用バッファ400へコピーした障害ログ600のボディ部分602の障害ログエントリ700を参照する(ステップ504)。
【0037】
次に、不揮発メモリ入出力処理部106は、ステップ504の処理で参照した障害ログエントリの中に、ログバッファ800へまだコピーしていない障害ログエントリが存在するか否かを判定する(ステップ505)。ログバッファ800へまだコピーしていない障害ログエントリが存在しない場合、本処理を終了する。ログバッファ800へまだコピーしていない障害ログエントリが存在する場合、ステップ506の処理へ移行する。
【0038】
次に、不揮発メモリ入出力処理部106は、ログバッファ800へまだコピーしていない障害ログエントリ700の中で、最も古い障害ログエントリ700を不揮発メモリ用バッファ400から1つ取り出す(ステップ506)。
【0039】
次に、不揮発メモリ入出力処理部106は、ステップ506の処理で取り出した障害ログエントリ700のヘッダ部分701の不揮発メモリ内ログ項目703に値「1」を代入する(ステップ507)。本実施形態では、不揮発メモリ内から取り出した障害ログエントリ700の場合は不揮発メモリ内ログ項目703に値「1」を代入し、それ以外の障害ログエントリ700の場合は不揮発メモリ内ログ項目703に値「0」を代入することとしているが、これらの障害ログエントリ700を識別できれば、このような態様に限定されない。
【0040】
次に、不揮発メモリ入出力処理部106は、ステップ506の処理で取り出した障害ログエントリ700をログバッファ800へコピーする(ステップ508)。その後、ステップ504の処理へ戻り、不揮発メモリ用バッファ400へコピーした障害ログ600のボディ部分602の障害ログエントリ700を参照する。
【0041】
図9は、障害ログ出力処理部107の障害ログファイル出力処理の手順を示すフローチャートである。本実施形態では、図9の障害ログファイル出力処理はコンピュータシステムの起動時の図5の不揮発メモリ保存処理の後に実行される。
【0042】
まず、障害ログ出力処理部107は、ファイル出力ポリシーファイル200をオープンし、ファイル出力ポリシーを読み込む(ステップ900)。
次に、障害ログ出力処理部107は、ステップ900の処理で読み込んだファイル出力ポリシーを使用して、障害情報のファイル出力方法を決定する(ステップ901)。なお、このステップでの処理は、図10に示すフローチャートを用いて詳述する。
【0043】
次に、障害ログ出力処理部107は、ログバッファ800内の障害ログエントリ700を検索する(ステップ902)。
次に、障害ログ出力処理部107は、ステップ902の処理の結果、ログバッファ800内に障害ログファイル1400に未出力の障害ログエントリ700が存在するか否かを判定する(ステップ903)。判定方法はステップ300の処理と同様である。ファイル未出力の障害ログエントリ700が存在しない場合、本処理を終了する。ファイル未出力の障害ログエントリ700が存在する場合、ステップ904の処理へ移行する。
【0044】
次に、障害ログ出力処理部107は、ログバッファ800内の最も古い障害ログエントリ700を1つ取得する(ステップ904)。
次に、障害ログ出力処理部107は、ステップ904の処理で取得した障害ログエントリ700が障害詳細情報702内にシステム終了要因の値を保持しているか確認し、保持している場合は、障害ログ出力処理部107のファイル出力ポリシーテーブル1100の「システム終了要因」項目1101へその値を代入する(ステップ905)。
【0045】
次に、障害ログ出力処理部107は、ステップ904の処理で取得した障害ログエントリ700のヘッダ部分701の不揮発メモリ内ログ項目703の値を参照し、値が「1」であるならば該当の障害ログエントリ700は不揮発メモリから取得した障害ログエントリであると判断し、値が「1」以外であるならば該当の障害ログエントリは不揮発メモリから取得した障害ログエントリではないと判断する(ステップ906)。
【0046】
次に、障害ログ出力処理部107は、ステップ901の処理で決定したファイル出力方法に基づいて、障害ログエントリ700を障害ログファイル1400とシステムログファイル1500に出力する(ステップ907)。なお、このステップでの処理は、図12に示すフローチャートを用いて詳述する。
【0047】
次に、障害ログ出力処理部107は、ステップ907の処理で障害ログファイル1400に出力した障害ログエントリ700の個数を、不揮発メモリ入出力処理部106へ通知する(ステップ908)。通知の完了後、ステップ902の処理へ戻る。
【0048】
図10は、障害ログ出力処理部107のファイル出力方法決定処理の手順を示すフローチャートである。
まず、障害ログ出力処理部107は、ファイル出力ポリシーファイル200の「不揮発メモリ内のログ出力」項目を参照する(ステップ1000)。
【0049】
次に、障害ログ出力処理部107は、ステップ1000の処理で参照した「不揮発メモリ内のログ出力」項目の値がTRUEか否かを判定する(ステップ1001)。項目の値がTRUEの場合、障害ログ出力処理部107は、ファイル出力ポリシーテーブル1100の「不揮発メモリ内のログ出力」設定項目1102に値TRUEを設定し(ステップ1002)、ステップ1004の処理へ移行する。項目の値がTRUEではない場合、障害ログ出力処理部107は、ファイル出力ポリシーテーブル1100の「不揮発メモリ内のログ出力」設定項目1102に値FALSEを設定し(ステップ1003)、本処理を終了する。本実施形態では、不揮発メモリ内の障害情報をファイル出力することをTRUE、ファイル出力しないことをFALSEとしているが、これらの出力可否を識別できれば、このような態様に限定されない。
【0050】
次に、障害ログ出力処理部107は、ファイル出力ポリシーファイル200の「出力する障害レベル」項目の値の文字列を読み込む(ステップ1004)。
次に、障害ログ出力処理部107は、ステップ1004の処理で読み込んだ文字列を、ファイル出力ポリシーテーブル1100の「出力する障害レベル」設定項目1103へコピーする(ステップ1005)。
【0051】
次に、障害ログ出力処理部107は、ファイル出力ポリシーファイル200の「前回のシステム終了要因が異常時に出力抑止」項目の値を参照する(ステップ1006)。
次に、障害ログ出力処理部107は、ステップ1006の処理で参照した「前回のシステム終了要因が異常時に出力抑止」項目の値がTRUEか否かを判定する(ステップ1007)。項目の値がTRUEの場合、障害ログ出力処理部107は、ファイル出力ポリシーテーブル1100の「前回のシステム終了要因が異常時に出力抑止」設定項目1104に値TRUEを設定し(ステップ1008)、本処理を終了する。項目の値がFALSEの場合、障害ログ出力処理部107は、ファイル出力ポリシーテーブル1100の「前回のシステム終了要因が異常時に出力抑止」設定項目1104に値FALSEを設定し(ステップ1009)、本処理を終了する。本実施形態では、前回のシステム終了要因が異常時に不揮発メモリ内の障害情報のファイル出力を抑止することをTRUE、ファイル出力を抑止しないことをFALSEとしているが、これらの出力抑止可否を識別できれば、このような態様に限定されない。
【0052】
図12は、障害ログ出力処理部107の障害ログエントリファイル出力処理の手順を示すフローチャートである。
まず、障害ログ出力処理部107は、ステップ906の処理での判定結果に基づき、障害ログエントリ700が不揮発メモリ内から取得した障害ログエントリであるか否かを判定する(ステップ1200)。障害ログエントリ700が不揮発メモリ内から取得した障害ログエントリである場合、障害ログ出力処理部107はステップ1203の処理へ移行する。障害ログエントリ700は不揮発メモリ内から取得した障害ログエントリではない場合、障害ログエントリの情報をシステムログファイル1500に出力し(ステップ1201)、その後で障害ログエントリを障害ログファイル1400に出力し(ステップ1202)、本処理を終了する。
【0053】
次に、障害ログ出力処理部107は、ファイル出力ポリシーテーブル1100の「不揮発メモリ内のログ出力」設定項目1102の値を参照する(ステップ1203)。
【0054】
次に、障害ログ出力処理部107は、ステップ1203の処理で参照した値がTRUEか否かを判定する(ステップ1204)。値がTRUEの場合、障害ログ出力処理部107はステップ1205の処理へ移行する。値がFALSEの場合、障害ログエントリを障害ログファイル1400に出力し(ステップ1202)、本処理を終了する。
【0055】
次に、障害ログ出力処理部107は、ファイル出力ポリシーテーブル1100の「出力する障害レベル」設定項目1103の値を参照する(ステップ1205)。
次に、障害ログ出力処理部107は、障害ログエントリ700の識別子704を参照し、障害ログレベルを判定する(ステップ1206)。本実施形態では、識別子704に障害レベルを含めているが、識別子704と障害レベルの対応関係を定義したテーブルを用意してそのテーブルを参照して障害レベルを判定することもできる。
【0056】
次に、障害ログ出力処理部107は、ステップ1205の処理で参照した障害レベルの値とステップ1206の処理で判定した障害レベルの値を比較し、障害ログエントリ700の障害レベルが「出力する障害レベル」設定項目1103の障害レベル以上か否かを判定する(ステップ1207)。障害ログエントリ700の障害レベルが「出力する障害レベル」設定項目1103の障害レベル以上の場合、障害ログ出力処理部107はステップ1208の処理へ移行する。障害ログエントリ700の障害レベルが「出力する障害レベル」設定項目1103の障害レベルより低い場合、障害ログエントリを障害ログファイル1400に出力し(ステップ1202)、本処理を終了する。
【0057】
次に、障害ログ出力処理部107は、ファイル出力ポリシーテーブル1100の「前回のシステム終了要因が異常時に出力抑止」設定項目1104の値を参照する(ステップ1208)。
次に、障害ログ出力処理部107は、ステップ1208の処理で参照した値がTRUEか否かを判定する(ステップ1209)。値がTRUEの場合、障害ログ出力処理部107はステップ1210の処理へ移行する。値がFALSEの場合、障害ログエントリの情報をシステムログファイル1500に出力し(ステップ1212)、その後で障害ログエントリを障害ログファイル1400に出力し(ステップ1202)、本処理を終了する。
【0058】
次に、障害ログ出力処理部107は、ファイル出力ポリシーテーブル1100の「前回のシステム終了要因」項目1101の値を参照する(ステップ1210)。
次に、障害ログ出力処理部107は、ステップ1210の処理で参照した値を基に、前回のシステム終了要因が異常終了か否かを判定する。本実施形態では、コンピュータシステムが正常終了した場合を値「0」とし、異常終了した場合を値「1」としているが、これらの要因を識別できれば、このような態様に限定されない。前回のシステム終了要因が異常終了である場合、障害ログエントリを障害ログファイル1400に出力し(ステップ1202)、本処理を終了する。前回のシステム終了要因が異常終了ではない場合、障害ログエントリの情報をシステムログファイル1500に出力し(ステップ1212)、その後で障害ログエントリを障害ログファイル1400に出力し(ステップ1202)、本処理を終了する。
【0059】
図13は、不揮発メモリ入出力処理部106の不揮発メモリ削除処理の手順を示すフローチャートである。本実施形態では、図13の不揮発メモリ削除処理は障害ログ出力処理部107のステップ908の処理での通知後に実行する。
【0060】
まず、不揮発メモリ入出力処理部106は、障害ログ出力処理部10から障害ログファイル1400に出力した障害ログエントリの個数を受信する(ステップ1300)。
【0061】
次に、不揮発メモリ入出力処理部106は、ステップ508の処理でログバッファ800へコピーした障害ログエントリ700の個数と、ステップ1300の処理で受信したファイル出力済みの障害ログエントリ700の個数とを比較する(ステップ1301)。
【0062】
次に、不揮発メモリ入出力処理部106は、ステップ1301の処理での比較結果に基づき、ステップ1300の処理で受信したファイル出力済みの障害ログエントリ700の個数が、ログバッファ800へコピーした障害ログエントリ700の個数以上であるか否かを判定する。ステップ1300の処理で受信したファイル出力済みの障害ログエントリ700の個数が、ログバッファ800へコピーした障害ログエントリ700の個数以上である場合、不揮発メモリ110内の障害ログ600は必要ないため、不揮発メモリから障害ログ600を削除する(ステップ1303)。ステップ1300の処理で受信したファイル出力済みの障害ログエントリ700の個数が、ログバッファ800へコピーした障害ログエントリ700の個数より小さい場合、まだ不揮発メモリ内の障害ログ600の全てを障害ログファイルへ出力完了していないため、不揮発メモリ内の障害ログ600を削除しないで本処理を終了する。
【0063】
以上説明した様に、本実施形態によれば、不揮発メモリに保存された障害情報をシステムログファイルへ出力する場合に、障害情報に付与した印の値を参照して障害情報の種別を判定することで、不揮発メモリから取り出した障害情報に対してのみシステムログファイルへの出力を抑止する制御が可能となる。また全ての障害情報は前記システムログファイルとは別の障害ログファイルに記録することで、障害情報の記録の損失を防ぐことが可能となる。
【0064】
前記の様に本実施形態のコンピュータシステムによれば、コンピュータシステムに障害が発生した後に障害情報をファイルではなく不揮発メモリへ保存した場合、コンピュータシステムの障害回復後に不揮発メモリ内の障害情報に印を付与して障害ログファイルへ記録することで、システム障害発生時付近の前記印の付与された障害情報の切り分けが容易になり、通常運用時の障害情報と不揮発メモリへ保存された障害ログとを明確に区別可能とすることで過去の障害情報に絞った障害解析を支援し、コンピュータシステムの管理者がシステム障害の原因解析を効率的に行うことが可能となる。
【図面の簡単な説明】
【0065】
【図1】本実施形態のサーバシステム100の概略図である。
【図2】本実施形態のファイル出力ポリシーファイル200の概略図である。
【図3】本実施形態の不揮発メモリへの障害情報の保存方法を示すフローチャートである。
【図4】本実施形態の不揮発メモリ用のバッファ400の概要図である。
【図5】本実施形態の不揮発メモリ内の障害情報の取得方法を示すフローチャートである。
【図6】本実施形態の不揮発メモリ内の障害ログ600の概略図である。
【図7】本実施形態の障害ログ600内の障害ログエントリ700の概略図である。
【図8】本実施形態のログバッファ800の概略図である。
【図9】本実施形態の障害ログファイルへの出力処理を示すフローチャートである。
【図10】本実施形態のステップ901の処理の詳細を示すフローチャートである。
【図11】本実施形態のファイル出力ポリシーテーブル1100の概略図である。
【図12】本実施形態のステップ907の処理の詳細を示すフローチャートである。
【図13】本実施形態の不揮発メモリ内の障害情報の削除方法を示すフローチャートである。
【図14】本実施形態の障害ログファイル1400の概略図である。
【図15】本実施形態のシステムログファイル1500の概略図である。
【符号の説明】
【0066】
100…サーバシステム、106…不揮発メモリ入出力処理部、107…障害ログ出力処理部、110…不揮発メモリ、200…ファイル出力ポリシーファイル、400…不揮発メモリ用バッファ、600…障害ログ、800…ログバッファ、1400…障害ログファイル、1500…システムログファイル

【特許請求の範囲】
【請求項1】
不揮発メモリに保存されている障害情報を前記不揮発メモリから取り出してファイルへ出力するコンピュータシステムにおける障害情報出力方法において、
前記コンピュータシステムがその終了時にファイルにまだ出力されていない障害情報を記憶装置内のバッファから検索して、前記記憶装置内のバッファから検索した障害情報を前記不揮発メモリへ保存する第1のステップと、
前記コンピュータシステムがその起動時に、前記不揮発メモリへ保存された障害情報を検索し、前記不揮発メモリから検索した前記障害情報に、不揮発メモリ内に保存されていた障害情報であることを示す印を付与して、前記印を付与した障害情報を前記記憶装置内のバッファへ保存する第2のステップと、
前記コンピュータシステムが前記記憶装置内のバッファへ保存された障害情報を取り出し、前記印を参照して障害情報の種類を判別し、前記判別された障害情報の種類に従ってファイルへの出力方法を変更する第3のステップとを有することを特徴とする障害情報出力方法。
【請求項2】
前記コンピュータシステムが、前記第1のステップで、前記記憶装置内のバッファに保存されている障害情報の個数から前記ファイルに出力した障害情報の個数を差し引いた値を計算し、その値を基にファイルにまだ出力していない障害情報の有無を判定することを特徴とする請求項1に記載された障害情報出力方法。
【請求項3】
前記コンピュータシステムが、前記第1のステップで、コンピュータシステムの終了要因を判別可能な値を障害情報に含めて前記不揮発メモリへ保存することを特徴とする請求項1または請求項2のいずれかに記載された障害情報出力方法。
【請求項4】
前記コンピュータシステムが、前記第2のステップで、前記不揮発メモリ内に保存されていた障害情報とそれ以外の障害情報とを区別できる2種類の数字の内の1つを障害情報のヘッダ情報に含ませることを特徴とする請求項1乃至請求項3のいずれか1項に記載された障害情報出力方法。
【請求項5】
前記コンピュータシステムが、前記第2のステップで、前記障害情報を更新時刻の古い順に前記記憶装置内のバッファへ保存することを特徴とする請求項1乃至請求項4のいずれか1項に記載された障害情報出力方法。
【請求項6】
前記第3のステップは、前記印を付与した障害情報をファイルに出力する条件を規定する設定ファイルを記憶装置から参照するステップを含むことを特徴とする請求項1乃至請求項5のいずれか1項に記載された障害情報出力方法。
【請求項7】
前記記憶装置内の設定ファイルは、前記印を付与した障害情報のファイルへの出力可否を判定する条件項目として、前記印を付与した障害情報のファイルへの出力可否を規定する項目と、前記印を付与した障害情報のファイルへの出力可否を決定する境界値としての障害重要度を規定する項目と、前記コンピュータシステムの終了要因が異常終了である場合に前記印を付与した障害情報のファイルへの出力を抑止することを規定する項目とを含むことを特徴とする請求項6に記載された障害情報出力方法。
【請求項8】
前記第3のステップは、前記記憶装置内の設定ファイルに規定の各項目と、前記障害情報の前記印の値と、前記コンピュータシステムの終了要因とを参照して、前記印を付与した障害情報のファイルへの出力可否を判定するステップを含むことを特徴とする請求項7に記載された障害情報出力方法。
【請求項9】
不揮発メモリに保存されている障害情報を前記不揮発メモリから取り出してファイルへ出力するコンピュータシステムにおいて、
コンピュータシステムの終了時にファイルにまだ出力されていない障害情報を記憶装置内のバッファから検索して、前記記憶装置内のバッファから検索した障害情報を前記不揮発メモリへ保存し、コンピュータシステムの起動時に、前記不揮発メモリへ保存された障害情報を検索し、前記不揮発メモリから検索した前記障害情報に、不揮発メモリ内に保存されていた障害情報であることを示す印を付与して、前記印を付与した障害情報を前記記憶装置内のバッファへ保存する不揮発メモリ入出力処理部と、
前記記憶装置内のバッファへ保存された障害情報を取り出し、前記印を参照して障害情報の種類を判別し、前記判別された障害情報の種類に従ってファイルへの出力方法を変更する障害ログ出力処理部とを備えることを特徴とするコンピュータシステム。
【請求項10】
不揮発メモリに保存されている障害情報を前記不揮発メモリから取り出してファイルへ出力するコンピュータシステムにおける障害情報出力方法をコンピュータに実行させるためのプログラムにおいて、
前記コンピュータシステムがその終了時にファイルにまだ出力されていない障害情報を記憶装置内のバッファから検索して、前記記憶装置内のバッファから検索した障害情報を前記不揮発メモリへ保存する第1のステップと、
前記コンピュータシステムがその起動時に、前記不揮発メモリへ保存された障害情報を検索し、前記不揮発メモリから検索した前記障害情報に、不揮発メモリ内に保存されていた障害情報であることを示す印を付与して、前記印を付与した障害情報を前記記憶装置内のバッファへ保存する第2のステップと、
前記コンピュータシステムが、前記記憶装置内のバッファへ保存された障害情報を取り出し、前記印を参照して障害情報の種類を判別し、前記判別された障害情報の種類に従ってファイルへの出力方法を変更する第3のステップとを有することを特徴とする障害情報出力方法をコンピュータに実行させるためのプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate


【公開番号】特開2010−26694(P2010−26694A)
【公開日】平成22年2月4日(2010.2.4)
【国際特許分類】
【出願番号】特願2008−185875(P2008−185875)
【出願日】平成20年7月17日(2008.7.17)
【出願人】(000005108)株式会社日立製作所 (27,607)
【出願人】(000233055)日立ソフトウエアエンジニアリング株式会社 (1,610)
【Fターム(参考)】