以下、本実施の形態について図面を参照して説明する。なお各実施の形態は、矛盾のない範囲で複数の実施の形態を組み合わせて実施することができる。
〔第1の実施の形態〕
まず、第1の実施の形態について説明する。第1の実施の形態は、大量のメッセージの中から、所定の順番で出力された複数の関連するメッセージの組を判定する判定方法である。この判定方法は、例えば当該判定方法の手順を記述した判定プログラムを、情報処理装置に実行させることで実現できる。
図1は、第1の実施の形態に係る判定方法の概要を示す図である。情報処理装置10は、複数のサーバ1〜3に接続されている。サーバ1は、ソフトウェア1aを実行する。そしてサーバ1は、ソフトウェア1aの実行過程で出力したメッセージ4a〜4cを、情報処理装置10に送信する。サーバ2は、ソフトウェア2aを実行する。そしてサーバ2は、ソフトウェア2aの実行過程で出力したメッセージ5a〜5cを、情報処理装置10に送信する。サーバ3は、ソフトウェア3aを実行する。そしてサーバ3は、ソフトウェア3aの実行過程で出力したメッセージ6a〜6cを、情報処理装置10に送信する。
情報処理装置10は、記憶部11、処理部12、および表示部13を有する。記憶部11は、例えば情報処理装置10が有するメモリ、またはストレージ装置である。処理部12は、例えば情報処理装置10が有するプロセッサ、または演算回路である。表示部13は、液晶または有機EL(Electro Luminescence)などの表示装置である。
記憶部11は、メッセージの出力順を示すメッセージパターンを記憶する。
処理部12は、複数のソフトウェア1a,2a,3aそれぞれの実行により出力された複数のメッセージ4a〜4c,5a〜5c,6a〜6cを取得する。例えば処理部12は、複数のソフトウェア1a,2a,3aそれぞれの実行によりメッセージが出力されるごとに、出力されたメッセージを取得する。
処理部12は、取得した複数のメッセージ4a〜4c,5a〜5c,6a〜6cそれぞれに識別情報「T1〜T9」を付与する。例えば処理部12は、取得日時を示す日時情報を、識別情報として付与する。処理部12において日時情報を付与することで、各サーバ1〜3の内部時計が不正確な場合であっても、処理部12が付与した日時情報に基づいて、メッセージ間の先後関係や、連続するメッセージ間の時間間隔を正しく判断することができる。
さらに処理部12は、記憶部11を参照して、取得した複数のメッセージ4a〜4c,5a〜5c,6a〜6cに含まれるメッセージの組のうち、組に含まれる複数のメッセージの出力状況が、記憶部11に記憶されたメッセージパターンに対応する組を特定する。例えば処理部12は、取得した複数のメッセージ4a〜4c,5a〜5c,6a〜6cのうちの1以上のメッセージを組み合わせた組を生成する。そして処理部12は、生成した組のうち、組に含まれるメッセージの出力順がメッセージパターン通りの組を特定する。
そして処理部12は、特定した組に含まれるメッセージの識別情報を表示部13に表示する。
このように情報処理装置10によれば、複数のソフトウェア1a,2a,3aの実行により出力されたメッセージ4a〜4c,5a〜5c,6a〜6cの中から、メッセージの出力順を示すメッセージパターンに対応するメッセージの組が特定される。例えば図1の例では、「メッセージx1」が出力された後、「メッセージy2」が出力され、さらにその後、「メッセージz3」が出力されることを示すメッセージパターンが、記憶部11に格納されている。処理部12は、取得したメッセージ4a〜4c,5a〜5c,6a〜6cの中から、識別情報「T1」が付与されたメッセージ4a、識別情報「T7」が付与されたメッセージ5b、識別情報「T8」が付与されたメッセージ6cの組を特定する。そして処理部12は、特定した組に含まれる各メッセージの識別情報「T1」、「T7」、「T8」を表示する。
例えば複数のサーバ1〜3の連携処理についてのトラブル発生時に、情報処理装置10が、メッセージパターンと一致する時系列のメッセージの組の各メッセージの識別情報を表示する。これにより、そのトラブルの原因を迅速に特定することができる。例えば過去のトラブル対処事例に基づいて、予めメッセージパターンに対応付けて、そのメッセージパターンに対応するメッセージの組が出力されたときのトラブルの原因を示す情報を、記憶部11に格納しておくことができる。これにより、メッセージパターンと一致する時系列のメッセージの組が出力された場合、システム管理者は、そのメッセージパターンに対応付けられたトラブルの原因を示す情報を参照することで、トラブルの原因を容易に特定できる。
なおメッセージパターンに、時系列で連続するメッセージ間の最大の時間間隔を設定しておくこともできる。この場合、処理部12は、メッセージパターンに対応する組を特定する際に、取得した複数のメッセージ4a〜4c,5a〜5c,6a〜6cに含まれるメッセージの組の中から、最大の時間間隔についての条件を満たすメッセージの組を特定する。例えば処理部12は、組に含まれる複数のメッセージの出力順がメッセージパターン通りであり、時系列上で連続して出力されたメッセージ間の時間間隔がメッセージパターンに示す最大の時間間隔以下の組を特定する。
このようにメッセージパターンに、メッセージ間の時間間隔の条件を含めることで、トラブルの原因としてより適確な時系列のメッセージの組を特定することができる。
また、メッセージパターンには、特定のメッセージが出力されないことを、そのメッセージパターンに対応するメッセージの組の条件として定義することができる。例えばメッセージパターンに、時系列上、第1メッセージの出力後の所定期間内に第2メッセージが出力されないことを定義することができる。この場合、処理部12は、第1メッセージを取得した場合、取得した第1メッセージの出力後の所定期間内に第2メッセージが出力されたか否かを確認する。そして処理部12は、所定期間内に第2メッセージが出力されていない場合に、取得した第1メッセージを含み、メッセージパターンに対応する組を特定する。
このように、メッセージパターンにおいて、特定のメッセージが出力されないことを定義できるようにすることで、トラブルの原因としてより適確な時系列のメッセージの組を特定することができる。例えばトラブル発生時には出力されることがないメッセージ(処理の正常終了を示すメッセージなど)を、上記の第2メッセージとして、メッセージパターンに定義しておくことができる。これにより、所定期間内に第2メッセージが出力されたにもかかわらず、メッセージパターンに含まれるメッセージの組が、トラブルの原因に関連するものとして誤って特定されることを抑止できる。すなわち、トラブルの原因の特定精度が向上する。
〔第2の実施の形態〕
次に第2の実施の形態について説明する。第2の実施の形態は、複数のサーバで発生したハードウェアまたはソフトウェアのメッセージを、監視サーバで収集し、解析するものである。
図2は、第2の実施の形態のシステム構成の一例を示す図である。ネットワーク20を介して、複数のサーバ31,32,・・・と、それらの動作を監視する監視サーバ100とが接続されている。複数のサーバ31,32,・・・は、例えばwebサーバ、アプリケーションサーバ、DB(Data Base)サーバである。監視サーバ100は、複数のサーバ31,32,・・・それぞれがログとして記録したメッセージを収集し、メッセージを解析する。
図3は、監視サーバのハードウェアの一例を示す図である。監視サーバ100は、プロセッサ101によって装置全体が制御されている。プロセッサ101には、バス109を介してメモリ102と複数の周辺機器が接続されている。プロセッサ101は、マルチプロセッサであってもよい。プロセッサ101は、例えばCPU(Central Processing Unit)、MPU(Micro Processing Unit)、またはDSP(Digital Signal Processor)である。プロセッサ101がプログラムを実行することで実現する機能の少なくとも一部を、ASIC(Application Specific Integrated Circuit)、PLD(Programmable Logic Device)などの電子回路で実現してもよい。
メモリ102は、監視サーバ100の主記憶装置として使用される。メモリ102には、プロセッサ101に実行させるOS(Operating System)のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、メモリ102には、プロセッサ101による処理に利用する各種データが格納される。メモリ102としては、例えばRAM(Random Access Memory)などの揮発性の半導体記憶装置が使用される。
バス109に接続されている周辺機器としては、ストレージ装置103、グラフィック処理装置104、入力インタフェース105、光学ドライブ装置106、機器接続インタフェース107およびネットワークインタフェース108がある。
ストレージ装置103は、内蔵した記録媒体に対して、電気的または磁気的にデータの書き込みおよび読み出しを行う。ストレージ装置103は、コンピュータの補助記憶装置として使用される。ストレージ装置103には、OSのプログラム、アプリケーションプログラム、および各種データが格納される。なお、ストレージ装置103としては、例えばHDD(Hard Disk Drive)やSSD(Solid State Drive)を使用することができる。
グラフィック処理装置104には、モニタ21が接続されている。グラフィック処理装置104は、プロセッサ101からの命令に従って、画像をモニタ21の画面に表示させる。モニタ21としては、有機ELを用いた表示装置や液晶表示装置などがある。
入力インタフェース105には、キーボード22とマウス23とが接続されている。入力インタフェース105は、キーボード22やマウス23から送られてくる信号をプロセッサ101に送信する。なお、マウス23は、ポインティングデバイスの一例であり、他のポインティングデバイスを使用することもできる。他のポインティングデバイスとしては、タッチパネル、タブレット、タッチパッド、トラックボールなどがある。
光学ドライブ装置106は、レーザ光などを利用して、光ディスク24に記録されたデータの読み取りを行う。光ディスク24は、光の反射によって読み取り可能なようにデータが記録された可搬型の記録媒体である。光ディスク24には、DVD(Digital Versatile Disc)、DVD−RAM、CD−ROM(Compact Disc Read Only Memory)、CD−R(Recordable)/RW(ReWritable)などがある。
機器接続インタフェース107は、監視サーバ100に周辺機器を接続するための通信インタフェースである。例えば機器接続インタフェース107には、メモリ装置25やメモリリーダライタ26を接続することができる。メモリ装置25は、機器接続インタフェース107との通信機能を搭載した記録媒体である。メモリリーダライタ26は、メモリカード27へのデータの書き込み、またはメモリカード27からのデータの読み出しを行う装置である。メモリカード27は、カード型の記録媒体である。
ネットワークインタフェース108は、ネットワーク20に接続されている。ネットワークインタフェース108は、ネットワーク20を介して、他のコンピュータまたは通信機器との間でデータの送受信を行う。
以上のようなハードウェア構成によって、第2の実施の形態における監視サーバ100の処理機能を実現することができる。なお、複数のサーバ31,32,・・・それぞれも、図3に示した監視サーバ100と同様のハードウェアにより実現することができる。また、第1の実施の形態に示した情報処理装置10も、図3に示した監視サーバ100と同様のハードウェアにより実現することができる。
監視サーバ100は、例えばコンピュータ読み取り可能な記録媒体に記録されたプログラムを実行することにより、第2の実施の形態の処理機能を実現する。監視サーバ100に実行させる処理内容を記述したプログラムは、様々な記録媒体に記録しておくことができる。例えば、監視サーバ100に実行させるプログラムをストレージ装置103に格納しておくことができる。プロセッサ101は、ストレージ装置103内のプログラムの少なくとも一部をメモリ102にロードし、プログラムを実行する。また監視サーバ100に実行させるプログラムを、光ディスク24、メモリ装置25、メモリカード27などの可搬型記録媒体に記録しておくこともできる。可搬型記録媒体に格納されたプログラムは、例えばプロセッサ101からの制御により、ストレージ装置103にインストールされた後、実行可能となる。またプロセッサ101が、可搬型記録媒体から直接プログラムを読み出して実行することもできる。
監視サーバ100は、図3に示すハードウェアにより、ネットワーク20を介して、サーバ31,32,・・・からメッセージのログを収集する。
図4は、ログの収集例を示す図である。サーバ31には、ハードウェアとして、サーバ本体31aと周辺機器31b,31cを有している。サーバ本体31aは、プロセッサおよびメモリを有するコンピュータシステムである。周辺機器31b,31cは、ストレージ装置などの各種機器である。サーバ本体31aは、プロセッサやメモリの動作状態を示すメッセージを出力し、そのメッセージをログ41aとしてストレージ装置に格納する。周辺機器31b,31cは、それぞれ周辺機器31b,31cの動作状態を示すメッセージを出力し、そのメッセージをログ41b,41cとしてストレージ装置に格納する。
またサーバ31では、プロセッサによりOS31dを実行しており、OS31dの実行により提供される実行環境上で例えばミドルウェア31eが実行されている。そしてミドルウェア31eの実行により提供される実行環境上でアプリケーションソフトウェア31fが実行されている。サーバ31のプロセッサは、OS31dを実行することで、サーバ31の動作状態を示すメッセージを出力し、そのメッセージをログ41dとしてストレージ装置に格納する。またサーバ31のプロセッサは、ミドルウェア31eを実行することで、ミドルウェア31eの実行状態を示すメッセージを出力し、そのメッセージをログ41eとしてストレージ装置に格納する。さらにサーバ31のプロセッサは、アプリケーションソフトウェア31fを実行することで、アプリケーションソフトウェア31fの実行状態を示すメッセージを出力し、そのメッセージをログ41fとしてストレージ装置に格納する。
監視サーバ100は、サーバ31からログ41a〜41fを取得する。同様に、監視サーバ100は、他のサーバ32,・・・からもログを取得する。これによって監視サーバ100では、大量のメッセージを収集することができる。
大量のメッセージから、トラブルの原因特定に繋がるメッセージを効率良く短時間で検索・抽出するためには、以下の条件での検索が有効である。
第1の検索は、時系列関係および時間関係がある複数のメッセージの検索である。例えば過去の事例から、あるトラブル発生時には、3つのメッセージが時系列で所定の順番で出力され、連続するメッセージ間の時間間隔が1分以内であることが分かっていることがある。この場合、出力される3つのメッセージの時系列の関係と、連続するメッセージ間の時間間隔を条件としてメッセージの検索を行い、合致するメッセージ群(1以上のメッセージの組み合わせ)が検出されれば、過去事例と同じ原因であると特定できる。
第2の検索は、時系列関係および時間関係がある複数のメッセージのうちの、特定のメッセージが出力されていないことを確認するための、そのメッセージの検索である。例えば、あるコマンドの実行を要求するメッセージ出力後、5分以内に実行の終了を示す終了メッセージが出力されるという関係がある場合、5分以内に終了メッセージが出ていなければ、そのコマンドの実行過程でトラブルが発生していることが特定できる。
ここで図4に示したように、各サーバ31,32,・・・から収集したメッセージは、出力元が様々である。このような出力元の異なる多数のメッセージから、第1の検索および第2の検索を正確に実行するには、以下のような課題がある。
第1の課題は、複数のメッセージが所定の順番で出力されたこと、または出力されていないことを確認するのが困難なことである。例えば従来技術では、特定メッセージが出力されてから一定時間内に別のメッセージが出力されていないことを確認するための検索条件を指定することができない。トラブルの原因をある程度絞り込んだ後であれば、システム管理者が、時系列で出力される、あるいは出力されないメッセージの検索を個別に行い、複数のメッセージ間の時系列関係を確認するのは可能である。しかし、トラブルの原因が絞り込まれていない段階において、可能性のあるすべての原因に関して、関連する個々のメッセージの出力の有無を、人手で確認するのは非現実的である。
第2の課題は、出力元の異なる大量のメッセージに対して、日時による一括検索が困難な点である。様々なハードウェアまたはソフトウェアにより出力されたメッセージには、出力日時を示すタイムスタンプが付与されているが、メッセージの出力元ごとにタイムスタンプのフォーマットが異なる。例えば、日時の表記方法として「01:07:08 2014/05/12」と記述しているメッセージもあれば、「12/May/2014:01:07:38 +0900」と記述しているメッセージもある。従来技術では、このような異なるフォーマットの複数のメッセージについて、日時を指定した検索を一括で行うことができない。しかも、メッセージの出力元の内部時計が、不正確な場合もある。その場合、メッセージが出力された実際の日時と、そのメッセージに付与されたタイムスタンプに示される日時とに誤差が生じ、メッセージ間の時系列関係が不正確となる。
監視サーバ100は、上記の第1の課題および第2の課題を解決するために、以下のような処理を行う。
第1の課題を解決するために、監視サーバ100は、時系列で出力される複数のメッセージの出力パターン(メッセージパターン)を、メッセージパターン定義情報として、予め記憶しておく。メッセージパターン定義情報には、あるメッセージが出力されてから関連する次のメッセージが出力されるまでの時間も含まれる。またメッセージパターン定義情報には、あるメッセージが出力されてから別のメッセージが出力されていないことを確認する時間も含まれる。そして監視サーバ100は、出力されたメッセージをメッセージパターン定義情報に示されるメッセージパターンと照合し、メッセージパターンに合致するメッセージ群を検出する。
これは、トラブルの原因ごとに、別々のログにある複数のメッセージがパターン化できることに基づいている。すなわち、トラブル発見のきっかけとなるエラーなどのメッセージと、それ以前に出力され、原因の特定に役立つアラートなどのメッセージとの間に、一定の時間間隔がある。このような時間間隔を反映させたメッセージパターン定義を用いて、合致するメッセージ群の有無を検出することで、特定メッセージが出力されてから一定時間内に別のメッセージが出力されること、あるいは出力されないことを、確認できる。
第2の課題を解決するために、監視サーバ100は、複数のログに含まれるメッセージについて、監視サーバ100自身が、所定のフォーマットにより日時の情報を付与する。これにより、メッセージの出力・未出力についての時間監視に共通の時計を使うことができる。その結果、メッセージの出力元の時刻のずれの影響を受けずに、メッセージの時系列の関係、およびメッセージ間の時間間隔を正確に監視できる。しかも、日時の情報が共通のフォーマットで記述されていることで、出力元の異なる複数のメッセージであっても、各メッセージの出力時刻を認識することができる。
図5は、複数のサーバと監視サーバとが有する機能を示すブロック図である。サーバ31は、ログを監視サーバ100に送信するエージェント31gを有している。エージェント31gは、サーバ31内のハードウェアまたはソフトウェアに関するメッセージのログファイルへの出力を監視する。そしてエージェント31gは、メッセージの出力を検出すると、そのメッセージを監視サーバ100へ送信する。なおエージェント31gは、送信するメッセージに、そのメッセージの出力元のサーバ名とログファイル名とを付与する。他のサーバ32,・・・も、同様のエージェントを有している。
監視サーバ100は、記憶部110、ログ収集部120、監視対象登録部130、監視部140、および表示制御部150を有する。
記憶部110は、収集したメッセージ、およびメッセージの解析に用いる情報を記憶する。記憶部110としては、例えばメモリ102またはストレージ装置103の記憶領域の一部が使用される。記憶部110には、ログファイル111、メッセージパターン定義情報112、条件詳細情報113、制御テーブル114、および複数の個別ログファイル115a,115b,・・・が格納されている。ログファイル111は、複数のサーバ31,32,・・・それぞれから収集されたメッセージが記録されたファイルである。メッセージパターン定義情報112は、トラブルの原因を特定するための時系列でのメッセージの出力パターンを示す情報である。条件詳細情報113は、メッセージパターン定義情報112に示されるメッセージパターン内の各メッセージに合致する条件についての詳細情報である。制御テーブル114は、いずれかのメッセージパターンに少なくとも途中までは合致する時系列のメッセージ群についての管理情報が登録されたデータテーブルである。管理情報には、照合対象のメッセージパターンに沿って時系列上次に出力される、または出力されないメッセージについて、出力されたこと、または出力されなかったことを判定するための情報が示されている。個別ログファイル115a,115b,・・・それぞれは、メッセージパターン定義情報112に示されるいずれかのメッセージパターンと合致するメッセージ群が記録されたファイルである。
ログ収集部120は、複数のサーバ31,32,・・・それぞれからメッセージを収集する。例えばログ収集部120は、複数のサーバ31,32,・・・それぞれのエージェントが送信したメッセージを受信し、そのメッセージをログファイル111に書き込む。なお、ログ収集部120は、受信したメッセージに対して、受信した時点の日時を示すタイムスタンプを付与する。
監視対象登録部130は、メッセージパターン内の先頭のメッセージに合致するメッセージを検出し、そのメッセージパターンを照合対象のメッセージパターンとする。そして監視対象登録部130は、照合対象のメッセージパターンに沿った後続のメッセージの出力の有無を管理するための管理情報を、制御テーブル114に登録する。また監視対象登録部130は、照合対象のメッセージパターン内の先頭のメッセージに合致するメッセージが書き込まれた新たな個別ログファイルを生成し、生成した個別ログファイルを記憶部110に格納する。
監視部140は、照合対象のメッセージパターンに途中まで一致している時系列のメッセージ群に続けて、その照合対象のメッセージパターンに合致する次のメッセージの有無を監視する。監視部140は、照合対象のメッセージパターンに合致する次のメッセージの有無が確認できた場合、監視対象に対応する制御テーブル114内の管理情報を更新する。また監視部140は、照合対象のメッセージパターンに合致する次のメッセージが出力を検出した場合、検出したメッセージを、更新した管理情報に対応する個別ログファイルに、追加登録する。
表示制御部150は、メッセージパターン定義情報112で定義されているメッセージパターンのいずれかと一致するメッセージ群の情報を、モニタ21に表示する。例えば表示制御部150は、制御テーブル114を参照して、メッセージパターンに一致するメッセージ群を検出したことにより監視が終了したことを示す管理情報を検出する。そして表示制御部150は、検出した管理情報に対応する個別ログファイルの内容を、モニタ21に表示する。
なお、図5に示した各要素の機能は、例えば、その要素に対応するプログラムモジュールをコンピュータに実行させることで実現することができる。
次に、記憶部110に格納される情報について、具体的に説明する。
図6は、ログファイルの一例を示す図である。ログファイル111には、ログ収集部120が収集したメッセージごとのレコードが登録されている。各レコードには、ログ収集部120が付与したタイムスタンプ、出力元のサーバ名とログファイル名、および収集したメッセージが含まれる。
図6に示すように、収集したメッセージそれぞれにもタイムスタンプが含まれているが、日時の形式や、メッセージ内でのタイムスタンプの位置が、出力元によって異なる。また、メッセージ内でのタイムスタンプは、時刻にずれのある場合がある。さらに異なるタイムゾーンの時刻が、タイムスタンプとして記録されているメッセージもある。これらのメッセージに、ログ収集部120が、監視サーバ100における内部時計に基づく日時の情報をタイムスタンプとして付与することで、出力元が異なる複数のメッセージの出力日時が、共通の時計に基づいて管理される。
図7は、メッセージパターン定義情報の一例を示す図である。メッセージパターン定義情報112には、トラブル発生時に出力する、あるいは出力しないメッセージのパターンが登録されている。具体的には、メッセージパターン定義情報112には、メッセージパターンの定義名に対応付けて、そのメッセージパターンの成立条件を示す情報が時系列に登録されている。定義名は、メッセージパターンを識別するための名称である。
成立条件を示す情報には、項番、条件名、待ち時間、発生の有無が含まれる。
項番は、対応する条件のメッセージパターン内での時系列の出現順を示す数値である。項番「1」は、メッセージパターンの最初のメッセージに関する条件である。項番「1」の条件を、特に起点の条件と呼ぶ。メッセージパターンにおける項番が最大値である条件は、メッセージパターンの最後のメッセージに関する条件である。項番が最大値の条件を、特に終点の条件と呼ぶ。図7の例では、定義名「パターン1」のメッセージパターンでは、項番「3」の条件が終点の条件である。また、定義名「パターン2」のメッセージパターンでは、項番「2」の条件が終点の条件である。
条件名は、監視対象のメッセージの判別条件の名称である。なお、判別条件の具体的な内容は、条件詳細情報113に示される。待ち時間は、次のメッセージの判別条件が成立するか否かを監視する時間(次のメッセージが関連するメッセージであるための最大の時間間隔)である。発生の有無は、メッセージパターンの成立条件が、判別条件に合致するメッセージが発生することなのか、発生しないことなのかを示す情報である。
図7の例では、定義名「パターン1」のメッセージパターンは、「条件A」→「条件B」→「条件C」の順で、各判別条件を満たすメッセージが待ち時間以内に出力された場合に、そのメッセージパターンに一致するメッセージ群が成立する。また定義名「パターン2」のメッセージパターンは、「条件D」の判別条件を満たすメッセージが出力された後、待ち時間の間に「条件E」の判別条件を満たすメッセージが出力されない場合に、そのメッセージパターンの成立条件が満たされる。
図8は、条件詳細情報の一例を示す図である。条件詳細情報113には、メッセージの判別条件ごとのレコードが登録されている。判別条件のレコードには、条件名、対象サーバ、ログファイル名、grep文字列が含まれる。条件名は、判別条件の名称である。対象サーバは、メッセージの出力元のハードウェアまたはソフトウェアを有するサーバの名称である。ログファイル名は、メッセージの取得元のログファイルの名称である。取得元のログファイルとは、メッセージの出力元のハードウェアまたはソフトウェアに関するメッセージが書き込まれたサーバ31,32,・・・内のファイルである。grep文字列は、ログファイル111から、判別条件を満たすメッセージを検索するための検索条件を示す文字列である。grep文字列としては、例えばエラーメッセージの文字列の少なくとも一部、エラーコードなどが設定される。grep文字列を正規表現で表すこともできる。
図9は、制御テーブルの一例を示す図である。制御テーブル114には、照合対象のメッセージパターンに前方一致しているメッセージ群ごとのレコードが登録されている。各レコードには、管理番号、照合対象パターン、監視中条件、期限の欄が設けられている。管理番号の欄には、監視対象のメッセージパターンに前方一致しているメッセージ群の識別番号が設定される。照合対象パターンの欄には、該当するメッセージ群が部分一致しているメッセージパターンの定義名が設定される。監視中条件の欄には、監視対象のメッセージパターンに沿って、次に発生するまたは発生しないことを監視する対象の条件の条件名が設定される。期限の欄には、監視する対象の条件についての監視する期限が設定される。
制御テーブル114内のレコードは、監視中条件に合致するメッセージが期限内に出力されたとき、または監視中条件に合致するメッセージが期限内に出力されなかったときに更新される。
図10は、制御テーブルの更新例を示す図である。例えば図10の例では、時刻「10:51」に、「パターン1」の監視起点である「条件A」に合致するメッセージが出力されている。その結果、時刻「10:52」の時点では、制御テーブル114に、管理番号「inc0001」のレコードが登録されている。
時刻「10:53」に、「パターン1」の2番目の条件である「条件B」に合致するメッセージが出力されている。その結果、時刻「10:54」の時点では、制御テーブル114の管理番号「inc0001」のレコードの監視中条件と期限とが更新されている。
時刻「11:00」に、「パターン1」の監視起点である「条件A」に合致するメッセージが出力されている。その結果、時刻「11:01」の時点では、制御テーブル114に、管理番号「inc0002」のレコードが登録されている。
時刻「11:02」に、「パターン1」の終点である「条件C」に合致するメッセージが出力されている。その結果、時刻「11:03」の時点では、制御テーブル114の管理番号「inc0001」のレコードの監視中条件と期限とが更新されている。終点の条件が満たされたことで、監視中条件には、監視終了を示す情報「end」が設定されている。
時刻「11:04」までに、管理番号「inc0002」の監視中条件である「条件B」に合致するメッセージが出力されていない。その結果、時刻「11:05」の時点では、制御テーブル114の管理番号「inc0002」のレコードに対応するメッセージ群の監視が終了し、管理番号「inc0002」のレコードは制御テーブル114から削除されている。
時刻「13:00」に、「パターン2」の監視起点である「条件D」に合致するメッセージが出力されている。その結果、時刻「13:01」の時点では、制御テーブル114に、管理番号「inc0003」のレコードが登録されている。
時刻「13:03」までに、管理番号「inc0003」の監視中条件である「条件E」に合致するメッセージが出力されていない。「パターン2」では、「条件E」に合致するメッセージが発生しないことが成立条件となっているため、終点の条件が満たされたこととなる。その結果、時刻「13:04」の時点では、制御テーブル114の管理番号「inc0003」のレコードの監視中条件には、監視終了を示す情報「end」が設定されている。
時刻「14:10」に、「パターン2」の監視起点である「条件D」に合致するメッセージが出力されている。その結果、時刻「14:11」の時点では、制御テーブル114に、管理番号「inc0004」のレコードが登録されている。
時刻「14:12」に、管理番号「inc0004」の監視中条件である「条件E」に合致するメッセージが出力されている。「パターン2」では、「条件E」に合致するメッセージが発生しないことが成立条件となっているため、終点の条件が満たされないこととなる。その結果、時刻「14:14」の時点では、制御テーブル114の管理番号「inc0004」のレコードに対応するメッセージ群の監視が終了し、管理番号「inc0004」のレコードは制御テーブル114から削除されている。
なお図10に示したような制御テーブル114の更新処理の詳細は後述する(図16〜図19参照)。
次に監視サーバ100によるメッセージ監視処理について詳細に説明する。
図11は、監視対象登録処理の手順の一例を示すフローチャートである。以下、図11に示す処理をステップ番号に沿って説明する。
[ステップS101]監視対象登録部130は、ログファイル111に出力されたメッセージを取得する。例えばいずれかのサーバからメッセージが監視サーバ100に送信されると、ログ収集部120がそのメッセージを取得する。ログ収集部120は、取得したメッセージにタイムスタンプを付与し、ログファイル111に新たなレコードとして書き込む。監視対象登録部130は、ログ収集部120がメッセージをログファイル111に書き込んだとき、そのログファイル111から、書き込んだメッセージを含むレコードを取得する。
[ステップS102]監視対象登録部130は、メッセージパターン定義情報112に登録されているメッセージパターンのうちの、取得したメッセージが起点であるかどうかを未確認のメッセージパターンを1つ選択する。
[ステップS103]監視対象登録部130は、取得したメッセージが、選択したメッセージパターンの起点に合致するか否かを判断する。例えば監視対象登録部130は、メッセージパターン定義情報112から、選択したメッセージパターンの項番「1」の条件名を取得する。次に監視対象登録部130は、条件詳細情報113から、取得した条件名に対応するレコードを抽出し、抽出したレコードに示される条件と取得したメッセージとを比較する。例えば監視対象登録部130は、取得したメッセージの出力元とメッセージの内容とが合致するか否かを確認する。出力元の確認では、監視対象登録部130は、取得したメッセージが、抽出したレコードに示される対象サーバ内の該レコードに示されるログファイル名のログファイルから取得したメッセージであることを確認する。内容の確認では、監視対象登録部130は、取得したメッセージが、抽出したレコードに示すgrep文字列による検索に合致する文字列を含んでいることを確認する。監視対象登録部130は、出力元と内容との両方が合致した場合、取得したメッセージが、選択したメッセージパターンの起点に合致すると判断する。
監視対象登録部130は、取得したメッセージが起点に合致する場合、処理をステップS104に進める。また監視対象登録部130は、取得したメッセージが起点に合致しない場合、処理をステップS105に進める。
[ステップS104]監視対象登録部130は、選択したメッセージパターンを照合対象として、監視対象のメッセージ群を管理するための管理情報の追加処理を行う。この処理の詳細は後述する(図12参照)。
[ステップS105]監視対象登録部130は、メッセージパターン定義情報112に未確認のメッセージパターンがあるか否かを判断する。監視対象登録部130は、未確認のメッセージパターンがある場合、処理をステップS102に進める。また監視対象登録部130は、未確認のメッセージパターンがない場合、監視対象登録処理を終了する。
このようにして、取得したメッセージを起点とするメッセージパターンがある場合、対応する管理情報の追加処理が行われる。なお取得したメッセージを起点とするメッセージパターンが複数ある場合、複数の管理情報についての追加処理が行われる。
図12は、管理情報追加処理の手順の一例を示すフローチャートである。以下、図12に示す処理をステップ番号に沿って説明する。
[ステップS111]監視対象登録部130は、メッセージパターンが合致するか否かの監視対象とするメッセージ群を一意に識別する番号を、管理番号として採番する。
[ステップS112]監視対象登録部130は、次の監視の期限を決定する。例えば監視対象登録部130は、現在の日時に、照合対象のメッセージパターンの起点の条件の待ち時間を加算した日時を、監視の期限とする。
[ステップS113]監視対象登録部130は、制御テーブル114に、監視対象のメッセージ群の管理情報を示すレコードを追加する。例えば監視対象登録部130は、追加するレコードに、ステップS111で採番した管理番号、照合対象のメッセージパターンの定義名、そのメッセージパターンの起点の条件名、およびステップS112で決定した日時を設定する。
[ステップS114]監視対象登録部130は、監視対象のメッセージ群を記録する個別ログファイルを生成する。たとえば監視対象登録部130は、ステップS111に採番した管理番号を付与した個別ログファイルを生成し、その個別ログファイルにステップS101で取得したメッセージを含むレコードを書き込む。
このようにして、監視対象のメッセージ群に対応する管理情報の追加と、そのメッセージ群を登録する個別ログファイルが生成される。そして監視部140により、管理情報に基づいて、監視対象のメッセージ群が、照合対象のメッセージパターンの成立条件を満たすか否かが監視される。
図13は、監視処理の手順の一例を示すフローチャートである。以下、図13に示す処理をステップ番号に沿って説明する。
[ステップS121]監視部140は、ログファイル111に出力されたメッセージを取得する。
[ステップS122]監視部140は、制御テーブル114に登録されている監視対象のメッセージ群の管理情報のうち、未選択の管理情報を1つ選択する。
[ステップS123]監視部140は、現在の日時が、選択した管理情報に示されている期限を過ぎているか否かを判断する。監視部140は、期限を過ぎている場合、処理をステップS124に進める。また監視部140は、期限を過ぎていない場合、処理をステップS127に進める。
[ステップS124]監視部140は、照合対象のメッセージパターンにおける監視中条件の発生の有無が「する」か否かを判断する。監視部140は、発生の有無が「する」の場合、処理をステップS125に進める。また監視部140は、発生の有無が「しない」の場合、処理をステップS126に進める。
[ステップS125]監視部140は、監視解除処理を行う。監視解除処理の詳細は後述する(図14参照)。その後、監視部140は、処理をステップS131に進める。
[ステップS126]監視部140は、監視対象更新処理を行う。監視対象更新処理の詳細は後述する(図15参照)。その後、監視部140は、処理をステップS131に進める。
[ステップS127]監視部140は、取得したメッセージが、照合対象のメッセージパターンにおける監視中条件に合致するか否かを判断する。例えば監視部140は、選択した管理情報の監視中条件の条件名に基づいて、条件詳細情報113から、その条件名に対応する条件の詳細を取得する。監視部140は、取得した条件と、取得したメッセージとを照合し、合致するか否かを判断する。監視部140は、監視中条件に合致した場合、処理をステップS128に進める。また監視部140は、監視中条件に合致しなければ、処理をステップS131に進める。
[ステップS129]監視部140は、監視対象更新処理を行う。監視対象更新処理の詳細は後述する(図15参照)。その後、監視部140は、処理をステップS131に進める。
[ステップS130]監視部140は、監視解除処理を行う。監視解除処理の詳細は後述する(図14参照)。その後、監視部140は、処理をステップS131に進める。
[ステップS131]監視部140は、制御テーブル114に登録されている監視対象のメッセージ群の管理情報のうち、未確認の管理情報があるか否かを判断する。監視部140は、未確認の管理情報があれば、処理をステップS122に進める。また監視部140は、すべての管理情報について確認が完了した場合、監視処理を終了する。
このようにして、メッセージを取得すると、そのメッセージに関連する管理情報の監視解除処理または監視対象更新処理が行われる。
次に、監視解除処理について詳細に説明する。
図14は、監視解除処理の手順の一例を示すフローチャートである。以下、図14に示す処理をステップ番号に沿って説明する。
[ステップS141]監視部140は、制御テーブル114から、ステップS122で選択した管理情報を示すレコードを削除する。
[ステップS142]監視部140は、削除した管理情報に対応する個別ログファイルを削除する。例えば監視部140は、管理情報を削除する前に、ステップS122で選択した管理情報の管理番号を取得する。次に監視部140は、取得した管理番号が付与された個別ログファイルを、記憶部110から削除する。
次に、監視対象更新処理について詳細に説明する。
図15は、監視対象更新処理の手順の一例を示すフローチャートである。以下、図15に示す処理をステップ番号に沿って説明する。
[ステップS151]監視部140は、選択した管理情報の次の期限を計算する。例えば監視部140は、メッセージパターン定義情報112から、選択した管理情報における照合対象のメッセージパターンの現在の監視中条件の待ち時間を取得する。監視部140は、現在の日時に、取得した待ち時間を加算する。そして監視部140は、加算結果で示される日時を、次の期限に決定する。
[ステップS152]監視部140は、選択した管理情報の監視中条件が、照合対象のメッセージパターンの終点か否かを判断する。例えば監視部140は、メッセージパターン定義情報112から、選択した管理情報における照合対象のメッセージパターンの現在の監視中条件が、そのメッセージパターン中の最後の条件であれば、監視中条件が終点であると判断する。監視部140は、監視中条件が終点であれば、処理をステップS154に進める。また監視部140は、監視中条件が終点でなければ、処理をステップS153に進める。
[ステップS153]監視部140は、選択した管理情報の監視中条件と期限とを更新する。例えば監視部140は、メッセージパターン定義情報112から、選択した管理情報の照合対象のメッセージパターンにおいて、現在の監視中条件の次の項番の条件名を取得する。監視部140は、取得した条件名を、選択した管理情報の監視中条件として、その管理情報のレコードに設定する。また監視部140は、ステップS151で計算した期限を、選択した管理情報の監視中条件の期限として、その管理情報のレコードに設定する。その後、監視部140は、処理をステップS155に進める。
[ステップS154]監視部140は、選択した管理情報の監視中条件に、終了(end)を設定する。
[ステップS155]監視部140は、選択した管理情報に対応する個別ログファイルに、取得したメッセージを出力する。例えば監視部140は、選択した管理情報の管理番号を取得する。そして監視部140は、取得した管理番号が付与された個別ログファイルに、ステップS121で取得したメッセージを示すレコードを追加登録する。
このような処理によって、各メッセージパターンに一致する時系列のメッセージ群が検出され、個別ログファイルに格納される。
メッセージパターンを大別すると、特定のメッセージが発生しないことを条件に含むものと、そのような条件を含まないものとがある。図7の例では、定義名「パターン1」のメッセージパターンは、すべての条件について、発生の有無が「する」となっている。それに対して、定義名「パターン2」のメッセージパターンは、条件「条件E」について、発生の有無が「しない」となっている。以下、特定のメッセージが発生しないことを条件に含む場合と含まない場合とのそれぞれについて、受信したメッセージとメッセージパターンとの照合例を具体的に説明する。
図16は、メッセージパターンの第1の照合例を示す図である。図16には、定義名「パターン1」の定義情報によって定義されたメッセージパターンと、受信したメッセージとの照合例とを示している。
監視サーバ100は、まず時刻「10:51」に、条件「条件A」に合致するメッセージを取得している。条件「条件A」は、定義名「パターン1」のメッセージパターンにおける起点である。そこで監視部140は、定義名「パターン1」のメッセージパターンと一致するメッセージ群が出力されるか否かを監視するための管理情報を、制御テーブル114に登録する。具体的には監視部140は、制御テーブル114に、新たな管理番号「inc0001」を付与したレコードを、管理情報として追加する。監視部140は、追加した管理情報の照合対象パターンの欄に、照合対称とするメッセージパターンの定義名「パターン1」を設定する。また監視部140は、追加した管理情報の監視中条件に、「パターン1」において合致した条件「条件A」の次の条件「条件B」を設定する。さらに監視部140は、追加した管理情報の期限に、現在の日時「10:51」に、合致した条件「条件A」の待ち時間「4:00」を加算した日時「2016/6/8 10:55」を設定する。
また条件「条件A」に合致するメッセージの取得を検知すると、監視部140は、そのメッセージを含む新たな個別ログファイル151aを生成する。そして監視部140は、生成した個別ログファイル151aを、記憶部110に格納する。
次に監視サーバ100は、時刻「10:53」に、条件名「条件B」の条件に合致するメッセージを取得している。すると監視部140は、管理番号「inc0001」のレコードの監視中条件に、「パターン1」において合致した条件「条件B」の次の条件「条件C」を設定する。さらに監視部140は、管理番号「inc0001」のレコードの期限を、現在の日時「10:53」に、合致した条件「条件B」の待ち時間「10:00」を加算した日時「2016/6/8 11:03」を設定する。
また条件「条件B」に合致するメッセージの取得を検知すると、監視部140は、そのメッセージを個別ログファイル151aに追加する。
次に監視サーバ100は、時刻「11:02」に、条件「条件C」に合致するメッセージを取得している。条件「条件C」は、定義名「パターン1」のメッセージパターンの終点の条件である。そこで監視部140は、管理番号「inc0001」の管理情報の監視中条件に、監視終了を示す情報「end」を設定する。さらに監視部140は、管理番号「inc0001」のレコードの期限を、現在の日時「11:02」に、合致した条件「条件C」の待ち時間「00:00」を加算した日時「2016/6/8 11:02」を設定する。
また条件「条件C」に合致するメッセージの取得を検知すると、監視部140は、そのメッセージを個別ログファイル151aに追加する。
このようにして、制御テーブル114に、定義名「パターン1」のメッセージパターンに一致するメッセージ群が出力されたことを示す管理情報が記録される。そして、定義名「パターン1」のメッセージパターンに一致するメッセージ群が、個別ログファイル151aに格納される。
図17は、メッセージパターンの第2の照合例を示す図である。図17には、定義名「パターン1」の定義情報によって定義されたメッセージパターンと、受信したメッセージとの照合例とを示している。
監視サーバ100は、まず時刻「10:51」に、条件「条件A」に合致するメッセージを取得している。この場合、監視部140は、図16の例と同様に、定義名「パターン1」のメッセージパターンと一致するメッセージ群が出力されるか否かを監視するための管理情報を、制御テーブル114に登録する。また、監視部140は、そのメッセージを含む新たな個別ログファイル151bを生成し、生成した個別ログファイル151bを記憶部110に格納する。
その後、監視サーバ100は、管理情報の期限の日時「2016/6/8 10:55」を過ぎた時刻「10:56」まで、条件「条件B」に合致するメッセージを取得していない。この場合、監視部140は、管理番号「inc0001」の管理情報を、制御テーブル114から削除する。また監視部140は、個別ログファイル151bを記憶部110から削除する。
このように、照合対処のメッセージパターンと一致しないことが判明したメッセージ群については、対応する管理情報が削除される。これにより、照合対処のメッセージパターンと一致しないことが判明したメッセージ群は、以後の監視対象から除外される。
図18は、メッセージパターンの第3の照合例を示す図である。図18には、定義名「パターン2」の定義情報によって定義されたメッセージパターンと、受信したメッセージとの照合例とを示している。
監視サーバ100は、まず時刻「13:00」に、条件「条件D」に合致するメッセージを取得している。条件「条件D」は、定義名「パターン2」のメッセージパターンにおける起点である。そこで監視部140は、定義名「パターン2」のメッセージパターンと一致するメッセージ群が出力されるか否かを監視するための管理情報を、制御テーブル114に登録する。具体的には監視部140は、制御テーブル114に、新たな管理番号「inc0002」を付与したレコードを、管理情報として追加する。監視部140は、追加した管理情報の照合対象パターンの欄に、照合対称とするメッセージパターンの定義名「パターン2」を設定する。また監視部140は、追加した管理情報の監視中条件に、「パターン2」において合致した条件「条件D」の次の条件「条件E」を設定する。さらに監視部140は、追加した管理情報の期限に、現在の日時「13:00」に、合致した条件「条件D」の待ち時間「3:00」を加算した日時「2016/6/8 13:03」を設定する。
また条件「条件D」に合致するメッセージの取得を検知すると、監視部140は、そのメッセージを含む新たな個別ログファイル151cを生成する。そして監視部140は、生成した個別ログファイル151cを、記憶部110に格納する。
その後、監視サーバ100は、管理情報の期限の日時「2016/6/8 13:03」を過ぎた時刻「13:04」まで、条件「条件E」に合致するメッセージを取得していない。メッセージパターン「パターン2」の定義では、条件「条件E」に合致するメッセージの発生の有無が「しない」となっているため、条件が満たされたこととなる。また条件「条件E」は、定義名「パターン2」のメッセージパターンの終点の条件である。そのため、監視部140は、管理番号「inc0002」の管理情報の監視中条件に、監視終了を示す情報「end」を設定する。さらに監視部140は、管理番号「inc0002」のレコードの期限を、現在の日時「13:04」に、合致した条件「条件C」の待ち時間「00:00」を加算した日時「2016/6/8 13:04」を設定する。
このようにして、制御テーブル114に、定義名「パターン2」のメッセージパターンに一致するメッセージ群が出力されたことを示す管理情報が記録される。そして、定義名「パターン2」のメッセージパターンに一致するメッセージ群が、個別ログファイル151cに格納される。
図19は、メッセージパターンの第4の照合例を示す図である。図19には、定義名「パターン2」の定義情報によって定義されたメッセージパターンと、受信したメッセージとの照合例とを示している。
監視サーバ100は、まず時刻「13:00」に、条件「条件D」に合致するメッセージを取得している。この場合、監視部140は、図18の例と同様に、定義名「パターン2」のメッセージパターンと一致するメッセージ群が出力されるか否かを監視するための管理情報を、制御テーブル114に登録する。また、監視部140は、そのメッセージを含む新たな個別ログファイル151dを生成し、生成した個別ログファイル151dを記憶部110に格納する。
次に監視サーバ100は、時刻「13:02」に、条件名「条件E」の条件に合致するメッセージを取得している。メッセージパターン「パターン2」の定義では、条件「条件E」に合致するメッセージの発生の有無が「しない」となっているため、条件を満たさなかったこととなる。この場合、監視部140は、管理番号「inc0002」の管理情報を、制御テーブル114から削除する。また監視部140は、個別ログファイル151dを記憶部110から削除する。
このように、照合対処のメッセージパターンと一致しないことが判明したメッセージ群については、対応する管理情報の削除により、以後の監視対象から除外される。
システム管理者は、監視中条件が「end」となっている管理情報に対応する個別ログファイル151a,151cを参照することで、メッセージパターン定義情報112に示されたメッセージパターンに合致するメッセージ群の詳細な内容を確認することができる。
図20は、個別ログファイルの一例を示す図である。図20には、定義名「パターン1」のメッセージパターンに一致するメッセージ群が格納された個別ログファイル151aの具体例が示されている。
個別ログファイル151aは、ファイル名「inc0001.log」によって対応する管理番号が示されている。個別ログファイル151aには、定義名「パターン1」のメッセージパターンに示されている各条件に合致したメッセージが、該当メッセージの取得ごとに格納されている。各メッセージには、監視サーバ100で付与したタイムスタンプ、出力元のサーバのサーバ名、および出力元のログファイル名が含まれる。そして、定義名「パターン1」のメッセージパターンに示されている各条件に合致したメッセージを含む個別ログファイル151aの内容がモニタ21に表示される。
例えば表示制御部150は、システム管理者から、メッセージパターンと一致するメッセージ群の表示要求を受け取ると、監視中条件が「end」となっている管理情報に対応する個別ログファイルの内容を、モニタ21に表示する。また表示制御部150は、制御テーブル114を監視し、いずれかの管理情報の監視中条件に「end」と設定されたことを検出したときに、その管理情報に対応する個別ログファイルの内容を、モニタ21に表示することもできる。
システム管理者は、表示された個別ログファイル151aの内容を参照し、発生したトラブルの詳細を確認することができる。このような確認作業は、すべてのメッセージを記録したログファイル111の内容を確認して、トラブルの原因を調査する場合に比べて、極めて容易である。しかも、メッセージパターンと一致しなかったメッセージ群を格納した個別ログファイルは、記憶部110から削除されるため、システム管理者は、確認すべき個別ログファイル151aを容易に見つけ出すことができる。
〔その他の実施の形態〕
第2の実施の形態では、監視サーバ100において、取得したメッセージにタイムスタンプを付与しているが、各サーバ31,32,・・・がメッセージに付与したタイムスタンプが正確である場合、監視サーバ100はタイムスタンプを付与しなくてもよい。例えばサーバ31,32,・・・それぞれの内部時計の時刻合わせが定期的に行われている場合、サーバ31,32,・・・が付与したタイムスタンプの日時を信用することができる。
以上、実施の形態を例示したが、実施の形態で示した各部の構成は同様の機能を有する他のものに置換することができる。また、他の任意の構成物や工程が付加されてもよい。さらに、前述した実施の形態のうちの任意の2以上の構成(特徴)を組み合わせたものであってもよい。