以下、本発明の実施の形態について図面を参照して説明する。
〔第1の実施の形態〕
図1は、第1の実施の形態に係る情報処理装置の構成例および処理例を示す図である。図1に示す情報処理装置1は、記憶部1aと処理部1bを有する。記憶部1aは、例えば、情報処理装置1が備える図示しない記憶装置として実現される。処理部1bは、例えば、情報処理装置1が備える図示しないプロセッサとして実現される。
この情報処理装置1は、例えば、ソフトウェアのプロセスの実行に応じて出力されるログを取得可能になっている。ログには、実行されたプロセスの内容や実行結果などの情報が記録される。また、ソフトウェアは、情報処理装置1で実行されてもよいし、他の情報処理装置で実行されてもよい。
記憶部1aは、情報処理装置1で取得されるログのうち、保存対象として特定されたログの保存先として利用される。情報処理装置1で取得されるログの一部だけが記憶部1aに保存されることで、保存するログのデータサイズが削減され、その保存に必要な記憶容量を削減できる。
処理部1bは、プロセスの実行に応じて出力された複数のログ群を取得する(ステップS1)。取得される各ログ群には、複数のログが含まれている。また、各ログ群は、例えば、プロセスの実行に応じて出力されたログが、所定の条件にしたがって分類されたものである。例えば、ログに記録されたプロセスなどの識別番号が一致するログが、1つのログ群として取得される。あるいは、ログに記録された時刻情報に基づき、時刻の差が一定時間以下となるログが1つのログ群として取得される。
以下、図1に示すように、ログ群2,3,4が取得されたものとして説明を続ける。処理部1bは、ログ群2,3,4のそれぞれから、プロセスの実行結果に応じて内容が変化する可変情報を特定する(ステップS2)。例えば、プロセスが正常に実行されたか、異常が生じたかなど、プロセスの実行状況を示す数値が、可変情報として特定される。
以下、図1に示すように、ログ群2,3,4からそれぞれ可変情報2a,3a,4aが特定されたものとして説明を続ける。処理部1bは、特定された可変情報2a,3a,4aのログ群2,3,4における出現状況に基づいて、ログ群2,3,4のうち保存対象とするログ群を特定する(ステップS3)。処理部1bは、特定されたログ群を記憶部1aに保存する。
例えば、可変情報2a,3a,4aが数値の場合、次のようにして保存対象のログ群が特定される。例えば、可変情報2a,3a,4aのうちの1つだけが他の値と異なっている場合、その可変情報が特定された元のログ群が保存対象として特定される。あるいは、可変情報2a,3a,4aのうち、それらの平均値との差分が所定値以上である可変情報を含むログ群が、保存対象として特定される。
このような処理により、情報処理装置1は、記憶部1aに保存するログのデータサイズを削減できる。特に、ログ自体に含まれる情報に基づいて保存対象とするログ群が特定されることで、保守用の資材として有用なログを高精度に判別して保存できる。これにより、保存するデータサイズの高い削減効果を得ることができる。また、ログ自体の内容を解析することで保存対象とするログ群が特定されるので、ログ以外の情報を用いる場合と比較してその特定処理の効率を高めることができる。
〔第2の実施の形態〕
次に、図1に示した情報処理装置1の一例として、各種のシステムを管理する管理装置について説明する。
図2は、第2の実施の形態に係る管理装置のハードウェア構成例を示す図である。第2の実施の形態に係る管理装置100は、例えば、図2に示すようなコンピュータとして実現される。
図2に示すように、管理装置100は、プロセッサ101、RAM(Random Access Memory)102、HDD(Hard Disk Drive)103、グラフィック処理装置104、入力インタフェース(I/F)105、読み取り装置106および通信インタフェース(I/F)107を有する。
プロセッサ101は、管理装置100全体を統括的に制御する。プロセッサ101は、例えば、CPU(Central Processing Unit)、MPU(Micro Processing Unit)、DSP(Digital Signal Processor)、ASIC(Application Specific Integrated Circuit)またはPLD(Programmable Logic Device)である。また、プロセッサ101は、CPU、MPU、DSP、ASIC、PLDのうちの2以上の要素の組み合わせであってもよい。
RAM102は、管理装置100の主記憶装置として使用される。RAM102には、プロセッサ101に実行させるOS(Operating System)プログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、RAM102には、プロセッサ101による処理に必要な各種データが格納される。
HDD103は、管理装置100の補助記憶装置として使用される。HDD103には、OSプログラム、ミドルウェア、アプリケーションプログラム、および各種データが格納される。なお、補助記憶装置としては、SSD(Solid State Drive)などの他の種類の不揮発性記憶装置を使用することもできる。
グラフィック処理装置104には、表示装置104aが接続されている。グラフィック処理装置104は、プロセッサ101からの命令にしたがって、画像を表示装置104aに表示させる。表示装置としては、液晶ディスプレイや有機EL(Electroluminescence)ディスプレイなどがある。
入力インタフェース105には、入力装置105aが接続されている。入力インタフェース105は、入力装置105aから出力される信号をプロセッサ101に送信する。入力装置105aとしては、キーボードやポインティングデバイスなどがある。ポインティングデバイスとしては、マウス、タッチパネル、タブレット、タッチパッド、トラックボールなどがある。
読み取り装置106には、可搬型記録媒体106aが脱着される。読み取り装置106は、可搬型記録媒体106aに記録されたデータを読み取ってプロセッサ101に送信する。可搬型記録媒体106aとしては、光ディスク、光磁気ディスク、半導体メモリなどがある。
通信インタフェース107は、ネットワーク107aを介して他の装置との間でデータの送受信を行う。
以上のようなハードウェア構成によって、管理装置100の処理機能を実現することができる。なお、プロセッサ101は、図1に示した処理部1bの一例である。また、RAM102またはHDD103は、図1に示した記憶部1aの一例である。
ところで、上記の管理装置100は、例えばミドルウェアを実行することで、各種のシステムを管理する処理を実行する。管理処理としては、例えば、ジョブ管理、システム監視などの処理がある。例えば、図2に示すように、管理装置100には、ネットワーク107aを介してサーバ201,202,203,・・・が接続されている。この場合、管理装置100は、次のような管理処理を実行可能である。
ジョブ管理の一例として、管理装置100は、サーバ201,202,203,・・・におけるジョブの実行を管理する。例えば、サーバ201,202,203,・・・に実行させるジョブをスケジューリングし、サーバ201,202,203,・・・におけるジョブの実行を制御する。なお、他の例として、ジョブ管理では、管理装置100で実行されるジョブの実行が管理されてもよい。
また、システム監視の一例として、管理装置100は、サーバ201,202,203,・・・の状態を監視する。例えば、管理装置100は、サーバ201,202,203,・・・に対して定期的にポーリングを行い、異常が発生しているか、動作が停止しているかなど、サーバ201,202,203,・・・のそれぞれの動作状態を検出する。なお、他の例として、システム監視では、管理装置100に搭載されたハードウェア資源の状態が監視されてもよい。
さらに、管理装置100は、上記のような管理処理の実行に伴って、処理の実行内容や実行結果を示すログを生成する。管理装置100は、後述するように、一定サイズ分または一定期間分を超えるログのデータについて、必要なものだけを選別して残す機能や、選別されたデータを圧縮する機能を備える。
ここで、管理装置100については、管理対象とする処理の複雑化や、管理対象とするハードウェアリソースの増大化に伴って、管理のためのミドルウェアやソフトウェアの処理量が増大する傾向にある。そして、このような処理量の増大に伴って、上記のログのような保守用資材のデータサイズも増大している。その一方で、障害の発生に対してより早く対応して解決することが要求されている。
システム管理者は、長時間にわたって採取されたより多くのログを用いることで、障害発生原因の解析精度を高め、障害を解決できる可能性を高められる。その反面、ログの保存領域のサイズが過大になるだけでなく、解決に要する時間も長くなってしまう。一方で、ログの保存期間を短くすることで、保存領域のサイズを削減し、解決に要する時間を短縮できるものの、障害発生原因の解析精度が低下する。古いログの削除により、障害発生原因の解析自体が不可能になるリスクも高まる。
そこで、本実施の形態に係る管理装置100は、保守のために必要性の高いログ、具体的には異常発生を示すログだけを選別して保存する。上記のような管理処理では、異常発生だけでなく正常であることを示すログも出力される。このため、これらのログの中から異常発生を示すログだけを選別して保存することで、異常の原因解析のために有用なログだけを残してその解析精度の低下を抑制しつつ、ログの保存サイズを削減できる。
管理装置100は、管理処理の実行に伴って出力されるログの内容を解析することで、異常発生を示すログを検出する。このようなログの保存サイズ削減処理は、次のような処理に大別される。
(処理1)出力されたログのブロック化。
(処理2)ブロック化されたログのテンプレート化。
(処理3)ログとテンプレート情報との比較による異常ログの検出。
処理1では、管理装置100は、ログに含まれる特定の情報に基づいて、ひとまとめの処理に対応するログの集合を「ログブロック」として抽出する。例えば、処理の識別番号や時刻情報に基づいて、ログがブロック化される。
処理2では、管理装置100は、ブロック化されたログ(ログブロック)から可変部分を抽出し、抽出された可変部分の情報をあらかじめ決められたシンボルに置換することで、ログブロックをテンプレート化する。可変部分とは、あらかじめ決められた複数種類の項目について可変の値(数値または文字列)が設定される部分である。また、抽出された可変部分の情報は、項目ごとにあらかじめ決められたシンボルに置換される。
作成されたテンプレートには、ログブロックの可変部分に設定されていた情報を示す「可変値情報」が対応付けられる。これにより、テンプレートと可変値情報とを含むテンプレート情報が生成されて、所定の記憶領域に保存される。
また、管理装置100は、生成されたテンプレート(すなわち、可変部分が置換されたログブロック)同士を比較して、テンプレートの内容が一致するテンプレート情報を統合する。この統合により、1つのテンプレートに対して、複数のログブロックに対応する可変値情報が対応付けられる。
このようにして、処理2では、テンプレートに1以上の可変値情報が対応付けられたテンプレート情報が生成される。
次の処理3では、管理装置100は、複数の可変値情報が対応付けられたテンプレートについて、可変値情報同士を比較することで、各可変値情報に対応するログブロックの中から異常ログを含むログブロックを検出する。例えば、可変値情報の間で、同一項目についての設定値が1つだけ他の可変値情報と異なる場合、この設定値が設定されていたログブロックが異常ログを含むと判定される。
以上が、ログの保存サイズ削減処理の概要である。上記処理では、ログブロックのテンプレート化により、ログブロックに含まれるデータ内容のパターンが抽出される。そして、テンプレート化されたときに内容が同一となるログブロックが、同じパターンのデータ内容を有するログブロックと判定され、これらのログブロックが異常ログ判定時の比較対象として特定される。
また、異常ログの判定時には、テンプレート化の際に使用された複数種類の項目のうち、特定の項目に対する設定値のみが比較される。これにより、異常か否かを示す項目だけを用いて異常ログが判定されるので、その判定精度を向上させることができる。すなわち、本来は異常を示していないログを異常を示すと誤判定する可能性が低減され、その結果として、保存される異常ログのデータサイズを削減できる。
以下、管理装置100の処理について詳しく説明する。
図3は、管理装置が備える処理機能の構成例を示すブロック図である。
管理装置100は、定義情報記憶部111、ログ記憶部112、ログ退避部113、テンプレート記憶部114および異常ログ記憶部115を備える。これらは、例えば、RAM102、HDD103など、管理装置100が備える記憶装置の記憶領域によって実現される。また、管理装置100は、管理処理部121、ログ出力部122、ブロック化処理部123、テンプレート化処理部124および異常ログ検出部125を備える。これらの処理は、例えば、プロセッサ101が所定のプログラムを実行することによって実現される。
管理処理部121は、前述のジョブ管理やシステム監視といったシステムの管理処理を実行する。定義情報記憶部111には、管理処理部121による管理処理の実行のための定義情報が記憶されている。ここで、定義情報の例を図4、図5に示す。
図4は、定義情報記憶部に記憶される定義情報の第1の例を示す図である。図4に示す定義情報111aは、管理処理として前述のジョブ管理が実行される場合に定義情報記憶部111に記憶される情報である。定義情報111aは、管理対象のジョブに関する情報を保持し、ジョブの実行制御のために管理処理部121から参照される。
定義情報111aには、プロジェクト名に対して、ジョブネット名と、1以上のジョブ名とが対応付けて登録される。ジョブネットとは、同じ目的や同じサーバで実行されるひとまとめのジョブのグループを示す。定義情報111aでは、1つのジョブネット名に対応付けられたジョブ名が、そのジョブネットに属するジョブを示す。なお、実際には、ジョブネットに属するジョブの依存関係を示す情報が定義情報111aに定義されていてもよい。プロジェクト名は、ジョブネットが示す一連の処理を識別するためにユーザによって付与された名称を示す。
管理処理部121は、このような定義情報111aを参照することで、実行するジョブのジョブ名や対応するジョブネット名を認識することができる。また、定義情報111aには、例えば、各ジョブ名に対応付けてジョブの処理内容を示す情報が登録されていてもよい。
図5は、定義情報記憶部に記憶される定義情報の第2の例を示す図である。図5に示す定義情報111bは、管理処理として前述のシステム監視が実行される場合に定義情報記憶部111に記憶される情報である。定義情報111bは、監視対象のサーバに関する情報を保持し、監視処理の実行制御のために管理処理部121から参照される。
定義情報111bには、ホスト名とIP(Internet Protocol)アドレスとが対応付けて登録される。ホスト名は、監視対象のサーバを識別するための名称を示し、IPアドレスは、そのサーバについてのネットワーク上のアドレスを示す。なお、ホスト名は、監視対象のリソースを識別するための名称の一例である。管理処理部121は、このような定義情報111bを参照することで、監視対象のサーバの識別名やアクセス先を認識することができる。また、定義情報111bには、例えば、各ホスト名に対応付けて監視処理の内容を示す情報が登録されていてもよい。
以下、図3に戻って説明を続ける。
ログ出力部122は、管理処理部121の処理の実行に応じてログを生成し、生成されたログをログ記憶部112に格納する。また、ログ出力部122は、所定の条件が満たされると、ログ記憶部112に格納された古いログをログ退避部113に退避させる。以下、このように条件に基づいて古いログが退避される処理を「ログ切り替え」と記載する。また、ログ切り替えが実行される条件を「ログ切り替え条件」と記載する。
ログ切り替え条件としては、次のいずれかが適用される。1つは、ログ記憶部112に蓄積されたログの総データサイズが一定サイズを超えた場合である。他の1つは、ログに記録された生成時刻の情報に基づき、ログ記憶部112に蓄積されたログの中に、現時刻より所定時間だけ前の時刻より前に生成されたログが存在した場合である。
ログ出力部122は、ログ切り替え条件が満たされると、ログ切り替え条件が満たされなくなるように、ログ記憶部112に格納されたログを生成時刻が古い方からログ退避部113に退避させる。これにより、ログ記憶部112には、直近に生成された一定サイズ分または一定期間分のログが記憶されるようになり、それより古いログはログ退避部113に移動される。
以下、ログ切り替えが実行されるたびにログ退避部113に退避されるログを、「世代」という文言を用いて表現する。例えば、1回のログ切り替えによってログ退避部113に退避されたログを「1世代分のログ」と表現する。
ログ切り替えが実行されると、ログ退避部113に退避された1世代分のログを用いて、ブロック化処理部123、テンプレート化処理部124および異常ログ検出部125によるログの保存サイズ削減処理が実行される。この処理は、ログ退避部113に退避されたログの中から異常を示す異常ログを検出して異常ログ記憶部115に保存するとともに、残りのログ(正常ログ)のデータ量を圧縮してテンプレート記憶部114に保存するものである。なお、ログ退避部113は、退避されたログを用いた上記の保存サイズ削減処理が完了するまでの間、それらのログを一時的に記憶する。
次に、ブロック化処理部123、テンプレート化処理部124および異常ログ検出部125の処理の詳細について説明する。
<ブロック化処理>
ブロック化処理部123は、ログ退避部113に退避されたログをブロック化してログブロックを抽出する。例えば、処理の識別番号やログの生成時刻に基づいて、ログがブロック化される。これにより、ひとまとめの処理に対応する複数のログが1つのログブロックにまとめられる。
ここで、図6~図9に、ログ退避部113に退避されたログを示すログファイルの例を示し、ログのブロック化の具体例について説明する。
図6は、ログファイルの第1の例を示す図である。図6に示すログファイル131は、ジョブ管理の実行に伴って出力されるログの内容の一例である。このログファイル131には、例えば、実行対象のジョブについて、その実行を開始したことや、実行が正常に完了したか否かについてのログが記録されている。
このようなログには、システム管理者による解析作業を効率化するために、同じ目的や同じサーバで実行されるひとまとめのジョブを識別するためのID(IDentification)番号が記録されることが多い。図6の例では、「IDxxxxx」という形式で記録される設定値が、このようなID番号を示す。図6の例では、1つのジョブネットに属するジョブの実行に伴って出力されるログに対して、同一のID番号が付与されている。
ブロック化処理部123は、このようなID番号に基づき、同一のID番号が記録されたログを1つのログブロックにブロック化する。図6の例では、領域131aに含まれる「ID00008」が記録されたログが、1つのログブロックにブロック化される。
図7は、ログファイルの第2の例を示す図である。図7に示すログファイル132も、図6のログファイル131と同様に、ジョブ管理の実行に伴って出力されるログの内容の一例である。そして、図6のログファイル131と同様に、図7のログファイル132の各行のログにも、ID番号が記録されている。
ジョブの実行状況によっては、あるジョブネットに属するジョブの実行中に別のジョブネットに属するジョブが実行される場合がある。そのため、同一のジョブネットに含まれるすべてのジョブに関するログが連続して出力されるとは限らない。図7のログファイル132では、「ID00009」が付与されたジョブネットN1の実行途中に、「ID00010」が付与されたジョブネットN5の実行も開始されている。このため、ともに「ID00009」が記録されたログを含む領域132aと領域132bとの間に、「ID00010」が記録された2行のログが存在している。このような場合、ブロック化処理部123は、同一のID番号が記録された領域132a,132bに含まれるログを、1つのログブロックにブロック化する。
図8は、ログファイルの第3の例を示す図である。図8に示すログファイル133は、システム監視の実行に伴って出力されるログの内容の一例である。このログファイル133には、例えば、監視対象のサーバに対するポーリングの結果として、所定の処理や機能が正常に動作しているか否か、所定の性能が出ているか否かについてのログが記録されている。
このようなログには、ID番号の一例として、ログを出力したプロセスを識別するプロセスIDが記録されることがある。図8の例では、[xxxx]という形式で記録された数字、または数字とアルファベットとの組み合わせによる設定値が、このようなプロセスIDを示す。ブロック化処理部123は、このようなプロセスIDに基づき、同一のプロセスIDが記録されたログを1つのログブロックにブロック化する。図8の例では、領域133aに含まれるプロセスID[229a]が記録されたログが1つのログブロックにブロック化され、領域133bに含まれるプロセスID[234c]が記録されたログが別の1つのログブロックにブロック化される。
図9は、ログファイルの第4の例を示す図である。図9に示すログファイル134も、図8のログファイル133と同様に、システム監視の実行に伴って出力されるログの内容の一例である。
図6~図8のようなひとまとめの処理に対応するログを識別するID番号がログに記録されていない場合、ブロック化処理部123は、ログに記録された時刻情報に基づいてログブロックを抽出することができる。例えば、ブロック化処理部123は、隣接する行の間での時刻差が一定時間以内であるログの集合を、1つのログブロックとして抽出する。図9の例では、領域134aに含まれるログが1つのログブロックにブロック化され、領域134bに含まれるログが別の1つのブロックにブロック化される。例えば、システム監視の処理では、24時間ごとといった一定時間間隔で1つの監視対象に対する一連の監視処理が繰り返し実行される場合がある。このような場合、上記方法によってひとまとめの処理に対応するログをブロック化することができる。
<テンプレート化処理>
テンプレート化処理部124は、ブロック化処理部123によって生成されたログブロックに含まれるログから可変部分を抽出し、抽出された可変部分の情報をあらかじめ決められたシンボルに置換することで、ログブロックを暫定テンプレートに変換する。この「暫定テンプレート」とは、テンプレート記憶部114に正式に記憶されたテンプレートと比較されるテンプレートを意味する。以下、テンプレート記憶部114に正式に記憶されたテンプレートを「正規テンプレート」と記載する。
また、テンプレート化処理部124は、ログブロックの可変部分に設定されていた情報を含む可変値情報を生成し、可変値情報を暫定テンプレートに対応付けておく。これにより、暫定テンプレートとこれに対応する可変値情報とを含む「暫定テンプレート情報」が生成される。
図10は、テンプレートおよび可変値情報の例を示す図である。図10に示すテンプレート141aおよび可変値情報142aは、図6に示したログファイル131の領域131aから抽出されたログブロックに基づいて生成される暫定テンプレート情報の一例である。
前述のように、テンプレート化処理部124は、まず、ログブロックに含まれる各ログから可変部分を抽出する。ここで、ログに含まれる可変部分としては、例えば、日時(日付と時刻)、ID番号、数値、文字列といった項目がある。テンプレート化処理部124は基本的に、項目ごとにあらかじめ決められた形式を有する単語または単語列をログブロック内の各ログから抽出することで、可変部分を抽出する。
例えば、上記項目のうち日時は、一般的なフォーマットである。このため、テンプレート化処理部124は、各ログから日付、時刻の一般的なフォーマットに該当する単語列を、日付、時刻を示す可変情報として抽出する。図6の領域131aからは、例えば「2017/10/24」「11:10:00」が、それぞれ日付、時刻を示す可変情報として抽出される。
次に、テンプレート化処理部124は、ログの残りを単語ごとに分解する。例えば、上記項目のうちID番号は、上記のようにあらかじめ決められた形式を有するので、テンプレート化処理部124は、分解された単語の中からID番号の形式に合致する単語を、ID番号を示す可変情報として抽出する。図6の領域131aからは、「ID00008」がID番号を示す可変情報として抽出される。
また、上記項目のうち数値は、単なる数字または数字列であるので、テンプレート化処理部124は、分解された単語の中から数字だけを有する単語を、数値を示す可変情報として抽出する。図6の領域131aからは、4行目および6行目~8行目の各ログにおいて下線を引いて示した「0」が、数値を示す可変情報として抽出される。なお、これらの数値「0」は、ジョブが正常に完了したか否かを示すコード(end code)を示している。また、以下の説明では、可変情報として抽出される数値を「可変数値」と記載する。
なお、図9に示したログファイル134では、例えば、「SNMP=0」の「0」、「ifInOctes.2」の「2」、「mpCpuRateAve.1」の「1」などが、可変数値を示す可変情報として抽出される。
一方、上記項目のうち文字列は、ここでは、日時、ID番号、数値に分類されない文字列、または文字と数字との組み合わせを示すものとする。このような文字列としては、一般的には、文字列に含まれる文字や数字のパターンが多数存在するので、このような文字列を形式化してログから抽出することは難しい。しかし、システム管理の処理では、このような文字列としては、定義情報記憶部111に記憶された定義情報のように、処理で利用する情報として定義されていることが多い。そこで、テンプレート化処理部124は、ログから分解された単語の中から、定義情報記憶部111内の定義情報において定義された情報と一致するものを、文字列を示す可変情報として抽出する。
例えば、ジョブ管理では、図4に示したようにプロジェクト名、ジョブネット名、ジョブ名が定義情報111aに定義されているとともに、図6、図7に示したようにログにも記録される。そこで、テンプレート化処理部124は、例えば、図6の領域131aから、「プロジェクトP2」「ジョブネットN2」「ジョブJ4」「ジョブJ5」「ジョブJ6」を、それぞれ文字列を示す可変情報として抽出する。
また、システム監視では、図5に示したようにホスト名(監視対象のリソース名)やIPアドレス(監視対象リソースのアドレス)が定義情報111bに定義されているとともに、これらの情報がログにも記録され得る。例えば、図9の領域134aには、定義情報111bに定義されたホスト名「hostname.domain.com」が記録されている。また、図9の領域134bには、定義情報111bに定義されたホスト名「hostname1.domain.com」が記録されている。なお、図9ではこれらのホスト名について下線を引いて示している。テンプレート化処理部124は、図9の領域134aから「hostname.domain.com」を、また図9の領域134bから「hostname1.domain.com」を、それぞれ文字列を示す可変情報として抽出する。
なお、以下の説明では、可変情報として抽出される文字列を「可変文字列」と記載する。
テンプレート化処理部124は、以上のようにしてログブロックから抽出された可変情報を、項目の種類ごとにあらかじめ決められたシンボルに置換する。ここでは例として、日付の可変情報が「%date」に、時刻の可変情報が「%time」に、ID番号の可変情報が「%id」に、可変数値の可変情報が「%d」に、可変文字列の可変情報が「%s」に、それぞれ変換される。
図6に示したログファイル131の領域131aから抽出されたログブロックが、上記の法則にしたがって可変情報がシンボルに置換されることによって、図10に示すテンプレート141aが暫定テンプレートとして生成される。また、図10に示すように、生成されたテンプレート141aに対応付けて、このログブロックに設定されていた可変情報(シンボルに置換された可変情報)が所定の順序で記録された可変値情報142aが生成される。この可変値情報142aにはさらに、ログ切り替えの世代を示す番号が記録される。
ただし、可変値情報142aでは、日時(日付、時刻)の可変情報については所要時間に変換されて記録される。所要時間は、ログブロックに対応する処理にかかった時間を示し、ログブロック内のログに記録された最も早い日時と最も遅い日時との差分として計算される。
なお、可変値情報142aにおいては、例えば、可変文字列については、ログブロックから抽出された順に記録される。可変数値についても、ログブロックから抽出された順に記録される。これにより、テンプレート141aと可変値情報142aとから元のログブロック内のログを復元できるようになる。ただし、日時の情報は元通り復元されないものの、世代番号からログが出力された時間帯を特定することは可能となる。
このように、テンプレート化処理部124により、例えば図10に示すテンプレート141a(暫定テンプレート)と可変値情報142aとを含む暫定テンプレートが生成される。一方、テンプレート記憶部114には、正規テンプレートと通常2以上の可変値情報とを含む「正規テンプレート情報」が登録されている。
図11は、テンプレート記憶部のデータ構成例を示す図である。
テンプレート記憶部114では、2以上のログブロックから変換された暫定テンプレートの内容が同一である場合に、これらの暫定テンプレートが1つの正規テンプレートに統合されて登録される。また、同一内容の暫定テンプレートにそれぞれ対応付けられていた可変値情報は、統合された1つの正規テンプレートに対応付けられた状態でテンプレート記憶部114に登録される。
図11の例では、正規テンプレートであるテンプレート141bに対して、4つの可変値情報142b~142eが対応付けて登録されている。これは、4つのログブロックから同一内容のテンプレート141bが生成され、4つのログブロックの可変部分に設定されていた情報がそれぞれ可変値情報142b~142eに登録されていることを示す。
なお、図11の例ではさらに、正規テンプレートであるテンプレート141cに対して、3つの可変値情報142f~142hが対応付けられている。また、正規テンプレートであるテンプレート141dに対して、2つの可変値情報142i,142jが対応付けられている。
さらに、正規テンプレートには、1つ以上の可変値統計情報が対応付けられる場合もある。可変値統計情報は、正規テンプレートに対応付けられた可変値情報のうち、所定世代数以上前のログから生成された可変値情報が、統計情報化されることで圧縮された情報である。可変値統計情報は、例えば、世代ごとに生成される。図11の例では、テンプレート141bに対して2世代分の可変値統計情報143a,143bが対応付けられ、テンプレート141cに対して1世代分の可変値統計情報143cが対応付けられている。
このように、テンプレート記憶部114に登録される正規テンプレート情報には、正規テンプレートと可変値情報に加えて、可変値統計情報が含まれる場合もある。
次に、テンプレート化処理部124は、ログブロックから生成された暫定テンプレート情報と、テンプレート記憶部114内の正規テンプレート情報とを比較することで、暫定テンプレートをいずれかの正規テンプレートとして利用するかを判定する。
図12は、暫定テンプレート情報と正規テンプレートとの比較処理の例を示す図である。なお、この図12以降では、可変値情報における世代数の記載を省略する。
図12では例として、暫定テンプレート情報として図10に示したテンプレート141aおよび可変値情報142aが用いられている。一方、テンプレート記憶部114には、正規テンプレート情報としてテンプレート141eおよび可変値情報142k~142mが登録されているとする。
ここで、暫定テンプレートであるテンプレート141aの内容と正規テンプレートであるテンプレート141eの内容とが一致したとする。この場合、テンプレート化処理部124は、テンプレート情報を統合させる。すなわち、テンプレート化処理部124は、可変値情報142aをテンプレート141eに対応付けてテンプレート記憶部114に追加登録し、暫定テンプレートであるテンプレート141eを破棄する。
一方、例えば、暫定テンプレートであるテンプレート141aの内容が、テンプレート記憶部114に登録されているすべての正規テンプレートの内容と一致しなかったとする。この場合、テンプレート化処理部124は、テンプレート141aと可変値情報142aを、新規の正規テンプレート情報としてテンプレート記憶部114に登録する。
以上のテンプレート化処理部124の処理により、可変部分に設定された値が異なるログブロックの間でも、可変部分の置換後のテンプレート同士が同じである場合には、ログブロックに含まれるデータ内容のパターンが同じであると判定される。これにより、異常ログ検出部125の処理により、データ内容のパターンが同じログブロック同士で可変部分に設定された値を比較することで、異常ログを検出できるようになる。
<異常ログ検出処理>
異常ログ検出部125は、可変値情報の比較と、時間情報に基づくスローダウンの検出という2通りの方法を用いて、異常ログを検出する。
まず、可変値情報の比較による異常ログの検出方法について説明する。なお、可変値情報の比較による異常ログの検出は、テンプレート記憶部114内にある程度の個数のテンプレート情報が登録されたことを示す所定の実行条件が満たされた後に、実行される。
図13は、可変値情報の比較処理の例を示す図である。図13では、テンプレート141eに対して4つの可変値情報142k~142nが対応付けられた正規テンプレート情報の一例を示している。
異常ログ検出部125は、このように同一のテンプレート141eに対応付けられた可変値情報142k~142nの間で、同じ項目の可変情報同士を比較する。このとき、異常ログ検出部125は、可変値情報142k~142nに含まれる可変情報の項目のうち、あらかじめ決められた特定の項目の可変情報同士のみを比較する。これにより、異常か否かを示す項目だけを用いて異常ログが判定されるので、異常ログを含まない可変値情報が異常ログを含むものと誤判定される可能性を低減できる。
図13の例では、可変値情報142k~142nの間で可変数値のみが比較される。可変値情報142k~142mでは互いに可変数値の値が一致するが、可変値情報142nの可変数値のみが他とは異なる。このため、可変値情報142nが異常と判定される。すなわち、可変値情報142nに対応するログブロックに、異常を示す異常ログが含まれていると判定される。
この場合、異常ログ検出部125は、テンプレート141eの可変情報の各項目(ただし、日時を除く)に、可変値情報142nに記録された可変情報を代入することで、可変値情報142nに対応する元のログブロックを復元する。異常ログ検出部125は、復元されたログブロックを異常ログを含む情報として異常ログ記憶部115に登録するとともに、テンプレート記憶部114から可変値情報142nを削除する。
ここで、図14は、ログファイルの第5の例を示す図である。この図14を用いて、特定の項目の可変情報のみを比較して異常ログを検出する理由について説明する。
図14に示すログファイル135は、図6のログファイル131と同様に、ジョブ管理の実行に伴って出力されるログの内容の一例である。ログファイル135からは、領域135aに含まれるログと、領域135bに含まれるログが、それぞれ個別のログブロックとしてブロック化される。そして、これらのログブロックからテンプレートが生成される。また、領域135a,135bのいずれに基づくログブロックでも、ジョブが正常に完了したか否かを示す「end code」に対応する可変数値が正常を示す「0」となっている。このため、いずれのログブロックにも異常ログは含まれない。
ところで、別の比較方法の例として、可変数値だけでなく、可変文字列同士も比較する方法が考えられる。図14の例では、領域135a内のログと領域135b内のログとの間では、可変文字列を示すプロジェクト名、ジョブネット名、ジョブ名が異なっている。このため、可変文字列同士も比較した場合、領域135a,135bのどちらかに基づくログブロックに異常ログが含まれると判定される。
しかし、ジョブ管理では、可変文字列を示すプロジェクト名、ジョブネット名、ジョブ名が異なっていても、管理対象が異なるだけで処理内容が同じである場合がある。例えば図14の場合、領域135aに含まれるログでは、プロジェクトP2、ジョブネットN2に属するジョブとして、まずジョブJ4が開始され、次にジョブJ5が開始され、ジョブJ4が終了した後にジョブJ6が開始され、ジョブJ5、ジョブJ6が順に終了したことが記録されている。一方、領域135bに含まれるログでは、プロジェクトP3、ジョブネットN3に属するジョブとして、まずジョブJ7が開始され、次にジョブJ8が開始され、ジョブJ7が終了した後にジョブJ9が開始され、ジョブJ8、ジョブJ9が順に終了したことが記録されている。
このように、領域135a,135bのいずれに含まれるログでも、3つのジョブの開始、終了の手順が同じになっている。このため、領域135a,135bのいずれに基づくログブロックには、同じ処理内容を示すログが記録されているといえる。ジョブ管理では、この例のように、プロジェクト名、ジョブネット名、ジョブ名といったジョブ識別のための名称として異なる名称が定義されている場合でも、処理手順やジョブの構成(依存関係)のような処理内容が同じであるケースがある。例えば、定期的に実行されるデータのバックアップ処理では、バックアップ元やバックアップ先が異なっていても、処理手順やジョブの構成は同じになるケースが多い。
上記のように、可変文字列同士も比較した場合には、領域135a,135bのどちらかに基づくログブロックに異常ログが含まれると判定されてしまう。しかし、本実施の形態では、テンプレート化処理部124によって可変文字列が所定のシンボルに置換されることで、テンプレートが生成される。これにより、可変文字列として設定されていた内容自体が異なっていても、ログブロック内での可変文字列の場所の出現位置が同じであれば、それらのログブロックは、同じ処理内容に対応するログが記録された、同じデータ内容のパターンを有すると判断される。そして、異常ログ検出部125により、可変文字列を用いずに可変数値だけを用いて比較が行われることで、異常ログの有無を正確に判定できる。すなわち、図14の例では、領域135a,135bのいずれに基づくログブロックにも、異常ログが存在しないと判定される。
また、システム監視の場合にも、同様に異常ログを正確に判定できる。システム監視では、ログブロック間で、可変文字列として記録されたホスト名やIPアドレスが異なる場合でも、監視対象のリソースの構成が同じであるために、ログブロックにおけるデータ内容のパターンが同じになるケースがある。
例えば、図9に示したログファイル134においては、可変文字列として下線で示すホスト名が記録されている。例えば、領域134aには、ホスト名を示す「hostname.domain.com」が記録され、これが可変文字列として抽出される。また、領域134bには、ホスト名を示す「hostname1.domain.com」が記録され、これが可変文字列として抽出される。このような領域134a,134bのいずれに基づくログブロックについても、テンプレート化によって同じ内容のパターンが含まれると判定される。したがって、ホスト名を示す可変文字列の違いによっていずれかのログブロックが異常ログを含むと誤判定されることがなくなる。
次に、図15は、正規テンプレート情報の例を示す図である。図15では、正規テンプレートであるテンプレート141fに対して1つの可変値情報142oが対応付けられた正規テンプレート情報の例を示している。
このように1つの可変値情報142oのみを有する正規テンプレート情報が、テンプレート記憶部114内にある程度の個数のテンプレート情報が登録されたことを示す所定の実行条件が満たされた状態において、テンプレート記憶部114に登録されているとする。この場合、テンプレート141fと同じ内容のテンプレートが過去に登録されていない。このことから、異常ログ検出部125は、テンプレート141fに対応するログブロックには異常ログが含まれており、テンプレート141fを正規テンプレートとして扱うべきでないと判定する。
なお、図15のテンプレート141fでは、異常が発生した場合に出力される情報が下線部に示した位置に記録され、この下線部のみが図10に示したテンプレート141aと異なっている。また、図9に示したログファイル134では、太線で示した位置には、異常が発生した場合に別のメッセージが記録される。これらの例のように、ログブロック内の情報のうち、可変情報の項目としての条件に合致しない情報が異常発生時に変更されるようなログブロックから、可変値情報が1つしか対応付けられない正規テンプレートが生成され得る。
ここで、本実施の形態に係る管理装置100によって実現される技術は、異常な事象の発生からその原因究明のための資料採取までの間に、ログの切り替えが発生して、原因究明に必要な古いログが削除されてしまうことを回避するものである。例えば、複数回異常が発生するような事象については、再現性があると考えられるので、ログ記憶部112に保存された切り替え前のログによって原因究明できる可能性が高い。一方、再現性に乏しい突発的な異常の事象については、その原因究明のためにできるだけ古いログを保存しておくことが望まれる。管理装置100では、図15で説明したように、可変値情報が1つしか含まれない正規テンプレート情報を異常と判定して、対応するログを保存しておくことで、このような突発的な異常の事象に関する古いログを確実に保存しておくことが可能になる。
異常ログ検出部125は、図15に示すテンプレート情報を異常と判定すると、次のような処理を実行する。異常ログ検出部125は、テンプレート141fの可変情報の各項目(ただし、日時を除く)に、可変値情報142oに記録された可変情報を代入することで、可変値情報142oに対応する元のログブロックを復元する。異常ログ検出部125は、復元されたログブロックを異常ログを含む情報として異常ログ記憶部115に登録するとともに、テンプレート記憶部114からテンプレート141fと可変値情報142oをともに削除する。
次に、図16は、正規テンプレート情報の他の例を示す図である。この図16を用いて、時間情報に基づくスローダウンの検出によって異常ログを検出する方法について説明する。
図16に示す正規テンプレート情報は、テンプレート141eと、4つの可変値情報142k~142m,142pと、1つの可変値統計情報143dとを含んでいる。ここで、可変値統計情報143dは、テンプレート141eに対応付けられた可変値情報のうち、所定世代数以上前のログから生成された可変値情報に基づいて生成された情報である。可変値統計情報143dには、サンプル数、平均時間、可変文字列および可変数値が記録される。
サンプル数は、可変値統計情報143dの生成の元になった過去の可変値情報の数を示す。平均時間は、この過去の可変値情報に記録されていた所要時間の平均値を示す。可変文字列には、この過去の可変値情報に記録されていた可変文字列が順に記録される。可変数値には、この過去の可変値情報に記録されていた可変数値が順に記録される。
異常ログ検出部125は、テンプレート141eに対応付けられている可変値情報142k~142m,142pの中から、所要時間が極端に長いものを、処理のスローダウン(遅延)という異常が発生したときのログに基づく可変値情報と判定する。この判定のために、異常ログ検出部125は、可変値統計情報143dを参照する。異常ログ検出部125は、可変値統計情報143dに記録された平均時間を、過去の正常時における所要時間の基準値として用い、可変値情報142k~142m,142pの中から所要時間が平均時間に対して所定数倍(例えば、10倍)のものを、異常と判定する。
図16の例では、可変値情報142pに記録された所要時間が、可変値統計情報143dに記録された平均時間の10倍以上になっている。このため、可変値情報142pが異常と判定される。この場合、異常ログ検出部125は、テンプレート141eの可変情報の各項目(ただし、日時を除く)に、可変値情報142pに記録された可変情報を代入することで、可変値情報142pに対応する元のログブロックを復元する。異常ログ検出部125は、復元されたログブロックを異常ログを含む情報として異常ログ記憶部115に登録するとともに、テンプレート記憶部114から可変値情報142pを削除する。
以上のような異常ログ検出部125の処理により、異常を示す情報としてログに明示的に記録された可変情報に基づく異常の事象に加えて、ログに明示的に現れない処理のスローダウンという異常の事象を示すログも特定することができる。
なお、上記の異常ログ検出部125の処理により、異常ログ検出の実行条件が満たされている場合、1世代分の異常ログ検出処理が完了した時点で、テンプレート記憶部114内のすべての正規テンプレートには2以上の可変値情報が対応付けられた状態となる。また、異常ログを含むと判定されたログブロックに基づく可変値情報はテンプレート記憶部114からすべて削除される。このため、テンプレート記憶部114内のすべての正規テンプレートには、正常なログブロックに基づく可変値情報のみが対応付けられた状態となる。
<可変値統計情報の生成>
異常ログ検出部125は、異常ログの検出処理が完了すると、最後に、テンプレート記憶部114に登録された古い可変値情報の内容を可変値統計情報に集約する。これにより、テンプレート記憶部114に登録された、正常時のログに基づく情報のデータサイズを圧縮することができる。
図17は、可変値統計情報の生成例を示す図である。図17には、テンプレート141eと可変値情報142k~142m,142qとを含む正規テンプレート情報を例示している。
ここでは例として、現世代から9世代前までの10世代分の可変値情報のみをテンプレート記憶部114に残し、それより古い世代の可変値情報を可変値統計情報に集約するものとする。図17の例では、可変値情報142m,142qが9世代前のログに基づくものであり、可変値情報142k,142lが10世代前のログに基づくものであるとする。
この場合、異常ログ検出部125は、可変値情報142k,142lに基づいて可変値統計情報143eを生成する。前述のように、可変値統計情報143eには、サンプル数、平均時間、可変文字列および可変数値が記録される。可変値統計情報143eは2つの可変値情報142k,142lから生成されるので、サンプル数は「2」となる。平均時間は、可変値情報142k,142lの各所要時間の平均から、「117.5秒」となる。可変文字列としては、可変値情報142k,142lに記録された可変文字列が順に抽出されて記録される。可変数値としては、可変値情報142k,142lに記録された可変数値が順に抽出されて記録される。
異常ログ検出部125は、このように生成された可変値統計情報143eを、テンプレート141eに対応付けてテンプレート記憶部114に登録する。そして、異常ログ検出部125は、可変値情報142k,142lをテンプレート記憶部114から削除する。これにより、過去の正常なログに基づく情報を保持し続けながら、テンプレート記憶部114の保存データサイズを削減できる。また、登録された可変値統計情報143eは、図16で説明したように、異常ログの検出にも用いられる。
<フローチャート>
次に、管理装置100の処理についてフローチャートを用いて説明する。
図18、図19は、ログの保存サイズ削減処理の全体の処理手順を示すフローチャートの例である。
ログ出力部122は、ログ切り替え条件が満たされると、ログ切り替え条件が満たされなくなるように、ログ記憶部112に格納されたログを生成時刻が古い方からログ退避部113に退避させる。ログ切り替え条件は、例えば、ログ記憶部112に蓄積されたログの総データサイズが一定サイズを超えた場合である。あるいは、ログ切り替え条件は、ログに記録された生成時刻の情報に基づき、ログ記憶部112に蓄積されたログの中に、現時刻より所定時間だけ前の時刻より前に生成されたログが存在した場合である。ログ出力部122によってログ退避部113に対する1世代分のログの退避が完了すると、図18の処理が開始される。
[ステップS11]ブロック化処理部123は、ログ退避部113に退避されたログの中に、ID番号が含まれているかを判定する。ID番号が含まれている場合、処理はステップS12に進められ、ID番号に基づくログのブロック化処理が実行される。一方、ID番号が含まれていない場合、処理は図19のステップS31に進められ、ログに記録された時刻情報に基づくログのブロック化処理が実行される。
[ステップS12]ブロック化処理部123は、ログ退避部113からログを1行取得する。
[ステップS13]ブロック化処理部123は、取得したログからID番号を抽出し、このID番号が既出のID番号かを判定する。「既出のID番号」とは、すでにステップS12の処理を1回以上実行済みの場合に、実行済みのステップS12においてログから抽出されたID番号を示す。ブロック化処理部123は、ID番号が既出でない場合、ステップS14の処理を実行する。一方、ブロック化処理部123は、ID番号が既出の場合、処理をステップS12に進めて、次の1行のログを取得する。
[ステップS14]ブロック化処理部123は、ログ退避部113から、ステップS12で読み込んだログから抽出されたID番号と同じID番号が記録されているログをすべて取得する。
[ステップS15]ブロック化処理部123は、ステップS12,S14で取得したログの数(行数)が、ログ退避部113に退避されたログの全体数(全体の行数)の1割を超えたかを判定する。ブロック化処理部123は、取得したログの数が全体の1割以下の場合、ステップS16の処理を実行する。一方、取得したログの数が全体の1割を超えている場合、取得したログの数が過多であり、ひとまとめの処理に対応するログではない可能性が高いと判定される。この場合、ブロック化処理部123は、抽出されたID番号がブロック化に適さないものと判定して、ここまでの処理を破棄して図19のステップS31に処理を進める。
[ステップS16]ブロック化処理部123は、ステップS12,S14で取得したログをブロック化して、ログブロックを生成する。
[ステップS17]テンプレート化処理部124は、生成されたログブロックのテンプレート化処理を実行する。この処理では、テンプレート化処理部124は、ログブロックを基に、暫定テンプレートと可変値情報とを含む暫定テンプレート情報を生成する。
[ステップS18]テンプレート化処理部124は、生成された暫定テンプレートと、テンプレート記憶部114に記憶された正規テンプレートとの比較処理を実行する。この処理では、テンプレート化処理部124は、暫定テンプレートをいずれかの正規テンプレートに統合する処理、または、暫定テンプレート情報を新規の正規テンプレート情報としてテンプレート記憶部114に登録する処理のいずれかが実行される。
[ステップS19]ブロック化処理部123は、ステップS12,S14の実行により、ログ退避部113に退避されたすべてのログを取得済みかを判定する。ブロック化処理部123は、未取得のログがある場合、処理をステップS12に進めて未取得のログを取得し、すべてのログを取得済みの場合、処理をステップS20に進める。
[ステップS20]異常ログ検出部125は、この時点でテンプレート記憶部114に記憶されている正規テンプレート情報を用いて、異常ログの検出処理を実行する。
[ステップS21]ブロック化処理部123は、ログ退避部113に退避されたログを消去する。
以下、図19を参照して説明を続ける。
[ステップS31]ブロック化処理部123は、ログ退避部113からログを1行取得する。なお、図18のステップS15の次にステップS31が実行された場合、退避されたログの先頭からあらためてログが取得される。
[ステップS32]ブロック化処理部123は、ステップS31で取得したログの時刻と、退避された他のログの時刻とを比較し、ステップS31で取得したログと近い時刻が記録された他のログを取得する。この処理では、まず、退避された他のログの中から、ステップS31で取得したログとの時刻の差が一定時間以下のログが抽出される。さらに、未抽出の他のログの中から、抽出されたログとの時刻の差が一定時間以下のログが抽出される。このようにして、時刻が近いログの集合が取得される。ブロック化処理部123は、抽出されたログをブロック化して、ログブロックを生成する。
[ステップS33]テンプレート化処理部124は、生成されたログブロックのテンプレート化処理を実行する。この処理内容は、図18のステップS17と同様である。
[ステップS34]テンプレート化処理部124は、生成された暫定テンプレートと、テンプレート記憶部114に記憶された正規テンプレートとの比較処理を実行する。この処理内容は、図18のステップS18と同様である。
[ステップS35]ブロック化処理部123は、ステップS31,S32の実行により、ログ退避部113に退避されたすべてのログを取得済みかを判定する。ブロック化処理部123は、未取得のログがある場合、処理をステップS31に進めて未取得のログを取得し、すべてのログを取得済みの場合、処理を図18のステップS20に進める。
図20は、テンプレート化処理の手順を示すフローチャートの例である。この図20の処理は、図18のステップS17および図19のステップS33の処理に対応する。
[ステップS41]テンプレート化処理部124は、図18のステップS16または図19のステップS32で生成されたログブロックから、ログを読み取る。ステップS41の実行のたびに、ログブロックの先頭側から順にログが読み取られる。
[ステップS42]テンプレート化処理部124は、読み取ったログから日付および時刻を示す可変部分を抽出する。テンプレート化処理部124は、日付を示す可変情報を「%date」に置換し、時刻を示す可変情報を「%time」に置換する。
[ステップS43]テンプレート化処理部124は、読み取ったログからログIDを示す可変情報を抽出し、ログIDを示す可変情報を「%id」に置換する。
[ステップS44]テンプレート化処理部124は、読み取ったログから可変数値を示す可変情報を抽出し、可変数値の可変情報を「%d」に置換する。
[ステップS45]テンプレート化処理部124は、読み取ったログの残りの部分を単語単位で分割する。
[ステップS46]テンプレート化処理部124は、定義情報記憶部111を参照し、分割された単語の中に、定義情報記憶部111に定義された情報と一致する単語があるかを判定する。テンプレート化処理部124は、一致する単語があった場合、ステップS47の処理を実行し、一致する単語がなかった場合、ステップS48の処理を実行する。
[ステップS47]テンプレート化処理部124は、定義情報記憶部111に定義された情報と一致した単語、すなわち可変文字列を示す可変情報を、「%s」に置換する。
[ステップS48]テンプレート化処理部124は、ログブロック内のすべてのログをステップS41で読み取り済みかを判定する。テンプレート化処理部124は、読み取り済みでないログがある場合、処理をステップS41に進めて、次のログを読み取る。一方、テンプレート化処理部124は、すべてのログを読み取り済みの場合、ステップS49の処理を実行する。
[ステップS49]テンプレート化処理部124は、ステップS42~S44,S47の処理によって可変情報がシンボルに置換されたログブロックを、暫定テンプレートとしてRAM102に一時的に保存する。また、テンプレート化処理部124は、ステップS42~S44,S47でシンボルに置換された元の可変情報を用いて可変値情報を生成し、生成された可変値情報を暫定テンプレートに対応付けてRAM102に一時的に保存する。これにより、暫定テンプレートと可変値情報とを含む暫定テンプレート情報が生成される。
図21は、正規テンプレートとの比較処理の手順を示すフローチャートの例である。この図21の処理は、図18のステップS18および図19のステップS34の処理に対応する。
[ステップS51]テンプレート化処理部124は、図18のステップS17または図19のステップS33で生成された暫定テンプレートと、この時点でテンプレート記憶部114に記憶されている各正規テンプレートとを比較する。
[ステップS52]テンプレート化処理部124は、暫定テンプレートが正規テンプレートのいずれかと一致した場合、ステップS53の処理を実行し、暫定テンプレートがいずれの正規テンプレートとも一致しなかった場合、ステップS54の処理を実行する。
[ステップS53]テンプレート化処理部124は、暫定テンプレートに対応付けられている可変値情報を、暫定テンプレートと一致した正規テンプレートに対応付けてテンプレート記憶部114に登録する。また、テンプレート化処理部124は、暫定テンプレートを破棄する。
[ステップS54]テンプレート化処理部124は、暫定テンプレートと1つの可変値情報とが対応付けられた暫定テンプレート情報を、新規の正規テンプレート情報としてテンプレート記憶部114に登録する。
図22は、異常ログの検出処理の手順を示すフローチャートの例である。この図22の処理は、図18のステップS20の処理に対応する。
[ステップS61]異常ログ検出部125は、検出処理の実行条件を満たすかを判定する。異常ログ検出部125は、実行条件を満たす場合、ステップS62の処理を実行する。一方、異常ログ検出部125は、実行条件を満たさない場合、処理を終了する。
この実行条件とは、テンプレート記憶部114内にある程度の個数のテンプレート情報が登録されたことを示すものであり、例えば次のような条件が用いられる。一例として、テンプレート記憶部114に所定個数以上の正規テンプレートが登録されている、という条件が用いられる。他の例として、テンプレート記憶部114に所定個数以上の可変値情報が登録されている、という条件を用いることもできる。他の例として、テンプレート記憶部114に所定世代数以上のログに基づく可変値情報が登録されている、という条件を用いることもできる。
[ステップS62]異常ログ検出部125は、テンプレート記憶部114に記憶された正規テンプレートの中から、処理対象の正規テンプレートを選択する。
このステップS62では、ステップS61で最初に実行条件を満たすと判定された場合には、テンプレート記憶部114に記憶されたすべての正規テンプレートの中から、処理対象の正規テンプレートが選択される。一方、ステップS61で2回目以降に実行条件を満たすと判定された場合には、図21のステップS53で可変値情報が追加された正規テンプレート、およびステップS54で新規に登録された正規テンプレートの中から、処理対象の正規テンプレートが選択される。これは、ステップS62以降が1回実行された後、該当する正規テンプレート以外の正規テンプレートには、異常ログを含むログブロックから生成された可変値情報が対応付けられていない状態になるからである。
[ステップS63]異常ログ検出部125は、処理対象の正規テンプレートに対応付けられた可変値情報が、複数存在するかを判定する。異常ログ検出部125は、可変値情報が複数存在する場合、ステップS64の処理を実行し、可変値情報が1つだけ存在する場合、ステップS68の処理を実行する。
ただし、可変値情報が1つだけ対応付けられている場合でも、可変値統計情報が対応付けられている場合には、処理はステップS64に進められる。
[ステップS64]異常ログ検出部125は、処理対象の正規テンプレートに対応付けられた各可変値情報を参照し、各可変値情報に記録された可変数値がすべて同じかを判定する。異常ログ検出部125は、可変数値がすべて同じ場合、ステップS65の処理を実行し、可変数値の少なくとも1つが他の可変数値と異なる場合、ステップS68の処理を実行する。
ただし、可変値統計情報が対応付けられておらず、かつ、可変値情報が2つのみ対応付けられている場合には、可変数値の値に関係なく、処理がステップS65に進められる。
また、可変値情報が1つだけ対応付けられている場合、可変値情報の可変数値が可変値統計情報内の可変数値と同じかが判定される。これらが同じ場合、処理はステップS65に進められ、異なる場合、処理はステップS68に進められる。なお、可変値統計情報は、異常ログに対応する情報を排除した後に、異常ログを含まないログブロックに基づく古い可変値情報から生成される。このため、1つの正規テンプレートに対応付けられたすべての可変値統計情報では、可変数値の値が同じ値になる。
[ステップS65]異常ログ検出部125は、処理対象の正規テンプレートに可変値統計情報が対応付けられているかを判定する。異常ログ検出部125は、可変値情報が対応付けられている場合、ステップS66の処理を実行し、可変値情報が対応付けられていない場合、ステップS67の処理を実行する。
[ステップS66]異常ログ検出部125は、処理対象の正規テンプレートに対応付けられた可変値統計情報から、平均時間を取得する。なお、可変値統計情報が複数対応付けられている場合、異常ログ検出部125は、各可変値統計情報に記録された平均時間とサンプル数とを基に、これらを統合した平均時間を算出する。
異常ログ検出部125は、正規テンプレートに対応付けられた可変値情報に記録されたすべての所要時間が、平均時間の10倍以下かを判定する。異常ログ検出部125は、すべての所要時間が平均時間の10倍以下の場合、ステップS67の処理を実行し、所要時間が平均時間の10倍を超える可変値情報がある場合、ステップS68の処理を実行する。
[ステップS67]異常ログ検出部125は、処理対象の正規テンプレートには、異常ログを含むログブロックに基づく可変値情報が対応付けられていないと判定する。この場合、異常ログ検出部125は、処理対象の正規テンプレートを含む正規テンプレート情報を、テンプレート記憶部114にそのまま残す。これにより、処理対象の正規テンプレートとともに、これに対応付けられたすべての可変値情報もテンプレート記憶部114に残される。
[ステップS68]異常ログ検出部125は、処理対象の正規テンプレートに、異常ログを含むログブロックに基づく可変値情報が対応付けられていると判定する。この場合、異常ログを含むログブロックが復元されて、異常ログ記憶部115に保存される。
ステップS63で「No」と判定された場合、異常ログ検出部125は、処理対象の正規テンプレートと、これに1つだけ対応付けられた可変値情報とを基にログブロックを復元し、復元されたログブロックを異常ログ記憶部115に登録する。そして、異常ログ検出部125は、処理対象の正規テンプレートとこれに対応付けられた可変値情報とを、テンプレート記憶部114から削除する。
ステップS64で「No」と判定された場合、異常ログ検出部125は、可変数値が他の複数の可変値情報の可変数値、または可変値統計情報の可変数値とは異なると判定された可変値情報を、異常ログを含むログブロックに基づく可変値情報として特定する。また、ステップS66で「No」と判定された場合、異常ログ検出部125は、所要時間が平均時間の10倍を超える可変値情報を、異常ログを含むログブロックに基づく可変値情報として特定する。異常ログ検出部125は、処理対象の正規テンプレートと、特定された可変値情報とを基にログブロックを復元し、復元されたログブロックを異常ログ記憶部115に登録する。そして、異常ログ検出部125は、特定された可変値情報をテンプレート記憶部114から削除する。
[ステップS69]異常ログ検出部125は、ステップS62で選択対象とされるすべての正規テンプレートについて、ステップS62~S68の処理を実行済みであるかを判定する。異常ログ検出部125は、未実行の正規テンプレートがある場合、処理をステップS62に進め、未実行の正規テンプレートを選択する。一方、異常ログ検出部125は、すべての正規テンプレートについて処理を実行済みである場合、ステップS70の処理を実行する。
[ステップS70]異常ログ検出部125は、この時点でテンプレート記憶部114に記憶されている正規テンプレート情報のそれぞれについて、次のような処理を実行する。異常ログ検出部125は、正規テンプレート情報に含まれる可変値情報の中から、10世代前の可変値情報を抽出する。該当する可変値情報が抽出された場合、異常ログ検出部125は、抽出された可変値情報を基に可変値統計情報を生成し、その可変値統計情報を正規テンプレートに対応付けてテンプレート記憶部114に登録する。これとともに、異常ログ検出部125は、抽出された可変値情報をテンプレート記憶部114から削除する。
以上説明した管理装置100では、出力されたログがブロック化された後、ログブロックがテンプレート化される。そして、同一内容のテンプレートに対応する可変値情報同士が比較されることで、異常ログを含むログブロックが異常ログ記憶部115への保存対象として選択される。これにより、異常ログを含むログブロックを検出して、異常ログ記憶部115に残しておくことができる。
保存データサイズの削減のためにログ記憶部112には所定サイズ分または所定期間分のログだけを残しておく場合でも、それより古い異常ログを示す情報だけを異常ログ記憶部115に残しておくことができる。そのため、ログの喪失のために異常の事象の原因を究明できない、という事態が発生する可能性を低減できる。
また、異常ログ検出のための可変値情報同士の比較の際には、テンプレート化のために利用された複数項目のうち特定の項目の可変情報だけが比較される。このような処理により、異常ログを含まないログブロックを保存対象として誤検出する可能性を低減できる。その結果、異常な事象の解析のために必要なログを確実に残しておきながら、異常ログ記憶部115に保存されるデータサイズを縮小できる。
異常ログ記憶部115の保存データサイズが縮小されること、および、異常ログを含む可能性の高いログブロックのみが異常ログ記憶部115に残されることで、異常な事象の解析のために必要な情報を異常ログ記憶部115から採取するための時間を短縮できる。その結果、異常の事象の原因究明に要する時間も短縮できる。
また、テンプレート記憶部114には、新たに生成されたログブロックとの比較のために、異常ログを含まないログブロックを示す情報も残される。これらの情報については、データ内容のパターンが共通するログブロックがテンプレートとして共通化されることで、そのデータサイズを圧縮できる。また、古いログに基づく可変値情報が可変値統計情報に集約されることで、さらにデータサイズを圧縮できる。
なお、上記の各実施の形態に示した装置(例えば、情報処理装置1、管理装置100)の処理機能は、コンピュータによって実現することができる。その場合、各装置が有すべき機能の処理内容を記述したプログラムが提供され、そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記憶装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記憶装置には、ハードディスク装置(HDD)、磁気テープなどがある。光ディスクには、CD(Compact Disc)、DVD(Digital Versatile Disc)、ブルーレイディスク(Blu-ray Disc:BD、登録商標)などがある。光磁気記録媒体には、MO(Magneto-Optical disk)などがある。
プログラムを流通させる場合には、例えば、そのプログラムが記録されたDVD、CDなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムまたはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムにしたがった処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムにしたがった処理を実行することもできる。また、コンピュータは、ネットワークを介して接続されたサーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムにしたがった処理を実行することもできる。