以下、実施形態について、図面を参照しながら詳細に説明する。具体的には、図1を参照して第1実施形態についてまず説明し、その後、第1〜第3実施形態に共通する点について図2〜3の例を参照しながら説明する。そして、図4〜8を参照して第2実施形態について説明し、図9〜13を参照して第3実施形態について説明する。最後にその他の変形例についても説明する。
図1は、第1実施形態のコンピュータが実行する処理のフローチャートである。第1実施形態のコンピュータは、コンピュータシステムを管理する。
コンピュータシステムには、複数の構成アイテム(configuration items)が含まれる。構成アイテムの数は任意である。例えば、クラウド環境では、構成アイテムの数が数千から数万のオーダである場合もある。
各構成アイテムは、コンピュータシステムに含まれるハードウェア、ソフトウェア、または両者の組み合わせである。例えば、物理サーバ、L2(layer 2)スイッチ、L3(layer 3)スイッチ、ルータ、ディスクアレイ装置などのハードウェア装置は、いずれも、構成アイテムの例である。また、OS(Operating System)、ミドルウェア、アプリケーションソフトウェアなどの種々のソフトウェアは、いずれも、構成アイテムの例である。構成アイテムの粒度(granularity)によっては、例えば、あるハードウェア装置と、当該ハードウェア装置上で動作するソフトウェアの組み合わせが、1つの構成アイテムとして扱われてもよい。例えば、ある1つの構成アイテムは、ルータと、当該ルータ上で動作するファームウェアの組み合わせであってもよい。
コンピュータシステムの構成によっては、ある構成アイテムが、ある物理マシン上で直接動作する(running)OSであってもよい。また、別のある構成アイテムは、ハイパーバイザにより仮想化された物理マシン上で動作する仮想マシンのOSであってもよい。もちろん、ハイパーバイザ以外の仮想化技術が使われていてもよい。
ハイパーバイザ上で実行される仮想マシンは、実装に応じて、「仮想マシン」、「ドメイン」、「論理ドメイン」、「パーティション」などの名前で呼ばれることがある。また、ハイパーバイザ上では2つ以上の仮想マシンが実行され得るが、ある種の実装によれば、ある特定の仮想マシンが特別な役割を果たす。この特定の仮想マシンは「ドメイン0」や「制御ドメイン」などと呼ばれることがあり、その他の仮想マシンは「ドメインU」や「ゲストドメイン」などと呼ばれることがある。
また、特定の仮想マシン上のOSは「管理OS」または「ホストOS」などと呼ばれることがあり、他の仮想マシン上のOSは「ゲストOS」などと呼ばれることがある。例えば、ある種の実装によれば、ゲストOSは、ハイパーバイザを介してホストOSのデバイスドライバの機能を利用することにより、ハードディスク装置などのデバイスにアクセスする場合がある。
ところで、コンピュータシステムにおける障害(failure)の予兆(predictor)(すなわち障害の兆候(sign))を検出するための技術はいくつか提案されているが、単に予兆を検出するだけでは、実際の障害の発生を未然に防ぐには不十分な場合がある。具体的には、「コンピュータシステム内のどの構成アイテムに対して対策をとれば障害の発生を防止するうえで有益なのか」ということが不明だと、「障害の発生を防止する」という目的が十分に達せられないことがあり得る。例えば、「コンピュータシステム内のどの構成アイテムで障害が発生しそうなのか」ということが不明だと、「どの構成アイテムに対して対策をとることが有益なのか」も不明である。
そこで、第1実施形態のコンピュータは、図1のフローチャートにしたがって、「コンピュータシステム内のどの構成アイテムに対して対策をとれば、障害の発生を防止するうえで有益なのか」を示唆する情報を生成し、出力する。つまり、第1実施形態によれば、障害の発生を防止するうえで有益な情報が検出される。
まず、ステップS1において、コンピュータは、複数の種別のうちのある種別の障害の発生を予測する。または、ステップS1において、コンピュータは、当該ある種別の障害の発生が予測されることを示す予測通知を受け取る。
具体的には、コンピュータ自体が予測を行う場合、コンピュータは、P個のメッセージの組み合わせパターンである第1のメッセージパターンに基づいて、上記ある種別の障害の発生を予測する。第1のメッセージパターンは、換言すれば、P個のメッセージの組み合せであるような、第1のパターンである。ここで、P個のメッセージの各々は、コンピュータシステムの上記複数の構成アイテムのうちのQ個の構成アイテムのいずれかから出力されたメッセージである(1≦Q≦P)。また、P個のメッセージは、ある所定時間(以下では「第1の所定時間」という)以下の長さの期間中に出力されたものとする。P個のメッセージの各々は、具体的には、イベントの発生を知らせるメッセージである。
第1の所定時間の長さは実施形態に応じて任意である。例えば、第1の所定時間の長さは、1〜5分間程度の長さであってもよいし、それより短くても、それより長くてもよい。
例えば、第1の所定時間の長さが5分間であり、コンピュータシステムに1000個の構成アイテムが含まれ、ある5分間の間に1000個の構成アイテムのうち30個から、合計で50個のメッセージが出力されるとする。この場合、Q=30かつP=50である。このようにQ<Pの場合、少なくとも1つの構成アイテムは、上記期間中に2個以上のメッセージを出力している。もちろん、上記30個の構成アイテムの中には、上記期間中に1個しかメッセージを出力しないものがあってもよい。
また、各メッセージにより通知されるイベントの種別は任意である。例えば、「あるデバイスがオープンされた」、「ウェブページへのアクセスが拒否された(denied)」、「物理サーバが再起動された」など、様々な種別のイベントがあり得る。イベントを通知するメッセージは、「イベントログ」や「メッセージログ」などの名前で呼ばれることもあり、単に「ログ」と呼ばれることもある。
コンピュータは、予め、「ある特定の1つ以上の種別のイベントが第1の所定時間以下の長さの期間中に生じる場合は、ある特定の種別の障害が発生しやすい」といった共起情報を学習してもよい。コンピュータは、学習した共起情報に基づいて、ステップS1で上記第1のメッセージパターン(すなわちP個のメッセージの組み合わせパターン)に基づいて、上記ある種別の障害の発生を予測してもよい。
あるいは、上記のとおり、コンピュータは、ステップS1において、自ら予測を行う代わりに、予測通知を受け取ってもよい。予測通知は、例えば、予測を行う他のコンピュータから、ネットワークを介して送信されてもよい。予測通知は、具体的には、「第1のメッセージパターンから上記ある種別の障害の発生が予測される」ということを示す。
いずれにしろ、コンピュータは、「第1のメッセージパターンが、上記ある種別の障害の予兆である」ということを認識することができる。しかし、上記のとおり、単に障害の予兆が検出されるだけでは、不十分である。
つまり、「コンピュータシステム中のどの構成アイテムに対して対策をとるのが有効なのか」ということが不明だと、障害の回避に失敗することがあり得る。一方、コンピュータシステムの可用性の向上という効果を得るには、障害を未然に防ぐことが有益である。そして、障害を未然に防ぐには、適宜の対策をとることが有益である。対策の例として、例えば、ハードウェアの交換、ハードウェアの増設、ハードウェアまたはソフトウェアの再起動、ソフトウェアのアップグレード、ソフトウェアの再インストールなどが挙げられる。
第1実施形態のコンピュータは、どの構成アイテムに対して対策をとることが有益なのかを示す情報を、システム管理者等の人間に提示するために、さらにステップS2〜S4の処理を行う。つまり、第1のパターンに基づき上記ある種別の障害の発生が予測される場合に、コンピュータは、ステップS2〜S4の処理を行う。
ステップS2でコンピュータは、Q個の構成アイテムの各々について統計値(statistic)を算出する。ある構成アイテムについて算出される統計値は、具体的には、第1のメッセージパターンから予測される上記ある種別の障害が、当該ある構成アイテムにおいて将来発生する蓋然性に関する値である。
なお、当該統計値は、蓋然性そのものの値である必要はない。例えば、当該統計値は、蓋然性が高いほど大きくなるような適宜の値であってよい。
コンピュータは、具体的には、以下に説明する第1の頻度と第2の頻度に基づいて、統計値を算出する。
ここで、予測された上記ある種別の障害が、過去に実際に発生した時点を、「発生時点」ということにする。また、P個のメッセージのうち、統計値の算出対象たる上記ある構成アイテムが出力したメッセージを、「出力メッセージ」ということにする。そして、発生時点より前に出力メッセージと同じ種別のメッセージが出力された頻度を、「第1の頻度」ということにする。ここでの「頻度」は、何らかの広い意味における頻度であってよく、したがって、第1の頻度の具体的な数学的定義は様々であってよい。つまり、「発生時点より前に、出力メッセージと同じ種別のメッセージが、コンピュータシステムに含まれる複数の構成アイテムからどれほど多く出力されたか」を示すような種々の頻度が、第1の頻度として利用可能である。
例えば、第1の頻度は、出力メッセージと同じ種別のメッセージが、上記複数の構成アイテムのいずれかから発生時点より前に出力された頻度の生の値そのものであってもよい。あるいは、何らかのメッセージ(出力メッセージと同じ種別のメッセージでもよいし、出力メッセージと別の種別のメッセージでもよい)が出力された時点を含み、当該時点から第1の所定時間だけ遡る期間が「ウィンドウ期間」として定義されてもよい。第1の頻度は、出力メッセージと同じ種別のメッセージが、発生時点よりも前の全ウィンドウ期間に合計で何回出現するかを示す値であってもよい。または、第1の頻度は、発生時点よりも前の全ウィンドウ期間のうち、出力メッセージと同じ種別のメッセージを含むウィンドウ期間の数であってもよい。
例えば、メッセージが出力されるタイミングと、第1の所定時間の長さによっては、出力メッセージと同じ種別の1つのメッセージが、3つのウィンドウ期間に含まれる場合があり得る。この場合、第1の頻度の具体的定義に応じて、当該1つのメッセージに対応して、第1の頻度は、1だけインクリメントされてもよいし、3だけインクリメントされてもよい。いずれにせよ、第1の頻度は、「出力メッセージと同じ種別のメッセージが発生時点より前にどれほど多く出力されたか」ということを示す。また、第1の頻度は、絶対頻度であってもよいし、相対頻度であってもよい。
なお、1つのコンピュータシステムの中に同じ種別の2つ以上の構成アイテムが含まれる場合などには、2つ以上の構成アイテムが同じ種別のメッセージを出力することもあり得る。しかし、コンピュータが第1の頻度を数える際には、「どの構成アイテムからメッセージが出力されたか」は問わない。第1の頻度は、障害の発生とは関係なく、「出力メッセージはどの程度一般的な種別のメッセージなのか」ということを示す尺度である。第1の頻度が高ければ、出力メッセージは一般的な種別のメッセージであり、第1の頻度が低ければ、出力メッセージは珍しい種別のメッセージである。
また、上記の発生時点より前に(具体的には、上記の発生時点から第2の所定時間以内の過去において)、いずれかのメッセージが出力された時点を、「出力時点」ということにする。そして、出力時点を含み、かつ、出力時点から第1の所定時間だけ遡る期間を、「ウィンドウ期間」ということにする。なお、発生時点から第2の所定時間以内の過去には、2つ以上のメッセージが出力された可能性もある。その場合は、各メッセージについて、出力時点とウィンドウ期間が定義される。
第1の所定時間と第2の所定時間は、どちらが長くてもよいし、互いに等しくてもよい。例えば、第1の所定時間が5分間で、第2の所定時間が1時間の場合、ウィンドウ期間は、実際に上記ある種別の障害が発生した発生時点から1時間以内の過去において何らかのメッセージが出力された時点を終了時点とする、長さ5分間の期間である。この5分間のウィンドウ期間中に出力されたメッセージの数は、1つの場合もあり得るし、2つ以上の場合もあり得る。以下では、ウィンドウ期間に含まれる1つ以上のメッセージの組み合わせパターンを「第2のメッセージパターン」ということにする。第2のメッセージパターンは、換言すれば、ウィンドウ期間に含まれる1つ以上のメッセージの組み合わせであるような、第2のパターンである。
さらに、ウィンドウ期間中に出力メッセージと同じ種別のメッセージが上記複数の構成アイテムのいずれかから出力され、かつ、第2のメッセージパターンに基づいて上記ある種別の障害の発生が予測された頻度を、「第2の頻度」ということにする。第2の頻度の具体的な数学的定義も、様々であってよい。例えば、第2の頻度は、絶対頻度であってもよいし、相対頻度であってもよい。
ここで、「第2のメッセージパターンに基づいて上記ある種別の障害の発生が予測された」とは、換言すれば、「第2のメッセージパターンに基づく過去の予測が正しかった」ということを意味する。なぜなら、発生時点とは、上記ある種別の障害が過去に実際に発生した時点であり、上記の定義より、第2のメッセージパターン中の各メッセージが出力された時点は、発生時点よりも前のウィンドウ期間内に属するからである。
よって、「第2のメッセージパターンに基づいて上記ある種別の障害の発生が予測された」という条件下では、「ウィンドウ期間中に出力メッセージと同じ種別のメッセージが上記複数の構成アイテムのいずれかから出力される」ことは、以下のことを意味する。すなわち、これは、過去の正しい予測において予測の根拠に使われた第2のメッセージパターンの中に、出力メッセージと同じ種別のメッセージが含まれていたことを示す。
よって、第2の頻度は、上記ある種別の障害に関して、出力メッセージと同じ種別のメッセージを含むメッセージパターンを根拠として過去に行われた予測が、正解だった頻度を示す。ある観点によれば、第2の頻度は、上記ある種別の障害に関する正しい予兆検出に、出力メッセージと同じ種別のメッセージが、どの程度深く関連しているかを示す尺度である。
なお、第1のメッセージパターンと第2のメッセージパターンは、偶然同じパターンである場合もあり得るし、互いに異なる場合もあり得る。換言すれば、2つ以上の異なるメッセージパターンから、同じ1つの種別の障害が予測される可能性がある。つまり、ある1つの種別の障害の予兆は、2通り以上存在する可能性がある。
一方で、同じ1つの種別の障害の予兆となる(be predictive of)2つ以上のメッセージパターンの中には、ある共通の1つの種別のメッセージが含まれる可能性もある。よって、ある観点によれば、第2の頻度は、正解した過去の1回または複数回の予測においてそれぞれ根拠として使われたメッセージパターン中に、どの程度頻繁に、出力メッセージと同じ種別のメッセージが含まれていたかを示す尺度である。
ステップS2における統計値の算出は、以上のような第1の頻度と第2の頻度に基づいて行われる。第1の頻度と第2の頻度から統計値を導出するための計算式は、実施形態に応じて適宜定義されてよいが、統計値は、第1の頻度に対して単調減少するとともに第2の頻度に対して単調増加する値であることが好ましい。
なぜなら、このように統計値が定義されると、予測された上記ある種別の障害とはとりわけよく共起する(しかし、他の種別の障害とはあまり共起しない)ような種別のメッセージを出力した構成アイテムに対して、大きな値が統計値として算出されるからである。つまり、予測された上記ある種別の障害を特徴づけるような、特定の種別のメッセージを出力した構成アイテムに対して、大きな値が統計値として算出されるからである。
後述の第2〜第3実施形態で使われる統計値WF−IDF(f,n)は、第1の頻度に対して単調減少するとともに第2の頻度に対して単調増加する統計値の一例である。
なお、第1の頻度は、図1の処理を実行するコンピュータ自体が数えてもよいし、他のコンピュータが数えてもよい。例えば、図1の処理を実行するコンピュータは、コンピュータシステムに含まれる複数の構成アイテムのいずれかからメッセージが出力されるたびに、当該メッセージの種別に対応づけられて記憶装置に記憶された第1のカウント値を更新してもよい。この場合、コンピュータは、第1のカウント値から第1の頻度を算出してもよい。
同様に、第2の頻度も、図1の処理を実行するコンピュータ自体が数えてもよいし、他のコンピュータが数えてもよい。例えば、図1の処理を実行するコンピュータは、複数の種別のうちのいずれかの種別の障害が実際に発生するたびに、下記の2つの種別の組み合わせに対応づけられて記憶装置に記憶された第2のカウント値を更新してもよい。
・当該発生した障害を正しく予測する根拠となった第2のメッセージパターンに含まれる各メッセージの種別。
・当該発生した障害の種別。
例えば、第2のメッセージパターンに4個のメッセージが含まれ、それぞれの種別が互いに異なる場合、コンピュータは、4個のメッセージそれぞれに対応する4個の第2のカウント値をそれぞれ更新する。このように第2のカウント値が使われる場合、コンピュータは、第2のカウント値から第2の頻度を算出してもよい。
さて、以上説明したようにしてステップS2でQ個の構成アイテムの各々について統計値を算出した後、コンピュータは、ステップS3の処理を実行する。具体的には、コンピュータは、Q個の構成アイテムの各々について算出した統計値に基づいて、結果情報を生成する。結果情報は、コンピュータシステムに含まれる複数の構成アイテムの中で、相対的に高い蓋然性で、「第1のメッセージパターンから予測される上記ある種別の障害が、将来発生する」と予測される、1つ以上の構成アイテムを示す。具体的には、結果情報は、当該1つ以上の構成アイテムをそれぞれ識別する識別情報を含む。
識別情報は、例えばIPアドレスであってもよいし、その他の情報であってもよい。例えば、以下に挙げる情報のいずれか1つ、または、以下に挙げる情報の2つ以上の組み合わせが、識別情報として使われてもよい。
・IPアドレス。
・TCP(Transmission Control Protocol)ポート番号。
・ホスト名。
・ホスト名を含むFQDN(Fully Qualified Domain Name)。
・MAC(Media Access Control)アドレス。
・アプリケーション名。
・CMDB(Configuration Management Database)において各構成アイテムに割り当てられている識別子。
・ハードウェア装置の製造シリアル番号。
そして、ステップS4でコンピュータは、結果情報を出力する。具体的には、コンピュータは、例えば、結果情報をディスプレイに表示してもよいし、マイクから音声的に結果情報を出力してもよいし、プリンタに結果情報を出力してもよい。また、コンピュータは、結果情報を含む電子メールまたはインスタントメッセージを生成し、生成した電子メールまたはインスタントメッセージを、システム管理者宛に送信してもよい。もちろん、コンピュータは、結果情報を不揮発性記憶装置に出力してもよい。このように、ステップS4における出力の具体的方法は、実施形態に応じて様々である。ステップS4の出力後、図1の処理は終了する。
なお、結果情報は、例えば、Q個の構成アイテムのうちで統計値が最大の構成アイテムを識別する識別情報を含むことが好ましい。なぜなら、統計値が最大の構成アイテムは、ある観点によれば、障害が発生する蓋然性が最も高いと推定され、障害の予測において最も重要と推定されるからである。場合によっては、重要と推定された構成アイテムそのものに対して何らかの対策をとることが、障害の発生を未然に防ぐうえで有益なこともある。管理者等は、障害の予測において重要と推定された各構成アイテムに関して、何らかの対策をとるかどうかを判断し、判断に応じて適宜の対策をとってもよい。
実施形態によっては、コンピュータは、ステップS3において、Q個の構成アイテムを統計値にしたがってソートしてもよく、ソート結果に応じてQ個の構成アイテムに順位をつけてもよい。そして、コンピュータは、Q個の構成アイテムすべて(あるいはQ個のうち、相対的に順位が上のいくつかの構成アイテム)それぞれの識別情報を、順位および/または統計値と対応づけてもよい。結果情報は、以上のようにしてそれぞれ順位および/または統計値と対応づけられた、Q個(またはそれ以下)の識別情報を含む情報であってもよい。
また、コンピュータは、ステップS3において、Q個の構成アイテムそれぞれの統計値に基づいて、それらQ個の構成アイテム以外の構成アイテムも含めて、いくつかの構成アイテムについて、上記ある種別の障害が将来発生する蓋然性を評価してもよい。そして、コンピュータは、その評価の結果に基づく結果情報を、ステップS3で生成してもよい。
例えば、コンピュータは、P個のメッセージの各々について、以下に説明する「関連構成アイテム」を検索してもよい。具体的には、コンピュータは、コンピュータシステムに含まれる複数の構成アイテム間の関係を示す構成情報を用いて、関連構成アイテムを検索してもよい。
ここで、以下の2つの条件に当てはまるメッセージを出力した構成アイテムのことを、「第1の構成アイテム」ということにする。
・P個のメッセージのうちで関連構成アイテムを検索する対象として現在コンピュータが着目している当該メッセージと、同じ種別のメッセージである。
・上記ある種別の障害の発生が過去に正しく予測された際の予測に使われた、上記第2のメッセージパターンに含まれるメッセージである。
また、過去に正しく予測された上記ある種別の障害が、実際に発生した構成アイテムのことを、「第2の構成アイテム」ということにする。そして、第1の構成アイテムと第2の構成アイテムとの間の関係を「第1の関係」ということにする。
コンピュータは、P個のメッセージの各々について、当該メッセージを出力した構成アイテムとの間に、第1の関係と等価な第2の関係が成り立つ(hold true)ような構成アイテムを、「関連構成アイテム」として検索してもよい。より具体的には、コンピュータは、コンピュータシステムに含まれる上記複数の構成アイテムの中から、構成情報を用いて、上記のごとき関連構成アイテムを検索してもよい。
なお、構成情報により示される関係は、例えば、以下のようないずれの関係であってもよい。
・2つの構成アイテム間の論理的依存関係(logical dependency)。例えば、物理サーバと、当該物理サーバ上で動作するホストOSとの間の関係や、ホストOSとゲストOSとの間の関係など。
・2つの構成アイテム間の物理的接続関係。例えば、物理サーバと、当該物理サーバに接続されるL2スイッチとの間の関係など。
・2つ以上の論理的依存関係の合成(composition)。例えば、物理サーバとホストOSとの間の論理的依存関係と、ホストOSとゲストOSとの間の論理的依存関係との合成(すなわち、物理サーバとゲストOSとの間の、間接的な論理的依存関係)など。
・2つ以上の物理的接続関係の合成。例えば、物理サーバとL2スイッチとの間の物理的接続関係と、L2スイッチとルータとの間の物理的接続関係との合成(すなわち、物理サーバとルータとの間の、間接的な物理的接続関係)など。
・1つ以上の論理的依存関係と1つ以上の物理的接続関係の合成。例えば、ホストOSと、当該ホストOSが動作する物理サーバに接続されたストレージ装置との間の関係や、1台のL2スイッチに接続された2台の物理サーバ上でそれぞれ動作する2つのホストOS同士の関係など。
さて、上記のような構成情報を用いた検索の結果、Q個の構成アイテムのうちのある構成アイテムについて、関連構成アイテムが見つかった場合は、コンピュータは、次のような処理を行ってもよい。すなわち、コンピュータは、第1のメッセージパターンから予測される上記ある種別の障害が、当該関連構成アイテムにおいて将来発生する蓋然性に関する評価値を決定してもよい。当該関連構成アイテムについての評価値の決定は、具体的には、Q個の構成アイテムのうち、当該関連構成アイテムが見つかった当該ある構成アイテムについてステップS2で算出済みの統計値に基づく。
なお、Q個の構成アイテムのうちの1つの構成アイテムについて、2つ以上の関連構成アイテムが見つかる場合もあり得る。また、Q個の構成アイテムのうちの2つ以上の構成アイテムについて、たまたま同じ構成アイテムが、それぞれの関連構成アイテムとして見つかる場合もあり得る。いずれにしろ、コンピュータは、統計値を算出した対象の構成アイテムに関して見つかった関連構成アイテムの評価値に、当該統計値を反映させる。
以上のような処理により、検索の結果見つかった各関連構成アイテムについて、評価値が決定されてもよい。この場合、コンピュータは、検索の結果見つかった各関連構成アイテムについて決定した評価値に基づいて、結果情報を生成してもよい。
例えば、Q個の構成アイテムの中の少なくとも1つに関して、複数の構成アイテムの中から、関連構成アイテムとして、検索の結果見つかった構成アイテムが、1つ以上あるとする。この場合、結果情報は、これらの1つ以上の関連構成アイテムのうちで、評価値が最大の構成アイテムを識別する識別情報を含んでもよい。なぜなら、ある観点によれば、評価値が最大の構成アイテムは、障害が発生する蓋然性が最も高いと推定され、障害の予測において最も重要と推定されるからである。障害の予測において最も重要と推定される構成アイテムに対して対策をとることが、障害の発生を未然に防ぐうえで有益な場合もあり得る。
また、コンピュータは、評価値の決定された全構成アイテム(すなわち、検索の結果見つかった全関連構成アイテム)を、評価値にしたがってソートしてもよく、ソート結果に応じてこれらの構成アイテムに順位をつけてもよい。そして、コンピュータは、順位づけした全構成アイテム(または、そのうち順位が上のいくつかの構成アイテム)それぞれの識別情報を、順位および/または評価値と対応づけてもよい。結果情報は、以上のようにしてそれぞれ順位および/または評価値と対応づけられた、いくつかの識別情報を含む情報であってもよい。
以上のような構成情報を用いた検索と評価値の決定が行われるにしろ、行われないにしろ、ステップS3では、Q個の統計値に基づいて結果情報が生成される。そして、ステップS4では結果情報が出力される。よって、システム管理者等の人間は、結果情報を参照することにより、「予測された障害はどの構成アイテムと関連性が高いか」を適切に判断することができる。管理者等は、結果情報に基づいて、「障害の発生を防ぐうえで、どの構成アイテムについて対策を講じることが有益か」ということを適切に判断することもできる。結果情報は当該判断を助ける情報である。なお、構成情報を用いた検索と評価値の決定に関する更に詳しい例は、第3実施形態とともに後述する。
さて、図2は、コンピュータのハードウェア構成図である。図1の処理を実行するコンピュータは、具体的には、図2のコンピュータ100であってもよい。
コンピュータ100は、CPU(Central Processing Unit)101と、RAM(Random Access Memory)102と、通信インタフェイス103を有する。コンピュータ100はさらに、入力装置104と、出力装置105と、記憶装置106と、コンピュータ読み取り可能な記憶媒体110の駆動装置107を有する。コンピュータ100のこれらの構成要素は、互いにバス108で接続されている。
CPU101は、シングルコアまたはマルチコアのプロセッサの一例である。コンピュータ100は複数のプロセッサを有していてもよい。CPU101はプログラムをRAM102にロードし、RAM102をワーキングエリアとしても利用しながら、プログラムを実行する。例えば、CPU101は、図1の処理のためのプログラムを実行してもよい。
通信インタフェイス103は、例えば、有線LAN(Local Area Network)インタフェイス、無線LANインタフェイス、またはその組み合わせである。コンピュータ100は、通信インタフェイス103を介してネットワーク120に接続される。
通信インタフェイス103は、具体的には、外付けのNIC(Network Interface Card)でもよいし、オンボード型のネットワークインタフェイスコントローラでもよい。例えば、通信インタフェイス103は、物理層の処理を行う「PHYチップ」と呼ばれる回路と、MAC副層の処理を行う「MACチップ」と呼ばれる回路を含んでいてもよい。
入力装置104は、例えば、キーボード、ポインティングデバイス、またはその組み合わせである。ポインティングデバイスは、例えば、マウスでもよいしタッチパッドでもよいしタッチスクリーンでもよい。
出力装置105は、ディスプレイ、スピーカ、またはその組み合わせである。ディスプレイはタッチスクリーンであってもよい。
記憶装置106は、具体的には、1つ以上の不揮発性の記憶装置である。記憶装置106は、例えば、HDD(Hard Disk Drive)でもよいし、SSD(Solid-State Drive)でもよいし、両者の組み合わせでもよい。さらにROM(Read Only Memory)が記憶装置106として含まれていてもよい。
記憶媒体110の例は、CD(Compact Disc)やDVD(Digital Versatile Disk)などの光ディスク、光磁気ディスク、磁気ディスク、フラッシュメモリなどの半導体メモリカードなどである。
CPU101が実行するプログラムは、予め記憶装置106にインストールされていてもよい。あるいは、プログラムは、記憶媒体110に格納されて提供され、記憶媒体110から駆動装置107により読み取られて記憶装置106にコピーされ、その後、RAM102にロードされてもよい。または、ネットワーク120上のプログラム提供者130から、ネットワーク120と通信インタフェイス103を介して、プログラムがコンピュータ100にダウンロードされ、インストールされてもよい。プログラム提供者130は、具体的には、他のコンピュータである。
なお、RAM102、記憶装置106、および記憶媒体110は、いずれも、コンピュータ読み取り可能な有形の(tangible)媒体であり、信号搬送波のような一時的な(transitory)媒体ではない。
図2のコンピュータ100は、図1に関して説明したコンピュータシステムと、ネットワーク120を介して接続されていてもよい。
コンピュータ100は、コンピュータシステムに含まれる任意の構成アイテムから、ネットワーク120と通信インタフェイス103を介してメッセージを受信してもよく、受信したメッセージを記憶装置106に記憶してもよい。あるいは、構成アイテムから出力された各メッセージは、当該メッセージを出力した構成アイテムの識別情報(例えばIPアドレス)とともに、不図示の他のコンピュータの記憶装置に記憶されてもよい。コンピュータ100は、ネットワーク120と通信インタフェイス103を介して記憶装置にアクセスし、記憶されたメッセージを読み出してもよい。
いずれにしろ、コンピュータ100は、図1のステップS1に関して説明したP個のメッセージを取得することができる。よって、コンピュータ100(より具体的にはCPU101)は、P個のメッセージから、上記ある種別の障害の発生を予測することができる。
あるいは、コンピュータ100がP個のメッセージ自体を取得しない実施形態も可能である。つまり、コンピュータ100は、上記ある種別の障害の発生が予測されることを示す予測通知を、ネットワーク120と通信インタフェイス103を介して、ステップS1で受信してもよい。この場合、予測通知には、P個のメッセージの各々がどの構成アイテムから出力されたのかを示す情報(例えばP個のIPアドレス)が含まれる。
よって、ステップS1でコンピュータ100自体が予測を行うにしろ、コンピュータ100が予測通知を受け取るにしろ、コンピュータ100は、各メッセージを出力した構成アイテムを認識することもできる。
また、図1のステップS2に関して説明したように、第1の頻度は、コンピュータ100(より具体的にはCPU101)自体によって数えられてもよい。この場合、第1の頻度(またはその算出に利用される第1のカウント値)は、記憶装置106またはRAM102に記憶される。あるいは、第1の頻度は、他のコンピュータによって数えられてもよい。この場合、コンピュータ100は、ネットワーク120と通信インタフェイス103を介して、第1の頻度を取得してもよい。
第2の頻度も同様に、CPU101によって数えられてもよいし、ネットワーク120と通信インタフェイス103を介して取得されてもよい。つまり、第2の頻度(またはその算出に利用される第2のカウント値)も、記憶装置106またはRAM102に記憶されてもよい。
いずれにしろ、コンピュータ100(より具体的にはCPU101)は、上記P個のメッセージの組み合わせパターンである上記第1のメッセージパターンと、第1の頻度と、第2の頻度を認識することができる。また、コンピュータ100は、P個のメッセージの各々がどの構成アイテムから出力されたのかということも、認識することができる。したがって、コンピュータ100は、ステップS2で、上記Q個の構成アイテムのそれぞれについて統計値を算出することができる。
さらに、コンピュータ100は、算出したQ個の統計値を用いて、ステップS3で結果情報を生成することもできる。なお、コンピュータ100が結果情報の生成に構成情報を利用する場合、構成情報は、コンピュータ100自体の記憶装置106に記憶されていてもよい。あるいは、ネットワーク120を介してコンピュータ100に接続された記憶装置に構成情報が記憶されていてもよい。
また、ステップS4では、コンピュータ100は、結果情報を出力装置105に出力してもよく、記憶装置106に出力してもよく、駆動装置107を介して記憶媒体110に出力してもよい。コンピュータ100は、ネットワーク120を介して接続された他の装置(例えば、他のコンピュータ、ネットワークストレージ装置、プリンタなど)に結果情報を出力してもよい。また、コンピュータ100は、結果情報を含む電子メールまたはインスタントメッセージを生成し、生成した電子メールまたはインスタントメッセージを、通信インタフェイス103とネットワーク120を介して送信してもよい。
以上説明したように、図1の処理は、図2のコンピュータ100により実行されてもよい。
さて、図3は、コンピュータシステムの例を示す図である。図3には、コンピュータ200と、コンピュータ200が接続されたネットワーク210と、ネットワーク210に接続されたコンピュータシステム230が例示されている。コンピュータ200は、具体的には、図1の処理を実行するコンピュータである。コンピュータ200が図2のコンピュータ100であってもよく、その場合、ネットワーク210は図2のネットワーク120である。
コンピュータシステム230は、4台の物理サーバと2台のL2スイッチと1台のL3スイッチを含む。具体的には、図3の例では、物理サーバ240と250がL2スイッチ280に接続されており、物理サーバ260と270がL2スイッチ281に接続されており、L2スイッチ280と281がL3スイッチ290に接続されている。そして、L3スイッチ290はネットワーク210に接続されている。
物理サーバ240はハイパーバイザ241により仮想化されている。具体的には、ハイパーバイザ241上で、ホストOS242とゲストOS243とゲストOS244が動作する。
同様に、物理サーバ250はハイパーバイザ251により仮想化されている。具体的には、ハイパーバイザ251上で、ホストOS252とゲストOS253とゲストOS254が動作する。
同様に、物理サーバ260はハイパーバイザ261により仮想化されている。具体的には、ハイパーバイザ261上で、ホストOS262とゲストOS263が動作する。
同様に、物理サーバ270はハイパーバイザ271により仮想化されている。具体的には、ハイパーバイザ271上で、ホストOS272とゲストOS273が動作する。
例えば、以下に挙げるハードウェアとソフトウェアは、コンピュータシステム230に含まれる構成アイテムの例である。
・物理サーバ240、250、260、および270の各々。
・L2スイッチ280と281の各々。
・L3スイッチ290。
・ハイパーバイザ241、251、261、および271の各々。
・ホストOS242、252、262、および272の各々。
・ゲストOS243、244、253、254、263、および273の各々。
・ゲストOS上で動作する不図示の各アプリケーション。
なお、構成アイテムの粒度は実施形態に応じて様々であってよい。各構成アイテムを識別する識別情報は、構成アイテムの粒度に応じて、個々の構成アイテムを識別可能な情報であれば、どのような情報であってもよい。識別情報の例は上述したとおりである。
識別情報の粒度によっては、いくつかのハードウェアの集合、いくつかのソフトウェアの集合、または1つ以上のハードウェアと1つ以上のソフトウェアの集合が、1つの構成アイテムとして扱われてもよい。例えば、識別情報としてIPアドレスが使われる場合には、ゲストOSと複数のアプリケーションを含む集合全体が、1つの構成アイテムとして扱われてもよい。なぜなら、ゲストOSと、ゲストOS上の複数のアプリケーションは、同じIPアドレスからメッセージを送信するからである。
また、各構成アイテムがメッセージを送信するのに用いるプロトコルは、実施形態に応じて任意であってよい。構成アイテムの種別に応じて、異なるプロトコルが使われてもよい。メッセージの送信に使われるプロトコルの例は、ICMP(Internet Control Message Protocol)やSNMP(Simple Network Management Protocol)などである。もちろん、他のプロトコルが使われてもよい。
以上説明した第1実施形態によれば、ある種別の障害の発生が予測されたときに、結果情報が生成され、出力される。出力される結果情報は、予測された障害の発生する蓋然性が高そうな構成アイテムを示す。したがって、結果情報は、「どの構成アイテムに対して対策をとることが有益なのか」を示唆する。つまり、第1実施形態によれば、障害の発生を防ぐための対策をとることが望ましい構成アイテムが、1つ以上検出される。よって、第1実施形態は、障害の発生を未然に防ぐうえで効果的である。
続いて、図4〜7を参照して第2実施形態について説明する。第2実施形態では、IPアドレスが構成アイテムの識別情報として使われる。また、第2実施形態では、障害の発生もメッセージにより通知される。
図4は、第2実施形態の検出サーバの動作を例示する図である。図4には「学習フェーズ」と「検出フェーズ」という2つのフェーズの動作が示されている。検出フェーズの動作が第1実施形態の図1の動作に対応する。
第2実施形態の検出サーバは、学習フェーズにおいて、第1実施形態に関して説明した「第2の頻度」に相当する情報を学習する。その後、検出フェーズでは、ある種別の障害の予兆が検出される。障害の予兆が検出されると、検出サーバは、第1実施形態に関して説明した統計値に相当する値を算出し、算出した統計値に基づいて、第1実施形態に関して説明した結果情報に相当する情報を生成および出力する。
以下、図4の学習フェーズの詳細について説明する。なお、図4では便宜上、「172.16.1.2」、「10.0.7.6」、および「10.0.0.10」というIPアドレスを、それぞれ「A」、「B」、および「C」という文字で表してある。
学習フェーズは、実際の障害の発生を契機として、検出サーバが、障害の発生に先立つ期間においてなされた1回以上の予兆検出の結果に基づく学習を行うフェーズである。例えば、図4には以下の動作シーケンスが例示されている。
・時刻t1に、IPアドレスAの構成アイテムから、「1」という種別のメッセージM1が出力された。
・時刻t2に、IPアドレスBの構成アイテムから、「2」という種別のメッセージM2が出力された。
・時刻t3に、IPアドレスCの構成アイテムから、「3」という種別のメッセージM3が出力された。
・時刻t4に、IPアドレスAの構成アイテムから、「4」という種別のメッセージM4が出力された。
・時刻t5に、IPアドレスBの構成アイテムから、「2」という種別のメッセージM5が出力された。
・時刻t6に、IPアドレスAの構成アイテムから、「3」という種別のメッセージM6が出力された。
・時刻t7に、IPアドレスAの構成アイテムから、「1」という種別のメッセージM7が出力された。
・時刻t8に、IPアドレスBの構成アイテムから、「2」という種別のメッセージM8が出力された。
・時刻t9に、IPアドレスBの構成アイテムから、「7」という種別のメッセージM9が出力された。
なお、図4の例では、「7」という種別のメッセージは、「ある特定の種別の障害が発生した」というイベントを通知するためのメッセージである。他方、「1」、「2」、「3」、および「4」という種別のメッセージは、障害の発生以外のイベントを通知するためのメッセージである。以下では説明の簡単化のため、「7」という種別のメッセージにより発生が通知される特定の種別の障害のことを、単に「障害#7」と表記することがある。また、「障害#f」などの同様の表記を用いることもある。「7」という種別は、メッセージの種別でもあり、障害の種別でもある。
さて、第2実施形態では、ウィンドウ301を用いて障害予兆が検出される。以下ではウィンドウ301の長さを「T1」と表記することもある。ウィンドウ301の長さT1は、第1実施形態に関して説明した「第1の所定時間」に対応する。図4に矢印で示すように、ウィンドウ301は時間軸に沿ってスライドしてゆく。
また、第2実施形態では、個々のメッセージパターンが検出される時点から始まる、ある所定の長さの期間内における障害の発生が予測される。当該期間を以下では「予測対象期間」という。予測対象期間の長さは、第1実施形態に関して説明した「第2の所定時間」に対応し、以下では予測対象期間の長さを「T2」と表記することもある。
実際に時刻t9に障害#7が起きると、検出サーバは、メッセージM9を受信する。検出サーバは、メッセージM9の受信により、障害#7の発生を認識し、学習フェーズの処理を開始する。
具体的には、検出サーバは、まず、時刻t9における障害#7の予兆として正しく検出された障害予兆(つまり、時刻t9における障害#7の発生についての正しい予測)を検索する。詳しくは後述するとおり、第2実施形態では、障害予兆が検出されるたびに、検出結果が記憶される。よって、検出サーバは、記憶装置を検索することで、時刻t9の障害の発生に先立つ期間においてなされた1回以上の予兆検出の結果を認識することができる。
ここで、第2実施形態における障害の発生の予測は、上記のとおり、予測対象期間内の未来に関して行われる。よって、時刻t9における障害#7の発生についての正しい予測は、もし存在するとすれば、時刻t9を終了時点とする長さT2の期間内に存在する。図4では、時刻t9を終了時点とする予測対象期間302が、両向き矢印により示されている。
そこで、検出サーバは、具体的には、時刻t9を終了時点とする予測対象期間302内に行われた予測の結果を検索する。図4は、時刻t1、t2、t3、t5、t6、およびt8に行われた6回の予測が正しかったことを示す。具体的には、図4は、以下のことを示している。なお、図4においては、正解した予測に関して検出された障害予兆(つまりメッセージパターン)は実線で囲われており、不正解の予測に関して検出された障害予兆は破線で囲われている。
・時刻t1にメッセージM1が出力される。時刻t1を終了時点とするウィンドウ301内には、メッセージM1のみが含まれる。そのため、検出サーバは、メッセージM1のみを含むメッセージパターンから、障害の発生を予測する。こうして時刻t1に行われた予測では、検出サーバは、「長さT2の予測対象期間中に障害#7が発生するだろう」と予測した。この予測が正解であることは、時刻t9に判明する。
・時刻t2にメッセージM2が出力される。時刻t2を終了時点とするウィンドウ301内には、メッセージM1とM2が含まれる。そのため、検出サーバは、メッセージM1とM2を含むメッセージパターンから、障害の発生を予測する。こうして時刻t2に行われた予測では、検出サーバは、「長さT2の予測対象期間中に障害#7が発生するだろう」と予測した。この予測が正解であることは、時刻t9に判明する。
・時刻t3にメッセージM3が出力される。時刻t3を終了時点とするウィンドウ301内には、メッセージM1とM2とM3が含まれる。そのため、検出サーバは、メッセージM1とM2とM3を含むメッセージパターンから、障害の発生を予測する。こうして時刻t3に行われた予測では、検出サーバは、「長さT2の予測対象期間中に障害#7が発生するだろう」と予測した。この予測が正解であることは、時刻t9に判明する。
・時刻t4にメッセージM4が出力される。時刻t4を終了時点とするウィンドウ301内には、メッセージM3とM4が含まれる。そのため、検出サーバは、メッセージM3とM4を含むメッセージパターンから、障害の発生を予測する。こうして時刻t4に行われた予測では、検出サーバは、「長さT2の予測対象期間中には障害が発生しないだろう」と予測したか、または、「長さT2の予測対象期間中に障害#f(ただしf≠7)が発生するだろう」と予測した。この予測が不正解であることは、時刻t9に判明する。
・時刻t5にメッセージM5が出力される。時刻t5を終了時点とするウィンドウ301内には、メッセージM4とM5が含まれる。そのため、検出サーバは、メッセージM4とM5を含むメッセージパターンから、障害の発生を予測する。こうして時刻t5に行われた予測では、検出サーバは、「長さT2の予測対象期間中に障害#7が発生するだろう」と予測した。この予測が正解であることは、時刻t9に判明する。
・時刻t6にメッセージM6が出力される。時刻t6を終了時点とするウィンドウ301内には、メッセージM4とM5とM6が含まれる。そのため、検出サーバは、メッセージM4とM5とM6を含むメッセージパターンから、障害の発生を予測する。こうして時刻t6に行われた予測では、検出サーバは、「長さT2の予測対象期間中に障害#7が発生するだろう」と予測した。この予測が正解であることは、時刻t9に判明する。
・時刻t7にメッセージM7が出力される。時刻t7を終了時点とするウィンドウ301内には、メッセージM6とM7が含まれる。そのため、検出サーバは、メッセージM6とM7を含むメッセージパターンから、障害の発生を予測する。こうして時刻t7に行われた予測では、検出サーバは、「長さT2の予測対象期間中には障害が発生しないだろう」と予測したか、または、「長さT2の予測対象期間中に障害#f(ただしf≠7)が発生するだろう」と予測した。この予測が不正解であることは、時刻t9に判明する。
・時刻t8にメッセージM8が出力される。時刻t8を終了時点とするウィンドウ301内には、メッセージM7とM8が含まれる。そのため、検出サーバは、メッセージM7とM8を含むメッセージパターンから、障害の発生を予測する。こうして時刻t8に行われた予測では、検出サーバは、「長さT2の予測対象期間中に障害#7が発生するだろう」と予測した。この予測が正解であることは、時刻t9に判明する。
以上のごとき図4の例では、検出サーバは、時刻t9における上記の検索(つまり予測対象期間302の範囲内での正解した予測の検索)の結果、以下のことを認識する。
・予測対象期間302中に行われた予測のうち、時刻t9の障害#7の発生を正しく当てたのは、時刻t1、t2、t3、t5、t6、およびt8に行われた6回の予測である。
・これら正解した6回の予測のうち、障害予兆を示すメッセージパターン(つまり予測に使われたウィンドウ301に含まれるメッセージのパターン)中に、種別「1」のメッセージが含まれるのは、4回である。
・これら正解した6回の予測のうち、障害予兆を示すメッセージパターン中に、種別「2」のメッセージが含まれるのは、5回である。
・これら正解した6回の予測のうち、障害予兆を示すメッセージパターン中に、種別「3」のメッセージが含まれるのは、2回である。
・これら正解した6回の予測のうち、障害予兆を示すメッセージパターン中に、種別「4」のメッセージが含まれるのは、2回である。
以下では、障害#f(つまり「f」という種別のメッセージにより通知される障害)の発生についての正しい予測のうち、「n」という種別のメッセージが「予兆パターン」(predictive pattern)に含まれる相対頻度を「WF(f,n)」と表記する。なおここで、「予兆パターン」とは、障害の発生の予測に使われたメッセージパターンのことであり、換言すれば、障害の予兆として検出されるメッセージパターンのことである。
また、第2実施形態では、メッセージパターンは、メッセージの出力される時間的順序とは無関係な組み合わせパターンである。また、第2実施形態では、ウィンドウ301内に同じ種類のメッセージが2つ以上含まれる場合、メッセージの重複は無視される。例えば、以下に挙げる4つの場合は、同じ1つのメッセージパターン(以下、便宜上「[1,2]」と表記することがある)に該当する。
・「1」という種別のメッセージが先に出力され、その後、「2」という種別のメッセージが出力され、ウィンドウ301内にはこれら2つのメッセージのみが含まれる場合。
・「2」という種別のメッセージが先に出力され、その後、「1」という種別のメッセージが出力され、ウィンドウ301内にはこれら2つのメッセージのみが含まれる場合。
・「1」という種別のメッセージが先に出力され、次に「2」という種別のメッセージが出力され、その後、「1」という種別のメッセージが出力され、ウィンドウ301内にはこれら3つのメッセージのみが含まれる場合。
・「1」という種別のメッセージが先に出力され、次に「2」という種別のメッセージが出力され、その後、「2」という種別のメッセージが出力され、ウィンドウ301内にはこれら3つのメッセージのみが含まれる場合。
上記の4つの場合以外にも、メッセージパターン[1,2]に該当する場合が存在し得ることは明らかである。実施形態によっては、ウィンドウ301内に同じ種類のメッセージが含まれる回数に応じた違いが考慮に入れられてもよい。例えば、メッセージパターン[1,2]と[1,1,2]と[1,2,2]が区別される実施形態も可能である。
なお、図4の例では、時刻t9の学習フェーズにおけるWF(f,n)の値は、以下に示すとおりである。
WF(7,1)=4/6
WF(7,2)=5/6
WF(7,3)=2/6
WF(7,4)=2/6
なお、WF(f,n)は、図1に関して説明した「第2の頻度」の具体例である。図1と図4の対応関係をより詳しく説明すれば、以下のとおりである。
図1に関して説明した「発生時点」は、図4では、時刻t9に対応する。よって、図1に関して説明した「発生時点から第2の所定時間以内の過去」は、図4では、時刻t9を終了時点とする予測対象期間302に対応する。したがって、図4において予測対象期間302に含まれる時刻t1〜t8のそれぞれは、図1に関して説明した「出力時点」に相当する。よって、図4において、各時刻tj(1≦j≦8)を終了時点とするウィンドウ301の範囲が、図1に関して説明した各「ウィンドウ期間」に相当する。
ここで、図1に関して説明した「第2のメッセージパターン」は、「ウィンドウ期間」に含まれる1つ以上のメッセージの組み合わせパターンである。よって、図4においては、各時刻tj(1≦j≦8)に行われた予測に使われた各メッセージパターンが、「第2のメッセージパターン」に対応する。
時刻t9よりも後のある時刻(例えば、後述する検出フェーズにおける時刻t11)において、障害#7の発生が予測される場合があり得る。具体的には、Q個の構成アイテムから出力されたP個のメッセージの組み合わせパターンである「第1のメッセージパターン」に基づいて、障害#7の発生が予測される場合があり得る(1≦Q≦P)。この場合に、Q個の構成アイテムのうち、「第1のメッセージパターン」に含まれる「n」という種別のメッセージを出力した構成アイテムについての「統計値」の算出において使われる「第2の頻度」が、WF(7,n)に対応する。
図4では、予測対象期間302内の最後の「出力時点」である時刻t8の下に、WF(7,1)とWF(7,2)の上記の値(すなわち4/6と5/6)が例示されている。WF(7,3)とWF(7,4)の値は、図4では紙幅の都合上、省略されている。
ところで、第2実施形態におけるWF(f,n)は、上記のように相対頻度である。具体的には、WF(f,n)は、障害#fの発生についての正しい予測のうちで「n」という種別のメッセージが予兆パターンに含まれる予測の回数を、障害#fの発生についての正しい予測の回数で割った値である。より正確には、WF(f,n)の分子と分母それぞれの値を数える対象は、実際に障害#fが発生した「発生時点」を終了時点とする予測対象期間302の範囲に限られる。
図4では、理解の助けとするために、予測対象期間302の範囲内で時刻t1から順にWF(7,1)の分子と分母を数える場合の、分子と分母それぞれの値も、「WF(7,1)」の行に例示されている。例えば、時刻t5の下には「3/4」と書いてあるが、これは以下のことを示す。
・時刻t5における予測は、予測対象期間302の中で障害#7の発生を正しく予測した4番目の予測である(時刻t4の予測が不正解であることに注意)。
・上記4回の正しい予測のうち、予兆パターンが「1」という種別のメッセージを含むのは、3回である(「1」という種別のメッセージは、時刻t1、t2、およびt3の予兆パターンには含まれるが、時刻t5の予兆パターンには含まれないことに注意)。
同様に、図4では、理解の助けとするために、予測対象期間302の範囲内で時刻t1から順にWF(7,2)の分子と分母を数える場合の、分子と分母それぞれの値も、「WF(7,2)」の行に例示されている。
以上のようにして、第2実施形態の学習フェーズでは、実際の障害の発生を契機として、検出サーバが、障害の発生に先立つ期間においてなされた1回以上の予兆検出の結果に基づく学習を行う。
なお、時刻t9での障害#7の発生に先立つ時刻t1、t2、t3、t5、t6、およびt8において正しい予測が可能な理由は、時刻t1よりも前の時点で少なくとも1回は既に障害#7が発生したことがあるからである。つまり、時刻t1より前に障害#7が発生したときに、障害#7が発生する直前の予測対象期間中の各ウィンドウのメッセージパターンが、障害#7と共起するメッセージパターンとして学習される。何回か実際に障害#7が発生すると、各メッセージパターンと障害#7の共起頻度が算出可能である。検出サーバは、例えば共起頻度に基づいて、学習した各メッセージパターンを重みづけしてもよい。もちろん、検出サーバは、他の種類の障害についても同様に学習を行う。
以上のようにして、検出サーバは、学習済みのメッセージパターンに基づいて、時刻t1〜t8のそれぞれにおける予測を行う。その結果、図4の例では、たまたま、時刻t1、t2、t3、t5、t6、およびt8における6回の予測が当たったわけである。
以上の説明から分かるように、最初に障害#7が生じたときには、障害#7の予兆となるメッセージパターンは、まだ1つも学習されていない。したがって、障害#7の最初の発生の前には、障害#7の発生は予測されない。よって、障害#7の最初の発生の直前の予測対象期間の中で正解した予測の回数も0回である。この場合、WF(7,n)は、例えば0と定義されてもよい。
さて、続いて、上記の学習フェーズの学習結果を利用する検出フェーズについて説明する。図4の例では、時刻t9の後の時刻t10において、IPアドレスBの構成アイテムから、「2」という種別のメッセージM10が出力される。また、時刻t11において、IPアドレスAの構成アイテムから、「1」という種別のメッセージM11が出力される。
なお、時刻t9とt10の間に、さらに1つ以上のメッセージが出力されていてもよい。検出サーバは、メッセージが出力されるたびに、当該メッセージの出力された時点を終了時点とするウィンドウ内のメッセージパターンに基づいて、障害の発生に関する予測を行う。
例えば、検出サーバは、時刻t11にメッセージM11を受信すると、時刻t11を終了時点とするウィンドウ303に含まれるメッセージパターン[1,2](つまりメッセージM10とM11の2つを含むパターン)に基づく予測を行う。図4の例では、時刻t11における予測において、検出サーバが、「障害#7が長さT2の予測対象期間以内に発生するだろう」と予測したものとする。
なお、図4の例では、時刻t9以降に、障害#7の発生が予測されたのは、時刻t11が初めてであったものとする。つまり、時刻t10における予測(および、時刻t9とt10の間に1つ以上のメッセージが出力される場合は、各メッセージの出力時点を終了時点とするウィンドウに基づく予測)では、障害#7の発生は予測されなかったものとする。
こうして時刻t11に障害#7の発生が予測されると、検出サーバは、「予測される障害#7の発生を未然に防ぐには、コンピュータシステム中のどの構成アイテムに対して対策をとることが有効か」を示唆する情報を、生成および出力する。以下では当該情報のことを「ランキング情報」という。ランキング情報は図1の「結果情報」に対応する。つまり、第2実施形態の検出フェーズの処理は、図1の処理に対応する。
例えば、図4の例では、時刻t11における予測が図1のステップS1に対応する。この場合、予測にはウィンドウ303に含まれる2個のメッセージM10とM11が使われるので、図1における「P」の値は2である。また、図4の例では、メッセージM10の発信元(sender)たる構成アイテムと、メッセージM11の発信元たる構成アイテムは異なるので、図1における「Q」の値は2である。
図1のステップS2と同様に、第2実施形態でも、Q個の構成アイテムの各々について、予測された障害#7が当該構成アイテムにおいて将来発生する蓋然性に関する統計値が算出される。第2実施形態では、統計値の具体例として、式(1)により定義されるWF−IDF(f,n)が使われる。WF−IDF(f,n)は、障害#fの発生が予測されたときに予測の根拠として使われたメッセージパターン(すなわち予兆パターン)中の、「n」という種別のメッセージを出力した構成アイテムについて算出される統計値である。
WF-IDF(f,n)=WF(f,n)×log10(1/DF(n)) (1)
式(1)中のWF(f,n)は、学習フェーズに関して上述したものである。上述のとおり、WF(f,n)は、図1に関して説明した「第2の頻度」に対応する。一方、式(1)中のDF(n)は、図1に関して説明した「第1の頻度」の具体例である。つまり、DF(n)は、「n」という種別のメッセージがどれほど多く出力されるかを示す。
具体的には、DF(n)も相対頻度である。ある時刻tにおけるDF(n)は、当該ある時刻tまでに検出サーバが分析したウィンドウの総数のうち、「n」という種別のメッセージを含むウィンドウの数を示す、相対頻度である。
換言すれば、ある時刻tにおけるDF(n)の分母は、当該ある時刻tまでに検出サーバが障害予兆の検出のためにメッセージパターンを分析した回数である。そして、当該ある時刻tにおけるDF(n)の分子は、分析されたすべてのメッセージパターンのうち、「n」という種別のメッセージを含むものの数である。
なお、上記のとおり第2実施形態では、メッセージパターンの定義において、ウィンドウ内での同じ種類のメッセージの重複は無視される。よって、上記ある時刻tにおけるDF(n)の分子は、分析されたすべてのメッセージパターン中の「n」という種別のメッセージについて重複を無視して数えた数でもある。
上記のとおり、ウィンドウ内での同じ種類のメッセージの重複が考慮に入れられる実施形態も可能である。その場合、DF(n)の分子は、ウィンドウ内での同じ種類のメッセージの重複を無視して数えられる値(つまり「n」という種別のメッセージを含むウィンドウの数)であってもよい。あるいは、DF(n)の分子は、ウィンドウ内での同じ種類のメッセージの重複を考慮して数えられる値(つまり「n」という種別のメッセージの総数)であってもよい。
図4では、紙幅の都合上、時刻t11におけるDF(1)の値(すなわち1200/12000)とDF(2)の値(すなわち(6/12000)のみが例示されている。図4ではDF(3)やDF(4)などは省略されているが、DF(n)は、各種別についてカウントされる。
なお、DF(1)とDF(2)を比べると、「1」という種別のメッセージよりも「2」という種別のメッセージの方が遥かに珍しいことが分かる。それにもかかわらず、WF(7,1)とWF(7,2)には大きな差がなく、むしろ、WF(7,2)の方がWF(7,1)よりも大きいくらいである。つまり、「2」という種別のメッセージは、「他の種別の障害と比べて障害#7ととりわけよく共起し、障害#7を特徴づける予兆である」と推定される。式(1)のWF−IDF(f,n)は、このような推定を反映した統計値の例である。
式(1)から明らかなように、式(1)のWF−IDF(f,n)は、「第1の頻度」としてのDF(n)に対して単調減少するとともに、「第2の頻度」としてのWF(f,n)に対して単調増加する統計値の一例である。WF−IDF(f,n)は、DF(n)に対して単調減少するとともにWF(f,n)に対して単調増加するように定義されていれば、式(1)以外の式により定義されていてもよい。
例えば、式(1)における対数の底は、実施形態に応じて変更されてもよい。また、対数を使わない式により、WF−IDF(f,n)が定義されてもよい。もちろん、適宜の係数の加算または乗算などを含む式が、WF−IDF(f,n)を定義するのに使われてもよい。
例えば、図4の例では、障害#7の発生が時刻t11で予測されたときの予兆パターンは、メッセージM10とM11を含む。そして、メッセージM11の種別は「1」である。よって、検出サーバは、メッセージM11の発信元(つまりIPアドレスAの構成アイテム)についての統計値として、WF−IDF(7,1)を算出する。同様に、検出サーバは、「2」という種別のメッセージM10の発信元(つまりIPアドレスBの構成アイテム)についての統計値として、WF−IDF(7,2)を算出する。
ところで、情報検索(information retrieval)の分野で使われるTF−IDF(term frequency-inverse document frequency)は、TFとIDFの積である。TFだけを用いる場合、特定の文書にのみ頻出する用語と、多くの文書に頻出する一般的な用語との区別が困難であるが、IDFを利用することで、一般的な用語の影響を少なくすることができる。つまり、IDFは、一種のノイズフィルタの役割を果たす。よって、ある特定の文書と、当該特定の文書を特徴づける用語(つまり特定の文書にのみ頻出する用語)とのペアに対して算出されるTF−IDFは、上記特定の文書と、様々な文書に頻出する一般的な用語とのペアに対して算出されるTF−IDFよりも大きい。
式(1)における「×log10(1/DF(n))」という乗算も、一種のノイズフィルタの役割を果たす。例えば、ある構成アイテムが、「n」という種別のメッセージを、恒常的に比較的高い頻度で繰り返し出力する場合があり得る。この場合、どの時刻で予測が行われるにせよ、ウィンドウ内には「n」という種別のメッセージが含まれる蓋然性が高い。そして、恒常的に繰り返し出力されるメッセージは、特定の種別の障害との間でのみ高頻度で共起するわけではないから、特定の種別の障害との関連性は低い。「n」という種別のメッセージが、恒常的に比較的高い頻度で繰り返し出力される場合、特定の種別の障害を予測する上では、この「n」という種別のメッセージを出力する構成アイテムの重要度は、低いと推定される。
式(1)における「×log10(1/DF(n))」という乗算は、以上のように恒常的に比較的高い頻度で繰り返し出力されるメッセージの影響を軽減するための、ノイズフィルタの役割を果たす。つまり、式(1)における「×log10(1/DF(n))」という乗算は、特定の種別の障害の予測において、より重要性の高い構成アイテムを、より適切に見出すために、行われる。換言すれば、上記「第1の頻度」に対して単調減少するように上記「統計値」を定義することで、ノイズの影響が軽減され、そのため、提示される結果情報の精度も高まる。
「n」という種別のメッセージを含むメッセージパターンから障害#fの発生が予測されたとすると、WF−IDF(f,n)は、以下のことを示す。つまり、WF−IDF(f,n)は、「n」という種別のメッセージを出力した構成アイテムの重要性を示す。より詳しくは、WF−IDF(f,n)は、「『n』という種別のメッセージを出力した構成アイテムからメッセージが出力されることが、障害#fの発生を予測するうえで、どれほど重要なのか」ということを示す。別の観点から述べれば、WF−IDF(f,n)は、「『n』という種別のメッセージを出力した構成アイテムにおいて、当該メッセージの出力の原因となった事象に対して対策を講じることが、障害#fの発生とどれほど強く関連するのか」を示す。
図4の例では、時刻t11に、ウィンドウ303内の2つのメッセージM10とM11を含むメッセージパターンに基づいて、障害#7の発生が予測される。こうして障害#7に関して時刻t11で検出した予兆パターンに関する情報が、図4には詳細予兆情報304として例示されている。詳細予兆情報304は、予兆パターン内の各メッセージについて、当該メッセージを出力した発信元の構成アイテムのIPアドレスと、当該メッセージの種別とを対応づける情報である。
図4の例では、「1」という種別のメッセージM11は、IPアドレスA(172.16.1.2)の構成アイテムから出力されたので、IPアドレスAと「1」という種別が対応づけられている。また、「2」という種別のメッセージM10は、IPアドレスB(10.0.7.6)の構成アイテムから出力されたので、IPアドレスBと「2」という種別が対応づけられている。
検出サーバは、予兆パターンに含まれる各メッセージの発信元の構成アイテムについて、上記のとおりWF−IDF(f,n)を算出する。図4の例では、検出サーバは、メッセージM11の発信元(つまりIPアドレスAの構成アイテム)について、式(2)のようにWF−IDF(7,1)を算出する。また、検出サーバは、メッセージM10の発信元(つまりIPアドレスBの構成アイテム)について、式(3)のようにWF−IDF(7,2)を算出する。
WF-IDF(7,1)=WF(7,1)×log10(1/DF(1))
=4/6×log10(12000/1200)
≒0.67 (2)
WF-IDF(7,2)=WF(7,2)×log10(1/DF(2))
=5/6×log10(12000/6)
≒2.75 (3)
第2実施形態では、検出サーバは、算出した各WF−IDF(f,n)の値に基づいて、予兆パターンに含まれるメッセージの発信元の構成アイテムに順序をつける。そして、検出サーバは、順序づけの結果を示すランキング情報305を生成する。ランキング情報305は、図1のステップS3に関して説明した「結果情報」の一例である。
図4に示すように、ランキング情報305は、予兆パターンに含まれるP個のメッセージの発信元のQ個の構成アイテムの各々について、以下の4種類の情報を対応づける情報である(1≦Q≦P)。
・当該構成アイテムの順位(つまり、WF−IDF(f,n)によるソートの結果として与えられた順位)。
・当該構成アイテムのIPアドレス(つまり、当該構成アイテムを識別する識別情報)。
・予兆パターンに含まれるメッセージのうち、当該構成アイテムが出力したメッセージの種別。
・当該構成アイテムに関して算出されたWF−IDF(f,n)。
なお、1つの構成アイテムから、予兆パターンに含まれる2つ以上のメッセージが出力される場合もあり得る。つまり、図1に関して説明したように、Q<Pの場合があり得る。
例えば、障害#fの予兆パターンの中には「n1」という種別のメッセージと「n2」という種別のメッセージがともに含まれ、かつ、両メッセージは同じ1つの構成アイテムから出力されたとする。この場合、これら2つのメッセージを出力した当該構成アイテムに関して、WF−IDF(f,n1)とWF−IDF(f,n2)の両方を検出サーバが算出する。そして、検出サーバは、WF−IDF(f,n1)とWF−IDF(f,n2)のうちの大きい方の値を採用する。こうして採用された値が、Q個の構成アイテムをソートする際のソートキーとして使われる。
ランキング情報305の生成後、検出サーバは、ランキング情報305を出力する。ランキング情報305の出力は図1のステップS4に対応する。ランキング情報305は、予兆パターンに含まれるP(=2)個のメッセージ出力したQ(=2)個の構成アイテムのうちで、統計値としてのWF−IDF(f,n)が最大の構成アイテムを識別する識別情報(すなわち、IPアドレスB)を含む。つまり、ランキング情報305は、時刻t11より後の将来に発生しそうだと予測される障害#7に関して、「障害#7の予測にとって最も重要度が高い」と推定される構成アイテムを識別する情報として、IPアドレスBを含む。したがって、例えばシステム管理者などの人間は、出力されたランキング情報305を見ることにより、障害#7との関連性が高い構成アイテムを認識することができる。システム管理者などは、障害#7の発生を防ぐための適切な対策を立案することもできる。
また、ランキング情報305は、順位とIPアドレスだけでなく、算出されたWF−IDF(f,n)も含む。例えば、1位と2位の構成アイテムのWF−IDF(f,n)の値に大きな差がない場合などは、システム管理者は、1位と2位の構成アイテムの双方に対して対策を講じることに決めてもよい。
このように、ランキング情報305は、障害#fの発生を防ぐうえで有益な情報である。別の観点から見れば、第2実施形態の検出サーバは、予測された障害の発生を防ぐための作業を行うシステム管理者などを強力に支援するものである。
なお、ランキング情報305情報の出力(およびシステム管理者による対策の実行)にも関わらず、不幸にして、時刻t11よりも後に、実際に障害#7が発生してしまう可能性もある。その場合は、障害#7の発生を契機として、検出サーバは、再び学習フェーズの処理を行う。仮に、障害#7が、時刻t11から予測対象期間の長さT2以内の未来に実際に発生した場合には、時刻t11での予測は、再度の学習フェーズにおいて、「正解した予測」として扱われ、新たなWF(7,1)とWF(7,2)の算出において考慮に入れられる。
続いて、図5〜7を参照して、図4を参照して説明した第2実施形態のさらなる詳細について説明する。
図5は、第2実施形態の検出サーバのブロック構成図である。図4の学習フェーズと検出フェーズの処理を行う検出サーバは、具体的には、図5の検出サーバ400であってもよい。
検出サーバ400は、コンピュータシステム内の種々の構成アイテムからメッセージ420を入力として受け取り、推定結果情報430を出力する。推定結果情報430は、具体的には、例えば図4のランキング情報305であってもよい。
検出サーバ400は、ログ情報記憶部401、障害予兆検知部402、辞書情報記憶部403、および障害予兆情報記憶部404を有する。検出サーバ400はさらに、ログ統計算出部405、ログ統計情報記憶部406、予兆統計算出部407、予兆統計情報記憶部408、ランキング生成部409、およびランキング情報記憶部410を有する。
ログ情報記憶部401にはメッセージ420が蓄積される。例えば、図4のメッセージM1〜M11はいずれもログ情報記憶部401に蓄積される。ログ情報記憶部401の詳細は、図6とともに後述する。
障害予兆検知部402は、検出サーバ400が1つのメッセージ420を受信すると、メッセージ420の受信時点を終了時点とするウィンドウ内のメッセージパターンに基づいて、障害が発生しそうかどうかを予測する。障害の発生が障害予兆検知部402により予測される場合とは、換言すれば、障害の予兆(具体的には予兆パターン)が障害予兆検知部402により検知される場合である。例えば、図4には、時刻t1〜t8とt11における予測の実行が例示されている。
なお、障害予兆検知部402は、具体的には、辞書情報記憶部403に記憶される辞書情報を利用して予兆を検知する。詳しくは図6とともに後述するとおり、第2実施形態では2種類の辞書情報が使われる。
また、障害予兆検知部402は、障害の予兆を検知すると、検知した結果を障害予兆情報記憶部404に記憶する。障害予兆情報記憶部404の詳細は図6とともに後述する。
ところで、図4に関する上記の説明から明らかなように、どのnに関しても、DF(n)の値は、検出サーバ400が1つのメッセージ420を受信するたびに変化する。ログ統計算出部405は、各nについてのDF(n)の値の算出に使うための1種の統計値(具体的には、DF(n)の分子の値と分母の値)を算出する。
そして、ログ統計算出部405は、算出した値をログ統計情報記憶部406に記憶する。ログ統計情報記憶部406の詳細については、図6とともに後述する。
また、検出サーバ400が受信したメッセージ420が、障害が実際に発生したことを知らせる種別のものであった場合、検出サーバ400は、図4の学習フェーズの処理を行う。
例えば、図4のメッセージM9は、障害#7の発生を知らせるメッセージ420の例である。検出サーバ400が時刻t9にメッセージM9を受信すると、予兆統計算出部407は、障害予兆情報記憶部404に記憶された情報を参照して、予測対象期間302に行われた予測の結果を読み出す。そして、予兆統計算出部407は、読み出した情報に基づいて、WF(f,n)の算出に使うための1種の統計値(すなわちWF(f,n)の分子と分母の値)を算出する。図4の例ではf=7であり、n=1,2,3,4である。
予兆統計算出部407は、算出結果を予兆統計情報記憶部408に記憶する。予兆統計情報記憶部408の詳細は、図6とともに後述する。
さて、例えば図4の時刻t11に例示されるように、障害予兆検知部402が障害の発生を予測すると、ランキング生成部409は推定結果情報430を生成する。上記のとおり、推定結果情報430は、例えばランキング情報305のような情報である。具体的には、ランキング生成部409は、ログ統計情報記憶部406と予兆統計情報記憶部408を参照してWF−IDF(f,n)を算出し、算出したWF−IDF(f,n)に基づいて推定結果情報430を生成する。
そして、ランキング生成部409は、生成した推定結果情報430を出力する。例えば、ランキング生成部409は、推定結果情報430をランキング情報記憶部410に蓄積してもよい。実施形態によっては、ランキング情報記憶部410が省略されてもよい。また、ランキング生成部409は、推定結果情報430をディスプレイに出力してもよい。ランキング生成部409は、推定結果情報430を含む電子メールまたはインスタントメッセージを、システム管理者に宛てて送信(すなわち出力)してもよい。
ところで、図5の検出サーバ400は、具体的には図2のコンピュータ100であってもよい。検出サーバ400がコンピュータ100により実現される場合、図2と図5は以下のように対応する。
検出サーバ400は、通信インタフェイス103を介してメッセージ420を受信する。また、検出サーバ400は、推定結果情報430を出力装置105に出力してもよく、記憶装置106に出力してもよく、駆動装置107を介して記憶媒体110に出力してもよい。もちろん、検出サーバ400は、通信インタフェイス103とネットワーク120を介して推定結果情報430を送信してもよい。
ログ情報記憶部401、辞書情報記憶部403、障害予兆情報記憶部404、ログ統計情報記憶部406、予兆統計情報記憶部408、およびランキング情報記憶部410は、記憶装置106により実現されてもよい。障害予兆検知部402、ログ統計算出部405、予兆統計算出部407、およびランキング生成部409は、プログラムを実行するCPU101により実現されてもよい。
また、図5の検出サーバ400は、図3のコンピュータ200であってもよい。この場合、メッセージ420は、コンピュータシステム230内の種々の構成アイテムから出力されて、ネットワーク210を介して、検出サーバ400としてのコンピュータ200に受信される。また、コンピュータシステム230のシステム管理者は、検出サーバ400から出力される推定結果情報430を参照して、コンピュータシステム230内のどの構成アイテムに対して対策をとるかを決め、適宜の対策を実行する。
続いて、図5中の種々の記憶部に記憶される情報の具体例について、図6を参照して説明する。図6は、第2実施形態で利用される各種テーブルの例を示す図である。
ログテーブル501は、ログ情報記憶部401に記憶される情報の一例である。ログテーブル501の各エントリは、検出サーバ400が受信した各メッセージ420に対応する。ログテーブル501の各エントリは、例えば以下の4つのフィールドを含んでもよい。
・検出サーバ400がメッセージ420を受信した時刻。
・メッセージ420を出力した構成アイテムを識別するIPアドレス。
・メッセージ420に含まれる文字列。
・メッセージ420の種別。
例えば、ログテーブル501の1番目のエントリは、2012年7月31日23時42分ちょうどに、IPアドレスB(10.0.7.6)により識別される構成アイテムから検出サーバ400が受信したメッセージ420に対応する。当該メッセージは、「Permission Denied」という文字列を含み、この文字列に対応する種別は「2」という種別である。検出サーバ400は、メッセージ420を受信するたびに、受信したメッセージ420に対応する新しいエントリをログテーブル501に追加する。
詳しくは図7のステップS104に関して後述するが、ログテーブル501のメッセージ種別は省略されてもよい。逆に、ログテーブル501がメッセージ種別を含む場合、メッセージ種別は以下のようにして記録されてもよい。
検出サーバ400は、メッセージ420を受信すると、以下に説明するメッセージ辞書テーブル502を参照する。そして、検出サーバ400は、メッセージ辞書テーブル502とメッセージ420に含まれる文字列とに基づいて、メッセージ420の種別を判断し、判断結果をログテーブル501にメッセージ種別として記録する。
メッセージ辞書テーブル502は、辞書情報記憶部403に記憶される情報の一例である。メッセージ辞書テーブル502の各エントリは、メッセージの1つの種別に対応する。上記のとおり、いくつかの種別のメッセージは、それぞれ障害の発生を示し、他の種別のメッセージは、それぞれ障害の発生以外のイベントを示す。メッセージ辞書テーブル502の各エントリは、例えば以下の2つのフィールドを含んでもよい。
・メッセージ種別。
・当該メッセージ種別に分類されるメッセージに含まれる文字列。
例えば、メッセージ辞書テーブル502の2番目のエントリは、「Permission denied」という文字列を含むメッセージ420が、「2」という種別に分類されることを示す。そのため、ログテーブル501の1番目のエントリのメッセージ種別は、上記のとおり「2」と記録されている。
なお、個々のメッセージ420に含まれる実際の文字列は、種別によって予め決められた固定の文字列と、環境等に応じて可変の文字列とを含む文字列であってもよい。この場合、メッセージ辞書テーブル502のメッセージ文字列と、受信されたメッセージ420に含まれる文字列との完全一致ではなく、部分一致に基づいて、メッセージ辞書テーブル502を用いたメッセージの種別の判断が行われてもよい。
なお、メッセージ辞書テーブル502は、予め用意された静的なテーブルであってもよいし、動的に学習されてもよい。メッセージ辞書テーブル502の学習は、例えば、公知の方法にしたがって行われてもよい。
さて、パターン辞書テーブル503も、辞書情報記憶部403に記憶される情報の一例である。パターン辞書テーブル503の各エントリは、例えば以下の3つのフィールドを含んでもよい。
・障害の種別(図6の例では、具体的には、当該種別の障害の発生を通知するメッセージの種別により表される)。
・当該種別の障害の予兆パターン(つまり、当該種別の障害の予兆となるメッセージパターンであり、図6の例では、具体的には、当該メッセージパターンに含まれるメッセージの種別のリストにより表される)。
・当該予兆パターンから、どの程度の蓋然性で、当該種別の障害の発生が予測されるのかを示すスコア。
なお、実施形態によってはスコアは省略されてもよい。検出サーバ400は、例えば公知の方法にしたがって、パターン辞書テーブル503を動的に学習してもよい。スコアは、例えば、学習の過程で観察された、実際の障害とメッセージパターンとの共起頻度に基づく値であってもよい。
例えば、図4の時刻t11で障害予兆検知部402は、ウィンドウ303内には2つのメッセージM10とM11が含まれることを認識する。また、ログテーブル501がメッセージ種別を含む場合は、障害予兆検知部402は、ログテーブル501から、メッセージM10とM11それぞれの種別を認識してもよい。あるいは、障害予兆検知部402は、ログテーブル501のメッセージ文字列とメッセージ辞書テーブル502に基づいて、メッセージM10とM11それぞれの種別を認識してもよい。
いずれにしろ、障害予兆検知部402は、メッセージM10とM11それぞれの種別が「2」と「1」であることを認識する。つまり、障害予兆検知部402は、ウィンドウ303に対応するメッセージパターン[1,2]を認識する。
よって、障害予兆検知部402は、パターン辞書テーブル503内でメッセージパターン[1,2]を検索する。その結果、図6の例では、パターン辞書テーブル503の1番目のエントリが見つかる。
したがって、障害予兆検知部402は、メッセージパターン[1,2]から予測される障害の種別が「7」である、ということを認識する。以上のようにして、障害予兆検知部402は、時刻t11において、障害#7の予兆として、メッセージパターン[1,2]を検出する。なお、障害予兆検知部402は、ウィンドウに対応するメッセージパターンを障害の予兆として検出するか否かを、スコアの値と閾値に基づいて、決めてもよい。
また、障害予兆検知部402は、1つのメッセージパターンから2つ以上の種別の障害の発生を予測してもよい。つまり、パターン辞書テーブル503において、異なる障害種別に対応する2つ以上のエントリの予兆パターンが、たまたま同じメッセージパターンである場合もあり得る。
さて、障害予兆テーブル504は、障害予兆情報記憶部404に記憶される情報の一例である。障害予兆検知部402は、1つの予兆パターンを検出するたびに、新規エントリを障害予兆テーブル504に追加する。障害予兆テーブル504の各エントリは、例えば以下の5つのフィールドを含んでもよい。
・障害予兆テーブル504内で個々のエントリを識別するID(identification)。
・障害予兆検知部402が発生を予測した障害の種別。
・当該種別の障害について障害予兆検知部402が検知した予兆パターン(つまり、当該種別の障害の予測の根拠として障害予兆検知部402が使ったメッセージパターン)。
・障害予兆検知部402が予測を実行した時刻。
・当該種別の障害がいつから始まりそうか(つまり当該種別の障害がいつ発生しそうか)ということを障害予兆検知部402が予測する場合は、その予測された開始時刻。
なお、実施形態によっては開始時刻が省略されてもよい。逆に、予測された当該種別の障害がいつまでに発生しそうかということを障害予兆検知部402が予測する場合は、その予測された時刻を示す終了時刻フィールドがさらにあってもよい。いつからいつまでの期間に障害が発生しそうかを障害予兆検知部402が予測する場合は、開始時刻と終了時刻の両方のフィールドがあってもよい。
ログ統計テーブル505は、ログ統計情報記憶部406に記憶される情報の一例である。ログ統計テーブル505には、図4に関して説明したDF(n)を算出するための情報が記憶される。具体的には、ログ統計テーブル505の各エントリは、以下の3つのフィールドを含む。
・当該エントリを識別するID。
・メッセージ種別。
・カウント。
任意のメッセージ種別「n」について、メッセージ種別が「n」のエントリのカウントは、DF(n)の分子を示す。また、第2実施形態では、どのnについても、DF(n)の分母は共通の値(すなわち、障害予兆検知部402によって今までに分析されたウィンドウの総数)である。この共通の値が、メッセージ種別として便宜上「*」と書かれたエントリにおいて、カウントとして記録される。
図6には、図4の時刻t11におけるログ統計テーブル505の5つのエントリが例示されている。なお、ログ統計テーブル505は、「1」〜「4」以外のメッセージ種別に対応する他のエントリをさらに含み得るが、図6ではそれらのエントリは省略されている。
予兆統計テーブル506は、予兆統計情報記憶部408に記憶される情報の一例である。予兆統計テーブル506には、図4に関して説明したWF(f,n)を算出するための情報が記憶される。具体的には、予兆統計テーブル506の各エントリは、以下の4つのフィールドを含む。
・当該エントリを識別するID。
・障害種別。
・メッセージ種別。
・カウント。
任意のfとnの組み合わせについて、障害種別が「f」でメッセージ種別が「n」のエントリのカウントは、WF(f,n)の分子を示す。また、第2実施形態では、ある1つの「f」という障害種別に関しては、どのnについても、WF(f,n)の分母は共通の値(すなわち、障害が発生した時点を終了時点とする予測対象期間内で行われた予測のうち、正解だった予測の回数)である。この共通の値が、メッセージ種別として便宜上「*」と書かれたエントリにおいて、カウントとして記録される。
図6には、図4の時刻t11における予兆統計テーブル506の5つのエントリが例示されている。換言すれば、図6には、図4の時刻t9での障害#7の発生を契機に学習された内容が例示されている。なお、予兆統計テーブル506は、「7」以外の障害種別に対応する他のエントリをさらに含み得るが、図6ではそれらのエントリは省略されている。
ランキングテーブル507は、図4の検出フェーズで生成される。ランキングテーブル507は、下記の「予兆ID」以外は、図4のランキング情報305と同様である。つまり、ランキングテーブル507の各エントリは、障害予兆検知部402により検知された予兆パターン中の、いずれか1つ以上のメッセージの発信元たる構成アイテムに対応する。また、ランキングテーブル507の各エントリは、以下の5つのフィールドを含む。
・ランキングテーブル507の生成の契機となった予測を識別するID(以下「予兆ID」ともいう)。つまり、ランキングテーブル507の生成の契機となった予測の結果を障害予兆検知部402が障害予兆テーブル504に記録するときに使われたID。
・順位。
・IPアドレス。
・メッセージ種別。
・スコア(具体的にはWF−IDF(f,n))。
なお、予兆IDは、複数回の予測にそれぞれ対応するランキング情報同士を、ランキング情報記憶部410内で区別するための識別情報である。よって、ランキングテーブル507が推定結果情報430として出力される際には、予兆IDは省略されてもよい。
また、予兆パターン中の2つ以上のメッセージを出力した構成アイテムに対応するエントリでは、メッセージ種別のフィールドには、それら2つ以上のメッセージの種別のリストが記憶される。
ランキングテーブル507は、推定結果情報430として、例えば、出力装置105に出力されてもよいし、検出サーバ400の外部の他の装置に出力されてもよい。また、ランキングテーブル507の各エントリは、ランキング情報記憶部410に記憶されてもよい。
続いて、図7のフローチャートを参照して、検出サーバ400が行う処理について説明する。なお、検出サーバ400が行う種々の処理のうち、ログ情報記憶部401へのメッセージ420の蓄積と、パターン辞書テーブル503の学習と、障害予兆検知部402による障害予兆の検知は、公知の処理と同様であってよい。よって、図7ではこれらの処理は省略されている。図7には、具体的には、ログ統計算出部405と予兆統計算出部407とランキング生成部409により行われる処理が示されている。
ステップS101で検出サーバ400は、何らかのイベントの発生を待つ。そして、「障害発生通知以外のメッセージ420が受信された」というイベントが発生すると、ログ統計算出部405がステップS102の処理を行う。他方、「障害発生通知であるメッセージ420が受信された」というイベントが発生すると、予兆統計算出部407がステップS103の処理を行う。また、「障害予兆検知部402により障害予兆が検知された」というイベントが発生すると、ランキング生成部409がステップS104〜S113の処理を行う。
例えば、図4の時刻t1〜t8、t10、およびt11のいずれにおいても、ステップS102の処理が実行される。また、図4の時刻t9では、ステップS103の処理が実行される。そして、図4の時刻t1〜t8やt11のように、何らかの種別の障害の発生が障害予兆検知部402により予測された場合には、ステップS104〜S113の処理が実行される。
さて、ステップS102でログ統計算出部405は、ログ統計情報を更新する。具体的には、ログ統計算出部405は、ログ統計情報記憶部406内のログ統計テーブル505中の2つ以上のエントリを更新する。
まず、ログ統計算出部405は、ステップS101でメッセージ420が受信された時点を終了時点とする長さT1のウィンドウに含まれるメッセージを、ログテーブル501から検索する。検索の結果、ステップS101で受信されたメッセージ420を少なくとも含む、1つ以上のメッセージが見つかる。例えば、図4の時刻t3でのメッセージM3の受信を契機にステップS102の処理が実行される場合、メッセージM1〜M3が見つかる。
ログ統計算出部405は、見つかった各メッセージについて、ログ統計テーブル505において当該メッセージの種別に対応するエントリのカウントを1だけインクリメントする。さらに、ログ統計算出部405は、ログ統計テーブル505において「*」というメッセージ種別のエントリのカウントも、1だけインクリメントする。ステップS102の処理が完了すると、検出サーバ400は、再びステップS101でイベントの発生を待つ。
例えば、図4の時刻t11でメッセージM11が受信された場合のステップS102の動作は以下のとおりである。時刻t11を終了時点とするウィンドウ303には、2つのメッセージM10とM11が含まれ、それぞれの種別は「2」と「1」である。よって、この場合、ステップS102でログ統計算出部405は、ログ統計テーブル505においてメッセージ種別が「2」と「1」と「*」の3つのエントリそれぞれのカウントを1だけインクリメントする。
さて、ステップS103で予兆統計算出部407は、予兆統計情報を更新する。具体的には、予兆統計算出部407は、予兆統計情報記憶部408内の予兆統計テーブル506中の特定のいくつかのエントリを次のようにして更新する。
予兆統計算出部407は、ステップS101で受信されたメッセージ420によって通知された障害の種別を検索キーとして用いて、予兆統計テーブル506を検索する。検索の結果見つかった全エントリが、ステップS103での更新対象のエントリである。
例えば、図4の時刻t9にステップS103が実行される場合、障害種別が「7」の全エントリが見つかる。予兆統計算出部407は、予兆統計テーブル506の中から見つけた各エントリのカウントを、0に初期化する。
また、予兆統計算出部407は、ステップS101で受信されたメッセージ420によって通知された障害の発生に先立つ長さT2の予測対象期間に行われた予測結果を、障害予兆情報記憶部404から検索する。
例えば、図4の時刻t9にステップS103が実行される場合、予兆統計算出部407が障害予兆情報記憶部404を検索すると、時刻t1〜t8の各々で行われた8回の予測の結果が見つかる。つまり、検索の結果、障害予兆テーブル504の8つのエントリが見つかる。
予兆統計算出部407は、障害予兆テーブル504の中から見つけた各エントリについて、当該エントリの障害種別が、ステップS101で受信されたメッセージ420によって通知された障害の種別と同じか否かを判断する。
これら2つの種別が互いに異なる場合、予兆統計算出部407は、障害予兆テーブル504中の当該エントリを無視する。なぜなら、障害予兆テーブル504中の当該エントリは外れた予測を表しているからである。
逆に、2つの種別が等しい場合、予兆統計算出部407は、障害予兆テーブル504中の当該エントリに記録されている予兆パターン(すなわち、正解と判明した予兆パターン)を参照する。そして、予兆統計算出部407は、当該予兆パターンに含まれる各メッセージ種別について、以下の処理を行う。
・予兆統計テーブル506において、ステップS101で受信されたメッセージ420によって通知された障害の種別と、上記予兆パターンに含まれる当該メッセージ種別のペアに対応づけられたカウントを、1だけインクリメントする処理。
・予兆統計テーブル506において、ステップS101で受信されたメッセージ420によって通知された障害の種別と、「*」という種別のペアに対応づけられたカウントを、1だけインクリメントする処理。
例えば、図4の時刻t9にステップS103が実行される場合、予兆統計算出部407は、障害予兆テーブル504から見つかった8個のエントリのうち、時刻t4とt7の予測に対応する2個のエントリを無視する。他方、予兆統計算出部407は、残りの6個のエントリの各々の予兆パターンに含まれる各メッセージ種別に関して、上記の処理を行う。その結果、予兆統計テーブル506におけるIDが「1」〜「5」の5つのエントリそれぞれのカウント値は、図6に示す値に更新される。
以上のようにして、ステップS103では、図4の学習フェーズの処理が行われ、予兆統計テーブル506に学習結果が反映される。ステップS103の処理が完了すると、検出サーバ400は、再びステップS101でイベントの発生を待つ。
さて、ステップS104〜S113の処理は、障害予兆検知部402によって障害の発生が予測されたとき(すなわち障害予兆が検知されたとき)に、ランキング生成部409により実行される。ステップS104〜S113の処理は、図1のステップS2〜S4に対応し、図4の検出フェーズに対応する。
ステップS104でランキング生成部409は、障害予兆検知部402が障害の予測に用いたウィンドウに含まれる全メッセージの情報を取得し、ランキング情報(具体的には、ランキングテーブル507)を空に初期化する。
例えば、障害予兆検知部402は、長さT2の予測対象期間の範囲内の未来において障害が発生しそうだ、と予測すると、予測に用いたウィンドウの開始時点と終了時点を、予測結果とともにランキング生成部409に通知してもよい。すると、ランキング生成部409は、ログテーブル501から、上記ウィンドウに含まれる全メッセージのエントリを取得することができる。なお、ランキング生成部409は、ログテーブル501中のフィールドのうち、少なくともIPアドレスとメッセージ種別さえ取得すれば十分である。
実施形態によっては、障害予兆検知部402がランキング生成部409に、上記ウィンドウに含まれる各メッセージの発信元のIPアドレスと、各メッセージの種別を、予測結果とともに通知してもよい。この場合、ランキング生成部409は、ログテーブル501を参照しなくても、ウィンドウに含まれる全メッセージについてのIPアドレスとメッセージ種別を取得することができる。また、この場合、ログテーブル501のメッセージ種別は省略可能である。
例えば、図4の時刻t11で障害予兆検知部402が障害#7の発生を予測したとする。この場合、ランキング生成部409は、ステップS104で、ログテーブル501または障害予兆検知部402から、ウィンドウ303に含まれる全メッセージに関して、少なくともメッセージ種別と発信元のIPアドレスを取得する。つまり、ステップS104でランキング生成部409は、少なくとも、図4に詳細予兆情報304として例示されている情報を取得する。
また、上記のとおりステップS104でランキング生成部409は、ランキングテーブル507を初期化する。
次に、ステップS105でランキング生成部409は、ステップS104で情報を取得したメッセージの中に未処理のメッセージがあるか否かを判断する。未処理のメッセージが残っていれば、ランキング生成部409は、次にステップS106の処理を実行する。逆に、ステップS104で情報を取得した全メッセージについての処理が完了していれば、ランキング生成部409は、次にステップS113の処理を実行する。
ステップS106でランキング生成部409は、未処理のメッセージを1つ選択する。例えば、ランキング生成部409は、ステップS104で図4のメッセージM10とM11についての情報を取得した場合、メッセージM10とM11のうちの1つを選択する。以下、ステップS106で選択されたメッセージを「選択メッセージ」という。
次に、ステップS107でランキング生成部409は、選択メッセージの種別に関するログ統計情報と予兆統計情報を取得する。説明の便宜上、選択メッセージの種別が「n」であるものとし、障害予兆検知部402により障害#fが予測されたものとする。この場合、ステップS107でランキング生成部409は、具体的には以下の4つの値を取得する。
ランキング生成部409は、ログ統計テーブル505においてメッセージ種別の値が「n」のエントリを参照し、カウントの値を読み取る。こうして読み取られた値は、DF(n)の分子に相当する。
さらに、ランキング生成部409は、ログ統計テーブル505においてメッセージ種別の値が「*」のエントリを参照し、カウントの値を読み取る。こうして読み取られた値は、DF(n)の分母に相当する。
また、ランキング生成部409は、予兆統計テーブル506において障害種別の値が「f」かつメッセージ種別の値が「n」のエントリを参照し、カウントの値を読み取る。こうして読み取られた値は、WF(f,n)の分子に相当する。
そして、ランキング生成部409は、予兆統計テーブル506において障害種別の値が「f」かつメッセージ種別の値が「*」のエントリを参照し、カウントの値を読み取る。こうして読み取られた値は、WF(f,n)の分母に相当する。
例えば、選択メッセージが図4のメッセージM10である場合、ステップS107では、図4に例示されたDF(2)の分子と分母(すなわち6と12000)と、図4に例示されたWF(7,2)の分子と分母(すなわち5と6)が取得される。
続いて、ステップS108でランキング生成部409は、ステップS107で取得した4つの値を用いて、式(1)にしたがって、WF−IDF(f,n)の値を算出する。例えば、選択メッセージが図4のメッセージM10である場合は、式(3)に示すように、約2.75という値が算出される。他方、選択メッセージが図4のメッセージM11である場合は、式(2)に示すように、約0.67という値が算出される。
次に、ステップS109でランキング生成部409は、選択メッセージの発信元のIPアドレスが既にランキングテーブル507に含まれているか否かを判断する。
例えば、選択メッセージが図4のメッセージM10である場合、ランキング生成部409は、メッセージM10の発信元の構成アイテムを識別するIPアドレスB(10.0.7.6)を検索キーとして用いて、ランキングテーブル507を検索する。検索の結果、エントリが見つかれば、ランキング生成部409は、「選択メッセージの発信元のIPアドレスが既にランキングテーブル507に含まれている」と判断する。逆に、エントリが見つからなければ、ランキング生成部409は、「選択メッセージの発信元のIPアドレスはランキングテーブル507に含まれていない」と判断する。
選択メッセージの発信元のIPアドレスがランキングテーブル507に含まれていない場合、ランキング生成部409は、次にステップS110の処理を行う。逆に、選択メッセージの発信元のIPアドレスが既にランキングテーブル507に含まれている場合、ランキング生成部409は、次にステップS111の処理を行う。
ステップS110でランキング生成部409は、ランキングテーブル507に、以下の4つの値を含む新規エントリを追加する。
・ステップS101で障害予兆検知部402から通知された予測結果に関するID(つまり予兆ID)。
・選択メッセージの発信元のIPアドレス。
・選択メッセージの種別。
・選択メッセージのスコアとしてステップS108で算出されたWF−IDF値。
例えば、障害予兆検知部402があるメッセージパターンからある障害の発生を予測し、その予測結果を障害予兆テーブル504に「p」というIDとともに記憶したとする。この場合、ステップS101では、予測結果とともに障害予兆検知部402から「p」というIDがランキング生成部409に通知される。以上のように通知された「p」というIDが、ステップS110における予兆IDである。
なお、ステップS110で追加される新規エントリにおいて、順位のフィールドは空でよい。エントリの追加後、ランキング生成部409は、再びステップS105の判断を行う。
他方、ステップS111は、1つの構成アイテムから出力された2つ以上のメッセージがウィンドウ内に含まれる場合に、それら2つ以上のメッセージのうち、2番目以降にステップS106で選択されたメッセージに関して、実行される。
具体的には、ステップS111でランキング生成部409は、ステップS109でのランキングテーブル507の検索の結果見つかったエントリにおけるメッセージ種別フィールドのリストに、選択メッセージの種別を追加する。また、ステップS111でランキング生成部409は、ランキングテーブル507中のスコアが、ステップS108で算出したWF−IDF(f,n)以上か否かを判断する。なおここで、「ランキングテーブル507中のスコア」とは、具体的には、ステップS109でのランキングテーブル507の検索の結果見つかったエントリ内のスコアのことである。
ランキングテーブル507中のスコアが、算出したWF−IDF(f,n)以上である場合、上記エントリのスコアを更新する必要はない。よって、この場合、ランキング生成部409は、次にステップS105の判断を行う。
逆に、ランキングテーブル507中のスコアが、算出したWF−IDF(f,n)未満の場合、ランキング生成部409は、次に、ステップS112でランキングテーブル507のスコアを更新する。具体的には、ランキング生成部409は、ステップS109でのランキングテーブル507の検索の結果見つかったエントリ中のスコアを、ステップS108で算出したWF−IDF(f,n)の値に置き換える。
以上のようなステップS112でのスコアの更新の後、ランキング生成部409は、ステップS105の判断を再び行う。
例えば、障害#fの予兆パターンの中には「n1」という種別のメッセージと「n2」という種別のメッセージがともに含まれ、かつ、両メッセージが同じ1つの構成アイテムから出力された、という場合があり得る。以上のステップS109〜S112によれば、このような場合に、WF−IDF(f,n1)とWF−IDF(f,n2)のうちの大きい方の値がスコアとして採用される。
例えば、「n1」という種別のメッセージは、障害#fとの共起頻度が他の種別の障害との共起頻度と比べて低いか、または、どの種類の障害との共起頻度も比較的高いものとする。つまり、WF(f,n1)が小さいか、または、DF(n1)が大きいものとする。他方、「n2」という種別のメッセージは、障害#fとの共起頻度が比較的高く、かつ、他の種類の障害との共起頻度は比較的低いものとする。つまり、WF(f,n2)が大きく、かつ、f≠gなるgについてWF(g,n2)が小さい(別の観点から換言すればDF(n2)が比較的小さい)ものとする。
この場合、WF−IDF(f,n1)よりもWF−IDF(f,n2)の方が大きい。また、この場合、「n1」という種別のメッセージと障害#fとの関連性よりも、「n2」という種別のメッセージと障害#fとの関連性の方が高い。つまり、「n2」という種別のメッセージは、「n1」という種別のメッセージよりも、一層よく障害#fを特徴づけている。よって、障害#fの予測にとっての重要性がより高い構成アイテムは、「n2」という種別のメッセージの発信元の構成アイテムの方である。
よって、ランキング生成部409は、ステップS109〜S112にしたがって、1つの構成アイテムに関して算出した2つ以上のWF−IDF(f,n)値のうちの最大のものを採用する。
さて、ステップS104で情報が取得された全メッセージについてのステップS106〜S112の処理が完了すると、ランキング生成部409は、ステップS113で、スコア(つまりWF−IDF値)の降順に、ランキングテーブル507のエントリをソートする。そして、ランキング生成部409は、ソート結果に応じた順位を各エントリに記録する。図6には、以上のようにして順位づけされたランキングテーブル507が例示されている。
さらに、ランキング生成部409は、ステップS113で、ランキングテーブル507を推定結果情報430として出力する。例えば、ランキング生成部409は、ランキングテーブル507の全エントリをランキング情報記憶部410に追加してもよい。ランキング生成部409は、ディスプレイ等の出力装置105に、ランキングテーブル507を出力してもよいし、通信インタフェイス103を介して他の装置にランキングテーブル507を出力してもよい。ランキング生成部409は、例えば、ランキングテーブル507を含む電子メールやインスタントメッセージなどを送信してもよい。
ステップS113の出力後、検出サーバ400は、再びステップS101でイベントの発生を待つ。
以上の第2実施形態によれば、障害の発生を未然に防ぐうえで有益な示唆を与える推定結果情報430が、検出サーバ400から出力される。よって、システム管理者は、推定結果情報430を参照することで、「障害の発生を未然に防ぐうえではどの構成アイテムに対して対策を講じるのが有効なのか」ということを、簡単に判断することができる。例えば、図6のランキングテーブル507を見たシステム管理者は、「障害#7の予測と関連性が高い構成アイテムは、IPアドレスB(10.0.7.6)で識別される構成アイテムである」と判断することができる。場合によっては、システム管理者は、ランキングテーブル507に基づいて、「IPアドレスB(10.0.7.6)で識別される構成アイテムに対して対策をとることが、予測された障害#7の発生を予防するうえで重要である」と判断してもよい。
したがって、第2実施形態は、コンピュータシステムにおける障害の発生を予防することでコンピュータシステムの可用性を向上させる効果を奏する。
続いて、図8〜14を参照して第3実施形態について説明する。第3実施形態では、第2実施形態の検出フェーズで生成されるランキング情報から、より信頼度の高い情報(以下、「改良(refined)ランキング情報」という)が生成される。具体的には、改良ランキング情報の生成においては、コンピュータシステムに含まれる構成アイテム間の関係(例えば論理的依存関係や物理的接続関係など)を示す情報が学習され、利用される。そして、第3実施形態の検出サーバは、生成した改良ランキング情報を出力する。
第3実施形態は、コンピュータシステム内に、互いに同じかまたは互いに類似する複数の部分を含むような環境に特に好適である。なぜなら、第3実施形態によれば、コンピュータシステム内のある部分に生じる可能性のある障害を防ぐのに有益な改良ランキング情報を、当該ある部分と同じかまたは類似する他の部分に過去に生じた障害に応じて学習された情報から得ることも可能だからである。
例えば、第3実施形態は、クラウド環境のインフラストラクチャを提供するためにデータセンタ内に設けられる大規模なコンピュータシステムに適用されてもよい。上記のような大規模なコンピュータシステムは、多数の物理サーバを含む。場合によっては、コンピュータシステムは、ディスクアレイ装置などのストレージ装置をさらに多数含むこともある。この種の環境では、例えば、いくつかの物理サーバが1つのネットワークデバイス(例えばL2スイッチなど)に接続される。また、各物理サーバが仮想化されることも多く、各物理サーバ上でそれぞれ複数の論理サーバが動作することも多い。
したがって、コンピュータシステム内のある一部分(例えばある1つのブロードキャストドメイン)のネットワークトポロジが、他の一部分のネットワークトポロジと同じか、または類似している場合も多い。同様に、ある物理サーバ上のソフトウェア構成が、他の物理サーバ上のソフトウェア構成と同じか、または類似している場合も多い。つまり、上記のような大規模なコンピュータシステムは、互いに同じかまたは互いに類似する複数の部分を含むことが多い。よって、この種の大規模なコンピュータシステムには、第3実施形態が適用されることが好ましい。
さて、図8は、第3実施形態における関係情報の学習を説明する図である。図8の例では、時刻t21にメッセージM21が出力され、時刻t22にメッセージM22が出力され、時刻t23にメッセージM23が出力されたものとする。また、時刻t23を終了時点とするウィンドウには、メッセージM21、M22、およびM23のみが含まれていたものとする。
そして、メッセージM21、M22、およびM23を含むメッセージパターン601に基づいて、障害#39の発生が予測されたものとする。つまり、メッセージパターン601が、障害#39の予兆パターンとして検知されたものとする。さらに、その後の時刻t24において、実際に障害#39が発生したことを通知するメッセージM24が出力されたものとする。なお、図8では、メッセージM21、M22、M23、およびM24それぞれの発信元の構成アイテムのIPアドレスが、「X」、「Z」、「W」、および「Y」と示されている。
時刻t24における実際の障害#39の発生により、時刻t23に行われた予測が正しかったことが判明する。つまり、時刻t23に検知されたメッセージパターン601が正しい予兆パターンであったことが、時刻t24に判明する。そこで、第3実施形態では、正しいことが判明した予兆パターン内の各メッセージの発信元の構成アイテムと、障害が発信した構成アイテムとの間の関係が、時刻t24(またはそれ以降)に学習される。
図8には、例として、コンピュータシステムに含まれる複数の構成アイテムのうち、17個の構成アイテムの間の関係が、グラフ602の形式で示されている。なお、構成アイテム間の関係を示す構成情報は、図8〜9では理解の助けとするためにグラフの形式で示されている。しかし、構成情報の具体的なデータ形式は、実施形態に応じて任意である。
グラフ602は、17個の構成アイテムを示す17個のノードN1〜N17を含む。なお、以下では説明の簡単化のため、あるノードNiにより表される構成アイテムのことも、単に「ノードNi」ということがある(1≦i)。
ノードN1〜N6は、ゲストOSのレイヤに属する。ノードN1、N2、N3およびN4が表す構成アイテムのIPアドレスは、それぞれ、「X」、「Y」、「Z」、および「W」である。なお、ゲストOSのレイヤは、論理サーバのレイヤのうちの1つである。
また、図8〜9の例では、ゲストOSと、当該ゲストOS上で動作する全アプリケーションを含む集合が、ゲストOSのレイヤの1つの構成アイテムとして扱われる。ただし、以下では説明の簡単化のため、例えばノードN1により表される構成アイテム(すなわちアプリケーションを含む構成アイテム)のことを、単に「ゲストOS」という場合もある。
なお、図8〜9の例では、メッセージの発信元がいずれもゲストOSのレイヤの構成アイテムであるが、これは偶然である。他のレイヤの構成アイテムがメッセージを出力することも、もちろんある。
ノードN7〜N10は、ホストOSのレイヤに属する。なお、ホストOSのレイヤも、論理サーバのレイヤのうちの1つである。
また、図8〜9の例では、ハイパーバイザと、当該ハイパーバイザ上で動作するホストOSとを含む集合が、ホストOSのレイヤの1つの構成アイテムとして扱われる。ただし、以下では説明の簡単化のため、例えばノードN7により表される構成アイテムのことを単に「ホストOS」という場合もある。
ノードN11〜N14は、物理サーバのレイヤに属する。また、ノードN15〜N16はL2スイッチのレイヤに属し、ノードN17はL3スイッチのレイヤに属する。
グラフ602によれば、ノードN17により表されるL3スイッチ(例えば図3のL3スイッチ290)には、ノードN15とN16により表される2台のL2スイッチ(例えば図3のL2スイッチ280と281)が接続されている。グラフ602では、このようなネットワークデバイス間の直接的かつ物理的な接続関係は、2つのノード間のエッジにより表される。
また、グラフ602によれば、ノードN15により表されるL2スイッチには、ノードN11とN12により表される2台の物理サーバ(例えば図3の物理サーバ240と250)が接続されている。また、ノードN16により表されるL2スイッチには、ノードN13とN14により表される2台の物理サーバ(例えば図3の物理サーバ260と270)が接続されている。
グラフ602では、このようなネットワークデバイスと物理サーバの間の直接的かつ物理的な接続関係も、2つのノード間のエッジにより表される。また、例えばノードN11からノードN15を通ってノードN17に至るパスは、物理サーバとL3スイッチの間の間接的な接続関係を示す。
さらに、グラフ602によれば、ノードN11により表される物理サーバ(例えば図3の物理サーバ240)上で、ノードN7により表されるホストOS(例えば図3のホストOS242)が動作する。また、ノードN1とN2により表されるゲストOS(例えば図3のゲストOS243と244)は、ノードN7により表されるホストOSの機能を利用する。グラフ602では、このようなハードウェアとソフトウェアの間の論理的依存関係や、2つのソフトウェア間の論理的依存関係も、2つのノード間のエッジにより表される。
また、グラフ602によれば、ノードN12により表される物理サーバ(例えば図3の物理サーバ250)上で、ノードN8により表されるホストOS(例えば図3のホストOS252)が動作する。また、ノードN3とN4により表されるゲストOS(例えば図3のゲストOS253と254)は、ノードN8により表されるホストOSの機能を利用する。
そして、グラフ602によれば、ノードN13により表される物理サーバ(例えば図3の物理サーバ260)上で、ノードN9により表されるホストOS(例えば図3のホストOS262)が動作する。また、ノードN5により表されるゲストOS(例えば図3のゲストOS263)は、ノードN9により表されるホストOSの機能を利用する。
さらに、グラフ602によれば、ノードN14により表される物理サーバ(例えば図3の物理サーバ270)上で、ノードN10により表されるホストOS(例えば図3のホストOS272)が動作する。また、ノードN6により表されるゲストOS(例えば図3のゲストOS273)は、ノードN10により表されるホストOSの機能を利用する。
例えば以上のようなグラフ602により表される構成情報を用いて、第3実施形態の検出サーバは、関係情報を学習する。具体的には、検出サーバは、検知した予兆パターンが正しかったことを認識すると、予兆パターン内の各メッセージと、障害を通知するメッセージを、グラフ602にマッピングする。
例えば、図8の例では、メッセージM21の発信元の構成アイテムは、「X」というIPアドレスで識別され、かつ、ノードN1により示される。また、メッセージパターン601が正しい予兆パターンであることが、時刻t24に判明する。よって、検出サーバは、メッセージM21を、ノードN1にマッピングする。同様に、検出サーバは、メッセージM22をノードN3にマッピングし、メッセージM23をノードN4にマッピングする。
また、時刻t24に障害#39が発生した構成アイテム(すなわち、障害#39の発生を通知するメッセージM24の発信元)は、「Y」というIPアドレスで識別され、かつ、ノードN2により示される。よって、検出サーバは、メッセージM24をノードN2にマッピングする。
そして、検出サーバは、予兆パターン内のメッセージがマッピングされたノードと、障害の発生を通知するメッセージがマッピングされたノードとの関係を学習する。2つのノード間の関係は、2つのノード間の最短パスにより一意に表される。よって、第3実施形態では、2つのノード間の最短パスが、2つのノードによりそれぞれ表される構成アイテム同士の関係を示す関係情報として学習される。具体的には、図8の例では、検出サーバはパスP1〜P3を学習する。
パスP1は、メッセージM21の発信元の構成アイテムと、障害#39の発生した構成アイテムとの間の関係を示す。具体的には、パスP1は、ノードN1から始まり、ノードN7を通って、ノードN2に至るパスである。つまり、パスP1は、「正しい予測に使われた『1』という種別のメッセージの発信元は、予測された障害#39が実際に発生したゲストOSによって機能が利用されるホストOSの機能を利用する、他のゲストOSである」ということを示す。
パスP2は、メッセージM22の発信元の構成アイテムと、障害#39の発生した構成アイテムとの間の関係を示す。具体的には、パスP2は、ノードN3から始まり、ノードN8、N12、N15、N11、およびN7を通って、ノードN2に至るパスである。つまり、パスP2は、「正しい予測に使われた『2』という種別のメッセージの発信元は、予測された障害#39が実際に発生したゲストOSが動作している物理サーバとL2スイッチを介して接続された他の物理サーバ上の、ゲストOSである」ということを示す。
パスP3は、メッセージM23の発信元の構成アイテムと、障害#39の発生した構成アイテムとの間の関係を示す。具体的には、パスP3は、ノードN4から始まり、ノードN8、N12、N15、N11、およびN7を通って、ノードN2に至るパスである。つまり、パスP3は、「正しい予測に使われた『3』という種別のメッセージの発信元は、予測された障害#39が実際に発生したゲストOSが動作している物理サーバとL2スイッチを介して接続された他の物理サーバ上の、ゲストOSである」ということを示す。
なお、2つのノードを結ぶパスは、複数あり得る。例えば、ノードN1からN2までの可能なパスの中には、例えば、ノードN1から始まって、ノードN7とN11を通り、再度ノードN7に戻ってから、ノードN2に至るようなパスも、存在する。しかし、このパスは、ループを含み、したがって最短ではない。このように最短ではないパスは、ノードN1とN2の間の関係を示す関係情報としては使われない。
検出サーバは、例えばワーシャル・フロイド法(Warshall-Floyd algorithm)などの公知のアルゴリズムを利用することで、最短パスを認識することができる。
さて、第3実施形態の検出サーバは、以上のようにして障害の実際の発生に応じて学習した関係情報を、後に同じ種別の障害の発生が予測された際のランキング情報の改良に用いる。具体的には、第3実施形態の検出サーバは、何らかの種別の障害の発生を予測すると、まず、第2実施形態の検出サーバ400と同様にしてランキング情報を生成する。そして、第3実施形態の検出サーバは、生成したランキング情報と、学習した関係情報に基づいて、改良ランキング情報を生成する。
図9は、第3実施形態におけるランキングの改良について説明する図である。図9は、図8のパスP1〜P3が学習された後に、メッセージM31〜M33が出力され、メッセージM31〜M33を含むメッセージパターンから、障害#39の発生が予測された場合を例示している。
なお、メッセージM31の種別は「3」であり、メッセージM32の種別は「2」であり、メッセージM33の種別は「1」であるものとする。また、障害#39の予測に使われるウィンドウ内には、メッセージM31〜M33のみが含まれていたとする。
ここで、コンピュータシステムには、図8に例示した17個の構成アイテムだけでなく、さらに、図9に例示する10個の構成アイテムが少なくとも含まれているものとする。図9では、これら10個の構成アイテムの間の関係が、グラフ603の形式で示されている。
具体的には、グラフ603は、10個の構成アイテムを示す10個のノードN21〜N30を含む。ノードN21〜N25はゲストOSのレイヤに属する。ノードN21〜N25がそれぞれ表す構成アイテムのIPアドレスは、図9では、便宜上、「A」、「B」、「C」、「D」、および「E」という文字により表されている。以下、説明の便宜上、例えば、IPアドレスAは172.16.1.2であり、IPアドレスBは10.0.7.6であり、IPアドレスCは10.0.0.1であり、IPアドレスDは10.0.0.10であり、IPアドレスEは10.0.0.3であるものとする。
ノードN26〜N27は、ホストOSのレイヤに属する。ノードN28〜N29は、物理サーバのレイヤに属する。そして、ノードN30は、L2スイッチのレイヤに属する。L3スイッチのレイヤはグラフ603では省略されている。
さて、グラフ603によれば、ノードN30により表されるL2スイッチには、ノードN28とN29により表される2台の物理サーバが接続されている。
そして、グラフ603によれば、ノードN28により表される物理サーバ上で、ノードN26により表されるホストOSが動作する。また、ノードN21、N22、およびN23により表される3つのゲストOSは、いずれも、ノードN26により表されるホストOSの機能を利用する。
さらに、グラフ603によれば、ノードN29により表される物理サーバ上で、ノードN27により表されるホストOSが動作する。また、ノードN24およびN25により表される2つのゲストOSは、いずれも、ノードN27により表されるホストOSの機能を利用する。
ここで、メッセージM31の発信元が、ノードN21により表されるゲストOS(すなわち、IPアドレスA(172.16.1.2)で識別される構成アイテム)であるものとする。また、メッセージM32の発信元が、ノードN23により表されるゲストOS(すなわち、IPアドレスC(10.0.0.1)で識別される構成アイテム)であるものとする。そして、メッセージM33の発信元が、ノードN25により表されるゲストOS(すなわち、IPアドレスE(10.0.0.3)で識別される構成アイテム)であるものとする。
また、上記のとおり、メッセージM31〜M33を含むメッセージパターンから、障害#39の発生が予測されたものとする。したがって、この場合、第3実施形態の検出サーバは、第2実施形態の検出サーバ400と同様にして、メッセージM31〜M33の発信元たる3つの構成アイテムのそれぞれについてWF−IDF(f,n)を算出する。そして、検出サーバは、算出した3つの値を使って、ランキング情報604を生成する。ランキング情報604の形式は、図4のランキング情報305と同様である。
ランキング情報604によれば、メッセージM33を出力した構成アイテムについて算出されたWF−IDF(39,1)は、2.0000であり、3つの値の中で最大である。また、メッセージM32を出力した構成アイテムについて算出されたWF−IDF(39,2)は0.0043である。同様に、メッセージM31を出力した構成アイテムについて算出されたWF−IDF(39,3)も0.0043である。よって、IPアドレスEで識別される構成アイテムの順位は1位であり、IPアドレスCとAでそれぞれ識別される2つの構成アイテムの順位はいずれも2位である。
第3実施形態の検出サーバは、学習済みの関係情報(具体的には図8のパスP1〜P3)を用いて、ランキング情報604から改良ランキング情報605を生成する。ここで、図9のランキング情報604と改良ランキング情報605の例から分かるように、ランキング情報と改良ランキング情報には以下のような違いがある。
・ランキング情報では、障害の予測に用いられたメッセージパターンに含まれるメッセージを少なくとも1つ出力したすべての構成アイテムに、スコアが与えられている。
・ランキング情報では、障害の予測に用いられたメッセージパターンに含まれるメッセージを1つも出力していない構成アイテムに対しては、スコアは与えられない。
・改良ランキング情報では、障害の予測に用いられたメッセージパターンに含まれるメッセージを1つも出力していない構成アイテムに対しても、スコアが与えられる場合があり得る。
・改良ランキング情報では、障害の予測に用いられたメッセージパターンに含まれるメッセージを少なくとも1つ出力した構成アイテムについて、スコアが与えられない場合があり得る。
以下、検出サーバが改良ランキング情報605を生成する方法について、具体的に説明する。
メッセージM31の種別は「3」であり、「3」というメッセージ種別に関して学習された関係情報は、図8のパスP3である。そこで、検出サーバは、パスP3で示される関係と等価な関係が、メッセージM31の発信元との間で成り立つような構成アイテム(以下、「関連構成アイテム」ともいう)を検索する。具体的には、グラフ603において、メッセージM31の発信元を表すノードN21から始まり、かつ、パスP3とトポロジ的に相似なパスを、検出サーバが、たどってゆく(traverse)。そして、検出サーバは、パスP3と相似な当該パスの終点のノードにより表される構成アイテムを、メッセージM31にとっての関連構成アイテムとして、認識する。
なお、図9の例では、パスP3と相似なパスは複数ある。しかし、「パスP3と相似なパス自体が、始点たるノードN21と、パスP3と相似な当該パスの終点との間の最短パスである」という条件(以下「最短パス条件」という)を満たすパスは2つだけである。メッセージM31にとっての関連構成アイテムは、より正確には、パスP3と相似なパスのうち、最短パス条件を満たすパスの終点のノードにより表される構成アイテムである。
図8に示すように、パスP3は、ゲストOSのレイヤのノードから始まる。そして、パスP3は、ホストOSのレイヤのノード、物理サーバのレイヤのノード、L2スイッチのレイヤのノード、物理サーバのレイヤのノード、および、ホストOSのレイヤのノードを通って、ゲストOSのレイヤのノードに至る。グラフ603において、ノードN21から始まって上記のパスP3と同じ順に種々のレイヤのノードを通るパスは複数ある。しかし、最短パス条件を満たすパスは2つのみである。
例えば、ノードN21から始まって、ノードN26、N28、N30、N28、およびN26を通って、ノードN22に至るパスは、パスP3と相似ではあるが、最短パス条件を満たさない。それに対して、以下の2つのパスは、いずれも、パスP3と相似であり、かつ、最短パス条件を満たす。
・ノードN21から始まって、ノードN26、N28、N30、N29、およびN27を通って、ノードN24に至るパス(このパスは、図9にパスP13として示されている)。
・ノードN21から始まって、ノードN26、N28、N30、N29、およびN27を通って、ノードN25に至るパス。
よって、検出サーバは、「3」という種別のメッセージM31にとっての関連構成アイテムとして、ノードN24とN25で表される2つの構成アイテムを認識する。つまり、メッセージM31にとっての関連構成アイテムは、IPアドレスDとEによりそれぞれ識別される2つの構成アイテムである。
さて、メッセージM32の種別は「2」であり、「2」というメッセージ種別に関して学習された関係情報は、図8のパスP2である。そこで、グラフ603において、メッセージM32の発信元を表すノードN23から始まり、かつ、パスP2とトポロジ的に相似であり、かつ、最短パス条件を満たすパスを、検出サーバがたどってゆく。検出サーバは、こうしてたどったパスの終点のノードにより表される構成アイテムを、メッセージM32にとっての関連構成アイテムとして認識する。具体的には、ノードN23から始まり、かつ、パスP2と相似であり、かつ、最短パス条件を満たすようなパスは、以下の2つである。
・ノードN23から始まって、ノードN26、N28、N30、N29、およびN27を通って、ノードN24に至るパス(このパスは、図9にパスP12として示されている)。
・ノードN23から始まって、ノードN26、N28、N30、N29、およびN27を通って、ノードN25に至るパス。
よって、検出サーバは、「2」という種別のメッセージM32にとっての関連構成アイテムとして、ノードN24とN25で表される2つの構成アイテムを認識する。つまり、メッセージM32にとっての関連構成アイテムも、IPアドレスDとEによりそれぞれ識別される2つの構成アイテムである。
さて、メッセージM33の種別は「1」であり、「1」というメッセージ種別に関して学習された関係情報は、図8のパスP1である。そこで、グラフ603において、メッセージM33の発信元を表すノードN25から始まり、かつ、パスP1とトポロジ的に相似であり、かつ、最短パス条件を満たすパスを、検出サーバがたどってゆく。
ここで、ノードN25から始まり、かつ、パスP1と相似なパスは、2つある。1つは、ノードN25から始まり、ノードN27を通って、ノードN25に戻るパスである。しかし、このパスは最短パス条件を満たさない。もう1つは、ノードN25から始まり、ノードN27を通って、ノードN24に至るパスP11である。パスP11は最短パス条件を満たす。
よって、検出サーバは、「1」という種別のメッセージM33にとっての関連構成アイテムとして、パスP11の終点のノードN24により表される構成アイテムを認識する。
以上より、IPアドレスDで識別される構成アイテムは、メッセージM31にとっての関連構成アイテムでもあり、メッセージM32にとっての関連構成アイテムでもあり、メッセージM33にとっての関連構成アイテムでもある。よって、検出サーバは、メッセージM31とM32とM33それぞれの発信元について算出したWF−IDF(39,3)とWF−IDF(39,2)とWF−IDF(39,1)のうちの最大値を、IPアドレスDで識別される構成アイテムのスコアに決定する。
ここで、図9のランキング情報604によれば、WF−IDF(39,3)=0.0043であり、WF−IDF(39,2)=0.0043であり、WF−IDF(39,1)=2.0000である。よって、IPアドレスDで識別される構成アイテムのスコアは、2.0000である。
また、IPアドレスEで識別される構成アイテムは、メッセージM31にとっての関連構成アイテムでもあり、メッセージM32にとっての関連構成アイテムでもある。よって、検出サーバは、メッセージM31とM32それぞれの発信元について算出したWF−IDF(39,3)とWF−IDF(39,2)のうちの最大値を、IPアドレスEで識別される構成アイテムのスコアに決定する。つまり、IPアドレスEで識別される構成アイテムのスコアは、0.0043である。
IPアドレスDとEで識別される2つの構成アイテム以外の構成アイテムは、メッセージM31とM32とM33のいずれにとっても、関連構成アイテムではない。よって、検出サーバは、上記2つの構成アイテムについて決定したスコアに基づいて、上記2つの構成アイテムの順位を決定する。すなわち、2.0000というスコアが与えられた構成アイテム(つまり、IPアドレスDで識別される構成アイテム)の順位が1位であり、0.0043というスコアが与えられた構成アイテム(つまり、IPアドレスEで識別される構成アイテム)の順位が2位である。
改良ランキング情報605では、以上のようにして決定された順位とスコアが、スコアの付与の根拠となったメッセージの種別とともに、IPアドレスに対応づけられている。
以上の例では、障害#39の予測に使われたウィンドウの中では、たまたま、IPアドレスDで識別される構成アイテムからは何もメッセージが出力されていないが、それにもかかわらず、IPアドレスDで識別される構成アイテムが1位と判定される。このように、改良ランキング情報605の生成においては、正解した予兆パターンたるメッセージパターン601中のメッセージの発信元と、時刻t24に実際に障害が発生した構成アイテムとの間の関係と等価な関係が利用される。
こうして生成された改良ランキング情報605は、WF−IDF(f,n)のような統計値に基づくだけでなく、関係情報にも基づいているため、ランキング情報604と比べて信頼性がより高い。よって、第3実施形態によれば、検出サーバは、障害の発生を防ぐための対策を講じることが望ましい構成アイテムを、より高い信頼性をもって示唆する情報を提供することが可能である。
また、以上のように関係情報を利用する第3実施形態は、互いに同じかまたは互いに類似する複数の部分(例えば、グラフ602で示される部分とグラフ603で示される部分)を含む大規模なコンピュータシステムに特に好適である。なぜなら、関係情報の利用により、予兆パターンの学習に関するデータスパースネス問題が軽減され、検出サーバが提示する情報の信頼度が高まるからである。
続いて、図10〜14を参照して、図8〜9を参照して説明した第3実施形態のさらなる詳細について説明する。
図10は、第3実施形態の検出サーバ700のブロック構成図である。検出サーバ700は、コンピュータシステム内の種々の構成アイテムからメッセージ720を入力として受け取り、推定結果情報730を出力する。推定結果情報730は、具体的には、例えば図9の改良ランキング情報605であってもよい。
検出サーバ700は、第2実施形態の検出サーバ400内のコンポーネントと類似のいくつかのコンポーネントを含む。具体的には、検出サーバ700は、ログ情報記憶部701と、障害予兆検知部702と、辞書情報記憶部703と、障害予兆情報記憶部704を含む。また、検出サーバ700は、ログ統計算出部705と、ログ統計情報記憶部706と、予兆統計算出部707と、予兆統計情報記憶部708と、ランキング生成部709と、ランキング情報記憶部710も含む。
さらに、検出サーバ700は、検出サーバ400には存在しないいくつかのコンポーネントも含む。具体的には、検出サーバ700は、トポロジ関係学習部711と構成情報記憶部712と関係情報記憶部713と推定部714をさらに含む。
ログ情報記憶部701にはメッセージ720が蓄積される。ログ情報記憶部701、障害予兆検知部702、辞書情報記憶部703、障害予兆情報記憶部704、ログ統計算出部705、ログ統計情報記憶部706、予兆統計算出部707、および予兆統計情報記憶部708は、第2実施形態の各コンポーネントと同様である。
ランキング生成部709は、第2実施形態のランキング生成部409と同様にランキング情報(例えば図9のランキング情報604)を生成し、生成したランキング情報をランキング情報記憶部710に記憶する。しかし、第3実施形態では、ランキング生成部709の生成したランキング情報自体ではなく、ランキング情報から得られる改良ランキング情報(例えば図9の改良ランキング情報605)が、推定結果情報730として出力される。
ランキング情報記憶部710は、第2実施形態のランキング情報記憶部410と同様にランキング情報を記憶する。さらに、ランキング情報記憶部710は、改良ランキング情報も記憶する。
トポロジ関係学習部711は、図8に例示したように、障害予兆検知部702により検知された予兆パターンが正解と判明した場合に、その正しい予兆パターンに含まれる各メッセージの発信元と、障害が実際に発生した構成アイテムとの間の関係情報を学習する。そして、トポロジ関係学習部711は、学習した関係情報を関係情報記憶部713に記憶する。具体的には、第3実施形態のトポロジ関係学習部711は、ログ情報記憶部701、障害予兆情報記憶部704、ランキング情報記憶部710、および構成情報記憶部712を参照して、関係情報を学習する。
なお、実施形態によっては、トポロジ関係学習部711は、必ずしも、ログ情報記憶部701とランキング情報記憶部710を参照する必要はない。例えば、障害予兆情報記憶部704内に、検知された予兆パターンに含まれる各メッセージの発信元のIPアドレスが記憶される場合、トポロジ関係学習部711は、障害予兆情報記憶部704と構成情報記憶部712を参照して関係情報を学習してもよい。トポロジ関係学習部711による学習の詳しい手順の例は、図12とともに後述する。
構成情報記憶部712には、コンピュータシステムの複数の構成アイテム間の関係を表す構成情報が記憶される。構成情報は、コンピュータシステムの構成(configuration)が変更されると、それに応じて変更される。例えば、新たな構成アイテムの追加、既存の構成アイテムの削除、またはマイグレーションなどが行われると、構成情報は変更される。構成情報記憶部712は、公知の構成管理データベース(Configuration Management Database;CMDB)であってもよい。
なお、図8のグラフ602と図9のグラフ603は、いずれも、構成情報の一部を、便宜上、グラフ形式で視覚的に表現したものである。構成情報記憶部712内の構成情報の実際のデータ形式は、実施形態に応じて任意である。例えば、テーブル形式が利用されてもよいし、XML(Extensible Markup Language)などの所定言語を用いた形式が利用されてもよい。
また、第3実施形態の構成情報においては、各構成アイテムは、識別情報としてのIPアドレスにより識別されるものとする。よって、推定部714は、例えば図9のようにパスの終点を探すことにより、パスの終点の構成アイテムのIPアドレスを認識することが可能である。
関係情報記憶部713には、トポロジ関係学習部711により学習された関係情報が記憶される。関係情報記憶部713の詳細は図11とともに後述する。
推定部714は、ランキング生成部709の生成したランキング情報と、関係情報記憶部713に記憶されている学習済みの関係情報と、構成情報記憶部712に記憶されている構成情報を用いて、改良ランキング情報を生成する。換言すれば、推定部714は、障害予兆検知部702により予測された障害との関連性が高い構成アイテム(つまり障害が発生する蓋然性の高い構成アイテム)を、コンピュータシステム内の構成アイテム間の関係に基づいて推定する。推定の結果が改良ランキング情報である。また、障害との関連性が高いと推定される構成アイテムは、場合によっては、対策を講じることで障害の発生を予防する効果が得られる見込みの高い構成アイテムそのものである。
なお、ある障害が、他の障害により、直接的または間接的に引き起こされることもあり得る。よって、「ある障害が発生する蓋然性が高い」と推定された構成アイテムそのものではなく、原因となる他の障害が生じそうな他の構成アイテムに対して、対策をとることが有益な場合もあり得る。しかし、その場合でも、システム管理者等は、改良ランキング情報から、「どの構成アイテムに対して対策をとることが障害の発生を防ぐうえで有益なのか」に関する示唆を得ることができる。なぜなら、改良ランキング情報は、「上記ある障害がどの構成アイテムにおいて発生する蓋然性が高いのか」を示すので、対策をとる対象の構成アイテムの候補を絞り込むのに役立つからである。
推定部714は、生成した改良ランキング情報(例えば図9の改良ランキング情報605)を推定結果情報730として出力する。例えば、推定部714は、推定結果情報730としての改良ランキング情報を、ディスプレイに出力してもよいし、ランキング情報記憶部710に出力してもよい。推定部714は、改良ランキング情報を含む電子メールまたはインスタントメッセージを、システム管理者に宛てて送信してもよい。実施形態によっては、推定部714がログ情報を参照してもよい。
ところで、図10の検出サーバ700は、具体的には図2のコンピュータ100であってもよい。検出サーバ700がコンピュータ100により実現される場合、図2と図10は以下のように対応する。
検出サーバ700は、通信インタフェイス103を介してメッセージ720を受信する。また、検出サーバ700は、推定結果情報730を出力装置105に出力してもよく、記憶装置106に出力してもよく、駆動装置107を介して記憶媒体110に出力してもよい。もちろん、検出サーバ700は、通信インタフェイス103とネットワーク120を介して推定結果情報730を送信(つまり出力)してもよい。
ログ情報記憶部701、辞書情報記憶部703、障害予兆情報記憶部704、ログ統計情報記憶部706、予兆統計情報記憶部708、ランキング情報記憶部710、構成情報記憶部712、および関係情報記憶部713は、記憶装置106により実現されてもよい。障害予兆検知部702、ログ統計算出部705、予兆統計算出部707、ランキング生成部709、トポロジ関係学習部711、および推定部714は、プログラムを実行するCPU101により実現されてもよい。
また、図10の検出サーバ700は、図3のコンピュータ200であってもよい。この場合、メッセージ720は、コンピュータシステム230内の種々の構成アイテムから出力されて、ネットワーク210を介して、検出サーバ700としてのコンピュータ200に受信される。また、コンピュータシステム230のシステム管理者は、検出サーバ700から出力される推定結果情報730を参照して、コンピュータシステム230内のどの構成アイテムに対して対策をとるかを決め、適宜の対策を実行する。
続いて、図10中の種々の記憶部に記憶される情報の具体例について、図11を参照して説明する。図11は、第3実施形態で利用される各種テーブルの例を示す図である。
なお、ログ情報記憶部701と辞書情報記憶部703中のテーブルについては、図11では図示を省略した。例えば図6のログテーブル501と同様のテーブルがログ情報記憶部701に記憶されてもよい。また、図6のメッセージ辞書テーブル502およびパターン辞書テーブル503と同様のテーブルが辞書情報記憶部703に記憶されてもよい。
さて、図11の障害予兆テーブル801は、障害予兆情報記憶部704に記憶される情報の一例である。障害予兆テーブル801中に例示された種々の値は、図6の障害予兆テーブル504中に例示された種々の値とは異なるが、障害予兆テーブル801の形式は障害予兆テーブル504と同様である。
なお、障害予兆テーブル504と同様に、障害予兆テーブル801も、予測された障害の終了時刻を示すフィールドをさらに含んでいてもよい。また、実施形態によっては、障害予兆テーブル801には、障害予兆検知部702により検知された予兆パターンに含まれる各メッセージの種別だけでなく、各メッセージの発信元のIPアドレスがさらに記憶されていてもよい。
図11の障害予兆テーブル801には、図8の時刻t23にメッセージパターン601に基づいて行われた予測の結果が、「1」というIDのエントリに記憶されている。また、図9に示した予測の結果が、「2」というIDのエントリに記憶されている。
ログ統計テーブル802は、ログ統計情報記憶部706に記憶される情報の一例である。ログ統計テーブル802に例示された種々の値は、図6のログ統計テーブル505中に例示された種々の値とは異なるが、ログ統計テーブル802の形式はログ統計テーブル505と同様である。
なお、図11には、図9でランキング情報604が生成される時点におけるログ統計テーブル802の4つのエントリが例示されている。また、ログ統計テーブル802は、「1」〜「3」以外のメッセージ種別に対応する他のエントリをさらに含み得るが、図11ではそれらのエントリは省略されている。
予兆統計テーブル803は、予兆統計情報記憶部708に記憶される情報の一例である。予兆統計テーブル803に例示された種々の値は、図6の予兆統計テーブル506中に例示された種々の値とは異なるが、予兆統計テーブル803の形式は予兆統計テーブル506と同様である。
図11には、図9でランキング情報604が生成される時点における予兆統計テーブル803の4つのエントリが例示されている。換言すれば、図11には、図8の時刻t24での障害#39の発生を契機に学習された内容が例示されている。予兆統計テーブル803は、「時刻t24を終了時点とする予測対象期間内で障害#39の予測に成功していたのは、1回だけ(つまり時刻t23での予測だけ)であった」ということを示している。なお、予兆統計テーブル803は、「39」以外の障害種別に対応する他のエントリをさらに含み得るが、図11ではそれらのエントリは省略されている。
さて、トポロジ関係テーブル804は、関係情報記憶部713に記憶される関係情報の一例である。障害の発生が正しく予測され、その正しい予測において検知された予兆パターンがP(1≦P)個のメッセージを含む場合、トポロジ関係学習部711により、トポロジ関係テーブル804にP個のエントリが追加される。トポロジ関係テーブル804の各エントリは、例えば以下の5つのフィールドを含んでもよい。
・上記の正しい予測を表すエントリを障害予兆テーブル801の中で識別するID(以下「予兆ID」という)。
・トポロジ関係テーブル804内で個々のエントリを識別するID。
・上記の正しく予測された障害の種別。
・上記の正しい予測で使われたメッセージパターン(つまり、検知された予兆パターン)中の個々のメッセージの種別。
・上記予兆パターンに含まれるメッセージのうちで、当該エントリのメッセージ種別で表されるメッセージを出力した、発信元の構成アイテムと、上記の正しく予測された障害が生じた構成アイテムとの間の関係を示すパス。
なお、トポロジ関係テーブル804における上記パスは、第3実施形態では、具体的には、図8のグラフ602のようなグラフにおける、発信元の構成アイテムのノードから、障害が生じた構成アイテムのノードに至るパスである。また、第3実施形態では、このように2つの構成アイテム間の関係を示すパスは、具体的には、XPath形式で表される。XPath形式でのパスの表現は、ある種のFCMDB(federated CMDB)でのクエリに利用されているので、ここでは詳しい説明を省略する。第3実施形態との関連という観点から、XPath形式でのパスの表現について概略を説明すれば、以下のとおりである。
トポロジ関係テーブル804の3つのエントリのパスは、それぞれ、図8のパスP1、P2、およびP3を表す。例えば、2番目のエントリ中のXPath式は、パスP2を表す。図8に示すように、パスP2は、以下に示すノードとエッジの系列(sequence)である。
・論理サーバのレイヤ(具体的にはゲストOSのレイヤ)のノードN3(すなわち、「2」という種別のメッセージの発信元を示すノード)。
・ノードN3から、論理サーバのレイヤ(具体的にはホストOSのレイヤ)のノードN8に至るエッジ。
・ノードN8。
・ノードN8から、物理サーバのレイヤのノードN12に至るエッジ。
・ノードN12。
・ノードN12から、ネットワークデバイスのレイヤ(具体的にはL2スイッチのレイヤ)のノードN15に至るエッジ。
・ノードN15。
・ノードN15から、物理サーバのレイヤのノードN11に至るエッジ。
・ノードN11。
・ノードN11から、論理サーバのレイヤ(具体的にはホストOSのレイヤ)のノードN7に至るエッジ。
・ノードN7。
・ノードN7から、論理サーバのレイヤ(具体的にはゲストOSのレイヤ)のノードN2(すなわち、障害#39が実際に発生した構成アイテムを示すノード)に至るエッジ。
・ノードN2。
ところで、トポロジ関係テーブル804におけるXPath式は、図9に関して説明したように、具体的には、トポロジ的に相似なパスの検索のために使われる。よって、第3実施形態では、パスP2そのものを具体的に示す情報ではなく、パスP2がどのレイヤのノードをどういう順で通るのかを示すXPath式が使われる。
例えば、トポロジ関係テーブル804の2番目のエントリ中のXPath式は、以下のことを示している。パスP2と相似なパスを検索するには、このようなXPath式により表される、多少一般化された形式の関係情報だけで十分である。
・パス上の1番目のノード(つまりパスの始点)は、論理サーバのレイヤのノードである。
・パス上の2番目のノードは、論理サーバのレイヤのノードである。
・パス上の3番目のノードは、物理サーバのレイヤのノードである。
・パス上の4番目のノードは、ネットワークデバイスのレイヤのノードである。
・パス上の5番目のノードは、物理サーバのレイヤのノードである。
・パス上の6番目のノードは、論理サーバのレイヤのノードである。
・パス上の7番目のノードは、論理サーバのレイヤのノードであり、この7番目のノードがパスの終点である。
なお、実施形態に応じて、XPath以外の形式によってパスが表現されてもよいことは無論である。XPath式は、2つの構成アイテム間の関係を示すための所定フォーマットのデータの一例に過ぎない。
さて、ランキングテーブル805は、ランキング生成部709が第2実施形態のランキング生成部409と同様にして生成するテーブルである。よって、ランキングテーブル805の形式は、図6のランキングテーブル507の形式と同じである。
図11のランキングテーブル805には、図9のランキング情報604に対応する3つのエントリが例示されている。また、ランキングテーブル805の各エントリにおける予兆IDは、当該エントリのスコア(すなわちWF−IDF(f,n))を算出する契機となった予測を識別するためのIDであり、具体的には、障害予兆テーブル801内のエントリを識別するIDである。
例えば、ランキングテーブル805に例示した3つのエントリの予兆IDは、いずれも「2」である。つまり、これら3つのエントリは、障害予兆テーブル801において「2」というIDを有する2番目のエントリの予測(すなわち図9の予測)の際に生成されたランキング情報に対応する。
改良ランキングテーブル806は、ランキングテーブル805に基づいて推定部714が生成するテーブルである。改良ランキングテーブル806の形式はランキングテーブル805と同じである。例えば、改良ランキングテーブル806に例示されている2つのエントリは、図9の改良ランキング情報605に対応する。なお、改良ランキング情報605は、障害予兆テーブル801において「2」というIDで識別される予測が行われると生成される。よって、図11の改良ランキングテーブル806中の2つのエントリの予兆IDは、いずれも「2」である。
第3実施形態では、ランキングテーブル805と改良ランキングテーブル806の双方が、ランキング情報記憶部710に記憶される。また、図11のランキングテーブル805には、予兆IDが「2」の3つのエントリのみが例示されているが、ランキング情報記憶部710中のランキングテーブル805は、予兆IDが「1」の3つのエントリも含む。つまり、ランキング情報記憶部710中のランキングテーブル805には、図9の予測に応じて得られたランキング情報だけでなく、図8の時刻t23における予測に応じて得られたランキング情報も、記憶されている。
続いて、検出サーバ700が行う処理について、さらに詳しく説明する。なお、第2実施形態と同様に、検出サーバ700が行う種々の処理のうち、ログ情報記憶部701へのメッセージ720の蓄積と、パターン辞書テーブル503の学習と、障害予兆検知部702による障害予兆の検知は、公知の処理と同様であってよい。また、検出サーバ700も図7と類似の処理を実行するが、図7のステップS103とS113が、第3実施形態では変形される。
具体的には、第3実施形態では、図7のステップS103が以下のように変形される。
・予兆統計算出部707が、第2実施形態のステップS103と同様の方法により、予兆統計情報記憶部708を更新する。
・トポロジ関係学習部711が、図12のフローチャートにしたがって、図8に例示したように関係情報を学習する。
また、第3実施形態では、図7のステップS113が以下のように変形される。
・ランキング生成部709が、第2実施形態のステップS113と同様にして、ランキングテーブル805のエントリをソートし、各エントリに順位をつける。また、ランキング生成部709は、ランキングテーブル805の各エントリをランキング情報記憶部710に追加する。
・さらに、ランキング生成部709は、ランキングテーブル805を推定部714にも出力する。その際、ランキング生成部709は、障害予兆検知部702により予測された障害の種別も、推定部714に通知する。なお、障害予兆検知部702により予測された障害の種別は、既にステップS101で、障害予兆検知部702からランキング生成部709へと通知されている。
・推定部714は、ランキング生成部709から受け取ったランキングテーブル805のメッセージ種別フィールドに基づいて、予測に使われたメッセージパターンを認識する。例えば、図11のランキングテーブル805からは、メッセージパターン[1,2,3]が認識される。
・そして、推定部714は、認識したメッセージパターンと、ランキング生成部709から通知された障害の種類の組み合わせに対応して既に学習された関係情報を、関係情報記憶部713において検索する。
・検索の結果、学習済みの関係情報が見つかった場合、推定部714は、図13〜14のフローチャートにしたがって、図9に例示したように改良ランキング情報(例えば図11の改良ランキングテーブル806)を生成および出力する。
・検索の結果、学習済みの関係情報が見つからなかった場合は、推定部714は、受け取ったランキングテーブル805自体をメッセージ720として出力してもよい。
なお、実施形態によっては、検索の結果、学習済みの関係情報が見つからなかった場合、推定部714は以下のような処理を行ってもよい。
推定部714は、受け取ったランキングテーブル805から認識したメッセージパターンを包含するメッセージパターンと、ランキング生成部709から通知された障害の種類との組み合わせに対応して既に学習された関係情報を、検索してもよい。なおここで、第1のメッセージパターンに含まれる全メッセージが第2のメッセージパターンにも含まれる場合、「第2のメッセージパターンは第1のメッセージパターンを包含する」ということにする。例えば、メッセージパターン[1,2]は、メッセージパターン[1,2,3,4]に包含される。
例えば、メッセージパターン[1,2]から障害#5が予測されたが、メッセージパターン[1,2]と障害#5の組み合わせに対応して学習済みの関係情報がまだ存在しない場合があり得る。この場合、仮にメッセージパターン[1,2,3,4]と障害#5の組み合わせに対応して学習済みの関係情報があれば、推定部714は、当該関係情報を利用してもよい。つまり、メッセージパターン[1,2]を包含する他のメッセージパターンと障害#5との組み合わせに関する再検索の結果、関係情報が見つかれば、推定部714は、再検索の結果に基づいて、ランキングテーブルから改良ランキングテーブルを生成してもよい。そして、推定部714は、そのようにして生成した改良ランキングテーブルを、推定結果情報730として出力してもよい。
あるいは、推定部714は、受け取ったランキングテーブル805から認識したメッセージパターンと類似するメッセージパターンと、ランキング生成部709から通知された障害の種類との組み合わせに対応して既に学習された関係情報を検索してもよい。例えば、メッセージパターン[1,2]から障害#5が予測されたが、メッセージパターン[1,2]と障害#5の組み合わせに対応して学習済みの関係情報がまだ存在しない場合があり得る。この場合、推定部714は、例えば、メッセージパターン[1,10]と障害#5の組み合わせや、メッセージパターン[2,18]と障害#5の組み合わせに対応して学習された関係情報を検索してもよい。2つのメッセージパターンが類似するかどうかの基準は実施形態に応じて任意だが、互いに類似するメッセージパターン同士は、少なくとも1つの同じ種別のメッセージを含む。
さて、図12は、第3実施形態において検出サーバ700(具体的にはトポロジ関係学習部711)が関係情報を学習する処理のフローチャートである。第3実施形態では、障害が発生すると、トポロジ関係学習部711が図12の処理を実行する。
なお、トポロジ関係学習部711は、検出サーバ700の受信するメッセージ720から、障害の発生を認識してもよいし、ログ情報記憶部701へのエントリの追加を監視することで障害の発生を認識してもよい。あるいは、障害の発生に応じて図7のステップS103の処理を実行する予兆統計算出部707が、障害の発生をトポロジ関係学習部711に通知してもよい。いずれにせよ、何らかの障害が発生すると、トポロジ関係学習部711は図12の処理を開始する。
ステップS201でトポロジ関係学習部711は、既に検知された予兆パターンのうち、今回発生した障害を正しく予測していた各予兆パターンについての障害予兆情報を取得する。換言すれば、トポロジ関係学習部711は、既に行われた予測のうち、今回発生した障害を正しく予測していた各予測についての障害予兆情報を取得する。具体的には、トポロジ関係学習部711は、今回の障害の発生に先立つ長さT2の予測対象期間に行われた予測結果を、障害予兆情報記憶部704から検索する。この検索は、図7のステップS103で予兆統計算出部407が行う検索と類似である。
例えば、図8の時刻t24で障害#39が発生すると、トポロジ関係学習部711は図12の処理を実行し始める。図8の例では、時刻t24と時刻t23の差が長さT2以下であるものとする。よって、トポロジ関係学習部711は、障害予兆テーブル801の障害種別と予測実行時刻のフィールドを参照して検索を行うと、障害予兆テーブル801の1番目のエントリ(つまり時刻t23での予測結果を示すエントリ)を取得する。なお、こうして1番目のエントリが取得されることは、「時刻t24に実際に発生した障害#39について、時刻t23(図11の例では2012年8月31日23時)に検知された予兆パターン[1,2,3]は、正しいと判明した」ということを意味する。
なお、発生した障害に対して、長さT2の予測対象期間内の過去においては1回も正しい予測に成功していなかった場合もあり得る。また、発生した障害に対して、長さT2の予測対象期間内の過去において、1回だけ正しい予測に成功していた場合もあり得るし、2回以上正しい予測に成功していた場合もあり得る。よって、ステップS201で障害予兆情報記憶部704から取得されるエントリの数は、0個の場合もあり得るし、1個の場合もあり得るし、2個以上の場合もあり得る。
次に、ステップS202でトポロジ関係学習部711は、ステップS201で取得した正しい予兆パターンのうち、未処理の予兆パターンがあるか否かを判断する。つまり、トポロジ関係学習部711は、ステップS201で取得したエントリのうち、ステップS203以降の処理の対象としてまだ選択していないエントリがあるか否かを判断する。
ステップS201で1個もエントリが取得されなかった場合か、または、ステップS201で取得された全エントリが既にステップS203以降の処理の対象として選択済みの場合、未処理の予兆パターンは存在しない。よって、図12の関係情報の学習は終了する。
逆に、ステップS201で1個以上のエントリが取得され、その中に、ステップS203以降の処理の対象としてまだ選択されていないエントリがある場合、未処理の予兆パターンが存在する。よって、この場合、トポロジ関係学習部711は次に、ステップS203で、未処理の予兆パターンを1つ選択する。つまり、ステップS203でトポロジ関係学習部711は、ステップS201で取得した、ある1つのエントリを選択する。以下では説明の便宜上、ステップS203で選択されたエントリの予兆パターンを「選択予兆パターン」ともいう。
さらに、ステップS203でトポロジ関係学習部711は、選択予兆パターンが検知されたときにWF−IDF値が算出された1つまたは複数の構成アイテムそれぞれについてのエントリを、ランキング情報記憶部710内のランキングテーブル805から取得する。
例えば、図8の時刻t24での障害#39の発生を契機として、トポロジ関係学習部711が図12の処理を実行する場合、ステップS201では、時刻t23での予測に対応するエントリが取得される。つまり、この場合、障害予兆テーブル801の1番目のエントリがステップS201で取得され、ステップS203で選択される。
すると、トポロジ関係学習部711は、ステップS203でさらに、障害予兆テーブル801の1番目のエントリのIDを読み取る。そして、トポロジ関係学習部711は、読み取ったIDの値を検索キーとして用いて、ランキング情報記憶部710内のランキングテーブル805を検索する。図11では省略されているが、ランキングテーブル805には、図8の時刻t23での予測に応じて、メッセージM21、M22、およびM23それぞれの発信元の構成アイテムについて追加された3つのエントリがある。
よって、トポロジ関係学習部711は、検索の結果、3つのエントリを取得することができる。つまり、トポロジ関係学習部711は、「X」、「Z」、および「W」というIPアドレスでそれぞれ識別される3つの構成アイテムについて、時刻t23の予測の際ににランキングテーブル805に追加された3つのエントリを取得する。
次に、ステップS204でトポロジ関係学習部711は、ステップS203で取得したエントリのうち、未処理の構成アイテムについてのエントリがまだ残っているか否かを判断する。つまり、トポロジ関係学習部711は、正しいと判明したある1つの予兆パターンに含まれるメッセージを少なくとも1つ出力した構成アイテムのうち、まだ関係情報の学習が済んでいないものが残っているか否かを判断する。
具体的には、ステップS203でランキングテーブル805から取得したエントリのうち、ステップS205〜S208の処理対象としてまだ選択されていないものが残っていれば、図12の学習処理は、次にステップS205に進む。逆に、ステップS203でランキングテーブル805から取得された全エントリについて、ステップS205〜S208が実行済みであれば、図12の学習処理は、ステップS202に戻る。
そして、ステップS205でトポロジ関係学習部711は、未処理の構成アイテムを1つ選択する。つまり、トポロジ関係学習部711は、ステップS203でランキングテーブル805から取得したエントリのうちの、未処理の1つを選択する(ランキングテーブル805の1つのエントリは1つの構成アイテムに対応することに注意されたい)。以下では説明の便宜上、ステップS205で選択された構成アイテムを「選択構成アイテム」ともいう。
次に、ステップS206でトポロジ関係学習部711は、構成情報記憶部712に記憶されている構成情報を参照して、選択構成アイテムから今回障害が発生した構成アイテムまでの最短パスを認識する。
例えば、上記のようにステップS204で、図8の「X」、「Z」、および「W」というIPアドレスでそれぞれ識別される3つの構成アイテムについての3つのエントリが、ランキング情報記憶部710中のランキングテーブル805から取得されたとする。そして、ステップS205では、「X」というIPアドレスで識別される構成アイテムに対応するエントリが選択されたとする。また、図8によれば、時刻t24に実際に障害#39が発生した構成アイテムは、「Y」というIPアドレスで識別される。よって、この場合、ステップS206でトポロジ関係学習部711は、構成情報を参照して、図8のパスP1を認識する。パスP1が最短パスであることは、図8から明らかである。
なお、構成情報は、図8にグラフ602の形式で示されるような構成アイテム間の関係を定義するだけでなく、さらに、任意の2つの構成アイテム間の最短パスに関する情報を含んでいてもよい。例えば、検出サーバ700は、予めワーシャル・フロイド法などの公知のアルゴリズムを利用して、任意の2つの構成アイテム間の最短パスを求めてもよい。こうして事前に判明した最短パスが構成情報記憶部712に記憶されていてもよい。この場合、トポロジ関係学習部711は、記憶されている最短パスの情報を読み出すだけで最短パスを認識することができる。もちろん、トポロジ関係学習部711は、ステップS206で、例えばダイクストラ法(Dijkstra's algorithm)などの公知のアルゴリズムを利用して、動的に最短パスを探索してもよい。
いずれにせよ、トポロジ関係学習部711は、最短パスを認識した後、ステップS207において、認識した最短パスを表すXPath式を生成する。例えば、ステップS206でトポロジ関係学習部711が図8のパスP1を最短パスとして認識した場合、トポロジ関係学習部711は、図11のトポロジ関係テーブル804の1番目のエントリに例示されているようなXPath式を、ステップS207で生成する。
そして、次のステップS208でトポロジ関係学習部711は、生成したXPath式をトポロジ関係テーブル804に記録する。具体的には、トポロジ関係学習部711は、ステップS205でランキングテーブル805から選択したエントリのメッセージ種別フィールドに記憶されている種別の数と同数の新規エントリを、トポロジ関係テーブル804に追加する。
例えば、ある正しい予兆パターンに含まれるメッセージのうちの3つが1つの構成アイテムから出力されており、当該構成アイテムについてのランキングテーブル805のエントリがステップS205で選択されたとする。この場合、ステップS208では、3つのエントリがトポロジ関係テーブル804に追加される。
トポロジ関係テーブル804に追加される各新規エントリのメッセージ種別の値は、ステップS205で選択したエントリのメッセージ種別フィールドに記憶されている各種別の値に等しい。また、トポロジ関係学習部711は、各新規エントリに対して、当該新規エントリを識別するためのIDを新たに発行する。
なお、ステップS208でトポロジ関係テーブル804に追加される各新規エントリにおいて、予兆IDの値は、ステップS201で障害予兆テーブル801から取得されたエントリのうち、ステップS203で選択されたエントリのIDである。また、各新規エントリにおける障害種別は、図12の処理をトポロジ関係学習部711が開始する契機となった障害の種別である。そして、各新規エントリにおけるパスは、ステップS207で生成されたXPath式である。
以上のようにしてステップS208でトポロジ関係テーブル804に1つ以上のエントリが追加されると、図12の学習処理は、再びステップS204に戻る。
さて、図13〜14は、第3実施形態の検出サーバ700(具体的には推定部714)が、学習した関係情報を使って改良ランキング情報を生成する処理のフローチャートである。上記のとおり、図13〜14の処理は、あるメッセージパターンに基づいてある種類の障害の発生が予測され、かつ、当該あるメッセージパターンと当該ある種類の障害との組み合わせについて関係情報が学習済みの場合に、実行される。
さて、ステップS301で推定部714は、改良ランキングテーブル806を空に初期化する。
なお、図11に関してはあまり詳しく説明しなかったが、第3実施形態に関しては、「改良ランキングテーブル」という名称を以下の2つのテーブルに共通に用いて説明をしている。
・ある1回の予測に対応して、推定部714がローカルに生成するテーブル。
・推定部714により生成されたテーブルの各エントリが蓄積される、ランキング情報記憶部710内のテーブル。
つまり、ある観点から見れば、図11の改良ランキングテーブル806は、図9に例示された1回の予測に対応して、推定部714がローカルに生成した、2つのエントリを有するテーブルを示したものである。一方、別の観点から見れば、図11の改良ランキングテーブル806は、ランキング情報記憶部710内で改良ランキング情報を記憶するテーブルについて、2つのエントリのみを抜粋して例示的に示したものである。
しかし、説明の簡単化のため、本明細書では、両者とも単に「改良ランキングテーブル806」と呼んでいる。同様に、ランキング生成部709がローカルに生成するテーブルと、ランキング情報記憶部710内に蓄積されるテーブルの双方も、本明細書では共通の「ランキングテーブル805」という名前で参照している。
図13〜14の説明における改良ランキングテーブル806は、より詳しくは、推定部714がローカルに生成するテーブルの方である。よって、ステップS301では、ローカルなテーブルが初期化される。
次に、ステップS302で推定部714は、ランキング生成部709から出力されたランキングテーブル805に未処理のエントリがあるか否かを判断する。ランキングテーブル805の全エントリについて、ステップS303〜S312の処理が完了していれば、推定部714は次にステップS313の処理を実行する。逆に、ランキングテーブル805の中に未処理のエントリが残っていれば、推定部714は次にステップS303の処理を実行する。
ステップS303で推定部714は、ランキング生成部709から出力されたランキングテーブル805中の未処理のエントリを1つ選択する。ステップS303で選択されたエントリを、以下では便宜上「選択エントリ」ともいう。
次に、ステップS304で推定部714は、選択エントリからスコア(すなわち、選択エントリの構成アイテムについて算出されたWF−IDF(f,n))を読み取る。
そして、ステップS305で推定部714は、選択エントリ中の各メッセージ種別と、障害予兆検知部702によって今回予測された障害の種別の組み合わせに対応するパスを、トポロジ関係テーブル804から読み取る。より具体的には、選択エントリのメッセージ種別フィールドには、1つ以上の種別のリストが記憶されている。よって、推定部714は、リスト中の各種別について、以下の3つの条件をすべて満たすエントリをトポロジ関係テーブル804の中から検索し、見つかったエントリからパスを読み取る。
・予兆IDフィールドの値により識別される、障害予兆テーブル801中のエントリにおける予兆パターンが、障害予兆検知部702が今回検知した予兆パターンと等しい(なお、後者の予兆パターンは、換言すれば、推定部714がランキング生成部709から受け取ったランキングテーブル805の予兆IDフィールドの値により識別される、障害予兆テーブル801中のエントリに記憶されている予兆パターンである)。
・障害種別フィールドの値は、障害予兆検知部702が今回予測した障害の種別(つまり、推定部714がランキング生成部709から通知された種別)と等しい。
・メッセージ種別フィールドの値は、選択エントリ中のメッセージ種別フィールドのリスト中のいずれかの値に等しい。
なお、ステップS305で読み取られるパスの数は、1つの場合もあり得るし、複数の場合もあり得る。例えば、選択エントリが図11のランキングテーブル805の2番目のエントリである場合、ステップS305では、図11のトポロジ関係テーブル804の2番目のエントリのパス(すなわち、図8のパスP2を示すXPath式)が得られる。また、例えば、ある特定のメッセージパターンに基づくある特定の種別の障害の予測が、過去に2回以上当たっていた場合は、ステップS305で2つ以上のパスが得られる場合がある。選択エントリのメッセージ種別フィールドに2つ以上の種別が記録されている場合にも、ステップS305で2つ以上のパスが得られる場合がある。
さて、次に、ステップS306で推定部714は、構成情報記憶部712に記憶された構成情報を参照して、選択エントリのIPアドレスを持つ構成アイテムを始点として、ステップS305で読み取ったパスと相似なパスをたどるとたどりつく終点の構成アイテムを検索する。以下では説明の便宜上、検索の結果見つかった構成アイテムを「終点構成アイテム」という。なお、図9に関して説明したように、ステップS306では、最短パス条件を満たすパスの終点の構成アイテムのみが検索される。
なお、上記のように、構成情報において各構成アイテムは、IPアドレスにより識別されている。よって、推定部714は、終点構成アイテムのIPアドレスも、検索の結果として取得することができる。
例えば、選択エントリが図11のランキングテーブル805の1番目のエントリである場合、ステップS305ではトポロジ関係テーブル804の1番目のエントリのパス(すなわち図8のパスP1を示すXPath式)が得られる。また、選択エントリのIPアドレスは、IPアドレスEである。よって、推定部714は、IPアドレスEを持つ構成アイテム(つまり図9のノードN25で表される構成アイテム)を始点として、パスP1と相似なパスP11をたどる。すると、終点構成アイテムとして、ノードN24で表される構成アイテム(すなわち、IPアドレスDで識別される構成アイテム)が見つかる。
また、選択エントリが図11のランキングテーブル805の2番目のエントリである場合、図9に関する説明から分かるように、2つの終点構成アイテムが見つかる。つまり、ノードN24とN25により表される2つの構成アイテムが見つかる。同様に、選択エントリが図11のランキングテーブル805の3番目のエントリである場合も、ノードN24とN25により表される2つの構成アイテムが、終点構成アイテムとして見つかる。
以上のように、ステップS306では、1つだけ終点構成アイテムが見つかる場合もあるし、複数の終点構成アイテムが見つかる場合もある。しかし、場合によっては、ステップS306で1つも終点構成アイテムが見つからない場合もあり得る。
なお、ステップS305で2つ以上のパスが読み取られた場合、ステップS306では、各パスについて、終点構成アイテムの検索が行われる。その結果、複数の終点構成アイテムが得られる場合もあり得るし、たまたま、2つ以上のパスについて得られた終点構成アイテムが同じ場合もあり得る。
そこで、ステップS307で推定部714は、未処理の終点構成アイテムがあるか否かを判断する。ステップS306で1つも終点構成アイテムが見つからなかったか、または、ステップS306で見つかったすべての終点構成アイテムについてステップS308〜S312の処理が完了している場合、推定部714は、再度ステップS302の判断を行う。
逆に、ステップS306で1つ以上の終点構成アイテムが見つかり、そのうちステップS308〜S312の処理の対象として未選択のものが残っている場合は、推定部714は、次に、ステップS308で、未選択の終点構成アイテムを1つ選択する。以下では説明の便宜上、ステップS308で選択された終点構成アイテムを「選択終点構成アイテム」という。
続いて、ステップS309で推定部714は、選択終点構成アイテムのIPアドレスが既に改良ランキングテーブル806に含まれているか否かを判断する。
例えば、選択構成アイテムが、図9のノードN24で表される構成アイテム(つまりIPアドレスDにより識別される構成アイテム)である場合、推定部714は、IPアドレスDを検索キーとして用いて改良ランキングテーブル806を検索する。検索の結果、エントリが見つかれば、推定部714は、「選択終点構成アイテムのIPアドレスが既に改良ランキングテーブル806に含まれている」と判断する。逆に、エントリが見つからなければ、推定部714は、「選択終点構成アイテムのIPアドレスは改良ランキングテーブル806に含まれていない」と判断する。
選択終点構成アイテムのIPアドレスが改良ランキングテーブル806に含まれていない場合、推定部714は、次にステップS310の処理を行う。逆に、選択終点構成アイテムのIPアドレスが既に改良ランキングテーブル806に含まれている場合、推定部714は、次にステップS311の処理を行う。
ステップS310で推定部714は、改良ランキングテーブル806に、以下の4つの値を含む新規エントリを追加する。
・推定部714がランキング生成部709から受け取ったランキングテーブル805の全エントリに共通の予兆IDの値。この予兆IDの値は、図13〜14の処理を推定部714が開始する契機となった予測の結果を障害予兆検知部702が障害予兆情報記憶部704に記憶する際に用いたIDに等しい。
・選択終点構成アイテムを識別するIPアドレス。
・選択エントリのIPアドレスを持つ1つの構成アイテムに関して、現在の選択終点構成アイテムをステップS306で検索した際に用いたパスが1つだけの場合は、当該1つのパスがステップS305で読み取られた際に検索キーとして使われたメッセージ種別。現在の選択終点構成アイテムをステップS306で検索した際に用いたパスが2つ以上ある場合は、当該2つ以上のパスがステップS305で読み取られた際に検索キーとしてそれぞれ使われたメッセージ種別のリスト。
・ランキングテーブル805中の選択エントリからステップS304で読み取られたスコア。
なお、ステップS310で追加される新規エントリにおいて、順位のフィールドは空でよい。エントリの追加後、推定部714は、再びステップS307の判断を行う。
他方、ステップS311は、例えば、ランキングテーブル805の2つ以上のエントリに対応する2つ以上の構成アイテムをそれぞれ始点とするパスのそれぞれの終点として、たまたま同じ1つの構成アイテムが見つかった場合に、実行され得る。例えば、図9の例では、パスP11の終点も、パスP12の終点も、パスP13の終点も、ノードN24である。よって、ノードN24で表される構成アイテム(つまりIPアドレスDで識別される構成アイテム)についてのエントリが、ステップS309における検索の結果として見つかる場合が2回ある。
具体的には、ステップS311で推定部714は、改良ランキングテーブル806内のスコアが、ステップS304でランキングテーブル805の選択エントリから読み取ったスコアより大きいか否かを判断する。なおここで、「改良ランキングテーブル806内のスコア」とは、具体的には、ステップS309での改良ランキングテーブル806の検索の結果見つかったエントリ内のスコアのことである。
改良ランキングテーブル806内のスコアが、ステップS304で選択エントリから読み取ったスコアより大きい場合、ステップS309の検索で見つかったエントリを更新する必要はない。よって、この場合、推定部714は、次にステップS307の判断を行う。
逆に、改良ランキングテーブル806内のスコアが、ステップS304で選択エントリから読み取ったスコア以下の場合、推定部714は、次に、ステップS312で改良ランキングテーブル806のエントリを更新する。すなわち、推定部714は、ステップS309での改良ランキングテーブル806の検索の結果見つかったエントリを更新する。具体的には以下のとおりである。
改良ランキングテーブル806内のスコアが、ステップS304で読み取ったスコアより小さい場合、推定部714は、スコアフィールドの値を、ステップS304で読み取ったスコアに置き換える。また、この場合、推定部714は、メッセージ種別フィールドを次の内容に置き換える。
・選択エントリのIPアドレスを持つ1つの構成アイテムに関して、現在の選択終点構成アイテムをステップS306で検索した際に用いたパスが1つだけの場合は、当該1つのパスがステップS305で読み取られた際に検索キーとして使われたメッセージ種別。
・現在の選択終点構成アイテムをステップS306で検索した際に用いたパスが2つ以上ある場合は、当該2つ以上のパスがステップS305で読み取られた際に検索キーとしてそれぞれ使われたメッセージ種別のリスト。
一方、改良ランキングテーブル806内のスコアと、ステップS304で読み取ったスコアが互いに等しい場合、推定部714は、スコアフィールドは更新しないが、メッセージ種別フィールドのリストに次の内容を追加する。
・選択エントリのIPアドレスを持つ1つの構成アイテムに関して、現在の選択終点構成アイテムをステップS306で検索した際に用いたパスが1つだけの場合は、当該1つのパスがステップS305で読み取られた際に検索キーとして使われたメッセージ種別。
・現在の選択終点構成アイテムをステップS306で検索した際に用いたパスが2つ以上ある場合は、当該2つ以上のパスがステップS305で読み取られた際に検索キーとしてそれぞれ使われたメッセージ種別。
以上のような更新の後、推定部714は、ステップS307の判断を行う。なお、ステップS309〜S312によれば、改良ランキングテーブル806のメッセージ種別フィールドには、「どの種別のメッセージの発信元との関係に基づいて、終点構成アイテムにスコアが与えられたのか」という情報が示されることになる。
ところで、推定部714がランキング生成部709から受け取ったランキングテーブル805の全エントリが選択済みの場合、図13〜14の処理は、ステップS302からステップS313に移行する。
ステップS313では、推定部714は、スコアの降順に、改良ランキングテーブル806のエントリをソートする。そして、推定部714は、ソート結果に応じた順位を各エントリに記録する。図11には、以上のようにして順位づけされた改良ランキングテーブル806が例示されている。
ステップS313ではさらに、推定部714は、改良ランキングテーブル806を推定結果情報730として出力する。例えば、推定部714は、以上のようにしてローカルに生成した改良ランキングテーブル806の各エントリを、ランキング情報記憶部710内のテーブルに追加してもよい。推定部714は、ディスプレイ等の出力装置105に、改良ランキングテーブル806を出力してもよいし、通信インタフェイス103を介して他の装置に改良ランキングテーブル806を出力してもよい。推定部714は、例えば、改良ランキングテーブル806を含む電子メールやインスタントメッセージなどを送信してもよい。
ステップS313での出力後、図13〜14の処理は終了する。よって、検出サーバ700は、再度、図7のステップS101でイベントの発生を待つ。
以上、図8〜14を参照して説明した第3実施形態によれば、関係情報が考慮に入れられた、より信頼度の高い改良ランキング情報が提示される。また、第3実施形態では、「大規模コンピュータシステムには、互いに類似する構成を持つ複数の部分が含まれる場合が多い」という特徴が利用される。この特徴を利用することで、大規模コンピュータシステムに関する学習のデータスパースネス問題も軽減される。
なお、関係情報を用いない第2実施形態において推定結果情報430として出力されるランキング情報も、実用上、十分に信頼度が高い情報である。
なぜなら、一般的な傾向として、障害#fに対して大きなWF−IDF(f,n)が算出されるような「n」という種別のメッセージは、障害#fと偶然よく共起するというよりも、障害#fと直接または間接の因果関係がある場合が多いからである。そして、このように障害#fと密接に関連する「n」という種別のメッセージの発信元は、経験的には、障害#fが生じる構成アイテム自体である場合が比較的多い。
したがって、「大きなWF−IDF(f,n)が算出されるような『n』という種別のメッセージの発信元の構成アイテムに対して、何らかの対策を講じることが、障害#fの発生を予防するうえで有益である」という場合も、多いのである。よって、たとえ第2実施形態のように関係情報が使われなくても、実用上、十分に信頼度が高くて十分に有益なランキング情報が得られる。
なお、ある種別の障害の予兆として検知されたメッセージパターンに含まれるいずれかのメッセージの発信元において、たまたま、当該メッセージパターンから予測された種別の障害が生じることもあり得る。
例えば、図8の例において、メッセージM22が、「Z」というIPアドレスで識別される構成アイテムではなく、「Y」というIPアドレスで識別される構成アイテムから出力されたとする。この場合、障害#39の予兆として検知されたメッセージパターン601に含まれるメッセージM22の発信元は、予測された障害#39が生じる構成アイテムと、たまたま等しい。よって、この場合にメッセージM22に関して学習されるパスは、「Y」というIPアドレスで識別される構成アイテムから、「Y」というIPアドレスで識別される構成アイテム自身へ至る最短パスである。つまり、この場合、メッセージM22に関しては、空パスが学習される。なお、ある構成アイテムから当該構成アイテム自身へ至る空パスは、空パスを表すための特定の文字列(空文字列ではない文字列)により表現されてもよい。
関係情報として空パスが学習され、空パスが図13のステップS305で読み取られる場合、ステップS306で見つかる終点構成アイテムは、パスの始点の構成アイテム自体(つまり選択エントリのIPアドレスで識別される構成アイテム)である。
なお、本発明は第1〜第3実施形態に限られるものではなく、第1〜第3実施形態は様々に変形可能である。以下に、第1〜第3実施形態を変形するいくつかの観点を例示する。以下に述べる変形は、相互に矛盾しない限り、任意に組み合わせることが可能である
図6と図11には種々のテーブルを例示したが、種々の情報の形式は、実施形態に応じて任意である。テーブル以外のデータ形式が利用されてもよいし、例示した以外のフィールドをさらに含むテーブルが使われてもよい。
また、式(1)のWF−IDF(f,n)以外の統計値が使われてもよい。WF−IDF(f,n)の各種変形については上述したとおりである。
ところで、推定結果情報430の例としてランキングテーブル507を示し、推定結果情報730の例として改良ランキングテーブル806を示したが、推定結果情報の形式は実施形態に応じて任意である。
例えば、順位が上位U位までの構成アイテムの識別情報のみが、推定結果情報として出力されてもよい(1≦U)。また、順位とスコア(すなわちWF−IDF(f,n))のうち少なくとも一方が、構成アイテムの識別情報と対応づけられて推定結果情報に含まれていれば、それで十分である。つまり、必ずしも順位とスコアの双方が必要なわけではない。また、推定結果情報においては、メッセージ種別は省略可能である。もちろん、ランキングテーブル805と改良ランキングテーブル806の双方を含む情報が、推定結果情報730として出力されてもよい。
そして、第1実施形態に関しても説明したとおり、WF−IDF(f,n)等の値による評価対象の構成アイテムの粒度は、実施形態に応じて様々であってよい。例えば、ゲストOSとアプリケーションが別々の構成アイテムとして扱われる実施形態も可能であるし、ゲストOSと、ゲストOS上で動作するアプリケーションの集合が1つの構成アイテムとして扱われる実施形態も可能である。各構成アイテムを識別する識別情報は、構成アイテムの粒度に応じた適宜の情報であってよい。
ところで、第2〜第3実施形態についての説明では、障害の発生を知らせるメッセージとそれ以外のイベントを知らせるメッセージを区別した。しかし、実施形態によっては、障害予兆検知部402または702が、ある種の障害(例えば軽微な障害)の発生を知らせるメッセージを含むメッセージパターンから、別種の障害(例えば重大な障害)の発生を予測することがあってもよい。
例えば第2実施形態がこのように変形される場合、ログ統計算出部405は、「受信されたメッセージ420が、障害の発生についての通知であるのか、それとも、その他のイベントについての通知であるのか」ということによらず、ステップS102と同様にログ統計テーブル505を更新してもよい。受信されたメッセージ420が障害の発生についての通知である場合には、さらに、予兆統計算出部407がステップS103の処理を実行する。なお、この場合、ステップS103がステップS102より先に実行されてもよい。第3実施形態も同様に変形されてもよい。
第2〜第3実施形態におけるランキング情報の生成においては、図7のステップS109〜S112に示すように、いくつかの値のうちの最大値を採用する処理が行われる場合がある。同様に、第3実施形態における改良ランキング情報の生成においても、図14のステップS309〜S312に示すように、いくつかの値のうちの最大値を採用する処理が行われる場合がある。
しかし、実施形態によっては、いくつかの値のうちの最大値を採用する処理の代わりに、いくつかの値の算術和または重みづけ和を採用する処理が行われてもよい。例えば、図9の例において、推定部714は、ノードN24で表される構成アイテムに対して、WF−IDF(39,1)とWF−IDF(39,2)とWF−IDF(39,3)の最大値の代わりに、これら3つの値の算術和または重みづけ和を与えてもよい。
ところで、上記の説明においては、ある構成アイテムに障害が発生したとき、当該構成アイテム自体が、障害の発生を通知するメッセージを送信するものと仮定している。
しかし、実施形態によっては、ある構成アイテムに障害が発生したとき、他の構成アイテムが、前者の構成アイテムにおける障害の発生を通知するメッセージを出力してもよい。例えば、後者の構成アイテムは、前者の構成アイテムに障害が発生しているか否かを監視し、前者の構成アイテムにおける障害の発生に応じて、メッセージを出力してもよい。
例えば、図8の例において、「Y」というIPアドレスで識別される構成アイテムに時刻t24において障害が発生したとき、他のIPアドレス(便宜上「Y2」とする)で識別される構成アイテムが、メッセージM24と類似のメッセージを出力してもよい。出力されるメッセージには、障害が発生した構成アイテムを識別するための「Y」というIPアドレスが含まれるものとする。なお、「Y2」というIPアドレスで識別される構成アイテムから以上のようにして出力される当該メッセージの種別も、「39」と分類される。
この場合、トポロジ関係学習部711は、予兆パターンに含まれる各メッセージの発信元と、「Y2」というIPアドレスで識別される構成アイテムとの間の関係を学習するのではないことに注意されたい。すなわち、この場合も、トポロジ関係学習部711は、予兆パターンに含まれる各メッセージの発信元と、「Y」というIPアドレスで識別される構成アイテムとの間の関係を学習する。
もちろん、第1実施形態に関して説明したように、IPアドレスは識別情報の一例に過ぎない。実施形態によっては、IPアドレス以外の識別情報が利用されてもよい。
なお、検出サーバ400は、図5のコンポーネントのうち、少なくともランキング生成部409を含んでいればよい。他のコンポーネントは、検出サーバ400と通信可能な他のコンピュータ上に実装されていてもよい。例えば、障害予兆検知部402が他のコンピュータ上に実装されている場合、検出サーバ400は、図1のステップS1に関して説明したような予測通知を受信することにより、障害が予測されたことを認識してもよい。
同様に、検出サーバ700は、図10のコンポーネントのうち、少なくともランキング生成部709と推定部714を含んでいればよい。例えば、トポロジ関係学習部711が他のコンピュータ上に実装されている場合、検出サーバ700の推定部714は、他のコンピュータのトポロジ関係学習部711により学習された関係情報を参照すればよい。
ところで、検出サーバ400と700は、いずれも、以下のような構成要素を有する検出装置の具体例である。
・図1のステップS1と同様に、障害の発生を予測するか、または、予測通知を受け取る予兆検知手段。
・図1のステップS2と同様に、統計値を算出する算出手段。
・図1のステップS3と同様に、結果情報を生成する生成手段。
・図1のステップS4と同様に、結果情報を出力する出力手段。
例えば、障害予兆検知部402と702はいずれも、障害の発生を予測するタイプの予兆検知手段の例であり、CPU101により実現され得る。予測通知を受け取るタイプの予兆検知手段の例は、例えば、通信インタフェイス103とCPU101の組み合わせである。
また、検出サーバ400におけるランキング生成部409は、算出手段の例でもあり、生成手段の例でもある。検出サーバ700におけるランキング生成部709は、算出手段の例であり、検出サーバ700における推定部714は、生成手段の例である。ある観点によれば、ログ統計算出部405および705、ならびに、予兆統計算出部407および707は、WF−IDF(f,n)の算出に使うための情報を生成しているので、算出手段の一部を実現しているとも見なせる。いずれにせよ、算出手段は、例えばCPU101により実現されてもよい。
また、出力手段の例としては、出力装置105や、通信インタフェイス103などが挙げられる。
ところで、上記のとおり、第3実施形態では、図12の処理は、何らかの障害が実際に発生したときに実行される。しかし、実施形態によっては、検出サーバ700は、図12と類似のバッチ処理により、関係情報を学習してもよい。
例えば、ログ情報記憶部701には、今までに実際に発生したα個の障害についてのエントリが含まれており、障害予兆情報記憶部704には、それらα個の障害に関して障害予兆検知部702が正解したβ回の予兆検知についてのエントリが含まれているとする。なお、α個の障害の中には、正しく予測されなかった障害もあり得るし、1回の予測だけが正解した障害もあり得るし、2回以上の予測が正解した予測もあり得る。よって、α<β、α>β、およびα=βのいずれの場合もあり得る。
いずれにしろ、トポロジ関係学習部711は、1つの障害が発生するたびに図12の処理を実行する代わりに、図12と類似のバッチ処理を実行してもよい。つまり、1回のバッチ処理の実行により、トポロジ関係学習部711は、α個の障害(すなわち、発生したことがログ情報記憶部701に記録済みの、過去の複数の障害)のそれぞれについての関係情報を学習してもよい。
最後に、上記の種々の実施形態に関して、さらに下記の付記を開示する。
(付記1)
コンピュータシステムを管理するコンピュータが、
各々が前記コンピュータシステムに含まれるハードウェア、ソフトウェア、または両者の組み合わせである複数の構成アイテムのうちのQ個(1≦Q)から所定時間以下の長さの期間に出力されるP個(1≦Q≦P)のメッセージの組み合わせである第1のパターンに基づき、ある種別の障害の発生が予測される場合、前記Q個の構成アイテムの各々について、前記ある種別の障害が過去に発生した発生時点より前に、前記P個のメッセージのうち当該構成アイテムが出力した出力メッセージと同じ種別のメッセージが出力された第1の頻度と、前記発生時点より前にいずれかのメッセージが出力された出力時点から前記所定時間だけ遡るウィンドウ期間中に前記出力メッセージと同じ種別のメッセージが出力され、かつ、前記ウィンドウ期間に含まれる1つ以上のメッセージの組み合わせである第2のパターンに基づいて前記ある種別の障害の発生が予測された第2の頻度とに基づいて、前記ある種別の障害が当該構成アイテムで将来発生する蓋然性に関する統計値を算出し、
前記複数の構成アイテムの中で相対的に高い蓋然性で前記ある種別の障害が発生すると予測される1つ以上の構成アイテムを示す結果情報を、前記統計値に基づいて生成する
ことを特徴とする検出方法。
(付記2)
前記統計値は、前記第1の頻度に対して単調減少するとともに前記第2の頻度に対して単調増加する
ことを特徴とする付記1に記載の検出方法。
(付記3)
前記結果情報は、前記Q個の構成アイテムのうちで前記統計値が最大の構成アイテムを識別する識別情報を含む
ことを特徴とする付記1または2に記載の検出方法。
(付記4)
前記結果情報を生成する処理が、
前記P個のメッセージの各々について、前記P個のメッセージのうちの当該メッセージと同じ種別のメッセージであって、前記ある種別の障害の発生が過去に正しく予測された際の予測に使われた前記第2のパターンに含まれるメッセージを出力した第1の構成アイテムと、過去に正しく予測された前記ある種別の障害が実際に発生した第2の構成アイテムとの間の第1の関係と等価な第2の関係が、前記P個のメッセージのうちの当該メッセージを出力した構成アイテムとの間に成り立つ関連構成アイテムを、前記複数の構成アイテム間の関係を示す構成情報を用いて、前記複数の構成アイテムの中から検索し、
前記Q個の構成アイテムのうちのある構成アイテムについて前記関連構成アイテムが見つかった場合は、前記ある種別の障害が前記関連構成アイテムにおいて将来発生する蓋然性に関する評価値を、前記Q個の構成アイテムのうちの当該ある構成アイテムについて算出した前記統計値に基づいて決定し、
検索の結果見つかった各関連構成アイテムについて決定した前記評価値に基づいて、前記結果情報を生成する
ことを含むことを特徴とする付記1から3のいずれか1項に記載の検出方法。
(付記5)
前記結果情報は、前記Q個の構成アイテムの中の少なくとも1つに関して前記関連構成アイテムとして見つかった1つ以上の構成アイテムのうちで、前記評価値が最大の構成アイテムを識別する識別情報を含む
ことを特徴とする付記4に記載の検出方法。
(付記6)
前記構成情報により示される前記関係は、2つの構成アイテム間の論理的依存関係であるか、2つの構成アイテム間の物理的接続関係であるか、2つ以上の前記論理的依存関係の合成であるか、2つ以上の前記物理的接続関係の合成であるか、または、1つ以上の前記論理的依存関係と1つ以上の前記物理的接続関係の合成である
ことを特徴とする付記4または5に記載の検出方法。
(付記7)
前記コンピュータはさらに、
前記複数の構成アイテムのいずれかからメッセージが出力されるたびに、当該メッセージの種別に対応づけられて記憶装置に記憶されたカウント値を更新し、
前記第1の頻度を、前記カウント値から算出する
ことを特徴とする付記1から6のいずれか1項に記載の検出方法。
(付記8)
前記コンピュータはさらに、
複数の種別のうちのいずれかの種別の障害が実際に発生するたびに、当該発生した障害を正しく予測する根拠となった前記第2のパターンに含まれる各メッセージの種別と、当該発生した障害の前記種別との組み合わせに対応づけられて記憶装置に記憶されたカウント値を更新し、
前記第2の頻度を、前記カウント値から算出する
ことを特徴とする付記1から6のいずれか1項に記載の検出方法。
(付記9)
コンピュータシステムを管理するコンピュータに、
各々が前記コンピュータシステムに含まれるハードウェア、ソフトウェア、または両者の組み合わせである複数の構成アイテムのうちのQ個(1≦Q)から所定時間以下の長さの期間に出力されるP個(1≦Q≦P)のメッセージの組み合わせである第1のパターンに基づき、ある種別の障害の発生が予測される場合、前記Q個の構成アイテムの各々について、前記ある種別の障害が過去に発生した発生時点より前に、前記P個のメッセージのうち当該構成アイテムが出力した出力メッセージと同じ種別のメッセージが出力された第1の頻度と、前記発生時点より前にいずれかのメッセージが出力された出力時点から前記所定時間だけ遡るウィンドウ期間中に前記出力メッセージと同じ種別のメッセージが出力され、かつ、前記ウィンドウ期間に含まれる1つ以上のメッセージの組み合わせである第2のパターンに基づいて前記ある種別の障害の発生が予測された第2の頻度とに基づいて、前記ある種別の障害が当該構成アイテムで将来発生する蓋然性に関する統計値を算出し、
前記複数の構成アイテムの中で相対的に高い蓋然性で前記ある種別の障害が発生すると予測される1つ以上の構成アイテムを示す結果情報を、前記統計値に基づいて生成する
ことを含む処理を実行させる検出プログラム。
(付記10)
各々がコンピュータシステムに含まれるハードウェア、ソフトウェア、または両者の組み合わせである複数の構成アイテムのうちのQ個(1≦Q)から所定時間以下の長さの期間に出力されるP個(1≦Q≦P)のメッセージの組み合わせである第1のパターンに基づき、ある種別の障害の発生が予測される場合、前記Q個の構成アイテムの各々について、前記ある種別の障害が過去に発生した発生時点より前に、前記P個のメッセージのうち当該構成アイテムが出力した出力メッセージと同じ種別のメッセージが出力された第1の頻度と、前記発生時点より前にいずれかのメッセージが出力された出力時点から前記所定時間だけ遡るウィンドウ期間中に前記出力メッセージと同じ種別のメッセージが出力され、かつ、前記ウィンドウ期間に含まれる1つ以上のメッセージの組み合わせである第2のパターンに基づいて前記ある種別の障害の発生が予測された第2の頻度とに基づいて、前記ある種別の障害が当該構成アイテムで将来発生する蓋然性に関する統計値を算出する算出手段と、
前記複数の構成アイテムの中で相対的に高い蓋然性で前記ある種別の障害が発生すると予測される1つ以上の構成アイテムを示す結果情報を、前記統計値に基づいて生成する生成手段と
を備える検出装置。