(57)【特許請求の範囲】
【請求項１】
監視対象装置で発生し得るイベントとそのイベントを引き起こすイベント発生原因を定義した基本モデル定義に基づいて、イベントとそのイベント発生原因との対応関係およびイベント発生原因間の遷移を、イベント発生原因を状態とする有限オートマトンでモデル化した初期イベント発生モデルを生成してモデル格納データベースに記憶させる初期モデル生成手段と、
前記監視対象装置で発生し得る複数のイベントからなるイベント列を記憶したイベント列データベースから読みだされた第１のイベント列と前記初期イベント発生モデルとに基づいて、イベント発生原因ごとに各イベントが発生する確率およびイベント発生原因間の遷移の確率を算出し、その算出結果を前記初期イベント発生モデルに反映させたイベント発生モデルを前記モデル格納データベースに記憶させるイベント発生モデル学習手段と、  前記イベント発生モデルに基づいて、前記イベント列データベースから読みだされた第２のイベント列が観察される確率が最も高いと考えられる状態遷移列を求め、その状態遷移列を原因推定結果データベースに記憶させる状態遷移列計算手段と、
前記イベント発生モデルと前記状態遷移列計算手段によって求められた状態遷移列とに基づいて、前記監視対象装置で将来発生し得るイベントを予測するフィルタリングモジュールと
を備えることを特徴とするイベント予測システム。
【請求項２】
請求項１に記載のイベント予測システムにおいて、
前記フィルタリングモジュールは、
前記イベント発生モデルと前記状態遷移列計算手段によって求められた状態遷移列に、その状態遷移列に含まれる各イベント発生原因を発生原因とするイベントを対応付けることによって将来発生し得るイベントを予測することを特徴とするイベント予測システム。
【請求項３】
請求項１または２に記載のイベント予測システムにおいて、
前記初期イベント発生モデルが前記発生し得るイベントの集合をΣ、前記イベント原因の集合をS、各イベント要因ｓi∈Ｓ  （ただし、0≦i＜ｎ；  ｎは自然数)  についてそのイベント原因Ｓiによってイベントｅj  ∈Σ（ただし、0≦ｊ＜ｍ；  ｍは自然数)  が発生する確率を{Pr(ｅj｜ｓi)}si ∈S,ej∈Σと表したとき、前記フィルタリングモジュールは、イベント予測のイベント発生モデルに含まれるイベント発生確率{Pr(ｅj｜ｓi)}si ∈S,ej∈Σに重み係数を乗算することを特徴とするイベント予測システム。
【請求項４】
請求項３に記載のイベント予測システムにおいて、
前記状態遷移列計算手段によって求められた状態遷移列を[ｓ（0），ｓ（1），・・・，ｓ（n）］（ただし、  ｎは自然数)  とするとき、前記フィルタリングモジュールは、前記イベント発生確率{Pr(ｅj｜ｓi)}si ∈S,ej∈Σに乗算する重み係数を、１未満の定数をｉ乗した値とすることを特徴とするイベント予測システム。
【請求項５】
請求項３または４に記載のイベント予測システムにおいて、
前記状態遷移列計算手段は、同一装置において同一のイベントは連続して発生しないとして前記状態遷移列を定義することを特徴とするイベント予測システム。
【請求項６】
請求項５に記載のイベント予測システムにおいて、
前記状態遷移列計算手段は、前記イベント列データベースに蓄積されたデータの中に同一のイベントが連続して発生している事例がある場合には、同一装置において同一のイベントは連続して発生しないとする定義を無効とすることを特徴とするイベント予測システム。
【請求項７】
コンピュータに、監視対象装置で発生し得るイベントとそのイベントを引き起こすイベント発生原因を定義した基本モデル定義に基づいて、イベントとそのイベント発生原因との対応関係およびイベント発生原因間の遷移を、イベント発生原因を状態とする有限オートマトンでモデル化した初期イベント発生モデルを生成させ、モデル格納データベースに記憶させる初期モデル生成ステップと、
コンピュータに、前記監視対象装置で発生し得る複数のイベントからなるイベント列を記憶したイベント列データベースから読みだされた第１のイベント列と前記初期イベント発生モデルとに基づいて、イベント発生原因ごとに各イベントが発生する確率およびイベント発生原因間の遷移の確率を算出させ、その算出結果を前記初期イベント発生モデルに反映させたイベント発生モデルを前記モデル格納データベースに記憶させるイベント発生モデル学習ステップと、
コンピュータに、前記イベント発生モデルに基づいて、前記イベント列データベースから読みだされた第２のイベント列が観察される確率が最も高いと考えられる状態遷移列を求めさせ、その状態遷移列を原因推定結果データベースに記憶させる状態遷移列計算ステップと、
コンピュータに、前記イベント発生モデルと前記状態遷移列計算ステップによって求められた状態遷移列とに基づいて、前記監視対象装置で将来発生し得るイベントを予測させるフィルタリングステップと
を備えることを特徴とするイベント予測方法。
【請求項８】
請求項７に記載のイベント予測方法において、
前記初期イベント発生モデルが前記発生し得るイベントの集合をΣ、前記イベント原因の集合をS、各イベント要因ｓi∈Ｓ （ただし、0≦i＜ｎ； ｎは自然数) についてそのイベント原因Ｓiによってイベントｅj ∈Σ（ただし、0≦ｊ＜ｍ； ｍは自然数) が発生する確率を{Pr(ｅj｜ｓi)}si ∈S,ej∈Σと表したとき、前記フィルタリングステップは、コンピュータに、イベント予測のイベント発生モデルに含まれるイベント発生確率{Pr(ｅj｜ｓi)}si ∈S,ej∈Σに重み係数を乗算させることを特徴とするイベント予測方法。
【請求項９】
請求項８に記載のイベント予測方法において、
前記状態遷移列計算ステップにおいて求められた状態遷移列を[ｓ（0），ｓ（1），・・・，ｓ（n）]   （ただし、  ｎは自然数)  とするとき、前記フィルタリングステップは、前記イベント発生確率{Pr(ｅj｜ｓi)}si ∈S,ej∈Σに乗算する重み係数を、１未満の定数をｉ乗した値とすることを特徴とするイベント予測方法。
【請求項１０】
請求項７乃至９のいずれか１項に記載のイベント予測方法をコンピュータに実行させることを特徴とするコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、イベント予測システムおよびイベント予測方法、ならびにコンピュータ・プログラムに関し、特に監視対象装置において発生し得る、例えば、故障などのイベントを予測するイベント予測システムおよびイベント予測方法、ならびにコンピュータ・プログラムに関する。
【背景技術】
【０００２】
従来より、コンピュータ等の管理対象装置を監視して、管理対象装置に何らかのイベント、例えば装置障害が発生した際に、そのイベントの発生を通知するシステムがある。このようなシステムの大半は、例えば「装置障害」というイベントが発生したという事象そのものは通知するものの、そのイベント（装置障害）発生の根本原因を推定するものではなく、また、装置障害が発生してから通知がなされるため、装置障害が発生する前に対策を講ずることを可能とするものではなかった。
【０００３】
これに対し、イベント発生の根本原因の解析手法の一つとして派生障害分析を行う技術が提案されている（例えば、特許文献１参照。）。この技術は、発生した装置障害の根本原因を過去の事例から学習して解析するものである。この技術により、障害が起きた際の根本原因を推定することができるようになった。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００７−２５７１８４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１に記載された技術は、既に発生したイベント（装置障害）についてその根本原因を解析するものであり、今後発生する可能性がある装置障害に関しては解析する機能がなかった。このため、この技術によっては、依然として装置障害が発生を事前に予測することができず、したがって、装置障害が発生する前に対策を講ずることもできない。
【０００６】
一方、装置が障害することを事前に予測ができる例としては、管理者が過去の経験に基づいて故障するタイミングを予測できることが知られている。これには深い経験を有した管理者が必要であるが、そのような人材が必ずしも存在するとは限らない。したがって、管理者の経験をルールベース化することによって、障害の事前予測を自動化することができれば、経験のない管理者であっても装置が故障する可能性があることを把握することができ、装置故障を事前に防ぐことができることが期待される。
しかし、装置故障に関してルールの獲得が難しいことなどの理由により、ルールベースによる装置故障を予測するシステムは実用化されていない。
【０００７】
本発明は、このような課題を解決するためのものであり、装置障害等のイベントの発生を未然に防いだり、イベントが発生した際に経験のない管理者でも迅速な対処を可能としたりすることを可能とするため、イベントの発生を事前に予測する、いわゆるイベント予測システムおよびイベント予測方法ならびにプログラムを提供することを目的とする。
行うための機能を提供できていなかった。
【課題を解決するための手段】
【０００８】
上述した目的を達成するために、本発明に係るイベント予測システムは、監視対象装置で発生し得るイベントとそのイベントを引き起こすイベント発生原因を定義した基本モデル定義に基づいて、イベントとそのイベント発生原因との対応関係およびイベント発生原因間の遷移を、イベント発生原因を状態とする有限オートマトンでモデル化した初期イベント発生モデルを生成してモデル格納データベースに記憶させる初期モデル生成手段と、前記監視対象装置で発生し得る複数のイベントからなるイベント列を記憶したイベント列データベースから読みだされた第１のイベント列と前記初期イベント発生モデルとに基づいて、イベント発生原因ごとに各イベントが発生する確率およびイベント発生原因間の遷移の確率を算出し、その算出結果を前記初期イベント発生モデルに反映させたイベント発生モデルを前記モデル格納データベースに記憶させるイベント発生モデル学習手段と、前記イベント発生モデルに基づいて、前記イベント列データベースから読みだされた第２のイベント列が観察される確率が最も高いと考えられる状態遷移列を求め、その状態遷移列を障害予測結果データベースに記憶させる状態遷移列計算手段と、前記イベント発生モデルと前記状態遷移列計算手段によって求められた状態遷移列とに基づいて、前記監視対象装置で将来発生し得るイベントを予測するフィルタリングモジュールとを備えることを特徴とする。
【０００９】
また、本発明に係るイベント予測方法は、コンピュータに、監視対象装置で発生し得るイベントとそのイベントを引き起こすイベント発生原因を定義した基本モデル定義に基づいて、イベントとそのイベント発生原因との対応関係およびイベント発生原因間の遷移を、イベント発生原因を状態とする有限オートマトンでモデル化した初期イベント発生モデルを生成させ、モデル格納データベースに記憶させる初期モデル生成ステップと、コンピュータに、前記監視対象装置で発生し得る複数のイベントからなるイベント列を記憶したイベント列データベースから読みだされた第１のイベント列と前記初期イベント発生モデルとに基づいて、イベント発生原因ごとに各イベントが発生する確率およびイベント発生原因間の遷移の確率を算出させ、その算出結果を前記初期イベント発生モデルに反映させたイベント発生モデルを前記モデル格納データベースに記憶させるイベント発生モデル学習ステップと、コンピュータに、前記イベント発生モデルに基づいて、前記イベント列データベースから読みだされた第２のイベント列が観察される確率が最も高いと考えられる状態遷移列を求めさせ、その状態遷移列を障害予測結果データベースに記憶させる状態遷移列計算ステップと、コンピュータに、前記イベント発生モデルと前記状態遷移列計算手段によって求められた状態遷移列とに基づいて、前記監視対象装置で将来発生し得るイベントを予測させるフィルタリングステップとを備えることを特徴とする。
【００１０】
また、本発明に係るコンピュータ・プログラムは、上記のイベント予測方法をコンピュータに実行させることを特徴とする。
【発明の効果】
【００１１】
本発明では、基本定義モデルに基づいて作成された初期イベント発生モデルについて、第１のイベント列を学習用イベント列とする学習により算出されたイベント発生原因ごとに各イベントが発生する確率およびイベント発生原因間の遷移の確率を初期イベント発生モデルに反映させたイベント発生モデルを生成し、そのイベント発生モデルから障害予測用イベント列となる第２のイベント列が観察される確率が最も高いと考えられる状態遷移列を求め、その状態遷移列に基づいて、監視対象装置で発生するイベントの予測を行う。
本発明によれば、イベントの発生を事前に予測することができ、したがって、装置障害等のイベントの発生を未然に防いだり、イベントが発生した際に経験のない管理者でも迅速な対処を可能としたりすることが可能となる。
【図面の簡単な説明】
【００１２】
【図１】本発明の第１の実施の形態に係るイベント予測システムの構成を示すブロック図である。
【図２】本発明の第２の実施の形態に係る障害発生予測装置の構成を示すブロック図である。
【図３】第２の実施の形態に係る障害発生モデルを生成する際の障害発生予測装置の動作手順を示すフローチャートである。
【図４】基本モデル定義の記述例を示す図である。
【図５】イベント列の分割の様子を示す模式図である。
【図６】第２の実施の形態に係る障害発生予測装置の障害原因を推定する際のの動作手順を示すフローチャートである。
【図７】障害予測結果データベースに格納された情報の具体例を示す図である。
【発明を実施するための形態】
【００１３】
以下、図面を参照して本発明の実施の形態について説明する。
【００１４】
［第１の実施の形態］
本発明の第１の実施の形態に係るイベント予測システムの構成を図１に示す。
本実施の形態に係るイベント予測システム１は、監視対象装置で発生し得るイベントとそのイベントを引き起こすイベント発生原因を定義した基本モデル定義に基づいて、イベントとそのイベント発生原因との対応関係およびイベント発生原因間の遷移を、イベント発生原因を状態とする有限オートマトンでモデル化した初期イベント発生モデルを生成してモデル格納データベース（ＤＢ）１５に記憶させる初期モデル生成部１１と、監視対象装置で発生し得る複数のイベントからなるイベント列を記憶したイベント列データベース１６から読みだされた第１のイベント列と初期イベント発生モデルとに基づいて、イベント発生原因ごとに各イベントが発生する確率およびイベント発生原因間の遷移の確率を算出し、その算出結果を初期イベント発生モデルに反映させたイベント発生モデルをモデル格納データベース１５に記憶させるイベント発生モデル学習部１２と、モデル格納データベース１５に記憶されたイベント発生モデルに基づいて、イベント列データベース１６から読みだされた第２のイベント列が観察される確率が最も高いと考えられる状態遷移列を求め、その状態遷移列をイベント予測結果データベース１７に記憶させる状態遷移列計算部１３と、イベント発生モデルと状態遷移列計算部１３によって求められた状態遷移列とに基づいて、監視対象装置で将来発生し得るイベントを予測するフィルタリングモジュール１４とを備えることを特徴とする。
【００１５】
本実施の形態では、人手で定義が必要なのは、発生し得るイベントと、イベントを引き起こすイベント発生原因と、その対応関係とであり、これらは、人手で容易に定義できる。
【００１６】
本実施の形態に係るイベント予測システムでは、まず、基本定義モデルに基づいて初期イベント発生モデルを生成する（「初期モデル生成ステップ」）。このモデルは、イベントの発生原因を状態として、イベントの移転と発生原因との対応関係およびイベント発生原因間（すなわち、状態間）の遷移を有限オートマトンでモデル化したものである。
【００１７】
次に、この初期イベント発生モデルに対して、学習用イベント列としてイベント列データベース１６から読み出された第１のイベント列を適用し、学習により算出されたイベント発生原因ごとに各イベントが発生する確率およびイベント発生原因間の遷移の確率を初期イベント発生モデルに反映させてイベント発生モデルを生成する（「イベント発生モデル学習ステップ」）。
【００１８】
しかる後に、障害予測用イベント列としてイベント列データベース１６から第２のイベント列を読み出し、モデル格納データベース１４に記憶されたイベント発生モデルからこの第２のイベント列が観察される確率が最も高いと考えられる状態遷移列を求め、これをイベント予測結果データベース１７に記憶させる（「状態遷移列計算ステップ」）。
【００１９】
そして、モデル格納データベース１４に記憶されたイベント発生モデルと、イベント予測結果データベース１７に記憶された最も尤もらしい状態遷移列とに基づいて、監視対象装置で将来発生し得るイベントを予測する（「イベント予測ステップ」）。
【００２０】
本実施の形態に係るイベント予測システムによれば、有限オートマトンでモデル化されたイベント発生モデルとイベント列とに基づいてイベントの根元的な原因を推定したり将来発生し得るイベント予測したりするので、複雑な原因−結果間の依存関係を定義しなくても、イベントの発生を事前に予測することができる。したがって、装置障害等のイベントの発生を未然に防いだり、イベントが発生した際に経験のない管理者でも迅速な対処を可能としたりすることが可能となる。
【００２１】
［第２の実施の形態］
次に、本発明の第２の実施の形態について説明する。この第２の実施の形態に係るイベント予測システムは、監視対象装置の障害の発生をイベントの発生とし、監視対象装置からモニタされるイベント列、すなわち装置障害の履歴から、将来発生する可能性のある障害を予測する障害予測装置である。
【００２２】
本実施の形態に係る障害予測装置の構成を図２に示す。
障害予測装置１０は、基本的に、基本モデル定義２０、初期モデルパーサ３０、初期モデル生成部４０、Ｂａｕｍ−Ｗｅｌｃｈ計算部５０、Ｖｉｔｅｒｂｉ計算部６０、フィルタリングモジュール７０から構成される。
この障害予測装置１０には、また、上記の基本的な構成に加え、上述した第１の実施の形態と同様に、基本イベント発生モデル（以下、「初期障害発生モデル」という。）およびイベント発生モデル（以下、「障害発生モデル」という。）を記憶するモデル格納ＤＢ１２０、障害予測用イベント列が観察される確率が最も高いと考えられる状態遷移列（この状態遷移列は、本実施の形態においては装置障害の列となる。）を記憶する障害予測結果ＤＢ１５０が設けられている。また、障害発生の予測結果を表示する表示部１６０が設けられている。
【００２３】
障害予測装置１０の各構成要素のうち、基本モデル定義２０、初期モデルパーサ３０、初期モデル生成部４０、Ｂａｕｍ−Ｗｅｌｃｈ計算部５０、およびモデル格納ＤＢ１２０は、イベント発生確率・障害遷移確率学習部２００を構成し、イベント（装置障害）の発生確率および障害原因（状態）間の遷移確率を学習する。学習のアルゴリズムとしては、例えば、出力記号列からパラメータを推定するＢａｕｍ−Ｗｅｌｃｈアルゴリズムを用いることができる。Ｂａｕｍ−Ｗｅｌｃｈアルゴリズムにより、前記原因間の状態遷移確率と各原因でのイベント発生確率とを学習する構成を採用できる。
【００２４】
また、Ｖｉｔｅｒｂｉ計算部６０、フィルタリングモジュール７０、および障害予測結果ＤＢ１５０は、障害予測部２１０を構成し、モデル格納ＤＢ１２０に記憶された障害発生モデルと障害予測結果ＤＢ１５０に記憶された状態遷移列とに基づいて、監視対象装置８０で将来発生し得るイベントを予測し、その結果を表示部１６０に表示する。
【００２５】
本実施の形態においては、さらに、監視対象装置８０の障害発生を監視するイベントモニタ９０、監視対象装置８０の障害発生履歴（学習用イベント列１００および障害予測用イベント列１１０）をイベント列ＤＢ１４０に記憶させるイベント列パーサ１３０、およびイベント列ＤＢ１４０からなる監視部２２０を備えている。
【００２６】
なお、上述した障害予測装置１０は全体としてサーバ装置など、入力されたデータを情報処理するコンピュータを備える情報処理装置で構成され、コンピュータにインストールした所定のプログラムを動作させることで、各部の機能が実現される。
【００２７】
各構成要素の動作および機能は次のようなものである。
基本モデル定義２０は、監視対象装置８０で発生し得るイベントと、それを引き起こす障害原因とを定義したデータである。このようなデータは予め装置開発者によって記述される。
【００２８】
初期モデルパーサ３０は、装置開発者が記述した基本モデル定義２０を読み込み、それを構文解釈して構文情報を生成し、初期モデル生成部４０に受け渡す。
初期モデル生成部４０は、初期モデルパーサ３０が生成した構文情報に基づいて、イベントとその発生原因の対応関係、及び、発生原因間の遷移を有限オートマトンでモデル化した初期障害発生モデルを生成し、モデル格納ＤＢ１２０に格納する。
【００２９】
イベントモニタ９０は、監視対象装置８０の運用時に発生するイベントをモニタし、監視対象装置の運用時にモニタされたイベント列から学習用イベント列１００と障害予測用イベント列１１０とを生成する。
なお、学習用イベント列１００は、監視対象装置８０を試運転した際にモニタされたイベント列としてもよいし、監視対象装置８０の運用時にモニタされたイベント列であって、障害の発生原因が解析済みのイベント列であってもよい。
また、障害予測用イベント列１１０として、監視対象装置８０の運用時にモニタされたイベント列である構成を採用することによって、運用中の監視対象装置で発生した障害を予測することができる。
さらに、学習用イベント列１００及び障害予測用イベント列１１０のそれぞれにおいて、隣接する２つのイベントの発生時間間隔が所定の値以下とする構成をとることができる。このような構成を採用した場合、ある障害原因に対して、互いに関連性のあるイベントから学習用イベント列１００および障害予測用イベント列１１０を構成することができる。
【００３０】
イベント列パーサ１３０は、これら学習用イベント列１００及び障害予測用イベント列１１０を構文解釈して、イベントデータを生成し、イベント列ＤＢ１４０に記憶する。
なお、イベント列ＤＢ１４０及び障害予測結果ＤＢ１５０には、装置障害が起きた時刻及びその前後の時刻に障害が発生した装置の時刻との間隔が保持される。
【００３１】
Ｂａｕｍ−Ｗｅｌｃｈ計算部５０は、モデル格納ＤＢ１２０に格納された初期障害発生モデルとイベント列ＤＢ１４０に格納された学習用イベント列１００に対応するイベントデータ（以下、単に「学習用イベント列」とも呼ぶ。）とに基づいて、原因に対応する有限オートマトンの状態がどの確率で推移したかを学習し、その学習結果を反映した障害発生モデルをモデル格納ＤＢ１２０に格納する。
【００３２】
Ｖｉｔｅｒｂｉ計算部６０は、出力記号列から状態列を推定するＶｉｔｅｒｂｉアルゴリズムにより状態遷移列を求める。具体的には、モデル格納ＤＢ１２０に格納された障害発生モデルとイベント列ＤＢ１４０に格納された障害予測用イベント列１１０に対応するイベントデータ（以下、単に「障害発見用イベント列」とも呼ぶ。）とを用いて、最も発生確率が高い（尤もらしい）障害発生モデルの状態遷移列を求め、フィルタリングモジュール７０に出力する。
その際、Ｖｉｔｅｒｂｉ計算部６０は、状態遷移列を求める元となった障害予測用イベント列１１０を併せて出力する。したがって、学習後の障害発生モデルから状態遷移列を求めことができる。
【００３３】
フィルタリングモジュール７０は、Ｖｉｔｅｒｂｉ計算部６０が求めた最も発生したと推測される状態遷移列（障害原因の列）のうちで確率的に低い遷移を切り捨てることによって、尤もらしい状態遷移列を発見する。
フィルタリングモジュール７０は、さらに、この尤もらしい遷移列の開始状態を根源的な原因と推定し、モデル格納ＤＢ１２０に格納されている障害発生モデルに基づいて、この推定した根源的な原因とそれに連なる派生原因とを含む原因列を特定して、障害予測結果ＤＢ１５０に格納する。
【００３４】
その際に、フィルタリングモジュール７０は、障害予測用イベント列１１０のうちで状態遷移列に含まれる各状態を発生原因とするイベントを、各状態に対応付けて障害予測結果ＤＢ１５０に記憶させる。
ここで、Ｖｉｔｅｒｂｉ計算部６０によって求められた尤もらしい状態遷移列に含まれる状態（障害原因）のそれぞれを発生原因とするイベント（装置障害）は、基本モデル定義２０や先に学習によって得られた障害発生モデルに基づいて求めることができる。その結果、障害予測用イベント列１１０のうちで、Ｖｉｔｅｒｂｉ計算部６０によって求められた尤もらしい状態遷移列に含まれる根源的な原因及び派生原因を発生原因とするイベントが、状態遷移列の各状態（原因）に対応付けられて障害予測結果ＤＢ１５０に格納される。
このようにして求められたイベント（装置障害）は、監視対象装置８０で将来発生し得る装置障害である。
【００３５】
このとき、未来の装置障害については、現在から遠く離れるにつれてその予測精度が低くなる可能性がある。このように予測精度を考慮するならば、後述するように、障害予測用イベント列１１０の各要素（装置障害）について重み係数を乗算してもよい。
なお、このようにして障害予測結果ＤＢ１５０に記憶された状態遷移列および各状態（原因）に対応付けられたイベント（装置障害）を参照することで、管理者等は障害の根源的な原因やそれに付随して発生した原因等を解析することもできる。
【００３６】
表示部１６０は、Ｖｉｔｅｒｂｉ計算部６０が求めた結果をフィルタリングモジュール７０から受け取って、管理者の要求に応じて適した形式にまとめる。
【００３７】
次に図３を参照して、障害予測装置１０の障害発生モデルを生成する際の動作手順（障害発生モデル生成フェーズの動作）を説明する。
【００３８】
（初期障害発生モデルの生成）
まず、初期モデルパーサ３０は、装置開発者によって記述された基本モデル定義２０を読み込み、読み込んだ基本モデル定義２０を、初期モデル生成部４０が解釈可能な構文情報に変換する（ステップＡ１）。
基本モデル定義２０は、イベントの集合Σと、障害原因の集合Ｓと、関数ｆ:Σ → Ｓで定義される。基本的に、関数ｆは全域関数であるが、部分関数であってもよい。
【００３９】
図４は、基本モデル定義２０の記述例を示している。基本モデル定義２０は、例えば同図に示すようなテキストファイルで記述される。この例では、ＯＳにＷｉｎｄｏｗｓ（登録商標）を想定している、［ｓｔａｔｅｓ］で始まる段落は、障害原因の集合Ｓを定義する。同図の例では、“Ｐｒｉｎｔ”や“Ａｐｐｌｉｃａｔｉｏｎ  Ｐｏｐｕｐ”など、９つの原因を定義している。［ｏｂｓｅｒｖａｔｉｏｎｓ］で始まる段落は、イベントの集合Σを定義している。Ｗｉｎｄｏｗｓ（登録商標）のイベントモニタツール「ｅｖｅｎｔ  ｖｉｅｗｅｒ」では、イベントの種別は“３”，“４”，“１６”などの数字のＩＤで与えられており、イベントの集合Σの定義には、そのＩＤを用いる。
【００４０】
｛ｏｂｓｅｒｖａｔｉｏｎｓ｝で、イベントの種類（ＩＤ）と“，  ”（カンマ）で区切られた部分は、イベントに対して想定される原因を表す。この部分が障害から原因への関数（マッピング）ｆ：Σ→Ｓ  を定義する。例えば、イベント“３”は“Ｐｒｉｎｔ”関係の状態を発生原因としており、ｆ（“３”）  ＝“Ｐｒｉｎｔ”と定義される。初期モデルパーサ３０は、このようなテキストファイルを読み込んで、記述された基本モデル定義２０に相当する構文情報を初期モデル生成部４０に受け渡す。
【００４１】
図３に戻り、初期モデル生成部４０は、基本モデル定義２０に相当する構文情報に基づいて、初期障害発生モデルを生成する（ステップＡ２）。障害発生モデルＭを次式で定義する。
Ｍ  ＝  {Σ, S∪{s0}, {Pr(sj｜si)}si ,sj∈S, {P0si}si∈S, {Pr(ej｜si)}si ∈S,ej∈Σ}
ここで、Pr(a｜b)は、条件付確率であり、bという条件下でaが発生する確率を示す。また、P0si は、障害発生モデルＭが状態ｓiから開始する確率を示す。s0は、監視対象装置８０が正常である状態を示す。上記障害発生モデルＭにおいて、「S∪{s0}, {Pr(sj｜si)}si ,sj∈S, {P0si}si∈S」は、有限状態オートマトンを表し、これは、次の状態s∈S∪{s0}は、直前の状態S'∈S∪{s0}のみで定まり、固定の確率Pr(s｜s’)で遷移することを表している。
【００４２】
上記の障害発生モデルＭの定義に沿って、初期モデル生成部４０が生成する初期障害発生モデルM0について詳細に説明する。
初期障害発生モデルM0で扱うイベントの集合Σは基本モデル定義２０で定義したΣと同一である。また、初期障害発生モデルM0で扱う原因の集合S∪{s0}は基本モデル定義２０で定義したSに、正常状態s0を加えた集合である。{Pr(sj｜si)}si ,sj∈S は原因間の遷移確率を示しており、この遷移確率は等確率とする。具体的には、|S|を原因の集合Sの個数として、{Pr(sj｜si)}si ,sj∈S = 1/(|S|+1)とする。この確率を等確率にせずに、自身へ遷移する確率{Pr(sj｜si)}si ,sj∈Sのみを大きくするなどして、定常状態になる確率を高く設定してもよい。{P0si}si∈S は、P00=1、P0i=0 (i≠0)とする。これは、初期障害発生モデルM0が正常状態s0から開始することを意味する。
【００４３】
{Pr(ej｜si)}si ∈S,ej∈Σ  は、イベント（装置障害）とその原因との対応関係を示しており、状態siでイベントejが発生する確率を示す。
{Pr(ej｜si)}si ∈S,ej∈Σ  は、  
Pr(e｜s) = k × p (f(e) = sのとき)
Pr(e｜s) = p (f(e) ≠ sのとき)
と定義する。ただし、kは1以上の定数である。
また、全てのs∈S∪{s0}について、Σ(e|f(e) = s) k×p＋Σ(e|f(e) ≠ s) p≦1である。
上述した定義は、基本モデル定義２０で定義されたf(e) = s、すなわち、イベントeの発生原因sについては、sからeが発生する確率を、f(e) ≠ sの場合確率pのk倍に設定することを示している。関数ｆが部分関数で、ｆ(e) が定義されていないｅの場合には、上記定義に従って、f(e|s)には、確率pを与える。
【００４４】
（障害発生モデルの学習）
管理者は、オンライン又はオフラインで、学習用イベント列１００を障害予測装置１０に与える（ステップＡ３）。管理者は、例えば監視対象装置８０を試運転した際にイベントモニタ９０がモニタしたイベント列を、オフラインで、学習用イベント列１００として与える。または、監視対象装置８０の運用中にイベントモニタ９０がモニタしたイベント列のうちで、障害原因解析が既に行われたイベント列を、オンラインで、学習用イベント列１００として与える。
【００４５】
イベント列パーサ１３０は、与えられた学習用イベント列１００から、他のモジュールで解釈可能なイベントデータを生成し、イベント列ＤＢ１４０に格納する。
【００４６】
イベント列パーサ１３０は、イベントデータを生成する際に、学習用イベント列１００を、所定の条件で、複数のイベントの列に分割する。
図５は、イベント列の分割の様子を示している。イベント列パーサ１３０は、イベントの発生間隔が所定のしきい値Ｔよりも大きいと、イベント列を分割する。具体的には、例えば、イベント列[e(0), ・・・, e(n)]があるとき、イベントe(i)の発生時刻と、e(i+1)の発生時刻との間の時間がしきい値Ｔよりも長いと、イベント列[e(0), ・・・, e(n)]をイベントリージョンR0: (e(0), ・・・, e(i))と、イベントリージョンR1: (e(i+1), ・・・, e(n))とに分割する。このことは、イベントリージョン内では、イベント発生間隔がしきい値Ｔ以下であり、イベントリージョン間のイベント発生間隔はしきい値Tよりも大きいことを意味している。
なお、ここでのイベントe(i)は、イベントタイプ（イベントの種別）ではなくイベントそのものである。
【００４７】
再び図３を参照すると、Ｂａｕｍ−Ｗｅｌｃｈ計算部５０は、Ｂａｕｍ−Ｗｅｌｃｈアルゴリズムにより、イベント列パーサ１３０から入力した学習用イベント列１００のイベントリージョンを用いて、初期モデル生成部４０が生成した初期障害発生モデルＭ0の学習を行う。Ｂａｕｍ−Ｗｅｌｃｈ計算部５０は、与えられた学習対象のイベント列（イベントリージョン）に対して、最も確率を高くするモデルＭ  ＝  {Σ, S∪{s0}, {Pr(sj｜si)}si ,sj∈S，{P0si}si∈S，{Pr(ej｜si)}si ∈S,ej∈Σ}の遷移確率{Pr(sj｜si)}si ,sj∈S と、イベントの発生確率{Pr(ej｜si)}si ∈S,ej∈Σとを求める。
ただし、最適な値を求めるのではなく、初期モデルM0に対して、そこから局所解を求める最尤法である。
なお、Ｂａｕｍ−Ｗｅｌｃｈアルゴリズムは、例えば「“Statistical Methods for Speech Recognition (Language, Speech, and Communication)” (Frederick Jelinek著) 9.3節」にも記載されるように、よく知られたアルゴリズムであるので、その詳細な説明は省略する。
【００４８】
Baum-Welch計算部５０は、初期障害発生モデルM0の遷移確率{Pr(sj｜si)}si ,sj∈S及びベントの発生確率{Pr(ej｜si)}si ∈S,ej∈Σをそれぞれ学習により求めた遷移確率及びイベントの発生確率に置き換えた障害発生モデルM'を生成し、モデル格納ＤＢ１２０に格納する（ステップＡ４）。
【００４９】
以上が障害発生モデル生成フェーズである。
次に、このようにして得た障害発生モデルＭ'を使用して、障害の根源的な原因を推定する。
【００５０】
（障害の根源的な原因の推定）
図６に、障害原因を推定する際の障害予測装置１０の動作手順を示す。
管理者は、オンラインで、イベントモニタ９０が監視対象装置８０で観察したイベント列を、障害予測用イベント列１１０として障害予測装置１０に与える（ステップＢ１）。イベント列パーサ１３０は、与えられた障害予測用イベント列１１０を、複数のイベントリージョン（図５）に分割し、イベント列ＤＢ１４０を介して、Ｖｉｔｅｒｂｉ計算部６０に受け渡す。
【００５１】
Ｖｉｔｅｒｂｉ計算部６０は、図３に示す手順で学習され、モデル格納ＤＢ１２０に格納された障害発生モデルＭ'に対して、Ｖｉｔｅｒｂｉアルゴリズムにより、入力された障害予測用イベント１１０（イベントリージョン）を実現する可能性（尤度）が最も高い原因の順序列[s(0), s(1), ・・・, s(n)]を求める（ステップＢ２）。
ここで、原因順序列中のs(i)は、原因の種類を示すのではなく、原因の状態遷移列を時間順に示したものであり、括弧内の数字は時間順に割り当てたものである。
【００５２】
なお、Ｖｉｔｅｒｂｉアルゴリズムは、例えば、「“Statistical Methods for Speech Recognition (Language, Speech, and Communication)” (Frederick Jelinek著) 5章」などにも記述されているように、一般によく知られたアルゴリズムであるので、ここではその詳細な説明は省略する。
【００５３】
Ｖｉｔｅｒｂｉ計算部６０が求めた障害予測の障害発生モデルM’に含まれる原因間の遷移確率
{Pr(sj｜si)}si ,sj∈S
は、ｉがｎに近づくにつれて未来の装置障害を予測するため、予測精度が低くなる可能性が高い。このため、Ｖｉｔｅｒｂｉ計算部６０においては、入力された障害予測用イベント１１０の各要素について重み係数を乗算する（ステップＢ３）。
これにより、直近の確率を重視し、未来である要素ｎに近づくにつれてイベント発生確率の影響を軽減することができる。
【００５４】
フィルタリングモジュール７０は、Ｖｉｔｅｒｂｉ計算部６０が求めた原因の順序列[s(0), s(1), ・・・, s(n)]を、この順序列の隣接する２つの状態間の状態遷移確率{Pr(si+1｜si)}si∈Sに基づいて、複数のグループに分割する（ステップＢ４）。
【００５５】
例えば、Pr(s(q+1)｜s(q)) < Ｌであれば、[s(0), s(1), ・・・, s(q)]と[s(q+1), ・・・, s(n)]とに分割する。分割の判断となる確率Ｌは、0〜1までの間のしきい値であり、比較的小さい確率値である。このように分割するのは、異なる根源原因による２つのシーケンスがある場合に、たまたま確率的に最大値であるために1つのシーケンスとしてみなされている可能性があるからである。そこで、フィルタリングモジュール７０により、遷移確率がしきい値Ｌよりも低いシーケンスは、確率的にシーケンスではなく、たまたま時系列的に重なっているものとみなして分割する。
【００５６】
フィルタリングモジュール７０は、分割されたシーケンス（原因の順序列）を、障害予測結果ＤＢ１５０に格納する。また、分割されたシーケンスのうちの先頭を根源的な原因として推定する。
【００５７】
障害予測結果ＤＢ１５０に原因の順序列を格納する際に、フィルタリングモジュール７０は、各原因に対応するイベントを各原因に対応付けて障害予測結果ＤＢ１５０に格納する。
例えば、根源的な原因がSiであった場合には、障害予測用イベント列１１０[e(0), e(1), ・・・, e(n)]のうちで、基本モデル定義２０で障害原因Ｓiに対応付けられているイベント  ｅ(j)  （０≦ｊ≦ｎ）を障害原因Siに対応付けて障害予測結果ＤＢ１５０に格納する。
また、フィルタリングモジュール７０は、同一装置、同一イベントの障害は連続して発生しないと定義しておけば、Ｖｉｔｅｒｂｉ計算部６０は、最も尤もらしい状態遷移列を求める際に、同一障害が連続して発生する場合に関する状態遷移については除外することができる（すなわち、状態間の遷移を表すトレリス線図におけるパスの数を減らすことができる）。したがって、この条件の下では、一部の状態遷移列については、Ｖｉｔｅｒｂｉ計算、すなわち障害予測用イベント列が観察される確率の計算をする必要がなくなるので、Ｖｉｔｅｒｂｉ計算部６０における計算量を削減することができる。
【００５８】
表示部１６０は、フィルタリングモジュールが求めた障害予測から障害する可能性がある順序列について、木構造やトレリス線図等により図示する（ステップＢ５）。そして、値が更新される度にリアルタイムで表示する。この木構造やトレリス線図は図示される矢印において、ある障害から次の障害までの矢印が発生した時間の差分により、矢印の長さが変わり、矢印あるいはその周りに時間を数字でも表示できる。また、リアルタイムにおける描画速度の向上等も考慮して、フィルタリングモジュール７０が求めた障害予測から障害する可能性が高い順序列について、ソートや表示する数を制限して表示することができる。
【００５９】
更に、表示部１６０はイベント列ＤＢ１４０に保持する装置障害が起きた時間の間隔を表示することができる。ここで、イベント列ＤＢ１４０に同一の装置故障が複数保持している場合、これらの時間の平均や分散または分布図などを表示することができる。また、これら時間に関する値から、障害予測の順序列[s(0), s(1), ・・・、s(n)]の各値に関わらず優先的に表示することもできる。
【００６０】
以下に、具体例を用いて障害予測の原理について説明する。
基本モデル定義２０としては、図４に示したものを考える。初期モデル生成部４０が生成する初期障害発生モデルM0で扱うイベント（装置障害）の集合Σは
Σ = {3, 4, 16, 17, 18, 19, 20}
であり、各要素を下記のように置く。
【００６１】
Σ = {e0, e1, e2, e3, e4, e5, e6}
【００６２】
一方、状態、すなわち障害原因の集合は
S∪{s0} = {s0, “Print”, “Windows Update Agent”, “W32Time”, “Application Popup”, “i8042prt”, “Windows Installer”, “DHCP”, “Browser”, “Tcpip”}
であり、各要素を下記のように置く。
【００６３】
S∪{s0} ＝｛s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10｝
【００６４】
原因間の遷移確率{Pr(sj｜si)}si ,sj∈Sは状態数が計１０個であるため、
{Pr(sj｜si)}si ,sj∈S = 1/10
である。初期確率はP00 = 1、P0si = 0 (i ≠ 0)である。
図４では、イベントの種類が７種類あるとする。この場合、イベント発生確率は下記のとおりである。
【００６５】
Pr(e｜s) = 2/8 (f(e) = sのとき)
Pr(e｜s) = 1/8 (f(e) ≠ sのとき)
【００６６】
学習用イベント列１００を、[e(0), e(1), ・・・, e(n)]とする。このe(i)はイベントタイプではなく、イベントそのものであり、発生時刻が記録されている。このイベント列では、e(i)とe(i+1)の発生時刻の差が2秒であり、他のイベントの発生時刻の差は全て1秒以下とする。イベント列パーサ１３０がイベント列を複数のリージョンに分割する際のしきい値Ｔを1秒とすると、学習用イベント列１００は、R1 = [e(o), e(1), ・・・, e(i)]と、R2 = [e(i+1), e(i+2), ・・・, e(n)]とに分割される。
Ｂａｕｍ−Ｗｅｌｃｈ計算部５０は、R1、R2を含む多くのイベントリージョンを与えられることで、初期障害発生モデルM0から、遷移確率Pr(sj｜si)とイベント発生確率Pr(e｜s)とに関して、与えられたイベントリージョンを最も発生する確率を学習し、障害発生モデルM’を得る。
【００６７】
Ｖｉｔｅｒｂｉ計算部６０は、学習された障害発生モデルM’に対して、障害予測用イベント列１１０のイベントリージョンを実現する可能性が最も高い原因の順序列（シーケンス）を求める。フィルタリングモジュール７０は、Ｖｉｔｅｒｂｉ計算部６０が求めた原因の順序列を、障害発生モデルM’の原因間の状態遷移確率に基づいて分割し、分割された各順序列を、障害予測結果ＤＢ１５０に格納する。その際、障害予測用イベント列１１０のうちで、各原因に対応するイベントを、障害原因に対応付けて、障害予測結果ＤＢ１５０に格納する。管理者は、障害予測結果ＤＢ１５０に格納された情報を参照することで、障害予測を行う。
【００６８】
また、Ｖｉｔｅｒｂｉ計算部６０は、現在の時刻iに対して直近の確率を重視するため、学習された障害発生モデルM’に含まれる原因間の遷移確率{Pr(sj｜si)}si ,sj∈Sに、ｉがｎに近づくにつれて小さくなる重み係数を乗算する。この重み係数は、例えば、１未満の定数をｉ乗した値
ｍi（ただし、０＜ｍ＜１，  ０≦ｉ＜ｎ）
とすることができる。
【００６９】
図７は、障害予測結果ＤＢ１５０に格納された情報の具体例を示す。同図では、stateで示される部分が原因に対応している。また、stateの｛ ｝内がその原因に対応するイベントを示している。この例では、原因の順序列は、下から上へと遷移しており、Tcpipが根源的な原因であると推定される。管理者は、障害予測結果ＤＢ１５０に格納された情報を参照することで、TCP/IPプロトコルスタックエラーが “Browser”、“Dhcp”、“Windows Installer 3.1”などの障害原因を引き起こしていることを知ることができる。
【００７０】
本実施形態では、イベントとその原因との対応関係を与えて障害発生モデルを生成し、その障害発生モデルに、監視対象装置８０で観察されたイベント列を与えて、イベント列の遷移から、原因の順序列を求める。このようにして求めた原因の順序列を、原因間の遷移確率に基づいて分割することで、原因の遷移の元となる、障害の根源的な原因を推定することができる。また、本実施形態では、障害原因間の関係は、学習用イベント列１００を初期障害発生モデルに与えることで得られ、人手で、原因間の依存関係を定義する必要がない。本実施形態では、初期障害発生モデルの生成に際して、イベントとその発生原因とを定義すればよく、イベントとその発生原因との関係は、比較的記述が容易であるため、簡易に、障害の根源的な原因を推定することができる。
【００７１】
以上、本発明の実施の形態について説明したが、本発明に係るイベント予測システム、方法及びプログラムは上記の実施の形態に限定されるものではなく、上記実施形態の構成から種々の修正及び変更を施したものも、本発明の範囲に含まれる。
【００７２】
また、上記の実施の形態の全部または一部は、以下の付記のようにも表現し得るが、これらの付記に限られるものでもない。
【００７３】
［付記１］
監視対象装置で発生し得るイベントと、当該イベントを引き起こす障害原因を定義した基本モデル定義を読み出した基本モデル定義に基づいて、イベントとその障害原因との対応関係及び障害原因間の遷移を有限オートマトンでモデル化した初期障害発生モデルを生成し、モデル格納ＤＢに記憶する初期モデル生成手段と、前記初期障害発生モデルと、イベント列ＤＢに記憶された学習用イベント列とに基づいて、原因に対応する有限オートマトンの状態がどの確率で推移したかを学習し、この学習結果を反映させた障害発生モデルをモデル格納ＤＢに記憶する障害発生モデル学習手段と、イベント列ＤＢから障害予測用イベント列を読み出し、前記学習後の障害発生モデルで、前記読み出した障害予測用イベント列が観察される確率が最も高いと考えられる状態遷移列を求め、障害予測結果ＤＢに記憶する状態遷移列計算手段と、前記状態遷移列計算手段が求めた状態遷移列と、前記学習後の障害発生モデルとに基づいて、監視対象装置で発生した障害の原因を予測するフィルタリングモジュールにより、将来発生する障害予測を備えることを特徴とする障害予測システム。
【００７４】
［付記２］
前記障害発生モデル学習手段がBaum-Welchアルゴリズムにより、前記原因間の状態遷移確率と、各原因でのイベント発生確率とを学習する、付記１に記載の障害予測システム。
【００７５】
［付記３］
前記状態遷移列計算手段が、Viterbiアルゴリズムにより前記状態遷移列を求めるViterbi計算手段を備える、付記１に記載の障害予測システム。
【００７６】
［付記４］
前記初期障害発生モデルが前記発生し得るイベントの集合Σと、前記障害原因の集合Sに正常状態S0を加えた状態の集合と、各状態について、当該状態から各状態に遷移する確率を示す条件付確率{Pr(sj｜si )}si ,sj∈Sと、各状態について、開始時に当該状態にいる初期確率{P0si}si∈Sと、各状態について当該状態で前記イベントが発生する確率を示す{Pr(ej｜si)}si ∈S,ej∈Σとを含む付記１に記載の障害予測システム。
【００７７】
［付記５］
前記フィルタリングモジュールは、前記状態遷移列計算手段が求めた状態遷移列を[s(0), s(1), ・・・、s(n)]とするとき、状態s(i) (ただし、0≦i＜n)から次状態s(i+1)への前記条件付確率Pr(s(i+1)｜s(i))が、所定の確率よりも低いと、前期状態遷移列を[s(0), s(1), ・・・, s(i)]と[s(i+1),・・・, s(n)]とに分割する付記４に記載の障害原因推定システム。
【００７８】
［付記６］
前記フィルタリングモジュールは、前記分割された状態遷移列s(i+1)以降の障害を予測する付記５に記載の障害原因推定システム。
【００７９】
［付記７］
前記学習用イベント列が前記監視対象装置を運用前に試運転した際にモニタされたイベントのイベント列である付記１に記載の障害予測システム。
【００８０】
［付記８］
前記学習用イベント列が前記監視対象装置の運用時にモニタされたイベント列であって、障害の発生原因や障害発生パターンが解析済みのイベント列である付記１に記載の障害予測システム。
【００８１】
［付記９］
前記障害予測用イベント列が前記監視対象装置の運用時にモニタされたイベント列である付記１に記載の障害予測システム。
【００８２】
［付記１０］
前記学習用イベント列及び前記障害予測用イベント列のそれぞれにおいて、隣接するイベント発生の時間間隔が所定の値以下である付記１に記載の障害予測システム。
【００８３】
［付記１１］
前記フィルタリングモジュールは、前記状態遷移列計算手段が求めた状態遷移列を障害予測結果ＤＢに記憶させると共に、前記障害予測用イベント列の内、前記状態遷移列に含まれる各状態を発生原因とするイベントを各状態に対応付けて記憶する付記１に記載の障害予測システム。
【００８４】
［付記１２］
前記Viterbi計算手段は、障害予測の障害発生モデルM’に含まれるイベント発生確率{Pr(ej｜si)}si ∈S,ej∈Σに重み係数を乗算することができる付記３に記載の障害予測システム。
【００８５】
［付記１３］
前記フィルタリングモジュールは、Viterbi計算手段が求めた障害予測の順序列[s(0), s(1), ・・・、s(n)]の値に適用する重み係数を乗算値について、要素nの場合に重み係数をn乗することで、要素ｎに近づくにつれて要素の信頼度を下げることができる付記１２に記載の障害予測システム。
【００８６】
［付記１４］
同一装置、同一イベントの障害は連続して発生しないと定義し、この条件においては前記Viterbi計算手段は、前記状態遷移列の計算において、同一イベントの障害が連続して発生する場合に関する障害予測用イベント列が観察される確率を計算しないことにより、計算量削減を行うことができる付記１３に記載の障害予測システム。
【００８７】
［付記１５］
同一装置、同一イベントの障害は連続して発生しないと定義していても、データベースに蓄積されたデータに連続して発生している事例がある場合には、上記の定義を無効とすることができる付記１４に記載の障害予測システム。
【００８８】
［付記１７］
イベント列ＤＢ及び障害予測結果ＤＢには、装置障害が起きた時刻及びその前後の時刻に障害が発生した装置の時刻との間隔を保持することができる付記１に記載の障害予測システム。
【００８９】
［付記１８］
さらに予測結果を表示する表示部を備え、
前記表示部は、イベント列ＤＢに保存した複数の装置障害が起きた時刻の差分を算出することで、装置障害が起きる予測時刻を表示することができる付記１７に記載の障害予測システム。
【００９０】
［付記１９］
前記表示部は、イベント列ＤＢに同一の装置故障の状況を複数保持している場合、装置障害が起きる予測時刻に関する時間の平均や分散または分布図などを表示することができる付記１８に記載の障害予測システム。
【００９１】
［付記２０］
前記表示部は、フィルタリングモジュールが求めた障害予測から障害する可能性がある順序列について、表示部により表示することができる付記１８または１９に記載の障害予測システム。
【００９２】
［付記２１］
前記表示部は、フィルタリングモジュールが求めた障害予測から障害する可能性が高い順序列について、ソートや表示する数を制限してGUI等により表示することができる付記１８−２０のいずれか１つに記載の障害予測システム。
【００９３】
［付記２２］
前記表示部は、木構造やトレリス線図等により図示することができ、値が更新される度にリアルタイムで表示できる付記１８−２１のいずれか１つに記載の障害予測システム。
【００９４】
［付記２３］
前記表示部は、木構造やトレリス線図等により図示される矢印において、ある障害から次の障害までの矢印が発生した時間の差分により、矢印の長さが変わることができるし、矢印あるいはその周りに時間の差分を表示することもできる付記１８−２２のいずれか１つに記載の障害予測システム。
【００９５】
［付記２４］
付記１８または１９に表示される値を基にソートすることができ、
前記表示部は、Viterbi計算手段が求めた障害予測の順序列[s(0), s(1), ・・・、s(n)]の各値に関わらず優先的に表示することもできる付記１８または１９に記載の障害予測システム。
【００９６】
［付記２５］
コンピュータに、監視対象装置で発生し得るイベントとそのイベントを引き起こすイベント発生原因を定義した基本モデル定義に基づいて、イベントとそのイベント発生原因との対応関係およびイベント発生原因間の遷移を、イベント発生原因を状態とする有限オートマトンでモデル化した初期イベント発生モデルを生成させ、モデル格納データベースに記憶させる初期モデル生成ステップと、
コンピュータに、前記監視対象装置で発生し得る複数のイベントからなるイベント列を記憶したイベント列データベースから読みだされた第１のイベント列と前記初期イベント発生モデルとに基づいて、イベント発生原因ごとに各イベントが発生する確率およびイベント発生原因間の遷移の確率を算出させ、その算出結果を前記初期イベント発生モデルに反映させたイベント発生モデルを前記モデル格納データベースに記憶させるイベント発生モデル学習ステップと、
コンピュータに、前記イベント発生モデルに基づいて、前記イベント列データベースから読みだされた第２のイベント列が観察される確率が最も高いと考えられる状態遷移列を求めさせ、その状態遷移列を原因推定結果データベースに記憶させる状態遷移列計算ステップと、
コンピュータに、前記イベント発生モデルと前記状態遷移列計算手段によって求められた状態遷移列とに基づいて、前記監視対象装置で将来発生し得るイベントを予測させるフィルタリングステップと
を備えることを特徴とするイベント予測方法。
【００９７】
［付記２６］
前記イベント発生モデルを学習するステップは、前記コンピュータは、Baum-Welchアルゴリズムにより、前記原因間の状態遷移確率と各原因でのイベント発生確率とを学習する付記２５に記載の方法。
【００９８】
［付記２７］
前記状態遷移列を計算するステップでは、前記コンピュータは、Viterbiアルゴリズムにより、前記状態遷移列を求める付記２５または２６に記載の方法。
【００９９】
［付記２８］
前記初期障害発生モデルが、前記発生し得るイベントの集合Σと前記障害原因の集合Ｓに正常状態ｓ0を加えた状態の集合と、各状態について当該状態から各状態に遷移する確率を示す条件付確率{Pr(sj｜si)}si ,sj∈S
と、各状態について開始時に当該状態にいる初期確率{P0si}si∈Sと、各状態について当該状態で前記イベントが発生する確率を示す{Pr(ej｜si)}si ∈S,ej∈Σとを含む付記２５−２７のいずれか１つに記載の方法。
【０１００】
［付記２９］
前記フィルタリングステップは、前記コンピュータが、前記状態遷移列を計算するステップで求めた状態遷移列を[s(0), s(1), ・・・, s(n)]とするとき、状態s(i) (ただし、0≦i＜n)から次状態s(i+1)への前記条件付確率Pr(s(i+1)｜s(i))が、所定の確率よりも低いと、前期状態遷移列を、[s(0), s(1), ・・・, s(i)]と[s(i+1), s(i+2), ・・・, s(n)]とに分割するステップと、前記コンピュータが前記分割された各状態遷移列の先頭の状態を障害の根源的原因と推定するステップとを含む付記２５−２８のいずれか１つに記載の方法。
【０１０１】
［付記３０］
前記コンピュータが前記状態遷移列を計算するステップで求めた状態遷移列を障害予測データベースに記憶すると共に、前記障害予測用イベント列のうちで、前記状態遷移列に含まれる各状態を発生原因とするイベントを各状態に対応付けて記憶するステップを更に有する付記２５−２９のいずれか１つに記載の方法。
【０１０２】
［付記３１］
コンピュータに、監視対象装置で発生し得るイベントと、当該イベントを引き起こす障害原因を定義した基本モデル定義を読み出した基本モデル定義に基づいて、イベントとその発生原因との対応関係及び発生原因間の遷移を有限オートマトンでモデル化した初期障害発生モデルを生成し、モデル格納ＤＢに記憶する初期モデル生成手段と、前記初期障害発生モデルと、イベント列ＤＢに記憶された学習用イベント列とに基づいて、原因に対応する有限オートマトンの状態がどの確率で推移したかを学習し、該学習の結果を反映させた障害発生モデルをモデル格納ＤＢに記憶する障害発生モデル学習手段と、イベント列ＤＢから障害予測用イベント列を読み出し、前記学習後の障害発生モデルで、前記読み出した障害予測用イベント列が観察される確率が最も高いと考えられる状態遷移列を求め、障害予測結果ＤＢに記憶する状態遷移列計算手段と、前記状態遷移列計算手段が求めた状態遷移列と、前記学習後の障害発生モデルとに基づいて、監視対象装置で発生した障害の原因を予測するフィルタリングモジュールにより、将来発生する障害予測を実行させる方法及びプログラム。
【産業上の利用可能性】
【０１０３】
本発明は、ネットワークやコンピュータシステムの障害監視システムの用途に適用できる。また、組み込みシステムの障害発見系の用途にも適用できる。
【符号の説明】
【０１０４】
１…イベント予測システム、１０…障害予測装置、１１…初期モデル生成部、１２…イベント発生モデル学習部、１３…状態遷移列計算部、１４…フィルタリングモジュール、１７…イベント予測結果データベース、２０…基本モデル定義、３０…初期モデルパーザ、４０…初期モデル生成部、５０…Ｂａｕｍ−Ｗｅｌｃｈ計算部、６０…Ｖｉｔｅｒｂｉ計算部、７０…フィルタリングモジュール、８０…監視対象装置、９０…イベントモニタ、１００…学習用イベント列、１１０…障害予測用イベント列、１５，１２０…モデル格納データベース、１３０…イベント列パーザ、１６，１４０…イベント列データベース、１５０…障害予測結果データベース、１６０…表示部、２００…イベント発生確率＆障害推移確率学習部、２１０…障害予測部、２２０…監視部。
【図１】
0005413240.tif 000002
【図２】
0005413240.tif 000003
【図３】
0005413240.tif 000004
【図４】
0005413240.tif 000005
【図５】
0005413240.tif 000006
【図６】
0005413240.tif 000007
【図７】
0005413240.tif 000008