(57)【特許請求の範囲】
【請求項１】
コンピュータが、
一連のログが順次書き込まれる第１の記憶部の記憶量が所定のサイズに到達したことに応じて前記第１の記憶部に書き込まれたデータを第２の記憶部に移行させる際に、前記第１の記憶部の記憶量が前記所定のサイズに到達するまでの到達時間を取得し、
前記データより前に前記第１の記憶部に書き込まれた他のデータを移行させた際における到達時間に基づいて、取得した前記データを移行させる際の到達時間が正常範囲または異常範囲であるかを判定する有意判定処理を実行し、
前記有意判定処理で正常範囲と判定されたことに応じて、前記第１の記憶部に書き込まれたログが正常であるか異常であるかを示すフラグを正常であることを示すように設定し、前記有意判定処理で異常範囲と判定され、かつ前記フラグが正常であることを示したことに応じて、前記データを前記第２の記憶部とは異なる第３の記憶部に保存し、前記フラグを異常であることを示すように設定する、
処理を実行することを特徴とするデータ保存方法。
【請求項２】
前記コンピュータが、
前記他のデータを移行させた際における到達時間に基づいて、前記第１の記憶部に書き込まれたデータを前記第２の記憶部に移行させた際における到達時間の確率分布を特定し、
特定した前記確率分布の信頼区間に、前記データを移行させる際の到達時間が含まれない場合、前記データを前記第３の記憶部に保存することを特徴とする請求項１に記載のデータ保存方法。
【請求項３】
前記保存する処理は、
前記他のデータを移行させた際における到達時間に基づいて、前記データを移行させる際の到達時間に応じて、前記データと、前記データより１つ前に前記第１の記憶部から前記第２の記憶部に移行されたデータとを前記第３の記憶部に保存することを特徴とする請求項１または２に記載のデータ保存方法。
【請求項４】
一連のログが順次書き込まれる第１の記憶部の記憶量が所定のサイズに到達したことに応じて前記第１の記憶部に書き込まれたデータを第２の記憶部に移行させる際に、前記第１の記憶部の記憶量が前記所定のサイズに到達するまでの到達時間を取得し、
前記データより前に前記第１の記憶部に書き込まれた他のデータを移行させた際における到達時間に基づいて、取得した前記データを移行させる際の到達時間が正常範囲または異常範囲であるかを判定する有意判定処理を実行し、
前記有意判定処理で正常範囲と判定されたことに応じて、前記第１の記憶部に書き込まれたログが正常であるか異常であるかを示すフラグを正常であることを示すように設定し、前記有意判定処理で異常範囲と判定され、かつ前記フラグが正常であることを示したことに応じて、前記データを前記第２の記憶部とは異なる第３の記憶部に保存し、前記フラグを異常であることを示すように設定する、
制御部を有することを特徴とする情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ保存方法、および情報処理装置に関する。
【背景技術】
【０００２】
従来、アプリケーションプログラム、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）といったソフトウェアやハードウェアが出力する処理の内容を記録したデータや、ソフトウェアやハードウェアが通信したデータである、ログを保存する技術がある。また、ログは大量に出力されるため、古いログから順に削除する技術がある。ソフトウェアやハードウェアの保守者は、ソフトウェアに異常が起こった原因の調査として保存されたログを閲覧することができる。関連する先行技術として、例えば、エラーログ情報と同じエラーログが一定時間内に記録された場合、同じエラーログが記録されたエラーログ情報の発生時刻をエラーログ情報の発生順に、エラーログと同一であることを識別する番号とともに記録するものがある。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平１１−３０６０５０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、従来技術によれば、ソフトウェアやハードウェアの異常の直接の要因が記載されている可能性が高い、ソフトウェアの異常が発生した際のログを削除せずに残しておくことが難しい。例えば、同一の内容のログの発生頻度から異常が発生したログを特定して特定したログを残そうとしても、ログにはＩＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）アドレス等の可変部分が含まれるため、ログが同一の内容であると判断できずに、残すべきログを他のログと一緒に削除してしまうことがある。
【０００５】
１つの側面では、本発明は、異常が発生した際のログを削除することを抑制することができるデータ保存方法、および情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【０００６】
本発明の一側面によれば、一連のログが順次書き込まれる第１の記憶部の記憶量が所定のサイズに到達したことに応じて第１の記憶部に書き込まれたデータを第２の記憶部に移行させる際に、第１の記憶部の記憶量が所定のサイズに到達するまでの到達時間を取得し、データより前に第１の記憶部に書き込まれた他のデータを移行させた際における到達時間に基づいて、取得したデータを移行させる際の到達時間に応じてデータを第２の記憶部とは異なる第３の記憶部に保存するデータ保存方法、および情報処理装置が提案される。
【発明の効果】
【０００７】
本発明の一態様によれば、異常が発生した際のログを削除することの抑制を図ることができるという効果を奏する。
【図面の簡単な説明】
【０００８】
【図１】図１は、本実施の形態にかかる情報処理装置１０１の動作例を示す説明図である。
【図２】図２は、ログ保存システム２００の一例を示す説明図である。
【図３】図３は、情報処理装置１０１のハードウェア構成例を示すブロック図である。
【図４】図４は、ログ保存システム２００におけるログの保存例を示す説明図である。
【図５】図５は、情報処理装置１０１の機能構成例を示すブロック図である。
【図６】図６は、ログローテーション実施時刻テーブル５１１の記憶内容の一例を示す説明図である。
【図７】図７は、ログ収集処理手順の一例を示すフローチャートである。
【図８】図８は、有意判定処理手順の一例を示すフローチャートである。
【発明を実施するための形態】
【０００９】
以下に図面を参照して、開示のデータ保存方法、および情報処理装置の実施の形態を詳細に説明する。
【００１０】
図１は、本実施の形態にかかる情報処理装置１０１の動作例を示す説明図である。情報処理装置１０１は、ログを保存するコンピュータである。情報処理装置１０１は、例えば、サーバである。ここで、ログとは、アプリケーションプログラム、ＯＳといったソフトウェアやハードウェアが出力する処理の内容を記録したものや、ソフトウェアやハードウェアが通信したデータを記録したものである。以下の説明、および図の説明において、「アプリケーションプログラム」を、「アプリ」と称する。アプリは、情報処理装置１０１上で動作するものでもよいし、他のコンピュータで動作するものでもよい。
【００１１】
ログの保存方法として、情報処理装置１０１は、アプリ１０２から順次出力された一連のログを第１の記憶部１０３に書き込む。そして、情報処理装置１０１は、第１の記憶部１０３が一杯になったとき、すなわち、第１の記憶部１０３の記憶量が所定のサイズに到達したことに応じて、第１の記憶部１０３に書き込まれたデータを第２の記憶部１０４に移行する。第１の記憶部１０３と第２の記憶部１０４とは、同一の記憶装置に含まれる記憶領域でもよいし、異なる記憶装置のことでもよい。例えば、第１の記憶部１０３、第２の記憶部１０４は、ファイルシステムによって実現されるファイルでもよいし、フォルダでもよい。
【００１２】
ここで、第１の記憶部１０３への書き込み方として、情報処理装置１０１は、ログを、第１の記憶部１０３に含まれる、ある一つのファイルに書き込んでもよいし、ログ一つ一つをファイルとして、第１の記憶部１０３に書き込んでもよい。前述の記載に併せて、第１の記憶部１０３の記憶量は、ある一つのファイルのデータサイズでもよいし、ログ一つ一つをファイルとしたものを格納したフォルダのデータサイズでもよい。そして、情報処理装置１０１は、第２の記憶部１０４にデータを移行して、空となった第１の記憶部１０３に、再びログを書き込む。情報処理装置１０１は、第２の記憶部１０４に移行したデータの数が、所定の数に到達した場合、一番古いデータを削除する。
【００１３】
以下では、ログを、ある一つのファイルに書き込む例を用いて説明する。また、ログを書き込むファイルを「ログファイル」と呼称する。第１の記憶部１０３の記憶量は、ログファイルのデータサイズとする。そして、ログファイルを、以下の説明および図では、「ｌｏｇ」と記載する場合がある。また、第１の記憶部にあるログファイルを、「現在の「ｌｏｇ」」と呼称する場合がある。また、現在の「ｌｏｇ」の一つ前に、第２の記憶部１０４に移行したファイルを、「１世代前のログファイル」として呼称する場合がある。同様に、過去ｘ回前に移行したファイルを、「ｘ世代前のログファイル」として呼称する場合がある。そして、ｘ世代前のログファイルを、以下の説明および図では、「ｌｏｇ．ｘ」と記載する場合がある。ここで、ｘは、１以上の整数である。また、以下の説明では、ログファイルを移行することを、「ローテーション」と呼称する場合がある。また、所定のサイズを、「ローテーション閾値」と呼称する場合がある。また、一番古いデータを削除する契機となる所定の数を、「所定の世代数」と呼称する場合がある。
【００１４】
また、ログファイルのデータを移行する方法として、情報処理装置１０１は、ログファイルを第１の記憶部１０３から第２の記憶部１０４に移動することにより、ログファイルのデータの移行としてもよい。または、情報処理装置１０１は、ログファイルからデータを読み出し、第２の記憶部１０４に作成したファイルに読み出したデータを書き込んだ後、第１の記憶部１０３にあるログファイルのデータを削除することで、ログファイルのデータの移行としてもよい。
【００１５】
また、ログには、例えば、正常に処理することができた旨が記載されていたり、または、正常に処理することができず、エラーを示す旨が記載されていたりする。以下、正常に処理することができた旨が記載されたログを、「正常ログ」として呼称する場合がある。同様に、正常に処理することができず、エラーを示す旨が記載されたログを、「エラーログ」として呼称する場合がある。
【００１６】
ログを保存することにより、ソフトウェアやハードウェアに対して異常が発生した場合に、ソフトウェアやハードウェアの保守者は、異常が起こった原因の調査として保存されたログを閲覧することができる。例えば、ソフトウェアに対する異常は、ソフトウェア内のプログラムの不具合により発生する異常や、ソフトウェアに対して第３者による大量のアクセスによって発生する異常や、セキュリティホールを狙ったアクセスによって発生する異常等がある。
【００１７】
ここで、異常が発生すると、アプリ１０２は、エラーログを大量に出力することがある。例えば、ソフトウェア内のプログラムの不具合が、ループ処理の中で発生すると、ソフトウェアは、ループを１周するごとにエラーログを出力することになる。また、第３者による大量のアクセスにより、例えば、アクセスを一旦保持するバッファがフルになると、ソフトウェアは、バッファがフルとなったエラーログをアクセスがあるたびに出力することになり、エラーログを大量に出力することになる。また、セキュリティホールを狙ったアクセスによって発生したエラーログを出力する箇所が、ループ処理の中であると、ソフトウェアは、ループを１周するごとにエラーログを出力することになる。
【００１８】
そして、エラーログを大量に出力すると、ログファイルの記憶量が通常より早くローテーション閾値に到達してしまうことがある。そして、保守者が、異常の発生に気づいた時点では、ソフトウェアの異常の直接の要因が記載されている可能性が高い、異常が発生した際のログを保存するログファイルが削除されてしまうことがある。
【００１９】
このような状態となると、保守者は、異常が発生した際のログを確認できなくなる。例えば、ソフトウェア内のプログラムの不具合では、ある異常により作成された不正データを入力としてループ処理が行われると、ループ処理でエラーログを大量に出力することになり、異常の直接の原因である不正データを作成した部分のログが削除されてしまう。なお、異常が発生した際のログが保存されていれば、その後に出力される大量のログは削除されても実用上問題はない。
【００２０】
異常が発生した際のログを保存する方法としては、例えば、保守者がソフトウェアの異常に気づいてからログを採取するまでの間のタイムラグを考慮して、ログファイルのサイズやローテーションする頻度を計画する方法がある。しかしながら、異常が発生した際に、想定より大量のログが発生すると、異常が発生した際のログが残らないことになる。
【００２１】
また、ログファイルを削除する際に、ログファイルに、不具合を含むログが含まれるか否かを判定する方法がある。しかしながら、不具合を含むログであると判定するには、ログの形式、ログに含まれる不具合とする文字列等を把握しておくことになる。そして、ログには、自社製品以外にも、他社製品の機器やミドルウェアのログも含まれるため、不具合を含むログがどのような形式となるか、また不具合とする文字列がどのようなものになるかを事前に特定することは困難である。
【００２２】
また、同じエラーログが一定時間内に記録された場合、同じエラーログが記録された発生時刻をエラーログの発生順に、記録されたエラーログと同一であることを識別する番号とともに記録するものがある。しかしながら、エラーログが同一であることや重要度を判定するには、同一のエラーログであることや重要度を判断するための形式を規定することになる。そして、エラーログ内にはＩＰアドレス、時間、ユーザ名等といった可変部分があるため、形式を規定することは困難であり、ログが同一の内容であると判断できずに、残すべきログを他のログと一緒に削除してしまうことになる。
【００２３】
そこで、本実施の形態にかかる情報処理装置１０１は、現在の「ｌｏｇ」が一杯になるまでの時間が、他の「ｌｏｇ」が一杯になるまでの時間より速い場合、今のファイルを第２の記憶部１０４とは別の第３の記憶部１０５に保存する。このように、情報処理装置１０１は、異常が発生すると、ログが大量に出力されることを利用して、ログを解析せずに、異常が発生した際のログを残すことができる。
【００２４】
具体的な処理内容について、図１を用いて説明する。図１の前程として、ログは全て同一のデータサイズであり、ログ４つ分のデータサイズが、ローテーション閾値となるものとする。また、所定の世代数を２とする。また、一連のログとして、アプリ１０２が、正常ログ１１１−１〜１３、エラーログ１１１−１４〜１９を順次生成して出力するものとする。
【００２５】
図１の（ａ）では、アプリ１０２が正常ログを出力している状態を示す。第２の記憶部１０４には、１世代前のログファイルとなる「ｌｏｇ．１」と、２世代前のログファイルとなる「ｌｏｇ．２」とが格納されてある。そして、「ｌｏｇ．２」には、正常ログ１１１−１〜４が書き込まれてある。また、「ｌｏｇ．１」には、正常ログ１１１−５〜８が書き込まれてある。また、図１の（ａ）では、情報処理装置１０１は、「ｌｏｇ」に正常ログ１１１−９〜１２を書き込んだ状態である。また、図１の（ａ）では、アプリ１０２は、正常ログ１１１−１３を生成した状態である。
【００２６】
情報処理装置１０１は、現在の「ｌｏｇ」のデータを、第２の記憶部１０４に移行させる際に、「ｌｏｇ」の記憶量がローテーション閾値に到達するまでの到達時間を取得する。ここで、情報処理装置１０１は、到達時間の計測開始時刻を、１世代前の「ｌｏｇ」のデータを移行した時刻としてもよいし、「ｌｏｇ」に書き込まれたログが無い状態から、ログが初めて書き込まれた時刻としてもよい。
【００２７】
そして、情報処理装置１０１は、他の「ｌｏｇ」のデータを移行させた際における到達時間に基づいて、現在の「ｌｏｇ」のデータを移行させる際の到達時間に応じて現在の「ｌｏｇ」のデータを第２の記憶部１０４とは異なる第３の記憶部１０５に保存する。ここで、他の「ｌｏｇ」のデータは、現在の「ｌｏｇ」より前に第１の記憶部１０３に書き込まれたものである。
【００２８】
例えば、情報処理装置１０１は、１世代前の「ｌｏｇ」のデータを移行させた際における到達時間に所定の時間を加算した時刻より、「ｌｏｇ」のデータを移行させる際の到達時間が大きい場合、現在の「ｌｏｇ」のデータを第３の記憶部１０５に保存する。また、他の例として、情報処理装置１０１は、他の「ｌｏｇ」のデータを移行させた際における到達時間の平均値と、所定の時間を加算した時刻より、現在の「ｌｏｇ」のデータを移行させる際の到達時間が大きい場合、第３の記憶部１０５に保存してもよい。
【００２９】
図１の（ａ）の例では、他の「ｌｏｇ」のデータを移行させた際における到達時間より現在の「ｌｏｇ」のデータを移行させる際の到達時間が遅いため、情報処理装置１０１は、現在の「ｌｏｇ」のデータを第３の記憶部１０５に保存しない。
【００３０】
図１の（ｂ）では、アプリ１０２がエラーログを出力している状態を示す。第２の記憶部１０４には、１世代前のログファイルとなる「ｌｏｇ．１」と、２世代前のログファイルとなる「ｌｏｇ．２」とが格納されてある。そして、「ｌｏｇ．２」には、正常ログ１１１−５〜８が書き込まれてある。また、「ｌｏｇ．１」には、正常ログ１１１−９〜１２が書き込まれてある。図１の（ｂ）では、正常ログ１１１−１〜４が書き込まれたログファイルは削除された状態である。
【００３１】
また、図１の（ｂ）では、情報処理装置１０１は、「ｌｏｇ」に正常ログ１１１−１３と、エラーログ１１１−１４〜１６を書き込んだ状態である。また、図１の（ｂ）では、アプリ１０２は、エラーログ１１１−１７〜１９を生成した状態である。
【００３２】
図１の（ｂ）の例では、他の「ｌｏｇ」のデータを移行させた際における到達時間より現在の「ｌｏｇ」のデータを移行させる際の到達時間が速いため、情報処理装置１０１は、現在の「ｌｏｇ」のデータを第３の記憶部１０５に保存する。図１の（ｂ）の例では、情報処理装置１０１は、現在の「ｌｏｇ」に異常が発生した際のログが含まれるものと見做して、現在の「ｌｏｇ」のデータを「ｌｏｇｘ．１」のデータとして保存する。これにより、アプリ１０２の保守者は、第３の記憶部１０５に保存された、異常が発生した際のログを含む「ｌｏｇｘ．１」を閲覧することができる。次に、図２において、情報処理装置１０１を含むログ保存システム２００の説明を行う。
【００３３】
図２は、ログ保存システム２００の一例を示す説明図である。ログ保存システム２００は、情報処理装置１０１と、業務システム２０１、２０２と、を含む。情報処理装置１０１と、業務システム２０１、２０２とは、それぞれ、ゲートウェイｇｗ０、１、２を通してネットワーク２０３と接続する。
【００３４】
業務システム２０１、２０２は、業務サービスを提供するシステムである。具体的には、業務システム２０１は、サーバ２１１と、ディスク２１２とを有する。また、業務システム２０２は、サーバ２２１と、ディスク２２２とを有する。
【００３５】
（情報処理装置１０１のハードウェア）
図３は、情報処理装置１０１のハードウェア構成例を示すブロック図である。図３において、情報処理装置１０１は、ＣＰＵ３０１と、ＲＯＭ３０２と、ＲＡＭ３０３と、を含む。また、情報処理装置１０１は、ディスクドライブ３０４およびディスク３０５と、通信インターフェース３０６と、を含む。また、ＣＰＵ３０１〜ディスクドライブ３０４、通信インターフェース３０６はバス３０７によってそれぞれ接続される。
【００３６】
ＣＰＵ３０１は、情報処理装置１０１の全体の制御を司る演算処理装置である。ＲＯＭ３０２は、ブートプログラムなどのプログラムを記憶する不揮発性メモリである。ＲＡＭ３０３は、ＣＰＵ３０１のワークエリアとして使用される揮発性メモリである。
【００３７】
ディスクドライブ３０４は、ＣＰＵ３０１の制御に従ってディスク３０５に対するデータのリードおよびライトを制御する制御装置である。ディスクドライブ３０４には、例えば、磁気ディスクドライブ、光ディスクドライブ、ソリッドステートドライブなどを採用することができる。ディスク３０５は、ディスクドライブ３０４の制御で書き込まれたデータを記憶する不揮発性メモリである。例えばディスクドライブ３０４が磁気ディスクドライブである場合、ディスク３０５には、磁気ディスクを採用することができる。また、ディスクドライブ３０４が光ディスクドライブである場合、ディスク３０５には、光ディスクを採用することができる。また、ディスクドライブ３０４がソリッドステートドライブである場合、ディスク３０５には、半導体素子によって形成された半導体メモリ、いわゆる半導体ディスクを採用することができる。
【００３８】
通信インターフェース３０６は、ネットワークと内部のインターフェースを司り、他の装置からのデータの入出力を制御する制御装置である。具体的に、通信インターフェース３０６は、通信回線を通じてネットワークを介して他の装置に接続される。通信インターフェース３０６には、例えば、モデムやＬＡＮアダプタなどを採用することができる。
【００３９】
また、ログ保存システム２００の管理者が、情報処理装置１０１を直接操作する場合、情報処理装置１０１は、ディスプレイ、キーボード、マウスといったハードウェアを有してもよい。
【００４０】
図４は、ログ保存システム２００におけるログの保存例を示す説明図である。情報処理装置１０１は、ログ収集処理部４１１と、ログローテーション実行部４１２とを有する。図４に示すアプリ４０１−１〜３は、サーバ２１１、２２１等で実行されるソフトウェアである。
【００４１】
ログ収集処理部４１１は、アプリ４０１−１〜３が出力したログを「ｌｏｇ」に書き込む。例えば、ログ収集処理部４１１は、ＵＮＩＸ（登録商標）環境では、ｓｙｓｌｏｇｄに相当する。ログローテーション実行部４１２は、現在の「ｌｏｇ」のデータを第２の記憶部１０４に移行する。また、図４の例では、所定の世代数を５とする。
【００４２】
また、ログローテーション実行部４１２は、現在の「ｌｏｇ」における到達時間が速くなった場合に、現在の「ｌｏｇ」に異常が発生した際のログが含まれるものと見做して、現在の「ｌｏｇ」を「ｌｏｇｘ．１」として保存する。
【００４３】
さらに、図４では、ログローテーション実行部４１２は、現在の「ｌｏｇ」に異常が発生した際のログが含まれるものと見做した場合に、現在の「ｌｏｇ」の１世代前の「ｌｏｇ」のデータを、「ｌｏｇｘ．２」として第３の記憶部１０５に保存する。１世代前の「ｌｏｇ」のデータを第３の記憶部１０５に保存する理由として、１世代前の「ｌｏｇ」の最後の方の書き込みでソフトウェアに対して異常が発生する場合が起こり得るためである。この場合、１世代前の「ｌｏｇ」における到達時間は、それより前の世代の「ｌｏｇ」における到達時間とほぼ変わらないものとなり、情報処理装置１０１は、異常が発生したものと見做せないことになる。そこで、ログローテーション実行部４１２は、第２の記憶部１０４に移行した、１世代前の「ｌｏｇ」のデータを、第３の記憶部１０５に保存する。次に、図５を用いて、情報処理装置１０１の機能構成に含まれる、ログローテーション実行部４１２の動作の詳細について説明する。
【００４４】
（情報処理装置１０１の機能構成例）
図５は、情報処理装置１０１の機能構成例を示すブロック図である。情報処理装置１０１は、制御部５００を有する。制御部５００は、取得部５０１と、特定部５０２と、保存部５０３とを含む。制御部５００は、記憶装置に記憶されたプログラムをＣＰＵ３０１が実行することにより、各部の機能を実現する。記憶装置とは、具体的には、例えば、図３に示したＲＯＭ３０２、ＲＡＭ３０３、ディスク３０５などである。また、各部の処理結果は、ＣＰＵ３０１のレジスタや、ＣＰＵ３０１のキャッシュメモリ等に格納される。
【００４５】
また、情報処理装置１０１は、ログローテーション実施時刻テーブル５１１にアクセス可能である。ログローテーション実施時刻テーブル５１１は、ＲＡＭ３０３といった記憶装置に格納される。また、ＲＡＭ３０３には、ログ収集異常閾値５１２と、平均値μと、標準偏差σと、状態フラグｓｆとを記憶する。ログ収集異常閾値５１２は、異常範囲と見做す閾値のことであり、ディスク３０５から読み出した値である。平均値μは、到達時間の平均値である。また、標準偏差σは、到達時間の標準偏差である。また、状態フラグｓｆは、現在のログが正常であるか異常であるかを示すフラグである。具体的には、状態フラグｓｆには、現在のログが正常である状態を示す「正常状態」か、現在のログが異常である状態を示す「異常状態」かのいずれかの値が格納される。
【００４６】
また、情報処理装置１０１は、ログ収集異常閾値５２１と、ローテーション閾値５２２と、第１の記憶部１０３と、第２の記憶部１０４と、第３の記憶部１０５とにアクセス可能である。ログ収集異常閾値５２１と、ローテーション閾値５２２とは、ディスク３０５に格納される。また、第１の記憶部１０３と、第２の記憶部１０４と、第３の記憶部１０５とは、ディスク３０５の記憶領域の一部の領域である。ログ収集異常閾値５２１は、到達時間を異常範囲と見做す閾値である。また、ローテーション閾値５２２は、図１で説明した、ローテーション閾値であり、ログファイルのデータを第１の記憶部１０３から第２の記憶部１０４に移行する際に用いる閾値である。
【００４７】
取得部５０１は、現在の「ｌｏｇ」のデータを第２の記憶部１０４に移行させる際に、第１の記憶部１０３の記憶量がローテーション閾値に到達するまでの到達時間を取得する。
【００４８】
特定部５０２は、他の「ｌｏｇ」のデータを移行させた際における到達時間に基づいて、第１の記憶部１０３に書き込まれたデータを第２の記憶部１０４に移行させた際における到達時間の確率分布を特定する。また、特定部５０２は、現在の「ｌｏｇ」のデータに移行させる際における到達時間を含めて、確率分布を特定してもよい。ここで、前述の確率分布が正規分布に従うのであれば、特定部５０２は、正規分布のパラメータとして、平均値μと、標準偏差σとを算出することにより、確率分布を特定する。また、特定部５０２は、不偏分散から求めた標準偏差を算出し、算出した値を標準偏差σとして用いてもよい。
【００４９】
保存部５０３は、他の「ｌｏｇ」のデータを移行させた際における到達時間に基づいて、現在の「ｌｏｇ」のデータを移行させる際の到達時間に応じて現在の「ｌｏｇ」のデータを第３の記憶部１０５に保存する。また、保存部５０３は、他の「ｌｏｇ」のデータを移行させた際における到達時間と現在の「ｌｏｇ」のデータに移行させる際における到達時間とに基づいてもよい。
【００５０】
また、保存部５０３は、特定部５０２が特定した確率分布の信頼区間に、現在の「ｌｏｇ」のデータを移行させる際の到達時間が含まれない場合、現在の「ｌｏｇ」のデータを第３の記憶部１０５に保存してもよい。ここで、信頼区間とは、到達時間を正常範囲と見做す範囲であり、有意水準より導かれた値である。
【００５１】
また、保存部５０３は、他の「ｌｏｇ」のデータを移行させた際における到達時間に基づいて、現在の「ｌｏｇ」のデータを移行させる際の到達時間に応じて現在の「ｌｏｇ」データと、１世代前の「ｌｏｇ」のデータとを第３の記憶部１０５に保存してもよい。
【００５２】
図６は、ログローテーション実施時刻テーブル５１１の記憶内容の一例を示す説明図である。ログローテーション実施時刻テーブル５１１は、ローテーションを実行した時刻を記憶するテーブルである。図６に示すログローテーション実施時刻テーブル５１１は、レコード６０１−０〜ｎを有し、レコード６０１−０が示す今回のローテーションを実行した時刻から、レコード６０１−ｎが示す過去ｎ回前にローテーションを実行した時刻までを記憶する。ｎは、１以上の整数である。
【００５３】
ログローテーション実施時刻テーブル５１１は、ローテーション回数と、ローテーション時刻というフィールドを有する。ローテーション回数フィールドには、各ローテーションを識別する情報が格納される。本実施の形態では、分り易くするため、ローテーション回数フィールドには、「今回」、「過去１回前」、…という値が格納されている。他の例では、例えば、ローテーション回数フィールドには、ローテーションを行う度に付与した番号が格納されてもよい。ローテーション時刻フィールドには、該当のローテーションを実行したときの時刻情報が格納される。
【００５４】
例えば、レコード６０１−０は、今回のローテーションを実行した時刻が「ｘ０時ｙ０分ｚ０秒」であることを示す。また、レコード６０１−１は、過去１回前のローテーションを実行した時刻が「ｘ１時ｙ１分ｚ１秒」であることを示す。さらに、レコード６０１−ｎは、過去ｎ回前のローテーションを実行した時刻が「ｘｎ時ｙｎ分ｚｎ秒」であることを示す。
【００５５】
次に、情報処理装置１０１の動作を示すフローチャートを、図７、図８を用いて説明する。
【００５６】
図７は、ログ収集処理手順の一例を示すフローチャートである。ログ収集処理は、ログを収集する処理である。また、ログ収集処理は、一定間隔で周期的に起動される。
【００５７】
情報処理装置１０１は、現在の「ｌｏｇ」のデータサイズがローテーション閾値を超えたか否かを判断する（ステップＳ７０１）。現在の「ｌｏｇ」のデータサイズがローテーション閾値を超えた場合（ステップＳ７０１：Ｙｅｓ）、情報処理装置１０１は、ログローテーションを実行する（ステップＳ７０２）。次に、情報処理装置１０１は、ログローテーションを実行した時刻を取得して、ログローテーション実施時刻テーブル５１１に格納する（ステップＳ７０３）。
【００５８】
次に、情報処理装置１０１は、有意判定処理を実行する（ステップＳ７０４）。有意判定処理の詳細については、図８で説明する。そして、情報処理装置１０１は、有意判定処理の判定結果が次に示す結果のいずれに一致するかを判断する（ステップＳ７０５）。次に示す結果とは、正常範囲と、異常範囲と、である。有意判定処理の判定結果が正常範囲である場合（ステップＳ７０５：正常範囲）、情報処理装置１０１は、状態フラグを「正常状態」に設定する（ステップＳ７０６）。
【００５９】
一方、有意判定処理の判定結果が異常範囲である場合（ステップＳ７０５：異常範囲）、情報処理装置１０１は、状態フラグｓｆが次に示す識別子のいずれに一致するかを判断する（ステップＳ７０７）。次に示す識別子とは、正常状態と、異常状態と、である。状態フラグｓｆが正常状態である場合（ステップＳ７０７：正常状態）、情報処理装置１０１は、現在の「ｌｏｇ」のデータを第３の記憶部１０５に保存する（ステップＳ７０８）。次に、情報処理装置１０１は、状態フラグを「異常状態」に設定する（ステップＳ７０９）。一方、状態フラグｓｆが異常状態である場合（ステップＳ７０７：異常状態）、異常状態が継続していることとなり、情報処理装置１０１は、そのままステップＳ７１０の処理に移行する。
【００６０】
ステップＳ７０６、Ｓ７０９の処理終了後、または、ステップＳ７０７：異常状態となった場合、情報処理装置１０１は、ログファイルの世代数が所定の世代数を超えたか否かを判断する（ステップＳ７１０）。ログファイルの世代数が所定の世代数を超えた場合（ステップＳ７１０：Ｙｅｓ）、情報処理装置１０１は、一番古いログファイルを削除する（ステップＳ７１１）。ステップＳ７１１の処理後、または、ログファイルの世代数が所定の世代数を超えない場合（ステップＳ７１０：Ｎｏ）、または、現在の「ｌｏｇ」のデータサイズがローテーション閾値を超えない場合（ステップＳ７０１：Ｎｏ）、情報処理装置１０１は、ログ収集処理を終了する。ログ収集処理を実行することにより、情報処理装置１０１は、ログを収集するとともに、現在の「ｌｏｇ」に異常が発生した際のログが含まれるものと見做した場合に、現在の「ｌｏｇ」を第３の記憶部１０５に保存することができる。
【００６１】
図８は、有意判定処理手順の一例を示すフローチャートである。図８に示す有意判定処理は、今回の到達時間が正常範囲か異常範囲かを、有意水準５［％］で検定することにより判定する処理である。有意水準５［％］以外として、例えば、情報処理装置１０１は、有意水準１［％］で検定してもよい。
【００６２】
情報処理装置１０１は、ログローテーション実施時刻テーブル５１１から、ローテーション時刻を読み込む（ステップＳ８０１）。次に、情報処理装置１０１は、読み込んだローテーション時刻から、ｎ個の到達時間をそれぞれ算出する（ステップＳ８０２）。例えば、図６を用いると、情報処理装置１０１は、レコード６０１−０に示したローテーション時刻からレコード６０１−１に示したローテーション時刻を減じた値を、１番目の経過時間となる今回の経過時間とする。同様に、情報処理装置１０１は、レコード６０１−ｎ−１に示したローテーション時刻から、レコード６０１−ｎに示したローテーション時刻を減じた値を、ｎ番目の経過時間とする。
【００６３】
そして、情報処理装置１０１は、ｎ個の到達時間の平均値μを算出する（ステップＳ８０３）。次に、情報処理装置１０１は、ｎ個の到達時間の標準偏差σを算出する（ステップＳ８０４）。具体的には、情報処理装置１０１は、下記（１）式を用いて標準偏差σを算出する。
【００６４】
【数１】
0006471468.tif 000002
【００６５】
ただし、Ｘkは、ｋ番目の到達時間を示す。そして、情報処理装置１０１は、今回の到達時間が信頼区間に含まれるか否かとして、μ−１．９６σ2＜今回の到達時間＜μ＋１．９６σ2となるか否かを判断する（ステップＳ８０５）。ここで、１．９６という値は、有意水準５［％］から導かれた値であり、ログ収集異常閾値５１２の具体的な値の一例である。
【００６６】
μ−１．９６σ2＜今回の到達時間＜μ＋１．９６σ2となる場合（ステップＳ８０５：Ｙｅｓ）、情報処理装置１０１は、判定結果を正常範囲として出力する（ステップＳ８０６）。
【００６７】
一方、μ−１．９６σ2＜今回の到達時間＜μ＋１．９６σ2を満たさない場合（ステップＳ８０５：Ｎｏ）、情報処理装置１０１は、判定結果を異常範囲として出力する（ステップＳ８０７）。また、ステップＳ８０５〜Ｓ８０７の処理において、情報処理装置１０１は、μ−１．９６σ2＜今回の到達時間を満たす場合に、判定結果を正常範囲として出力してもよい。なお、今回の到達時間＜μ＋１．９６σ2を満たさない場合としては、例えば、何らかの理由によりログが書き込めず、ログが出力される頻度が低下した時である。書き込めない理由としては、例えば、ログを出力するアプリケーションプログラムのいずれかが強制終了した場合や、情報処理装置１０１が他の処理を行っており高負荷となっていてログのいくつかの収集に失敗した場合である。
【００６８】
ステップＳ８０６、またはステップＳ８０７のうちのいずれかの処理終了後、情報処理装置１０１は、有意判定処理を終了する。有意判定処理を実行することにより、情報処理装置１０１は、今回の到達時間が正常範囲か異常範囲かを判定することができる。
【００６９】
以上説明したように、情報処理装置１０１によれば、現在の「ｌｏｇ」が一杯になるまでの時間が、他の「ｌｏｇ」が一杯になるまでの時間より速い場合、今のファイルを第２の記憶部１０４とは別の第３の記憶部１０５に保存する。このように、情報処理装置１０１は、異常が発生すると、ログが大量に出力されることを利用して、ログを解析せずに、異常が発生した際のログを保存することができる。
【００７０】
また、情報処理装置１０１によれば、「ｌｏｇ」のデータを移行させた際における到達時間の確率分布に、現在の「ｌｏｇ」のデータを移行させる際の到達時間が含まれない場合、現在の「ｌｏｇ」のデータを第３の記憶部１０５に保存してもよい。これにより、情報処理装置１０１は、到達時間の確率分布に合わせて、異常が発生した際のログを保存することができる。具体的には、到達時間がばらついているときには、標準偏差σが大きい値となるので、情報処理装置１０１は、現在の「ｌｏｇ」のデータを移行させる際の到達時間が多少平均から離れた値であっても、正常の範囲で起こり得るものとして見做すことができる。また、到達時間が集約されているときには、標準偏差σが小さい値となるので、情報処理装置１０１は、現在の「ｌｏｇ」のデータを移行させる際の到達時間が多少平均から離れた値となったら、異常の範囲として見做すことができる。
【００７１】
また、情報処理装置１０１によれば、現在の「ｌｏｇ」のデータを第３の記憶部１０５に保存する際に、１世代前の「ｌｏｇ」のデータを第３の記憶部１０５に保存してもよい。図４で記載したように、到達時間が速くなった「ｌｏｇ」の１世代前の「ｌｏｇ」に、異常が発生した際のログが含まれる可能性がある。従って、情報処理装置１０１は、１世代前の「ｌｏｇ」のデータを第３の記憶部１０５に保存しておくことで、異常が発生した際のログを紛失してしまう危険性を抑制することができる。
【００７２】
また、本実施の形態にかかるデータ保存方法は、ログの中身を解析せずに、異常が発生した際のログを保存することができる。従って、ログ保存システム２００内で、他社製品やフリーソフトなどが多数稼働していて、どのようなログがでるか明確に分からない、また、ログの形式を統一できないようなサーバがあっても、本実施の形態にかかるデータ保存方法を利用することができる。また、本実施の形態にかかるデータ保存方法では、発生した前後のログ状況をそのまま記録できることも障害調査の点で有用である。
【００７３】
なお、本実施の形態で説明したデータ保存方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本データ保存プログラムは、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ（Ｃｏｍｐａｃｔ  Ｄｉｓｃ−Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本データ保存プログラムは、インターネット等のネットワークを介して配布してもよい。
【００７４】
上述した実施の形態に関し、さらに以下の付記を開示する。
【００７５】
（付記１）コンピュータが、
一連のログが順次書き込まれる第１の記憶部の記憶量が所定のサイズに到達したことに応じて前記第１の記憶部に書き込まれたデータを第２の記憶部に移行させる際に、前記第１の記憶部の記憶量が前記所定のサイズに到達するまでの到達時間を取得し、
前記データより前に前記第１の記憶部に書き込まれた他のデータを移行させた際における到達時間に基づいて、取得した前記データを移行させる際の到達時間に応じて前記データを前記第２の記憶部とは異なる第３の記憶部に保存する、
処理を実行することを特徴とするデータ保存方法。
【００７６】
（付記２）前記コンピュータが、
前記他のデータを移行させた際における到達時間に基づいて、前記第１の記憶部に書き込まれたデータを前記第２の記憶部に移行させた際における到達時間の確率分布を特定し、
特定した前記確率分布の信頼区間に、前記データを移行させる際の到達時間が含まれない場合、前記データを前記第３の記憶部に保存することを特徴とする付記１に記載のデータ保存方法。
【００７７】
（付記３）前記保存する処理は、
前記他のデータを移行させた際における到達時間に基づいて、前記データを移行させる際の到達時間に応じて、前記データと、前記データより１つ前に前記第１の記憶部に書き込まれたデータとを前記第３の記憶部に保存することを特徴とする付記１または２に記載のデータ保存方法。
【００７８】
（付記４）一連のログが順次書き込まれる第１の記憶部の記憶量が所定のサイズに到達したことに応じて前記第１の記憶部に書き込まれたデータを第２の記憶部に移行させる際に、前記第１の記憶部の記憶量が前記所定のサイズに到達するまでの到達時間を取得し、
前記データより前に前記第１の記憶部に書き込まれた他のデータを移行させた際における到達時間に基づいて、取得した前記データを移行させる際の到達時間に応じて前記データを前記第２の記憶部とは異なる第３の記憶部に保存する、
制御部を有することを特徴とする情報処理装置。
【００７９】
（付記５）コンピュータに、
一連のログが順次書き込まれる第１の記憶部の記憶量が所定のサイズに到達したことに応じて前記第１の記憶部に書き込まれたデータを第２の記憶部に移行させる際に、前記第１の記憶部の記憶量が前記所定のサイズに到達するまでの到達時間を取得し、
前記データより前に前記第１の記憶部に書き込まれた他のデータを移行させた際における到達時間に基づいて、取得した前記データを移行させる際の到達時間に応じて前記データを前記第２の記憶部とは異なる第３の記憶部に保存する、
処理を実行させることを特徴とするデータ保存プログラム。
【符号の説明】
【００８０】
１０１  情報処理装置
１０２  アプリ
１０３  第１の記憶部
１０４  第２の記憶部
１０５  第３の記憶部
１１１−１〜１３  正常ログ
１１１−１４〜１９  エラーログ
５００  制御部
５０１  取得部
５０２  特定部
５０３  保存部
【図１】
0006471468.tif 000003
【図２】
0006471468.tif 000004
【図３】
0006471468.tif 000005
【図４】
0006471468.tif 000006
【図５】
0006471468.tif 000007
【図６】
0006471468.tif 000008
【図７】
0006471468.tif 000009
【図８】
0006471468.tif 000010