以下、本実施の形態について図面を参照して説明する。
[第1の実施の形態]
図1は、第1の実施の形態の情報処理装置を示す図である。情報処理装置1は、所定の装置の構成部品の動作に関する動作情報を取得する。所定の装置は、情報処理装置1でもよいし、情報処理装置1以外の他の装置でもよい。情報処理装置1は、障害などのイベントに対して解析用の動作情報を収集する機能を提供する。情報処理装置1は、記憶部1aおよび処理部1bを有する。
記憶部1aは、RAM(Random Access Memory)などの揮発性記憶装置でもよいし、HDD(Hard Disk Drive)やフラッシュメモリなどの不揮発性記憶装置でもよい。処理部1bは、CPU(Central Processing Unit)、DSP(Digital Signal Processor)、ASIC(Application Specific Integrated Circuit)、FPGA(Field Programmable Gate Array)などを含み得る。処理部1bはプログラムを実行するプロセッサでもよい。「プロセッサ」には、複数のプロセッサの集合(マルチプロセッサ)も含まれ得る。
記憶部1aは、動作情報2および管理情報3を記憶する。動作情報2は、所定の装置の構成部品に関する複数のログレコードを含む。構成部品は、例えば、該当の装置が備えるハードウェアやソフトウェアなどのコンポーネントである。あるいは、構成部品は、当該コンポーネントにおいて所定の機能を実現するモジュールでもよい。1つのログレコードは、レコード番号(図中“#”と表記)、タイムスタンプ、ログタイプおよびログ内容を含む。レコード番号は、ログレコードの識別番号である。タイムスタンプは、ログ内容が記録された日時である。ログタイプは、ログ内容の分類を示す識別情報である。分類は、例えば、ログに関連するハードウェアの種類(記憶デバイスや通信デバイスなど)、ソフトウェアの種類(OS(Operating system)、ミドルウェアおよびアプリケーションなど)に応じて分けられる。動作情報2の例では、ログタイプは、“type1”、“type2”、“type3”の3種類ある。ログ内容は、記録されたログの内容を示す情報である。
例えば、動作情報2は、ログ番号(#)“n−5”(nは6以上の整数)、タイムスタンプ“2017/6/30 17:58:50”、ログタイプ“type1”、ログ内容“fault aaaa”というログレコードを含む。動作情報2の例では、ログ番号(#)“n”のログレコードが最新である。
管理情報3は、動作情報2のうち、抽出対象とするログレコードの時間範囲とログレコードのタイプ(ログタイプ)毎の優先レベルとが、事象の発生を示すメッセージに対して登録された情報である。メッセージは、所定の装置(情報処理装置1または他の装置)におけるハードウェアやソフトウェアなどのコンポーネントにより発行される。管理情報の1つのレコードは、メッセージID(IDentifier)、時間範囲、およびログタイプ優先レベルを含む。メッセージIDは、メッセージの識別情報である。時間範囲は、ログレコードの抽出対象とする時間範囲を示す情報である。ログタイプ優先レベルは、ログタイプ毎の優先度を示す情報である。メッセージの発行元のコンポーネントに対して関連性が高いログタイプほど、優先度が高くなるように予め設定される。
例えば、管理情報3は、メッセージID“M1”、時間範囲“ΔT1”、ログタイプ優先レベル“type1>type2>type3”というレコードを含む。ここで、ログタイプ優先レベルの記号“>”は、当該記号の左側のログタイプの方が、当該記号の右側のログタイプよりも優先度が高いことを示す。例えば、“type1>type2>type3”の表記は、3つのログタイプのうち、“type1”が最も優先度が高く、次いで“type2”の優先度が高く、“type3”の優先度が最も低いことを示す。
処理部1bは、管理情報3を取得し、記憶部1aに格納する。管理情報3は、例えば、ユーザにより情報処理装置1に対して予め入力される。
処理部1bは、メッセージを検出すると、記憶部1aを参照して、当該メッセージに応じた現時刻からの時間範囲および優先レベル(ログタイプ優先レベル)に基づき、動作情報2の中からログレコードを抽出する。
例えば、処理部1bは、メッセージID“M1”を含むメッセージを受信する。管理情報3によれば、メッセージID“M1”に応じた時間範囲は“ΔT1”である。管理情報3によれば、メッセージID“M1”に応じたログタイプ優先レベルは、“type1>type2>type3”である。したがって、処理部1bは、現時刻からの時間範囲“ΔT1”およびログタイプ優先レベル“type1>type2>type3”に基づいて動作情報2の中からログレコードを抽出する。
より具体的には、抽出条件の一例として、(1)ΔT1が10分(ΔT1=10分)であり、(2)現時刻が2017/6/30の18:10:00であり、(3)抽出するログレコードの合計サイズの上限が“3”(抽出サイズ上限=3)の場合を考える。ここで、例えば、動作情報2のログレコード1つ当たりのサイズを1とする。
この場合、処理部1bは、例えば、次のようにログレコードの抽出を行う。
まず、処理部1bは、現時刻(18:10:00)から時間範囲“ΔT1=10分”だけ遡った時刻18:00:00を計算する。そして、処理部1bは、時刻18:00:00から現時刻までの時間範囲に属するログレコードを抽出対象候補とする。動作情報2の例では、抽出対象候補は、レコード番号“n−4”〜“n”までのログレコードである。
次に、処理部1bは、抽出対象候補のログレコードのうち、最高の優先レベルであるログタイプ“type1”のログレコードを新しい方から古い方へ順に抽出する。まず、処理部1bは、ログタイプ“type1”であるレコード番号“n”のログレコードを抽出する。処理部1bは、ログレコードを1つ抽出するたびに、抽出したログレコードの合計サイズが上限“3”に達したか否かを判定する。この段階では、抽出したログレコードの合計サイズは“1”であり、上限“3”に達していない。次に、処理部1bは、ログタイプ“type1”であるレコード番号“n−3”のログレコードを抽出する。この段階では、抽出したログレコードの合計サイズは“2”であり、上限“3”に達していない。
次に、処理部1bは、抽出対象候補のログレコードのうち、2番目に高い優先レベルであるログタイプ“type2”のログレコードを新しい方から古い方へ順に抽出する。まず、処理部1bは、ログタイプ“type2”であるレコード番号“n−1”のログレコードを抽出する。この段階で、抽出したログレコードの合計サイズは“3”であり、上限“3”に達する。したがって、処理部1bは、抽出対象候補であるレコード番号“n−4”〜“n”までのログレコードのうち、レコード番号“n−3”、“n−1”、“n”のログレコードを抽出する。一方、処理部1bは、抽出対象候補であるレコード番号“n−4”〜“n”までのログレコードのうち、レコード番号“n−4”(ログタイプ“type2”)、“n−2”(ログタイプ“type3”)のレコードを抽出しない。
処理部1bは、抽出したレコード番号“n−3”、“n−1”、“n”のログレコードを出力する。例えば、処理部1bは、抽出したログレコードを、情報処理装置1に接続された表示装置(図1では図示を省略している)に出力し、表示装置により抽出したログレコードに含まれるログ内容を表示させてもよい。また、処理部1bは、抽出したログレコードを解析することで、障害などのイベントの原因特定を支援してもよい。あるいは、処理部1bは、ログレコードの解析を行う他の装置(図1では図示を省略している)に、抽出したログレコードを送信してもよい。
このように、情報処理装置1によれば、解析に有用でないログの収集を抑えることができる。
ここで、例えば、障害などの事象(イベント)に対して、動作情報2を全て収集することも考えられる。しかし、動作情報2には、新しいものや古いもの、ハードウェアやソフトウェアなどに関する種々のログレコードが含まれる。このため、動作情報2を全て収集すると、発生した事象との関係が薄く、当該事象の解析に有用でないログレコードも収集されるという問題がある。余計なログレコードの収集は、ログレコードを他の装置に送信する際の通信量の増加や、有用でないログレコードによる解析量の増加などの要因になる。
例えば、収集するログサイズを小さくするために、単に、抽出対象サイズに上限を設けることも考えられる。しかし、抽出対象サイズに上限を設けただけでは、該当の事象に対して有用でないログレコードが抽出される可能性は大きい。なぜなら、発生する事象に応じて、当該事象と関連性の高いコンポーネントは異なるからである。また、現時点に対して古いログレコードほど、現時点の事象との関連が薄くなるからである。
そこで、情報処理装置1は、事象の発生を示すメッセージ毎に抽出対象ログレコードの時間範囲とログタイプ別の優先レベルと(管理情報3)を取得し、記憶部1aにより記憶する。情報処理装置1は、メッセージを検出すると、当該メッセージに応じた時間範囲とログタイプ別の優先レベルとを記憶部1aに記憶された管理情報3から検索する。そして、情報処理装置1は、現時点以前の時間範囲とログタイプ別の優先レベルとを基にログレコードを抽出する。これにより、情報処理装置1は、動作情報2のうち、障害解析に有用なログレコードのみを得ることができる。
以下では、情報処理装置1の機能を有するストレージ装置を例示して、当該機能を更に具体的に説明する。
[第2の実施の形態]
図2は、第2の実施の形態のストレージシステムの例を示す図である。第2の実施の形態のストレージシステムは、ストレージ装置10,20を含む。ストレージ装置10,20は、フロントエンドエンクロージャ(FE:Front-end Enclosure)30を介して接続されている。ストレージ装置10は、ローカルエリアネットワーク(LAN:Local Area Network)40に接続されている。LAN40は、インターネット50に接続されている。
ストレージ装置10は、LAN40およびインターネット50を介して、サポートサーバ60と通信する。サポートサーバ60は、ストレージシステムの保守に用いられるサーバコンピュータである。サポートサーバ60は、ストレージシステムで障害が発生した場合に、ストレージ装置10,20のログを取得し、取得したログに基づく保守員による保守作業(例えば、障害の原因究明や対策立案など)を支援する。
ストレージ装置10,20は、ストレージエリアネットワーク(SAN:Storage Area Network)70に接続されている。SAN70には、業務サーバ80が接続されている。業務サーバ80は、ユーザの業務を支援するソフトウェアを実行するサーバコンピュータである。ストレージ装置10,20は、業務サーバ80の業務処理に用いられるデータを記憶する。ストレージ装置10,20はSAN70を介して、業務サーバ80によるデータアクセスを受け付ける。
図3は、第2の実施の形態のストレージ装置の接続例を示す図である。ストレージ装置10は、コントローラモジュール(CM:Controller Module)100,200およびドライブエンクロージャ(DE:Drive Enclosure)11,12を有する。
CM100,200は、DE11,12に収納されたHDDやSSD(Solid State Drive)などの記憶装置に対するデータアクセスを制御するストレージ制御装置である。CM100,200は、コントローラエンクロージャ(CE:Controller Enclosure)と呼ばれる1つの筐体に収められる。CM100,200は、FE30に接続されている。CM100は、DE11,12に接続されている。CM200は、DE11,12に接続されている。
DE11,12は、HDDやSSDなどの記憶装置を複数収容する。DE11,12は、CM100,200とは別筐体でも(CM100,200に対して外付けされても)よいし、CM100,200と同じ筐体に収められてもよい。CM100は、第1の実施の形態の情報処理装置1の一例である。
ストレージ装置20は、CM300,400およびDE21,22を有する。
CM300,400は、DE21,22に収納されたHDDやSSDなどの記憶装置に対するデータアクセスを制御するストレージ制御装置である。CM300,400は、FE30に接続されている。CM300は、DE21,22に接続されている。CM400は、DE21,22に接続されている。
DE21,22は、HDDやSSDなどの記憶装置を複数収容する。DE21,22は、CM300,400とは別筐体でも(CM300,400に対して外付けされても)よいし、CM300,400と同じ筐体に収められてもよい。
ここで、CM100は、CM200,300,400に対するマスタCMとして機能する。マスタCMは、ストレージシステムの運用管理機能を統括するCMであり、FE30を介して、他のCM(CM200,300,400)からログなどの情報を収集し、収集したログをサポートサーバ60に送信する機能を担う。
図4は、第2の実施の形態のストレージ装置のハードウェア例を示す図である。CM100は、プロセッサ101、RAM102、NA(Network Adapter)103、CA(Channel Adapter)104、NTB(Non-Transparent Bridge)105、BUD(Boot-up and Utility Device)106、DI(Drive Interface)107、CM−IF(InterFace)108および媒体リーダ109を有する。これらのハードウェアは、CM100の内部バスに接続されている。CM200,300,400も同様のハードウェアにより実現される。
プロセッサ101は、CM100の情報処理を制御するハードウェアである。プロセッサ101は、マルチプロセッサであってもよい。プロセッサ101は、例えばCPU、DSP、ASICまたはFPGAなどである。プロセッサ101は、CPU、DSP、ASIC、FPGAなどのうちの2以上の要素の組み合わせであってもよい。
RAM102は、CM100の主記憶装置である。RAM102は、揮発性の半導体メモリである。RAM102として、例えば、SRAM(Static RAM)やDRAM(Dynamic RAM)などが用いられる。RAM102は、プロセッサ101に実行させるOSやファームウェアのプログラムの少なくとも一部を一時的に記憶する。また、RAM102は、プロセッサ101による処理に用いられる各種データを記憶する。
NA103は、LAN40を介してサポートサーバ60と通信する通信インタフェースである。NA103として、例えばイーサネット(登録商標)のインタフェースを用いることができる。
CA104は、SAN50を介して業務サーバ80と通信する通信インタフェースである。CA104は、業務サーバ80からDE21,22へのブロックアクセスに用いられる。CA104として、例えばFC(Fibre Channel)のインタフェースを用いることができる。CA104として、FC以外のインタフェース(例えば、SAS(Serial Attached SCSI、SCSIはSmall Computer System Interfaceの略)など)が用いられることもある。
NTB105は、FE30と接続する通信インタフェースである。NTB105は、FE30を介して、CM200,300,400と通信する。
BUD106は、CM100の補助記憶装置である。BUD106は、不揮発性の半導体メモリである。例えば、BUD106として、SSDが用いられる。BUD106は、OSやファームウェアを含むプログラムや各種データなどを記憶する。BUD106は、CM100において動作するハードウェアやソフトウェアなどのコンポーネントにより出力されたログの保存にも用いられる。
DI107は、DE21,22と通信するためのインタフェースである。例えば、DI107として、SASなどのインタフェースを用いることができる。
CM−IF108は、CM200と接続するためのインタフェースである。CM100は、CM−IF108を用いて、CM200と連携してデータアクセスを行える。例えば、CM100を運用系、CM200を待機系としてもよい。あるいは、CM100,200の両方を運用系として、データアクセスを分散して行ってもよい。何れの場合も、一方の故障時に他方でデータアクセスを引き継ぐことができ、ユーザの業務が停止されることを防げる。
媒体リーダ109は、記録媒体91に記憶されたプログラムやデータを読み取る装置である。記録媒体91として、例えば、フラッシュメモリカードなどの不揮発性の半導体メモリを使用することができる。媒体リーダ109は、例えば、プロセッサ101からの命令に従って、記録媒体91から読み取ったプログラムやデータを、RAM102やBUD106に格納することもできる。
図5は、第2の実施の形態のCMの機能例を示す図である。CM100は、記憶部110、メッセージ生成部120、通知制御部130、ログ収集部140およびログ抽出部150を有する。
記憶部110は、RAM102やBUD106の記憶領域を用いて実現される。
メッセージ生成部120、通知制御部130、ログ収集部140およびログ抽出部150は、プロセッサ101によって実現される。例えば、プロセッサ101は、RAM102に記憶されたプログラムを実行することで、メッセージ生成部120、通知制御部130、ログ収集部140およびログ抽出部150の機能を発揮してもよい。あるいは、メッセージ生成部120、通知制御部130、ログ収集部140およびログ抽出部150は、FPGAやASICなどのハードワイヤードロジックにより実現されてもよい。
記憶部110は、CM100におけるハードウェア(DE21,22を含む)、OS、ミドルウェアおよびアプリケーションなどのコンポーネントの動作に関するログを記憶する。また、記憶部110は、CM100,200,300,400のコンポーネントにより生成されるメッセージに対して、ログの抽出に用いられる管理情報を予め記憶する。管理情報は、CM100,200,300,400それぞれで抽出するログの上限サイズ(抽出量の上限値)を決定するための情報を含む。また、管理情報は、抽出候補とする時間範囲や抽出候補とするログの分類(ログタイプ)の優先レベルの情報を含む。
メッセージ生成部120は、通知制御部130に対して障害の発生を示すメッセージを通知する。メッセージ生成部120は、CM100のコンポーネントにおける障害通知用のモジュールでもよい。また、メッセージ生成部120は、障害発生時以外にも、当該コンポーネントの動作に関するログを記憶部110に格納してもよい。
通知制御部130は、メッセージ生成部120およびCM200,300,400によるメッセージの通知を監視する。通知制御部130は、メッセージ生成部120およびCM200,300,400の何れかにより通知されたメッセージを取得すると、取得したメッセージをサポートサーバ60に送信する。通知制御部130は、一定時間後に、ログ収集部140に対して、障害調査用のログ収集を依頼する。ここで、「一定時間」は、例えば、障害事象に応じた後処理を実行するための時間である。障害事象に応じた後処理の一例としては、異常部品の切り離しや再組み込みなどが挙げられる。
通知制御部130は、ログ収集部140からログ収集結果を取得する。通知制御部130は、取得したログ収集結果をサポートサーバ60に送信する。ここで、サポートサーバ60へのログ収集結果の送信可能なサイズには上限が設けられる。例えば、サポートサーバ60へのログ収集結果の送信可能なサイズの上限は、1MB(Mega Bytes)である。
ログ収集部140は、通知制御部130によるログ収集の依頼に応じて、記憶部110に記憶された管理情報を参照し、今回のメッセージに対してCM100,200,300,400それぞれで抽出するログのサイズ(抽出量)の上限値を決定する。ログ収集部140は、今回のメッセージのメッセージIDと決定した上限とをログ抽出部150およびCM200,300,400に通知し、通知した抽出量の上限値でのログ抽出を指示する。
なお、ログ収集部140は、CM100,200,300,400それぞれにCM番号と呼ばれる識別番号を付与している。CM100のCM番号は“1”である。CM200のCM番号は“2”である。CM300のCM番号は“3”である。CM400のCM番号は“4”である。
ログ収集部140は、ログ抽出部150およびCM200,300,400により抽出されたログのレコード群を取得し、取得したレコード群をログ収集結果として、通知制御部130に提供する。
ログ抽出部150は、ログ収集部140のログ抽出の指示に応じて、記憶部110に記憶されたログから障害調査用のレコードを抽出する。ログ抽出部150は、記憶部110に記憶された管理情報を参照し、今回のメッセージIDに対して、抽出候補とする時間範囲や抽出候補とするログタイプの優先レベルを特定する。ログ抽出部150は、レコードの抽出に、ログ収集部140により通知された抽出量の上限値、および、特定した時間範囲やログタイプの優先レベルの情報を用いる。ログ抽出部150は、抽出したレコードをログ収集部140に提供する。
CM200は、記憶部210、メッセージ生成部220およびログ抽出部230を有する。記憶部210は、CM200が備えるRAMやBUDの記憶領域を用いて実現される。メッセージ生成部220およびログ抽出部230は、CM200が備えるプロセッサを用いて実現される。例えば、CM200のプロセッサは、CM200のRAMに記憶されたプログラムを実行することで、メッセージ生成部220およびログ抽出部230の機能を発揮してもよい。あるいは、メッセージ生成部220およびログ抽出部230は、FPGAやASICなどのハードワイヤードロジックにより実現されてもよい。
記憶部210は、CM200におけるハードウェア、OS、ミドルウェアおよびアプリケーションなどのコンポーネントの動作に関するログを記憶する。
メッセージ生成部220は、通知制御部130に対して障害の発生を示すメッセージを通知する。メッセージ生成部220は、CM200のコンポーネントにおける障害通知用のモジュールでもよい。また、メッセージ生成部220は、障害発生時以外にも、当該コンポーネントの動作に関するログを記憶部210に格納してもよい。
ログ抽出部230は、ログ収集部140のログ抽出の指示に応じて、記憶部210に記憶されたログから障害調査用のレコードを抽出する。ログ抽出部230は、記憶部210に記憶された管理情報を参照し、今回のメッセージIDに対して、抽出候補とする時間範囲や抽出候補とするログタイプの優先レベルを特定する。ログ抽出部230は、レコードの抽出に、ログ収集部140により通知された抽出量の上限値、および、特定した時間範囲やログタイプの優先レベルの情報を用いる。ログ抽出部230は、抽出したレコードをログ収集部140に送信する。
CM300は、記憶部310、メッセージ生成部320およびログ抽出部330を有する。記憶部310は、CM300が備えるRAMやBUDの記憶領域を用いて実現される。メッセージ生成部320およびログ抽出部330は、CM300が備えるプロセッサを用いて実現される。例えば、CM300のプロセッサは、CM300のRAMに記憶されたプログラムを実行することで、メッセージ生成部320およびログ抽出部330の機能を発揮してもよい。あるいは、メッセージ生成部320およびログ抽出部330は、FPGAやASICなどのハードワイヤードロジックにより実現されてもよい。
記憶部310は、CM300におけるハードウェア、OS、ミドルウェアおよびアプリケーションなどのコンポーネントの動作に関するログを記憶する。
メッセージ生成部320は、通知制御部130に対して障害の発生を示すメッセージを通知する。メッセージ生成部320は、CM300のコンポーネントにおける障害通知用のモジュールでもよい。また、メッセージ生成部320は、障害発生時以外にも、当該コンポーネントの動作に関するログを記憶部310に格納してもよい。
ログ抽出部330は、ログ収集部140のログ抽出の指示に応じて、記憶部310に記憶されたログから障害調査用のレコードを抽出する。ログ抽出部330は、記憶部310に記憶された管理情報を参照し、今回のメッセージIDに対して、抽出候補とする時間範囲や抽出候補とするログタイプの優先レベルを特定する。ログ抽出部330は、レコードの抽出に、ログ収集部140により通知された抽出量の上限値、および、特定した時間範囲やログタイプの優先レベルの情報を用いる。ログ抽出部330は、抽出したレコードをログ収集部140に送信する。
CM400は、記憶部410、メッセージ生成部420およびログ抽出部430を有する。記憶部410は、CM400が備えるRAMやBUDの記憶領域を用いて実現される。メッセージ生成部420およびログ抽出部430は、CM400が備えるプロセッサを用いて実現される。例えば、CM400のプロセッサは、CM400のRAMに記憶されたプログラムを実行することで、メッセージ生成部420およびログ抽出部430の機能を発揮してもよい。あるいは、メッセージ生成部420およびログ抽出部430は、FPGAやASICなどのハードワイヤードロジックにより実現されてもよい。
記憶部410は、CM400におけるハードウェア、OS、ミドルウェアおよびアプリケーションなどのコンポーネントの動作に関するログを記憶する。
メッセージ生成部420は、通知制御部130に対して障害の発生を示すメッセージを通知する。メッセージ生成部420は、CM400のコンポーネントにおける障害通知用のモジュールでもよい。また、メッセージ生成部420は、障害発生時以外にも、当該コンポーネントの動作に関するログを記憶部410に格納してもよい。
ログ抽出部430は、ログ収集部140のログ抽出の指示に応じて、記憶部410に記憶されたログから障害調査用のレコードを抽出する。ログ抽出部430は、記憶部410に記憶された管理情報を参照し、今回のメッセージIDに対して、抽出候補とする時間範囲や抽出候補とするログタイプの優先レベルを特定する。ログ抽出部430は、レコードの抽出に、ログ収集部140により通知された抽出量の上限値、および、特定した時間範囲やログタイプの優先レベルの情報を用いる。ログ抽出部430は、抽出したレコードをログ収集部140に送信する。
図6は、第2の実施の形態のページの例を示す図である。ページP1は、ログのレコード(ログレコード)の集合である。ページP1のサイズは、固定サイズである。ページP1のサイズは、例えば、64KB(Kilo Bytes)である。1つのページP1に含まれるレコードの数は、1つでもよいし、2以上でもよい。ページP1に含まれるレコードの数が1つの場合、ページP1とレコードとは同義である。ページP1の例では、ページP1の3行目以降の1行が1つのレコードである。
例えば、1つのレコードは、タイムスタンプ(time stamp)、ログタイプ(log type)、モジュール(module)、ログテキスト(log text)のフィールドを含む。
タイムスタンプは、レコードが記録された日時(年月日時分秒)である。ログタイプは、ログの種別である。例えば、ログタイプとして、発行元のハードウェアやソフトウェアおよび障害の内容などに応じて種々の種別が予め定められる。モジュールは、レコードの発行元のモジュール(例えば、ハードウェアやソフトウェアなどのコンポーネントにおける構成部品)の識別名である。ログテキストは、コンポーネントの動作に関するログの具体的な内容を示す情報である。
例えば、ページP1には、タイムスタンプ“2017/6/30 18:00:00”、ログタイプ“type1”、モジュール“M1”、ログテキスト“fault xxxxxx”というレコードが登録されている。このレコードは、2017年6月30日18時00分00秒に、ログタイプが“type1”、発行元のモジュールが“M1”、ログテキスト“fault xxxxxx”という情報が記録されたことを示す。
各CMは、ログタイプ毎に、時系列のリスト構造により複数のページを管理する。ページのリスト構造は、各ページを時系列にリンクしたデータ構造である。例えば、あるページの時刻は、当該ページに属するレコードのうちの最も古い時刻(例えば、ページP1であれば“2017/6/30 18:00:00”)である。1つのログタイプに関する一連のページを、ページリストと呼ぶこととする。
図7は、第2の実施の形態のページリストの例を示す図である。ページリストZ1は、ログタイプ“type1”に関するログである。ページリストZ1は、ページA1,A2,A3,A4,A5,A6,A7を含む。ページリストZ1に属する各ページのうち、ページA1が最も古く、ページA2,A3,A4,A5,A6の順に新しくなり、ページA7が最も新しい。ここで、図中、古いページほど上側に、新しいページほど下側に記載する。すなわち、図面の上側から下側へ向かう方向が時系列の正方向である。ページリストZ1のうち、ページA1は、top(最古)である。ページリストZ1のうち、ページA7は、bottom(最新)である。
このように、CM100におけるメッセージ生成部120などのログ生成機能は、複数のページを、ログタイプ毎に時系列にリンクさせる。そして、ログ抽出部150は、ページ間のリンクに基づき、各ログタイプのページの抽出順を決定する。ページには1以上のログレコードが含まれる。このため、ログ抽出部150は、ログレコード間のリンクに基づき、各ログタイプのログレコードの抽出順を決定するともいえる。このようなリスト構造によってログを管理することで、ログ抽出部150は、ログ抽出を高速に行える。
図8は、第2の実施の形態の割り当て方式管理テーブルの例を示す図である。割り当て方式管理テーブル111は、各CMで抽出するページのサイズの上限値を決定するために用いられる情報である。割り当て方式管理テーブル111は、記憶部110に予め記憶されている。割り当て方式管理テーブル111は、マスタCMにより用いられる情報であるが、記憶部210,310,410にも記憶されていてもよい。割り当て方式管理テーブル111は、メッセージIDおよび割り当て方式の項目を含む。
メッセージIDの項目には、メッセージ生成部120(あるいは、他CMのメッセージ生成部220,320,420)により生成されるメッセージに含まれ得るメッセージIDが登録される。割り当て方式の項目には、各CMで抽出するページのサイズの決定方法(割り当て方式)の識別情報が登録される。
ここで、一例では、割り当て方式を、割り当て方式A,B,Cの3種類とする。
割り当て方式Aは、標準の割り当て方式である。割り当て方式Aでは、各CMに対する割り当てサイズ(抽出量の上限値に相当)を同じにする。サポートサーバ60に送信可能な収集ログのサイズの上限が1MBで、CM数が4の場合、CM毎に256KBを割り当てる。この場合、1つのCMは、抽出量の上限値256KBまでページを抽出する。
割り当て方式Bは、マスタCM優先の割り当て方式である。割り当て方式Bでは、マスタCMに対する割り当てを、他CMの2倍にする。マスタCMは、ストレージシステム全体を管理するCMであり、全体動作の調査を要する障害の場合に、割り当て方式Bを採用する。例えば、サポートサーバ60に送信可能な収集ログのサイズの上限が1MBで、CM数が4の場合、マスタCMの割り当てサイズは410KBであり、他CMの割り当てサイズは205KBである。
割り当て方式Cは、障害検出CM優先の割り当て方式である。割り当て方式Cでは、障害を検出したCMの割り当てを、他CMの2倍にする。特定の機能に関する障害であり、当該機能の処理を行っていたCMの情報をより多く要する場合に、割り当て方式Cを採用する。例えば、サポートサーバ60に送信可能な収集ログのサイズの上限が1MBで、CM数が4の場合、障害検出CMの割り当てサイズは410KBであり、他CMの割り当てサイズ205KBである。
例えば、割り当て方式管理テーブル111には、メッセージIDが“a00000001”、割り当て方式が“A(標準)”という情報が登録される。これは、メッセージID“a00000001”を含むメッセージが検出された場合に、割り当て方式Aにより各CMに対するサイズ割り当てを行うことを示す。
図9は、第2の実施の形態のログ抽出管理テーブルの例を示す図である。ログ抽出管理テーブル112は、メッセージIDに応じたログ抽出対象の時間範囲およびログタイプ毎の優先レベルが登録された情報である。ログ抽出管理テーブル112は、記憶部110に予め記憶されている。ログ抽出管理テーブル112は、記憶部210,310,410にも予め記憶されている。ログ抽出管理テーブル112は、メッセージID、時間範囲およびログタイプの優先レベルの項目を含む。
メッセージIDの項目には、メッセージ生成部120(あるいは、他CMのメッセージ生成部220,320,420)により生成されるメッセージに含まれ得るメッセージIDが登録される。時間範囲の項目には、ログ抽出対象の時間範囲が登録される。当該時間範囲は、障害発生時から何時間前のログまでを抽出対象とするかを示す。すなわち、障害発生時から当該時間範囲の分だけ遡った時刻までがログ抽出対象の時間範囲である。時間範囲の単位は、例えば、時間(hour)である。ログタイプの優先レベルは、ログタイプ毎の優先レベルである。優先レベルは、レベル“1”が最も優先順位が高く、レベル“2”、“3”、・・・とレベルの数値が大きくなるほど、優先順位が低くなる。なお、優先レベル“0”は、抽出しないことを示す。また、優先レベルが同じ複数のログタイプについては、時刻(タイムスタンプ)が新しいページを優先して抽出する。
例えば、ログ抽出管理テーブル112には、メッセージIDが“a00000001”、時間範囲が“12”、ログタイプ“type1”の優先レベル“1”、ログタイプ“type2”の優先レベル“1”、ログタイプ“type3”の優先レベル“1”、ログタイプ“type4”の優先レベル“1”、ログタイプ“type5”の優先レベル“1”、・・・という情報が登録される。これは、メッセージID“a00000001”を含むメッセージが検出された場合、当該検出時(障害発生時)から12時間前に遡った時刻までをログ抽出対象の時間範囲とすることを示す。また、各ログタイプの優先レベルにしたがって、ログ抽出を行うことを示す(この場合、ログタイプ“type1”〜“type5”までの優先レベルは“1”で同じである)。なお、各ログタイプの優先レベルにしたがったログ抽出方法の具体例は後述される。
図10は、第2の実施の形態のログ収集例を示す図である。マスタCMであるCM100は、CM100,200,300,400の何れかから障害に関する所定のメッセージを受け付けると、割り当て方式管理テーブル111に基づいて、各CMのログの抽出量の上限値を決定する。また、CM100は、ログ抽出管理テーブル112に基づいて、ログ抽出対象の時間範囲およびログタイプ毎の優先レベルを決定する。CM100は、決定した上限値、時間範囲および優先レベルによるログ抽出を、CM200,300,400に指示する。また、CM100は、自装置においてもログ抽出を行う。
例えば、抽出ログL1は、CM100においてBUD106に記憶されたログから抽出されたページ群である。抽出ログL2は、CM200においてBUD206に記憶されたログから抽出されたページ群である。抽出ログL3は、CM300においてBUD306に記憶されたログから抽出されたページ群である。抽出ログL4は、CM400においてBUD406に記憶されたログから抽出されたページ群である。
CM100は、抽出ログL1,L2,L3,L4を収集する。収集ログL0は、抽出ログL1,L2,L3,L4の収集結果である。CM100は、LAN40およびインターネット50を介して、サポートサーバ60に収集ログL0を送信する。
次に、上記の各CMによる処理手順を具体的に説明する。
図11は、第2の実施の形態のログ収集例を示すフローチャートである。以下、図11に示す処理をステップ番号に沿って説明する。ログ収集部140は、通知制御部130から障害通知のメッセージの検出結果を受け付けると下記の手順を行う。
(S11)ログ収集部140は、記憶部110に記憶された割り当て方式管理テーブル111から、今回のメッセージに対応する割り当て方式を取得する。具体的には、ログ収集部140は、障害通知のメッセージに含まれるメッセージIDに対応する割り当て方式を、割り当て方式管理テーブル111から取得する。
(S12)ログ収集部140は、ステップS11で取得した割り当て方式にしたがって、各CMのログ抽出量の上限値を計算する。
(S13)ログ収集部140は、CM番号Nを、N=0に設定する。ログ収集部140は、CM番号N=0に対応するCM100のログ抽出部150にログ抽出を指示する。ログ抽出の指示は、ログ抽出量の上限値を含む。
(S14)ログ抽出部150,230,330,430は、ログ収集部140のログ抽出の指示に応じて、CM単位のログ抽出処理を行う。CM単位のログ抽出処理の詳細は後述される。
(S15)ログ収集部140は、全CM(CM100,200,300,400)のログ(抽出ログ)を収集済であるか否かを判定する。全CMのログを収集済である場合、ログ収集部140は、ステップS17に処理を進める。全CMのログを収集済でない場合、ログ収集部140は、ステップS16に処理を進める。
(S16)ログ収集部140は、CM番号Nを、N=N+1に設定する(CM番号をインクリメントする)。そして、ログ収集部140は、CM番号Nに対応するCMのログ抽出部(ログ抽出部230,330,430の何れか)に対してログ抽出を指示して、ステップS14に処理を進める。
(S17)ログ収集部140は、通知制御部130に収集ログを提供する。収集ログは、各CMから収集された抽出された抽出ログの集合である。通知制御部130は、サポートサーバ60に収集ログを送信する。
このように、記憶部110は、抽出するページの合計サイズの上限値の算出方法(割り当て方式)をメッセージ毎に登録した割り当て方式管理テーブル111を記憶する。ログ収集部140は、メッセージを検出すると、記憶部110に記憶された割り当て方式管理テーブル111を参照して、当該メッセージに応じた算出方法に基づき、上限値を算出する。特に、ログ収集部140は、メッセージに応じて、複数のCM(CM100,200,300,400)それぞれによるCM毎(情報処理装置毎)のログ(動作情報)からのページの抽出を指示する。ログ収集部140は、ページの抽出を指示する際に、メッセージに応じた算出方法に基づき、CM毎の抽出ログのサイズの上限値を決定し、決定した上限値を、各CMに通知する。これにより、障害に応じて、障害解析に有用なログを収集可能となる。
図12は、第2の実施の形態のCM単位のログ抽出例を示すフローチャートである。以下、図12に示す処理をステップ番号に沿って説明する。以下の手順は、図11のステップS14に相当する。ここで、以下の説明では、ログ抽出部150の処理手順を例示するが、ログ抽出部230,330,430も同様の処理手順となる。
(S21)ログ抽出部150は、記憶部110に記憶されたログ抽出管理テーブル112から、今回のメッセージに対応する時間範囲を取得する。具体的には、ログ抽出部150は、障害通知のメッセージに含まれるメッセージIDに対応する時間範囲を、ログ抽出管理テーブル112から取得する。
(S22)ログ抽出部150は、取得した時間範囲内のログ抽出処理を実行する。時間範囲内のログ抽出処理の詳細は後述される。
(S23)ログ抽出部150は、ステップS22で抽出したログ(抽出ログ)をログ収集部140に提供する。
図13は、第2の実施の形態の時間範囲内のログ抽出例を示すフローチャートである。以下、図13に示す処理をステップ番号に沿って説明する。以下の手順は、図12のステップS22に相当する。
(S31)ログ抽出部150は、優先レベルPを、P=1に設定する。
(S32)ログ抽出部150は、優先レベル単位のログ抽出処理を行う。優先レベル単位のログ抽出処理の詳細は、後述される。
(S33)ログ抽出部150は、ログ抽出部150による抽出ログの抽出量の合計が上限値に達したか否かを判定する。抽出量の合計が上限値に達した場合、ログ抽出部150は、処理を終了する。抽出量の合計が上限値に達していない場合、ログ抽出部150は、処理をステップS34に進める。
(S34)ログ抽出部150は、全優先レベルのページの抽出を行ったか否かを判定する。全優先レベルのページの抽出を行った場合、ログ抽出部150は、処理を終了する。全優先レベルのページの抽出を行っていない場合、ログ抽出部150は、ステップS35に処理を進める。全優先レベルのページの抽出を行った場合とは、優先レベルPの値が最高値(優先順位が最低であることに相当)に達した場合である。
(S35)ログ抽出部150は、優先レベルPを、P=P+1に設定する(優先レベルPをインクリメントする)。そして、ログ抽出部150は、ステップS32に処理を進める。
図14は、第2の実施の形態の優先レベル単位のログ抽出例を示すフローチャートである。以下、図14に示す処理をステップ番号に沿って説明する。以下の手順は、図13のステップS32に相当する。
(S41)ログ抽出部150は、着目する優先レベルPのログタイプのbottomページ(最新のページ)のタイムスタンプを取得する。なお、優先レベルPであるログタイプが複数の場合、複数のログタイプの各bottomページのうち、最新のタイムスタンプを取得する。
(S42)ログ抽出部150は、タイムスタンプが全て時間範囲外であるか否かを判定する。タイムスタンプが全て時間範囲外である場合、ログ抽出部150は、処理を終了する。タイムスタンプが全て時間範囲外でない場合、ログ抽出部150は、ステップS43に処理を進める。タイムスタンプが全て時間範囲外である場合とは、ステップS41で取得したタイムスタンプが、現時刻から当該時間範囲分だけ遡った時刻よりも過去の時刻を示している場合である。
(S43)ログ抽出部150は、最新のタイムスタンプのページを抽出し、当該ページが属するページリストのリンクから当該ページを外す。
(S44)ログ抽出部150は、抽出量の合計が上限値に達したか否かを判定する。抽出量の合計が上限値に達した場合、ログ抽出部150は、処理を終了する。抽出量の合計が上限値に達していない場合、ログ抽出部150は、ステップS45に処理を進める。
(S45)ログ抽出部150は、着目する優先レベルPのログタイプのページが残っているか否かを判定する。該当のログタイプのページが残っている場合、ログ抽出部150は、ステップS41に処理を進める。該当のログタイプのページが残っていない場合、ログ抽出部150は、処理を終了する。
このように、ログ抽出部150は、現時刻から過去の時間範囲に属するページ群(ログレコード群ともいえる)のうち、第1の優先レベルに対応する第1のページ(第1のログレコード)を、第1の優先レベルで示される優先順位よりも低い優先順位を示す第2の優先レベルに対応する第2のページ(第2のログレコード)よりも優先的に抽出する。これにより、限られたサイズの中で、抽出されるページ(ログレコード)を、障害解析に有用なページ(ログレコード)に適切に絞り込むことができる。
次に、ログ抽出部150によるログ抽出の具体例を説明する。ログ抽出部150について主に説明するが、ログ抽出部230,330,430も同様にしてログ抽出を行う。
図15は、第2の実施の形態のログ抽出例(その1)を示す図である。図15の例では、あるメッセージに対するログ抽出について次の条件を考える。抽出量の上限値は、ページ11個分(例えば、1ページのサイズが64KBの場合、64KB×11=704KB)である。ログ抽出の時間範囲はx時間である。抽出対象のログタイプは、“type1”、“type2”および“type3”である。ログタイプ“type1”、“type2”、“type3”の優先レベルは何れも“1”である。
また、ページリストZ1は、ログタイプ“type1”のページリストである。ページリストZ1は、タイムスタンプの古い方から新しい方へ向かって、ページA1,A2,A3,A4,A5,A6,A7を含む。ページリストZ2は、ログタイプ“type2”のページリストである。ページリストZ2は、タイムスタンプの古い方から新しい方へ向かって、ページB1,B2,B3,B4,B5,B6,B7を含む。ページリストZ3は、ログタイプ“type3”のページリストである。ページリストZ3は、タイムスタンプの古い方から新しい方へ向かって、ページC1,C2,C3,C4,C5,C6,C7を含む。
この場合、メッセージの検出時(障害発生時)を現在とすると、現在からx時間前までがログ抽出対象の時間範囲である。図15の例では、ページA3,B3,C3以降のページにおけるタイムスタンプがログ抽出対象の時間範囲に含まれる。
ここで、図15における各ページの左側に付した数字は、ログ抽出処理において該当のページが抽出される順番を示す(以降の図に関しても同様)。
上記のように、各ログタイプの優先レベルは“1”であり、ページリストZ1,Z2,Z3に属する各ページのうちの最新のページB7は、現在からx時間前の時刻よりも後の時刻である。このため、ログ抽出部150は、ページB7を抽出する。そして、ログ抽出部150は、ページリストZ2からページB7を外す。あるページが、あるページリストから外されると当該ページは、当該ページリストに属するページではなくなる。
以降の処理でも、ログ抽出部150は、抽出候補のページがx時間前の時刻よりも後の時刻であることを確認する。
2番目に、ログ抽出部150は、ページリストZ1,Z2,Z3に属する各ページのうち、最新のページA7を抽出する。そして、ログ抽出部150は、ページリストZ1からページA7を外す。
3番目に、ログ抽出部150は、ページリストZ1,Z2,Z3に属する各ページのうち、最新のページC7を抽出する。そして、ログ抽出部150は、ページリストZ3からページC7を外す。
4番目に、ログ抽出部150は、ページリストZ1,Z2,Z3に属する各ページのうち、最新のページA6を抽出する。そして、ログ抽出部150は、ページリストZ1からページA6を外す。
以降、同様にして、ログ抽出部150は、ページの抽出を行う。5番目に抽出されるページは、ページB6である。6番目に抽出されるページは、ページC6である。7番目に抽出されるページは、ページC5である。8番目に抽出されるページは、ページB5である。9番目に抽出されるページは、ページA5である。10番目に抽出されるページは、ページA4である。11番目に抽出されるページは、ページB4である。
ログ抽出部150は、ページB4を抽出すると、抽出量の上限値に達したことを検出して、ログ抽出を終了する。抽出ログL1aは、上記の処理によってログ抽出部150により抽出されたページB7,A7,C7,A6,B6,C6,C5,B5,A5,A4,B4を含む。
図16は、第2の実施の形態のログ抽出例(その2)を示す図である。図16の例では、あるメッセージに対するログ抽出について次の条件を考える。抽出量の上限値は、ページ11個分である。ログ抽出の時間範囲はx時間である。抽出対象のログタイプは、“type1”、“type2”および“type3”である。ログタイプ“type1”の優先レベルは“1”である。ログタイプ“type2”の優先レベルは“2”である。ログタイプ“type3”の優先レベルは“3”である。ページリストZ1,Z2,Z3に属する各ページは、図15と同様である。
メッセージの検出時(障害発生時)を現在とすると、現在からx時間前までがログ抽出対象の時間範囲である。図16の例では、ページA3,B3,C3以降のページにおけるタイムスタンプがログ抽出対象の時間範囲に含まれる。
最も優先順位の高いログタイプ“type1”の最新のページA7は、現在からx時間前の時刻よりも後の時刻である。このため、ログ抽出部150は、ページA7を抽出する。そして、ログ抽出部150は、ページリストZ1からページA7を外す。
以降の処理でも、ログ抽出部150は、抽出候補のページがx時間前の時刻よりも後の時刻であることを確認する。
2番目に、ログ抽出部150は、ページリストZ1に属する各ページのうち、最新のページA6を抽出する。そして、ログ抽出部150は、ページリストZ1からページA6を外す。
3番目に、ログ抽出部150は、ページリストZ1に属する各ページのうち、最新のページA5を抽出する。そして、ログ抽出部150は、ページリストZ1からページA5を外す。
4番目に、ログ抽出部150は、ページリストZ1に属する各ページのうち、最新のページA4を抽出する。そして、ログ抽出部150は、ページリストZ1からページA4を外す。
5番目に、ログ抽出部150は、ページリストZ1に属する各ページのうち、最新のページA3を抽出する。そして、ログ抽出部150は、ページリストZ1からページA3を外す。
ログ抽出部150は、ページリストZ1に属する各ページのうち、最新のページA2のタイムスタンプが、現在からx時間前の時刻よりも前の時刻を示すことを確認し、ページリストZ1からのログ抽出を完了する。ログ抽出部150は、抽出量の上限値に未だ達していないため、次に優先順位の高いログタイプ“type2”のページリストZ2からのログ抽出に移る。
6番目に、ログ抽出部150は、ページリストZ2に属する各ページのうち、最新のページB7を抽出する。そして、ログ抽出部150は、ページリストZ2からページB7を外す。
以降、同様にして、ログ抽出部150は、ページB6,B5,B4,B3をページリストZ2から順番に抽出する。そして、ログ抽出部150は、ページリストZ2に属する各ページのうち、最新のページB2のタイムスタンプが現在からx時間前の時刻よりも前の時刻を示すことを確認し、ページリストZ2からのログ抽出を完了する。ログ抽出部150は、抽出量の上限値に未だ達していないため、次に優先順位の高いログタイプ“type3”のページリストZ3からのログ抽出に移る。
11番目に、ログ抽出部150は、ページリストZ3からページC7を抽出する。そして、ログ抽出部150は、ページリストZ3からページC7を外す。
ログ抽出部150は、ページC7を抽出すると、抽出量の上限値に達したことを検出して、ログ抽出を終了する。抽出ログL1bは、上記の処理によってログ抽出部150により抽出されたページA7,A6,A5,A4,A3,B7,B6,B5,B4,B3,C7を含む。
図17は、第2の実施の形態のログ抽出例(その3)を示す図である。図17の例では、あるメッセージに対するログ抽出について次の条件を考える。抽出量の上限値は、ページ11個分である。ログ抽出の時間範囲はx時間である。抽出対象のログタイプは、“type1”、“type2”および“type3”である。ログタイプ“type1”の優先レベルは“1”である。ログタイプ“type2”、“type3”の優先レベルは何れも“2”である。ページリストZ1,Z2,Z3に属する各ページは、図15と同様である。
メッセージの検出時(障害発生時)を現在とすると、現在からx時間前までがログ抽出対象の時間範囲である。図17の例では、ページA3,B3,C3以降のページにおけるタイムスタンプがログ抽出対象の時間範囲に含まれる。
最も優先順位の高いログタイプ“type1”の最新のページA7は、現在からx時間前の時刻よりも後の時刻である。このため、ログ抽出部150は、ページA7を抽出する。そして、ログ抽出部150は、ページリストZ1からページA7を外す。
以降の処理でも、ログ抽出部150は、抽出候補のページがx時間前の時刻よりも後の時刻であることを確認する。
2番目に、ログ抽出部150は、ページリストZ1に属する各ページのうち、最新のページA6を抽出する。そして、ログ抽出部150は、ページリストZ1からページA6を外す。
3番目に、ログ抽出部150は、ページリストZ1に属する各ページのうち、最新のページA5を抽出する。そして、ログ抽出部150は、ページリストZ1からページA5を外す。
4番目に、ログ抽出部150は、ページリストZ1に属する各ページのうち、最新のページA4を抽出する。そして、ログ抽出部150は、ページリストZ1からページA4を外す。
5番目に、ログ抽出部150は、ページリストZ1に属する各ページのうち、最新のページA3を抽出する。そして、ログ抽出部150は、ページリストZ1からページA3を外す。
ログ抽出部150は、ページリストZ1に属する各ページのうち、最新のページA2のタイムスタンプが、現在からx時間前の時刻よりも前の時刻を示すことを確認し、ページリストZ1からのログ抽出を完了する。ログ抽出部150は、抽出量の上限値に未だ達していないため、次に優先順位の高いログタイプ“type2”、“type3”のページリストZ2,Z3からのログ抽出に移る。
上記のように、ログタイプ“type2”、“type3”の優先レベルは“2”であり、ページリストZ2,Z3に属する各ページのうちの最新のページB7は、現在からx時間前の時刻よりも後の時刻である。このため、6番目に、ログ抽出部150は、ページB7を抽出する。そして、ログ抽出部150は、ページリストZ2からページB7を外す。
7番目に、ログ抽出部150は、ページリストZ2,Z3に属する各ページのうち、最新のページC7を抽出する。そして、ログ抽出部150は、ページリストZ3からページC7を外す。
8番目に、ログ抽出部150は、ページリストZ2,Z3に属する各ページのうち、最新のページB6を抽出する。そして、ログ抽出部150は、ページリストZ2からページB6を外す。
9番目に、ログ抽出部150は、ページリストZ2,Z3に属する各ページのうち、最新のページC6を抽出する。そして、ログ抽出部150は、ページリストZ3からページC6を外す。
以降、同様にして、ログ抽出部150は、ページの抽出を行う。10番目に抽出されるページは、ページC5である。11番目に抽出されるページは、ページB5である。
ログ抽出部150は、ページB5を抽出すると、抽出量の上限値に達したことを検出して、ログ抽出を終了する。抽出ログL1cは、上記の処理によってログ抽出部150により抽出されたページA7,A6,A5,A4,A3,B7,C7,B6,C6,C5,B5を含む。
図18は、第2の実施の形態のログ抽出例(その4)を示す図である。図18の例では、あるメッセージに対するログ抽出について次の条件を考える。抽出量の上限値は、ページ10個分(例えば、1ページのサイズが64KBの場合、64KB×10=640KB)である。ログ抽出の時間範囲はx時間である。抽出対象のログタイプは、“type1”、“type2”および“type3”である。ログタイプ“type1”の優先レベルは“1”である。ログタイプ“type2”、“type3”の優先レベルは何れも“2”である。
また、ページリストZ4は、ログタイプ“type1”のページリストである。ページリストZ4は、タイムスタンプの古い方から新しい方へ向かって、ページA1,A2,A3,A4,A5,A6,A7,A8を含む。ページリストZ5は、ログタイプ“type2”のページリストである。ページリストZ5は、タイムスタンプの古い方から新しい方へ向かって、ページB1,B2,B3,B4を含む。ページリストZ6は、ログタイプ“type3”のページリストである。ページリストZ6は、タイムスタンプの古い方から新しい方へ向かって、ページC1,C2,C3,C4を含む。
ページリストZ4,Z5,Z6に属する各ページのタイムスタンプは、図15〜図17の場合とは異なっている。図18の例では、ページA1,B1,C1以降のページにおけるタイムスタンプがログ抽出対象の時間範囲に含まれる。
最も優先順位の高いログタイプ“type1”の最新のページA8は、現在からx時間前の時刻よりも後の時刻である。このため、ログ抽出部150は、ページA8を抽出する。そして、ログ抽出部150は、ページリストZ4からページA8を外す。
以降の処理でも、ログ抽出部150は、抽出候補のページがx時間前の時刻よりも後の時刻であることを確認する。
2番目に、ログ抽出部150は、ページリストZ4に属する各ページのうち、最新のページA7を抽出する。そして、ログ抽出部150は、ページリストZ4からページA7を外す。
以降、同様にして、ログ抽出部150は、ページリストZ4のページA6からページA1までを順に抽出し、ページリストZ4に残りのページ(未抽出のページ)がなくなったことを検出する。ログ抽出部150は、抽出量の上限値に未だ達していないため、次に優先順位の高いログタイプ“type2”、“type3”のページリストZ5,Z6からのログ抽出に移る。
上記のように、ログタイプ“type2”、“type3”の優先レベルは“2”であり、ページリストZ5,Z6に属する各ページのうちの最新のページB4は、現在からx時間前の時刻よりも後の時刻である。このため、9番目に、ログ抽出部150は、ページB4を抽出する。そして、ログ抽出部150は、ページリストZ5からページB4を外す。
10番目に、ログ抽出部150は、ページリストZ5,Z6に属する各ページのうち、最新のページC4を抽出する。そして、ログ抽出部150は、ページリストZ6からページC4を外す。
ログ抽出部150は、ページC4を抽出すると、抽出量の上限値に達したことを検出して、ログ抽出を終了する。抽出ログL1dは、上記の処理によってログ抽出部150により抽出されたページA8,A7,A6,A5,A4,A3,A2,A1,B4,C4を含む。
このようにして、CM100によれば、解析に有用でないログの収集を抑えることができる。
ここで、例えば、障害などの事象(イベント)に対して、CM100,200,300,400におけるログを全て収集することも考えられる。しかし、ログには、新しいものや古いもの、ハードウェアやソフトウェアなどに関する種々のログレコードが含まれる。このため、ログを全て収集すると、発生した事象との関係が薄く、当該事象の解析に有用でないログレコードも収集されるという問題がある。余計なログレコードの収集は、収集したログレコードを他の装置に送信する際の通信量の増加や、有用でないログレコードによる解析量の増加などの要因になる。
例えば、収集するログサイズを小さくするために、単に、抽出対象サイズに上限を設けることも考えられる。しかし、抽出対象サイズに上限を設けただけでは、該当の事象に対して有用でないログレコードが抽出される可能性は大きい。なぜなら、発生する事象に応じて、当該事象と関連性の高いコンポーネントは異なるからである。また、現時点に対して古いログレコードほど、現時点の事象との関連が薄くなるからである。
そこで、CM100は、障害の発生を示すメッセージ毎に抽出対象のページの時間範囲とログタイプ別の優先レベルとをログ抽出管理テーブル112により保持する。CM100は、メッセージを検出すると、当該メッセージに応じた時間範囲とログタイプ別の優先レベルとをログ抽出管理テーブル112から検索する。そして、CM100は、現時点以前の時間範囲とログタイプ別の優先レベルとを基に、ページを抽出する。これにより、CM100は、CM100のログのうち、障害解析に有用なログのみを抽出することができる。CM200,300,400も同様にして、障害解析に有用なログのみを抽出することができる。更に、CM100は、CM100,200,300,400における抽出ログを収集し、サポートサーバ60に収集ログを送信することで、障害解析に有用なログのみを、サポートサーバ60に送信することができる。すなわち、CM100は、サポートサーバ60に対して収集ログを送信する際の通信量の増加を抑えつつ、有用なログに絞った情報提供を行える。その結果、サポートサーバ60側での解析量の低減を図れる。
[第3の実施の形態]
以下、第3の実施の形態を説明する。前述の第2の実施の形態と相違する事項を主に説明し、共通する事項の説明を省略する。
図18で例示したように、ログ抽出対象の時間範囲の設定によっては、特定のログタイプのページ(図18の例では、ログタイプ“type1”のページ)に偏ってログ抽出が行われる。また、抽出対象の時間範囲を広げた場合に、優先レベルの高いログの量が多いと、図18で例示したように、優先レベルの低いログをほとんど収集できないことも考えられる。一方、障害の内容によっては、特定のログタイプのページを重点的に抽出しながら、他のログタイプのページもある程度取得して解析を行いたいこともある。そこで、第3の実施の形態では、各メッセージに対して複数の時間範囲の設定を許容することで、ログ抽出の柔軟化を図る機能を提供する。
第3の実施の形態のストレージシステムのハードウェアおよび機能構成は、図2〜図5で例示した第2の実施の形態のストレージシステムのハードウェアおよび機能構成と同様である。このため、第3の実施の形態でも、第2の実施の形態と同様の名称および符号により各要素を指し示すこととする。第3の実施の形態では、ログ抽出管理テーブル112の代わりに、ログ抽出管理テーブル113を用いる点が、第2の実施の形態と異なる。
図19は、第3の実施の形態のログ抽出管理テーブルの例を示す図である。ログ抽出管理テーブル113は、記憶部110に予め記憶されている。ログ抽出管理テーブル113は、メッセージIDに応じたログ抽出対象の時間範囲およびログタイプ毎の優先レベルが登録された情報である。ログ抽出管理テーブル113では、ログ抽出対象の時間範囲を2種類登録可能である点が、ログ抽出管理テーブル112と異なる。ログ抽出管理テーブル113は、メッセージID、時間範囲1(x)、時間範囲2(y)およびログタイプの優先レベルの項目を含む。
メッセージIDおよびログタイプの優先レベルの項目の設定内容は、ログ抽出管理テーブル112における同名の項目の設定内容と同様である。
時間範囲1(x)の項目には、ログ抽出対象の第1の時間範囲xが登録される。時間範囲2(y)の項目には、ログ抽出対象の第2の時間範囲yが登録される。第1の時間範囲xおよび第2の時間範囲yの何れも、単位は、例えば、時間(hour)である。また、第2の時間範囲yは、第1の時間範囲xよりも新しい時刻である。時間範囲1(x)の項目における第1の時間範囲xの設定は、必須である。時間範囲2(y)の項目における第2の時間範囲yの設定は、任意である(時間範囲2(y)の項目は設定なしでもよい)。時間範囲2(y)の項目が設定なしの場合、図ではハイフン記号“−”を表記する。
例えば、ログ抽出管理テーブル112には、メッセージIDが“a00000005”、時間範囲1(x)が“48”、時間範囲2(y)が“3”、ログタイプ“type1”の優先レベル“1”、ログタイプ“type2”の優先レベル“2”、ログタイプ“type3”の優先レベル“3”、ログタイプ“type4”の優先レベル“0”,・・・という情報が登録される。これは、メッセージID“a00000005”を含むメッセージが検出された場合、当該検出時(障害発生時)から3時間前に遡った時刻までを第1段階のログ抽出対象の時間範囲とすることを示す。また、第1段階のログ抽出が完了した後に、当該検出時(障害発生時)から48時間前に遡った時刻までを第2段階のログ抽出対象の時間範囲とすることを示す。また、各ログタイプの優先レベルにしたがって、ログ抽出を行うことを示す。
次に、第3の実施の形態におけるログ抽出部150によるログ抽出の手順を説明する。第3の実施の形態では、図12で例示したCM単位のログ抽出処理の手順に代えて、ログ抽出部150が以下に示す手順を実行する点が異なる。他の処理の手順について、第2の実施の形態で例示した手順と同様であるため、説明を省略する。また、以下では、ログ抽出部150について主に説明するが、ログ抽出部230,330,430も同様の手順によりログ抽出を行う。
図20は、第3の実施の形態のCM単位のログ抽出例を示すフローチャートである。以下、図20に示す処理をステップ番号に沿って説明する。以下に示す手順は、図11のステップS14に相当する。
(S51)ログ抽出部150は、記憶部110に記憶されたログ抽出管理テーブル113から、今回のメッセージに対応する時間範囲2(y)の値を取得する。具体的には、ログ抽出部150は、障害通知のメッセージに含まれるメッセージIDに対応する時間範囲2(y)を、ログ抽出管理テーブル113から取得する。
(S52)ログ抽出部150は、ステップS51の結果を基に、時間範囲2(y)が設定なしであるか否かを判定する。時間範囲2(y)が設定なしの場合、ログ抽出部150は、ステップS56に処理を進める。時間範囲2(y)が設定ありの場合、ログ抽出部150は、ステップS53に処理を進める。
(S53)ログ抽出部150は、時間範囲を時間範囲2(y)に設定する。
(S54)ログ抽出部150は、時間範囲を時間範囲2(y)に設定した状態で、時間範囲内のログ抽出処理を実行する。時間範囲内のログ抽出処理の手順は、図13の手順と同様である。
(S55)ログ抽出部150は、抽出量の合計が上限値に達したか否かを判定する。抽出量の合計が上限値に達した場合、ログ抽出部150は、処理をステップS58に進める。抽出量の合計が上限値に達していない場合、ログ抽出部150は、ステップS56に処理を進める。
(S56)ログ抽出部150は、ログ抽出管理テーブル113から、今回のメッセージに対応する時間範囲1(x)の値を取得する。具体的には、ログ抽出部150は、障害通知のメッセージに含まれるメッセージIDに対応する時間範囲1(x)を、ログ抽出管理テーブル113から取得する。
(S57)ログ抽出部150は、時間範囲を時間範囲1(x)に設定した状態で、時間範囲内のログ抽出処理を実行する。時間範囲内のログ抽出処理の手順は、図13の手順と同様である。
(S58)ログ抽出部150は、ステップS54,S57の両方または何れか一方により抽出したログ(抽出ログ)をログ収集部140に提供する。
このように、記憶部110は、時間範囲2(y)および時間範囲2(y)よりも長い期間を示す時間範囲1(x)(他の時間範囲)をメッセージ毎に登録したログ抽出管理テーブル113を記憶する。そして、ログ抽出部150は、障害発生を示すメッセージを検出すると、記憶部110に記憶されたログ抽出管理テーブル113を参照して、メッセージに応じた現時刻から過去の時間範囲2(y)および優先レベルに基づき、ログ(動作情報)の中からページ(ログレコード)を抽出する。その後、ログ抽出部150は、メッセージ応じた現時刻から過去の時間範囲1(x)および優先レベルに基づき、ログ(動作情報)の中から他のページ(他のログレコード)を抽出する。これにより、障害に応じて、抽出ログの内容を柔軟に調整可能になる。
図21は、第3の実施の形態のログ抽出例を示す図である。図21の例では、あるメッセージに対するログ抽出について次の条件を考える。抽出量の上限値は、ページ10個分(例えば、1ページのサイズが64KBの場合、64KB×10=640KB)である。ログ抽出の時間範囲1(x)はx時間である。ログ抽出の時間範囲2(y)はy時間である。抽出対象のログタイプは、“type1”、“type2”および“type3”である。ログタイプ“type1”の優先レベルは“1”である。ログタイプ“type2”、“type3”の優先レベルは何れも“2”である。ページリストZ4,Z5,Z6に属する各ページは、図18と同様である。
この場合、メッセージの検出時(障害発生時)を現在とすると、現在からy時間前までが第1段階のログ抽出対象の時間範囲である。図21の例では、ページA5,B3,C3以降のページにおけるタイムスタンプがログ抽出対象の時間範囲に含まれる。
最も優先順位の高いログタイプ“type1”の最新のページA8は、現在からy時間前の時刻よりも後の時刻である。このため、ログ抽出部150は、ページA8を抽出する。そして、ログ抽出部150は、ページリストZ4からページA8を外す。
以降の第1段階のログ抽出処理でも、ログ抽出部150は、抽出候補のページがy時間前の時刻よりも後の時刻であることを確認する。
2番目に、ログ抽出部150は、ページリストZ4に属する各ページのうち、最新のページA7を抽出する。そして、ログ抽出部150は、ページリストZ4からページA7を外す。
3番目に、ログ抽出部150は、ページリストZ4に属する各ページのうち、最新のページA6を抽出する。そして、ログ抽出部150は、ページリストZ4からページA6を外す。
4番目に、ログ抽出部150は、ページリストZ4に属する各ページのうち、最新ページA5を抽出する。そして、ログ抽出部150は、ページリストZ4からページA5を外す。
ログ抽出部150は、ページリストZ4の最新のページA4のタイムスタンプが現在からy時間前の時刻よりも前の時刻を示すことを確認し、ページリストZ4からの第1段階のログ抽出を完了する。ログ抽出部150は、抽出量の上限値に未だ達していないため、次に優先順位の高いログタイプ“type2”、“type3”のページリストZ5,Z6からの第1段階のログ抽出に移る。
上記のように、ログタイプ“type2”、“type3”の優先レベルは“2”であり、ページリストZ5,Z6に属する各ページのうちの最新のページB4は、現在からy時間前の時刻よりも後の時刻である。このため、5番目に、ログ抽出部150は、ページB4を抽出する。そして、ログ抽出部150は、ページリストZ5からページB4を外す。
6番目に、ログ抽出部150は、ページリストZ5,Z6に属する各ページのうち、最新のページC4を抽出する。そして、ログ抽出部150は、ページリストZ6からページC4を外す。
7番目に、ログ抽出部150は、ページリストZ5,Z6に属する各ページのうち、最新のページB3を抽出する。そして、ログ抽出部150は、ページリストZ5からページB3を外す。
8番目に、ログ抽出部150は、ページリストZ5,Z6に属する各ページのうち、最新のページC3を抽出する。そして、ログ抽出部150は、ページリストZ6からページC3を外す。
ログ抽出部150は、ページリストZ5,Z6に属する各ページのうち、最新のページC2のタイムスタンプが現在からy時間前の時刻よりも前の時刻を示すことを確認し、ページリストZ5,Z6からの第1段階のログ抽出を完了する。ログ抽出部150は、抽出量の上限値に未だ達していないため、第2段階のログ抽出に移る。第2段階のログ抽出の時間範囲は、現在からx時間前の時刻までである。
最も優先順位の高いログタイプ“type1”の最新のページA4は、現在からx時間前の時刻よりも後の時刻である。このため、9番目に、ログ抽出部150は、ページA4を抽出する。そして、ログ抽出部150は、ページリストZ4からページA4を外す。
10番目に、ログ抽出部150は、ページA3を抽出する。そして、ログ抽出部150は、ページリストZ4からページA3を外す。
ログ抽出部150は、ページA3を抽出すると、抽出量の上限値に達したことを検出して、第2段階のログ抽出を終了する。抽出ログL1eは、上記の処理によってログ抽出部150により抽出されたページA8,A7,A6,A5,B4,C4,B3,C3,A4,A3を含む。
次に、第3の実施の形態のログ抽出方法について、更に具体的な例を説明する。以下の説明では、具体的な障害内容と、具体的なログタイプとを例示することで、CM100,200,300,400によるログ抽出例を更に具体的に説明する。
図22は、第3の実施の形態のログ抽出管理テーブルの第1具体例を示す図である。ログ抽出管理テーブル114は、CM100,200,300,400それぞれが備える筐体内の冷却用のファン(fan)の故障に対する時間範囲1(x)、時間範囲2(y)およびログタイプの優先レベルを例示している。例えば、ファンの故障を示すメッセージのメッセージIDを“FAN Fault”とする。ログ抽出管理テーブル114には、当該メッセージIDに対して、時間範囲1(x)が“48”、時間範囲2(y)が“1”という情報が登録されている。また、当該メッセージIDに対して、ログタイプ“type1”の優先レベル“1”、ログタイプ“type2”の優先レベル“0”、ログタイプ“type3”の優先レベル“0”、ログタイプ“type4”の優先レベル“1”、ログタイプ“type5”の優先レベル“2”、ログタイプ“type6”の優先レベル“0”、ログタイプ“type7”の優先レベル“0”、ログタイプ“type8”の優先レベル“0”という情報が登録されている。
ここで、ログタイプ“type1”は、ハードウェアエラー(ハードエラー)である。ログタイプ“type2”は、データのコピー機能に関するソフトウェアエラー(ソフトエラー)である。ログタイプ“type3”は、データの重複排除/圧縮機能に関するソフトエラーである。ログタイプ“type4”は、温度などの環境に関する情報である。ログタイプ“type5”は、電源オン/オフや消費電力などの電源制御に関する情報である。ログタイプ“type6”は、MMI(Man Machine Interface)に対する操作(MMI操作)に関する情報である。ログタイプ“type7”は、データのコピー機能に関するイベントである。ログタイプ“type8”は、データの重複排除/圧縮機能に関するイベントである。
FAN故障の解析に当たっては、故障の直接の原因を解析するために故障発生時付近のログを取得する。また、FAN故障を加速するような間接的な要因(例えば、温度異常など)の有無を解析するために、故障発生前の比較的長時間に亘る環境ログを抽出することが好ましい。そこで、故障発生から1時間前までのログを抽出し、更に、故障発生から48時間前までの範囲でハードエラーと環境情報のログを優先して抽出するように、ログ抽出管理テーブル114の設定を行う。
図23は、第3の実施の形態のログ抽出の第1具体例を示す図である。図23では、ログ抽出管理テーブル114に基づくログ抽出部150によるログ抽出を例示する。
図23の例では、メッセージ“FAN Fault”に対するログ抽出について次の条件を考える。抽出量の上限値は、ページ10個分(例えば、1ページのサイズが64KBの場合、64KB×10=640KB)である。ログ抽出の時間範囲1(x)は48時間である。ログ抽出の時間範囲2(y)は1時間である。抽出対象のログタイプは、“type1”、“type4”および“type5”である。ただし、図23では、比較のために、ログタイプ“type6”も図示している。ログタイプ“type1”、“type4”の優先レベルは何れも“1”である。ログタイプ“type5”の優先レベルは“2”である。
また、ページリストZ7は、ログタイプ“type1”のページリストである。ページリストZ7は、タイムスタンプの古い方から新しい方へ向かって、ページA1,A2,A3を含む。ページリストZ8は、ログタイプ“type4”のページリストである。ページリストZ8は、タイムスタンプの古い方から新しい方へ向かって、ページB1,B2,B3,B4,B5を含む。ページリストZ9は、ログタイプ“type5”のページリストである。ページリストZ9は、タイムスタンプの古い方から新しい方へ向かって、ページC1,C2,C3,C4を含む。ページリストZ10は、ログタイプ“type6”のページリストである。ページリストZ10は、タイムスタンプの古い方から新しい方へ向かって、ページD1,D2,D3,D4を含む。ただし、前述のように、ページリストZ10は、比較のために図示したものであり、ページの抽出対象ではない。
この場合、メッセージの検出時(障害発生時)を現在とすると、現在から1時間前までが第1段階のログ抽出対象の時間範囲である。図23の例では、ページA2,B5,C4以降のページにおけるタイムスタンプがログ抽出対象の時間範囲に含まれる。
最も優先順位の高いログタイプ“type1”、“type4”の最新のページB5は、現在から1時間前の時刻よりも後の時刻である。このため、ログ抽出部150は、ページB5を抽出する。そして、ログ抽出部150は、ページリストZ8からページB5を外す。
以降の第1段階のログ抽出処理でも、ログ抽出部150は、抽出候補のページが1時間前の時刻よりも後の時刻であることを確認する。
2番目に、ログ抽出部150は、ページリストZ7,Z8に属する各ページのうち、最新のページA3を抽出する。そして、ログ抽出部150は、ページリストZ7からページA3を外す。
3番目に、ログ抽出部150は、ページリストZ7,Z8に属する各ページのうち、最新のページA2を抽出する。そして、ログ抽出部150は、ページリストZ7からページA2を外す。
ログ抽出部150は、ページリストZ7,Z8に属する各ページのうち、最新のページB4のタイムスタンプが1時間前の時刻よりも前の時刻であることを確認する。すると、ログ抽出部150は、次の優先レベルであるログタイプ“type5”のページリストZ9からの第1段階のログ抽出に移る。
4番目に、ログ抽出部150は、ページリストZ9に属する各ページのうち、最新のページC4を抽出する。そして、ログ抽出部150は、ページリストZ9からページC4を外す。
ログ抽出部150は、ページリストZ9に属する各ページのうち、最新のページC3のタイムスタンプが1時間前の時刻よりも前の時刻であることを確認する。すると、ログ抽出部150は、抽出対象の全てのログタイプについて第1段階のログ抽出処理を終えたので、第2段階のログ抽出処理に移る。
5番目に、ログ抽出部150は、ページリストZ7,Z8に属する各ページのうち、最新のページB4を抽出する。そして、ログ抽出部150は、ページリストZ8からページB4を外す。
6番目に、ログ抽出部150は、ページリストZ7,Z8に属する各ページのうち、最新のページA1を抽出する。そして、ログ抽出部150は、ページリストZ7からページA1を外す。この段階では、ページリストZ7には、未抽出のページがなくなる。
7番目に、ログ抽出部150は、ページリストZ8に属する各ページのうち、最新のページB3を抽出する。そして、ログ抽出部150は、ページリストZ8からページB3を外す。
8番目に、ログ抽出部150は、ページリストZ8に属する各ページのうち、最新のページB2を抽出する。そして、ログ抽出部150は、ページリストZ8からページB2を外す。
9番目に、ログ抽出部150は、ページリストZ8に属する各ページのうち、最新のページB1を抽出する。そして、ログ抽出部150は、ページリストZ8からページB1を外す。ページリストZ8にも未抽出のページがなくなったので、ログ抽出部150は、次の優先レベルであるページリストZ9からの第2段階のログ抽出処理に移る。
10番目に、ログ抽出部150は、ページリストZ9に属する各ページのうち、最新のページC3を抽出する。そして、ログ抽出部150は、ページリストZ9からページC3を外す。
ログ抽出部150は、ページC3を抽出すると、抽出量の上限値に達したことを検出して、第2段階のログ抽出を終了する。抽出ログL1fは、上記の処理によってログ抽出部150により抽出されたページB5,A3,A2,C4,B4,A1,B3,B2,B1,C3を含む。
こうして、CM100,200,300,400は、FAN故障の障害調査に適した調査用ログを抽出することができる。また、CM100は、抽出された調査用ログを収集して、サポートサーバ60に送信することで、FAN故障の障害調査に有用な情報に絞った情報提供を行うことができる。また、余計な情報を送るよりも通信量を減らすことができる。
図24は、第3の実施の形態のログ抽出管理テーブルの第2具体例を示す図である。ログ抽出管理テーブル115は、CM100,200,300,400それぞれにおけるデータのコピーセッションにおけるエラー(copy session error)に対する時間範囲1(x)、時間範囲2(y)およびログタイプの優先レベルを例示している。例えば、コピーセッションエラーのメッセージIDを“copy session error”とする。ログ抽出管理テーブル115には、当該メッセージIDに対して、時間範囲1(x)が“64”、時間範囲2(y)が“−”(設定なし)という情報が登録されている。また、当該メッセージIDに対して、ログタイプ“type1”、“type3”、“type4”、“type5”、“type6”、“type8”の優先レベル“0”という情報が登録されている。更に、当該メッセージIDに対して、ログタイプ“type2”、“type7”の優先レベル“1”という情報が登録されている。
ここで、ログ抽出管理テーブル115におけるログタイプは、ログ抽出管理テーブル114で例示したログタイプと同様である。
データのコピー機能のエラーの解析に当たっては、エラーに至るまでの経緯から原因を特定するために、事象発生からできるだけ長時間に亘るコピー機能に関するログを抽出することが好ましい。そこで、事象発生から64時間前までの時間範囲でコピー機能のログを優先して抽出するように、ログ抽出管理テーブル115の設定を行う。
図25は、第3の実施の形態のログ抽出の第2具体例を示す図である。図25では、ログ抽出管理テーブル115に基づくログ抽出部150によるログ抽出を例示する。
図25の例では、メッセージ“copy session error”に対するログ抽出について次の条件を考える。抽出量の上限値は、ページ10個分(例えば、1ページのサイズが64KBの場合、64KB×10=640KB)である。ログ抽出の時間範囲1(x)は64時間である。ログ抽出の時間範囲2(y)は設定なしである。抽出対象のログタイプは、“type2”および“type7”である。ただし、図25では、比較のために、ログタイプ“type1”および“type4”も図示している。ログタイプ“type2”、“type7”の優先レベルは何れも“1”である。
また、ページリストZ11は、ログタイプ“type1”のページリストである。ページリストZ11は、タイムスタンプの古い方から新しい方へ向かって、ページA1,A2,A3を含む。ページリストZ12は、ログタイプ“type2”のページリストである。ページリストZ12は、タイムスタンプの古い方から新しい方へ向かって、ページB1,B2,B3を含む。ページリストZ13は、ログタイプ“type4”のページリストである。ページリストZ13は、タイムスタンプの古い方から新しい方へ向かって、ページC1,C2,C3,C4を含む。ページリストZ14は、ログタイプ“type7”のページリストである。ページリストZ14は、タイムスタンプの古い方から新しい方へ向かって、ページD1,D2,D3,D4,D5,D6,D7を含む。ただし、前述のように、ページリストZ11,Z13は、比較のために図示したものであり、ページの抽出対象ではない。
この場合、メッセージの検出時(障害発生時)を現在とすると、現在から64時間前までがログ抽出対象の時間範囲である。なお、図25の例では、ログ抽出の時間範囲2(y)は設定なしなので、時間範囲2(y)を用いたログ抽出は行われずに、時間範囲1(x)を用いたログ抽出が行われる。図25の例では、ページB1,D1以降のページにおけるタイムスタンプがログ抽出対象の時間範囲に含まれる。
最も優先順位の高いログタイプ“type2”、“type7”の最新のページD7は、現在から64時間前よりも後の時刻である(ただし、ここでは、優先レベル“1”のログタイプのみがログの抽出元候補である)。このため、ログ抽出部150は、ページD7を抽出する。そして、ログ抽出部150は、ページリストZ14からページD7を外す。
以降のログ抽出処理でも、ログ抽出部150は、抽出候補のページが64時間前の時刻よりも後の時刻であることを確認する。
2番目に、ログ抽出部150は、ページリストZ12,Z14に属する各ページのうち、最新のページB3を抽出する。そして、ログ抽出部150は、ページリストZ12からページB3を外す。
3番目に、ログ抽出部150は、ページリストZ12,Z14に属する各ページのうち、最新のページD6を抽出する。そして、ログ抽出部150は、ページリストZ14からページD6を外す。
以降、同様にして、ログ抽出部150は、ページリストZ12,Z14に属する各ページのうち、新しいページから古いページへ順に抽出する。
9番目に、ログ抽出部150は、ページリストZ12,Z14に属する各ページのうち、最新のページD1を抽出する。そして、ログ抽出部150は、ページリストZ14からページD1を外す。この段階で、ページリストZ14には、未抽出のページがなくなる。
10番目に、ログ抽出部150は、ページリストZ12に属する各ページのうち、最新のページB1を抽出する。そして、ログ抽出部150は、ページリストZ12からページB1を外す。この段階で、ページリストD12には、未抽出のページがなくなる。
ログ抽出部150は、ページリストZ12,Z14において、未抽出のページがなくなったことを検出し、ログ抽出を完了する。抽出ログL1gは、上記の処理によってログ抽出部150により抽出されたページD7,B3,D6,B2,D5,D4,D3,D2,D1,B1を含む。
こうして、CM100,200,300,400は、コピー機能のエラーに適した調査用ログを抽出することができる。また、CM100は、抽出された調査用ログを収集して、サポートサーバ60に送信することで、コピー機能のエラー解析に有用な情報に絞った情報提供を行うことができる。また、余計な情報を送るよりも通信量を減らすことができる。
なお、第1の実施の形態の情報処理は、処理部1bにプログラムを実行させることで実現できる。また、第2,第3の実施の形態の情報処理は、プロセッサ101にプログラムを実行させることで実現できる。CM100は、プロセッサ101とRAM102とを備えたコンピュータを含むといえる。プログラムは、コンピュータ読み取り可能な記録媒体91に記録できる。
例えば、プログラムを記録した記録媒体91を配布することで、プログラムを流通させることができる。また、プログラムを他のコンピュータに格納しておき、ネットワーク経由でプログラムを配布してもよい。コンピュータは、例えば、記録媒体91に記録されたプログラムまたは他のコンピュータから受信したプログラムを、RAM102やBUD106などの記憶装置に格納し(インストールし)、当該記憶装置からプログラムを読み込んで実行してもよい。