(57)【要約】【課題】複合イベント処理向けのクエリをイベントログから自動的に生成する。【解決手段】イベントログに頻出する属性値の組み合わせのパターンを求め、当該パターンに基づいて頻出イベントを自動的に生成する。この後、ラベルを付した頻出イベントをイベントの発生順に配列した頻出イベント列を生成する。この頻出イベント列に基づいて、インシデントの発生検出に必要なクエリを生成する。【選択図】図５
2011076153.tif 000002
【特許請求の範囲】
【請求項１】
クエリ生成の対象となるインシデントに係るイベントを、イベントログデータベースから取得する第１の処理部と、
取得したイベントの中から所定個数以上の一部の属性値の組み合わせが複数のイベント間で共通して出現する出現頻度の高いイベントを求め、当該イベントから頻出イベントを生成する第２の処理部と、
共通する属性値の数が多い順番に前記頻出イベントに優先順位を付すと共に、優先順位付けされた頻出イベントにラベルを付ける第３の処理部と、
ラベルリングされた頻出イベントを、前記イベントログデータベースから取得されたイベントの発生順に配列して頻出イベント列を生成する第４の処理部と、
生成された前記頻出イベント列からクエリを生成する第５の処理部と
生成されたクエリを表示装置上に提示する第６の処理部と
を有する複合イベント処理向けクエリ自動生成装置。
【請求項２】
前記第２の処理部は、あるイベントの属性値が他のイベントの属性値と完全一致する場合だけでなく、属性値が所定の数値範囲内にある場合及び／又は属性値の一部情報が一致する場合にも、該当する属性値が相互に同じ属性値を有するものとみなす
ことを特徴とする請求項１に記載の複合イベント処理向けクエリ自動生成装置。
【請求項３】
前記第２の処理部は、事前に設定された最大時間窓内に出現するイベントを処理対象とする
ことを特徴とする請求項１又は２に記載の複合イベント処理向けクエリ自動生成装置。
【請求項４】
前記第３の処理部は、共通する属性値を持つ前記イベントログデータベースから取得されたイベントの出現頻度を加味して前記頻出イベントに優先順位を付ける
ことを特徴とする請求項１〜３のいずれか一項に記載の複合イベント処理向けクエリ自動生成装置。
【請求項５】
前記第３の処理部は、文字、数字その他のラベルを付与する
ことを特徴とする請求項１〜４のいずれか一項に記載の複合イベント処理向けクエリ自動生成装置。
【請求項６】
前記第５の処理部は、前記頻出イベント列に基づいて、ANY型、SEQ型、混在型のいずれかの型に対応するクエリを生成する
ことを特徴とする請求項１〜５のいずれか一項に記載の複合イベント処理向けクエリ自動生成装置。
【請求項７】
前記第５の処理部は、ANY型のクエリを生成する際、EVENT句及びWHERE句で指定した頻出イベントパターンが頻出イベント列内で発生した日時に基づいて時間窓を求め、WITHIN句を生成する
ことを特徴とする請求項６に記載の複合イベント処理向けクエリ自動生成装置。
【請求項８】
前記第５の処理部は、SEQ型のクエリを生成する際、EVETN句及びWHERE句で指定した頻出イベントパターンが頻出イベント列内で発生した日時に基づいて時間窓を求め、WITHIN句を生成する
ことを特徴とする請求項６又は７に記載の複合イベント処理向けクエリ自動生成装置。
【請求項９】
前記第５の処理部は、混在型のクエリを生成する際、頻出イベント列内で最小頻度以上の頻出イベントパターンと、当該頻出イベントパターンに含まれる頻出イベント以外の頻出イベントに基づいてEVENT句及びWHERE句を生成する
ことを特徴とする請求項６〜８のいずれか一項に記載の複合イベント処理向けクエリ自動生成装置。
【請求項１０】
前記第５の処理部は、混在型のクエリを生成する際、EVENT句及びWHERE句で指定した頻出イベントパターン及び頻出イベントが頻出イベント列内で発生した日時に基づいて時間窓を求め、WITHIN句を生成する
ことを特徴とする請求項６〜９のいずれか一項に記載の複合イベント処理向けクエリ自動生成装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、過去のイベントログに基づいて、複合イベント処理（ＣＥＰ：Complex Event Processing）に利用されるクエリの条件句を自動的に生成する装置に関する。
【背景技術】
【０００２】
ＩＴインフラの拡大やセンサーネットワークの発展に伴い、これらの機器が発生する大量のイベントを効率的に処理するために、複合イベント処理の技術が活用されるようになった。複合イベント処理とは、特定のイベントパターンとそれが発生したときに行う処理とを記述したクエリに基づいて、イベントのストリーミングデータをリアルタイムに解析し、クエリで定義されたイベントパターンを発見し、それに対応した処理を行う技術である。
【０００３】
このような複合イベント処理向けのクエリ言語は、まだ標準化されていないが、多くのシステムにおいてデータベースのクエリ言語ＳＱＬ（Structured Query Language）に時間窓の概念を取り入れた言語が採用されている。以下ではマサチューセッツ大学が開発した複合イベント処理システムＳＡＳＥのクエリ言語の書式に基づいて説明する（非特許文献１参照）。クエリは、イベントの発生パターンを指定するEVENT句と、EVENT句で指定したイベントの属性値を指定するWHERE句、EVENT句で指定したイベントの発生パターンが発生する時間窓を指定するWITHIN句、EVENT〜WHERE句で指定された条件と一致するイベントパターンが発生したときに生成するイベントを指定するRETUEN句から構成される。EVENT句には、発生するイベントの順番を指定するSEQ型、発生するイベントの順番を指定しないANY型、SEQ型とANY型が混在した混在型がある。
【０００４】
以下に、クエリの例を示す。このクエリは、時間窓で定めた１０分の間に、属性”att1”の属性値が”val1”と属性”att3”の属性値が”val3”であるイベントが発生した後に、属性”att2”の属性値が”val2“と属性”att3”の属性値が”val3”であるイベントが発生した場合、”××システム障害発生”というメッセージイベントを発生させるということを意味している。
＜クエリ例＞
EVENT：SEQ( Event x, Event y)
WHERE： x.att1=”val1”∧x.att3=”val3”∧y.att2=”val2”∧y.att3=”val3”
WITHIN：10min
RETURN：Message（“××システム障害発生”）
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特表２００７−５３６６４６『ネットワーク・セキュリティ・システムにおけるパターン発見方法及びシステム』
【非特許文献】
【０００６】
【非特許文献１】D. Gyllstorm, et. al. ”SASE : Complex Event Processing over Streams“ In Proceedings of the Third Biennial Conference on Innovative Data Systems Research, 2007
【非特許文献２】H. Arimura and T. Uno, “A Polynomial Space and Polynomial Delay Algorithm for Enumeration of Maximal Motif in Sequence” Special issue on bioinformatics, Journal of Combinatorial Optimization (2006)
【発明の概要】
【発明が解決しようとする課題】
【０００７】
従来、複合イベント処理向けのクエリは、ユーザがインシデントに関連するイベントログを参照して記述しているが、正確なクエリの記述は困難であるという問題がある。すなわち、クエリ作成には、インシデントを特徴付ける３つの要素（イベント、イベントパターン、時間窓）を決める必要があり、それぞれを特定するには次の困難性がある。
（１）イベント
機器やネットワーク構成などのシステム環境の変化により、過去に発生したイベントと完全一致するイベントが、そのインシデントを特徴付けるものとは断定できない。このため、過去に発生したイベントを構成する属性の中から重要な属性を発見し、そのインシデントを特徴付ける新たなイベントを作成することが求められる。
（２）イベントパターン
イベントログにはそのインシデントとは関係ないイベントや関係するが不規則に出現するイベントが含まれ、そのような不必要なイベントを排除して正確なイベントパターンを発見することが求められる。
（３）時間窓
時間窓が大きすぎるとインシデントの誤検知の原因になる一方で、時間窓が小さすぎるとインシデントの見逃しを引き起こすため、イベントログから適切な時間窓の大きさを決めることが求められる。
【０００８】
これらの困難性からユーザがクエリを記述するのは難しいため、イベントログから自動的にクエリを生成する技術が求められている。しかし、従来技術においては、複合イベント処理向けのクエリを自動生成する汎用的な方法は存在しない。もっとも、独自システムを特定の分野に限定することを前提として、クエリの自動生成を実現する方法は存在する。例えば特許文献１には、独自システムでセキュリティインシデントに限定し、セキュリティインシデントのナレッジを利用してイベントパターンを発見している。しかし、この技術には、３つの要素の決定に関して次の課題がある。
（１）イベント
事前にセキュリティイベントを定義するため、未知の重要なイベントを見落とす可能性がある。また、他分野にまで拡張的に適用できない問題がる。
（２）イベントパターン
事前に設定された項目毎にイベントを分類し、その分類で連続して出現するイベントをイベントパターンとして認識する。このため、未知のイベントパターンや複雑なイベントパターンについては発見できない問題がある。
（３）時間窓
時間窓を自動的に決定する方法は考慮されていない。
【課題を解決するための手段】
【０００９】
そこで、本発明者は、インシデントを特徴付ける３つの項目（イベント、イベントパターン、時間窓）をイベントログから自動的に発見することが可能な汎用的な複合イベント処理向けクエリ自動生成装置を提供する。
【発明の効果】
【００１０】
本発明によれば、特定の分野に制限されることなく、インシデントを特徴づける３項目（イベント、イベントパターン、時間窓）をイベントログから自動的に特定し、複合イベント処理向けのクエリを自動的に生成することができる。
【図面の簡単な説明】
【００１１】
【図１】複合イベント処理を用いた障害検知システムのシステム構成例を示す図。
【図２】ログＤＢが保持するイベントログの具体例を説明するテーブル図。
【図３】クエリ生成コンピュータのシステム構成例を示す図。
【図４】クエリ生成コンピュータの入力ＧＵＩ例を説明する図。
【図５】クエリ生成プロセスの概要を示すフローチャート。
【図６】頻出イベント列生成プロセスの実行手順を示すフローチャート。
【図７】頻出イベントの生成過程の具体例を説明する図。
【図８】頻出イベントへのラベリング処理及び頻出イベント列の具体例を説明する図。
【図９】ANY型クエリ生成プロセスの実行手順例を示すフローチャート。
【図１０】SEQ型クエリ生成プロセスの実行手順例を示すフローチャート。
【図１１】混在型クエリ生成プロセスの実行手順例を示すフローチャート。
【図１２】クエリ生成コンピュータの出力ＧＵＩ例を説明する図。
【図１３】頻出イベント列に見出される頻出イベントパターンの例を説明する図。
【発明を実施するための形態】
【００１２】
以下、図面に基づいて、本発明の実施の形態を説明する。なお、後述する装置構成や処理動作の内容は発明を説明するための一例であり、本発明は、後述する装置構成や処理動作に既知の技術を組み合わせた発明や後述する装置構成や処理動作の一部を既知の技術と置換した発明も包含する。
【００１３】
（システム構成）
以下では、複合イベント処理を用いたシステム障害検知システムに適用する場合について、クエリ自動生成装置の形態例を説明する。
図１に、クエリ自動生成装置を実装する複合イベント処理を用いたシステム障害検知システムの構成例を示す。システム障害検知システムは、監視対象サーバ群１００と、これらサーバの状態(死活など)を監視し、その状態に応じたイベントを生成する監視サーバ１１０と、監視サーバ１１０が生成したイベントを格納するログデータベース（ＤＢ）１１１と、監視サーバ１１０が生成したイベントを解析し、クエリに記述された処理を実行する複合イベント処理コンピュータ１２０と、ログＤＢ１１１に格納されているイベントログを解析し、複合イベント処理コンピュータ１２０向けのクエリを生成するクエリ生成コンピュータ１３０から構成される。本実施の形態の場合、クエリの自動生成機能は、コンピュータプログラムに基づく処理を通じて実現される。
【００１４】
図２に、ログＤＢ１１１に格納されているイベントのテーブル例を示す。テーブルはイベントを一意に特定する識別子（ＩＤ）２０１、イベントが発生した時間を特定する発生日時２０２、個々のイベントの属性値の集合であるイベント２０３から構成される。イベント２０３は属性の集合として表現される。この形態例では、イベント２０３は、以下のように定義する。
（<種類>, <ソース>, <イベント番号>, <ユーザ>, <コンピュータ>）
ここで、<種類>はイベントの緊急度を意味し、”情報”、”警告”、”エラー”のいずれかの値をとる。<ソース>はイベントを発生させるプロセス、アプリケーションその他の発生源を意味する。<イベント番号>はイベントの内容を特定する番号を意味する。<ユーザ>はイベントの発生源となったプロセスやアプリケーションを実行していたユーザを意味する。<コンピュータ>はイベントの発生源となった監視対象サーバ群１００内のサーバを意味する。
【００１５】
図３に、クエリ生成コンピュータ１３０の構成例を示す。クエリ生成コンピュータ１３０は、コンピュータ本体３００と、入力装置３３０と、表示装置３３１と、ログＤＢ１１１との通信を行う通信装置３３２から構成される。コンピュータ本体３００は、データ演算を実行するＣＰＵ３０１、ＲＯＭ３０２、ＲＡＭ３１０、ハードディスク駆動装置３２０、これらデバイス間のデータ転送を実現するＣＰＵバス３０７、これらデバイスとＣＰＵバス３０７とを結合するインターフェース３０３〜３０６で構成される。
【００１６】
ＲＡＭ３１０には、ＣＰＵ３０１に演算処理を実行させるクエリ生成プログラム３１１の実行領域と、検算時に一時的に生成させるデータを格納する作業領域３１２とが少なくとも確保される。また、ハードディスク駆動装置３２０の記憶領域には、クエリ生成プログラムの格納領域としてのプログラム格納部３２１と、ログＤＢ１１１から取得したデータを一時的に格納しておくデータ格納部３２２が少なくとも確保される。
【００１７】
図４に、クエリ生成コンピュータ１３０に接続される表示装置３３１に表示される条件入力用のＧＵＩ画面例を示す。クエリ生成プログラム画面４００は、クエリの生成に必要な条件を入力するクエリ生成条件入力部４１０と、生成したクエリを表示する生成クエリ出力部４２０から構成される。
【００１８】
クエリ生成条件入力部４１０は生成するクエリの型を”ANY型”, “SEQ型”, “混在型”から選択するクエリ型指定部４１１、頻出するイベントを特定するために属性値の最小頻度を数値で入力する属性値の最小頻度入力部４１２、頻出するイベントパターンを特定するために最小頻度を数値で入力するイベントパターンの最小頻度入力部４１３、処理の効率化のために時間窓の最大値を時間で入力する最大時間窓入力部４１４、クエリ生成処理の開始を指示するクエリ生成ボタン４１５から構成される。
【００１９】
（クエリ生成動作）
（ａ）動作の概要
図５に、クエリ生成プログラム３１１を通じて実行されるクエリ生成プロセスの概要を示す。このクエリ生成プロセスは、ユーザが入力装置３３０の操作を通じて、表示装置３３１に表示されたクエリ生成プログラム画面４００を構成する入力部（クエリ型指定部４１１〜最大時間窓入力部４１４）に必要事項を入力した後、クエリ生成ボタン４１５をクリックすることで開始される（ステップ５０１）。
【００２０】
クエリ生成コンピュータ１３０は、当該操作入力を検出すると、クエリ生成プログラム画面４００内の入力部（クエリ型指定部４１１〜最大時間窓入力部４１４）に入力された値を読み取り、ＲＡＭ３１０の作業領域３１２に格納する。また、クエリ生成コンピュータ１３０は、通信装置３３２を介してログＤＢ１１１からログイベントを取得し、一時的にハードディスク駆動装置３２０のデータ格納部３３２に保存した後、ＲＡＭ３１０の作業領域３１２に格納する。ここでログイベントとは、図２に示されるイベントのＩＤ２０１、イベントの発生日時２０２、イベントの属性値２０３から構成される（ステップ５０２）。
【００２１】
クエリ生成コンピュータ１３０は、クエリ生成プログラム３１１に記述された処理手順に従い、作業領域３１２に格納されたイベントログから頻出イベント列の生成演算を実行する（ステップ５０３）。この処理内容の詳細は後述する。
【００２２】
次に、クエリ生成コンピュータ１３０は、生成するクエリ型指定部４１１で指定されたクエリ型を判定し（ステップ５０４）、ANY型クエリ生成処理（ステップ５０５）、SEQ型（ステップ５０６）、混在型（ステップ５０７）のいずれかのクエリ生成演算を実行する。なお、これらの演算により得られた計算結果は作業領域３１２に格納される。
【００２３】
作業領域３１２に格納された計算結果は、表示装置３３１のクエリ生成プログラム画面４００内の生成クエリ出力部４２０に表示される（ステップ５０８）。図１２に、生成されたクエリの表示例を示す。以上により、クエリ生成プログラム３１１としての処理動作は終了する（ステップ５０９）。
【００２４】
一方、表示装置３３１を通してクエリの生成結果の提示を受けたユーザは、この結果に対するRETURN節を追加してクエリを完成させ、このクエリを複合イベント処理コンピュータ１２０で実行させる。従って、過去のイベントログに基づいて、インシデントを特定する正確なクエリを作成することができる。
【００２５】
（ｂ）詳細動作
（１）頻出イベント列の生成
ここでは、ステップ５０３で実行される頻出イベント列の生成演算の詳細動作を説明する。図６に、頻出イベント列の生成演算で実行される処理手順の概要を示す。
（ステップ６０１）
頻出イベント列生成演算の開始後、クエリ生成コンピュータ１３０は、カウンタｎを１で初期化する。
【００２６】
（ステップ６０２）
次に、クエリ生成コンピュータ１３０は、イベントの各属性に関して、最大時間窓入力部４１４で指定された最大時間窓内にあるイベントの属性値の出現頻度が、属性値の最小頻度入力部４１２で指定された最小頻度以上である属性値を列挙する。
【００２７】
図７のｎ＝１の属性値の集合７１０は、最大時間窓を１時間、属性値の最小頻度を２として、図２のイベントログから頻出イベント値を求めた結果を示している。例えば属性値”情報”７１１は、イベントＩＤが1, 2, 7, 11, 13の５個のイベント内に出現しており、属性値の最小頻度が２以上であることから、頻出属性値として列挙されている。
【００２８】
ここでは、属性値が完全に一致しているものを同じ属性値として、属性値の出現頻度を計算しているが、一部の文字列や数値の範囲が一致しているものを同じ属性値としても良い。例えば属性”イベント番号”を1-100, 101-200等といくつかのブロックに分けて、同じブロックにある属性値同士を同じとみなしても良い。また、属性”コンピュータ”の最初の数文字（例えば、”server3*”）が一致している属性値同士を同じとみなしても良い。
【００２９】
更に、クエリ生成コンピュータ１３０は、求めた頻出属性値から頻出イベントを作成する。例えば頻出属性値”情報”７１１から頻出イベント（情報, *, *, *, *）が生成される。ここで“*“は、具体的な属性値が指定されていないことを意味する。このような頻出イベントの作成を得られたすべての頻出属性値に対して行い、これらをまとめて１個の属性から構成される頻出イベントの集合Ｆ（１）を作成する。ここで、Ｆ（ｎ）はｎ個の頻出属性値から構成される頻出イベントの集合である。
【００３０】
（ステップ６０３）
クエリ生成コンピュータ１３０は、集合Ｆ（ｎ）が空集合か否かを判定し、空集合で無い場合にはステップ６０４を実行し、頻出イベントの集合Ｆ（ｎ）の作成を続ける。また、クエリ生成コンピュータ１３０は、集合Ｆ（ｎ）が空集合の場合には頻出イベント集合Ｆ（ｎ）の作成を終了し、ステップ６０６を実行する。
【００３１】
（ステップ６０４）
クエリ生成コンピュータ１３０は、カウンタｎに１を加え、インクリメントする。
【００３２】
（ステップ６０５）
クエリ生成コンピュータ１３０は、Ｆ（ｎ−１）からＦ（ｎ）を作成する。ここでは、具体的な作成方法を、図７の集合７２０（ｎ＝２の場合）について説明する。既にＦ（１）が作成されているので、クエリ生成コンピュータ１３０は、属性値”情報”７１１は、イベントＩＤ1,2,7,11,13に出現する頻出属性値であることは分かっている。クエリ生成コンピュータ１３０は、これらイベントＩＤ1, 2, 7, 11, 13に出現する属性”種類”の次の属性”ソース”で頻出属性値を求めると、属性値”process27”がイベントＩＤ2, 7, 13に出現し頻出属性値であることが得られる。もし、属性”ソース”に頻出属性値が存在しない場合は、次の属性に関して頻出属性値を求める。次に、クエリ生成コンピュータ１３０は、これら頻出属性値から頻出イベント７２１（情報, process27, *, *, *）を作成する。クエリ生成コンピュータ１３０は、他の頻出属性値に対しても同様に頻出イベントを作成し、これらをまとめて集合Ｆ（２）を作成する。またｎ＝２以外でも集合Ｆ（ｎ−１）から同様の手順で集合Ｆ（ｎ）を求めることができる。図２のイベントログから得られた他の頻出イベントの例を図７に示す。
【００３３】
（ステップ６０６）
クエリ生成コンピュータ１３０は、頻出イベントの集合Ｆ（１）〜Ｆ（ｎ−１）に含まれる頻出イベントをログイベント内のイベント２０３に割り当てる。
【００３４】
図８に、図２のイベントログから得られた頻出イベントの集合Ｆ（１）〜Ｆ（ｎ−１）に含まれる頻出イベント８０２を、確定している属性値（”*”以外の属性値）の個数が多い順番に、次に出現頻度が高い順番に並べたテーブル（頻出イベント一覧テーブル８００）の構成例を示す。順番がより上位にある頻出イベント８０２をその頻出イベントが含まれるイベントログのイベント２０３に割り当てる。
【００３５】
このとき、イベントログの一つのイベント２０３に割り当てられる頻出イベント８０２は一つとし、複数の頻出イベントを割り当てることは出来ないものとする。従って、割り当てるイベント２０３がない頻出イベント８０２も存在することになるが、その頻出イベント８０２は頻出イベントの集合から削除される。図８に示す頻出イベント一覧テーブル８００には、頻出イベント８０２に対して割り当てられたイベント２０３のイベントＩＤ８０３を示している。
【００３６】
ここでは、頻出イベント８０２を並べる方法として、確定している属性値の数と出現頻度を基準とする手法を採用するが、これに限定されるものではない。例えば特定の属性が確定しているものを優先したり、属性値に特定の文字列が含まれるものを優先しても良い。これにより、特定のインシデント向けにカスタマイズすることができる。
【００３７】
次に、対応するイベント２０３が存在する頻出イベント８０２対して、ラベルを付加する。図８の頻出イベント一覧テーブル８００において、頻出イベント８０２に付加したラベルをラベル８０１に示す。ここで、ラベルとしてアルファベットを使用しているが、ラベルはアルファベットに限定されるものではなく、文字列や数値でもよい。つまり、ラベル付けされる頻出イベントの数に制限はない。
【００３８】
（ステップ６０７）
クエリ生成コンピュータ１３０は、ステップ６０６でラベル付けされた頻出イベント８０２から、頻出イベント列８２０を生成する。頻出イベント列８２０は、イベント２０３をイベント発生日時２０２の順番に並べたイベント列８１０において、図８の頻出イベント一覧テーブル８００のラベル８０１とイベントＩＤ８０３との対応を参照して、ラベルで置き換えることにより作成することができる。図８の場合、イベントログのイベント２０３から頻出イベント列８２０（ｅａｃｆｂｄａｄｆｂｆｂｆｄａｅｅｂ）が得られる。
【００３９】
（２）ANY型クエリの生成
次に、ステップ５０５で実行されるANY型クエリの生成演算の詳細動作を説明する。図９に、ANY型クエリの生成演算処理で実行される処理手順の概要を示す。
（ステップ９０１）
クエリ生成コンピュータ１３０は、ステップ５０３で作成した頻出イベント列８２０内において、最も頻出する頻出イベントを取得する。頻出イベント列８２０内では、頻出イベント｛ａ，ｂ，ｅ，ｆ｝がそれぞれ３回出現しており、これらが最も頻出する頻出イベントとなる。
【００４０】
（ステップ９０２）
クエリ生成コンピュータ１３０は、ステップ９０１で求めた最も頻出する頻出イベントが発生した発生日時から時間窓を求める。すなわち、頻出イベント列８２０内では、最も頻出する頻出イベント｛ａ，ｂ，ｅ，ｆ｝の中で、最初に出現するのは２番目の頻出イベント”ａ”であり、最後に出現するのは１６番目の頻出イベント”ｂ”である。従って、時間窓は図２のイベントログのイベント２０３のイベントＩＤ２０１が”２”のイベントの発生日時”2009/05/23 10:22:24”と、イベントＩＤが“１６”のイベントの発生日時”2009/05/23 10:23:59”の差である９５秒となる。
【００４１】
因みに、ここでは時間窓を、最も頻出する頻出イベントの最初と最後のイベントの発生日時の差としたが、時間窓を決める方法はこれだけに限定されるものではない。例えば時間窓にある程度の余裕を持たせるために、最初と最後のイベントの発生日時の差に１０％多めに時間窓を設定しても良い。また、最も頻出する頻出イベントの発生日時の分散を計算し、これを基に時間窓を決めても良い。
【００４２】
（ステップ９０３）
クエリ生成コンピュータ１３０は、ステップ９０１で得られた最も頻出する頻出イベント及びステップ９０２で得られた時間窓からANY型クエリを生成する。頻出イベント列８２０からは、以下に示すようなANY型クエリが生成される。
＜クエリ例＞
EVENT：ANY( Event a, Event b, Event e, Event f)
WHERE：a.種類=”情報”∧a.ソース=”process27”∧a.イベント番号=1∧a.ユーザ=”user3”∧b.種類=”エラー”∧b.ソース=”process5”∧b.イベント番号=88∧b.コンピュータ=”server23”∧e.ユーザ=”user45”∧e.コンピュータ=”server56”∧f.ソース=”process81”∧f.コンピュータ=”server88”
WITHIN：95sec
【００４３】
（３）SEQ型クエリの生成
ここでは、ステップ５０６で実行されるSEQ型クエリの生成演算処理の詳細動作を説明する。図１０に、SEQ型クエリの生成演算処理で実行される処理手順の概要を示す。
（ステップ１００１）
クエリ生成コンピュータ１３０は、ステップ５０３で得られた頻出イベント列８２０から、クエリ生成プログラム画面４００のイベントパターンの最小頻度入力部４１３で入力された最小頻度以上の頻出イベントパターンを求める。頻出イベント列８２０において、イベントパターン”ａ＊ｂ”は、図１３に示すように３回出現しており、これはイベントパターンの最小頻度入力部４１３に入力された頻度”３“以上で条件を満たしているので、これが頻出イベントパターンとなる。また、与えられた文字列の中からパターンを見つけ出すアルゴリズムとしては例えば非特許文献２がある。
【００４４】
（ステップ１００２）
クエリ生成コンピュータ１３０は、ステップ１００１で求めた頻出イベントパターンから時間窓を求める。頻出イベント列８２０内において、頻出イベントパターン”a*b”は３回出現するが、同一イベントパターン内で頻出イベント”ａ”と”ｂ”の発生日時の間隔が最大のものを求める。最も時間間隔が大きいのは、２番目の頻出イベント”ａ”と５番目の頻出イベント”ｂ”間である。これらイベントの発生日時２０２はそれぞれ“2009/05/23 10:22:24”と“2009/05/23 10:23:35”である。従って、これらの差７１秒を時間窓とする。
【００４５】
ここでは時間窓を同一イベントパターン内で最初と最後の頻出イベントの発生日時の間隔の最大値を時間窓としたが、時間窓を決める方法はこれだけに限定されるものではない。例えば同一イベントパターン内での最初と最後の頻出イベントの発生日時の時間間隔を複数のイベントパターンで求め、その平均値や分散を基に決めても良い。
【００４６】
（ステップ１００３）
クエリ生成コンピュータ１３０は、ステップ１００１で得られた頻出イベントパターンとステップ１００２で得られた時間窓から、SEQ型クエリを生成する。頻出イベント列８２０からは、以下に示すようなSEQ型クエリが生成される。
＜クエリ例＞
EVENT：SEQ(Event a, Event b)
WHERE：a.種類=”情報”∧a.ソース=”process27”∧a.イベント番号=1∧a.ユーザ=”user3”∧b.種類=”エラー”∧b.ソース=”process5”∧b.イベント番号=88∧b.コンピュータ=”server23”
WITHIN：71sec
【００４７】
（４）混在型クエリの生成
ここでは、ステップ５０７で実行される混在型クエリの生成演算処理の詳細動作を説明する。図１１に混在型クエリの生成演算処理で実行される処理手順の概要を示す。
（ステップ１１０１）
クエリ生成コンピュータ１３０は、ステップ５０３で得られた頻出イベント列８２０から、クエリ生成プログラム画面４００のイベントパターンの最小頻度入力部４１３で入力された最小頻度以上の頻出イベントパターンを求める。このステップはステップ１００１と同じであり、頻出イベント列８２０の頻出イベントパターンは”a*b”となる。
【００４８】
（ステップ１１０２）
クエリ生成コンピュータ１３０は、ステップ５０３で得られた頻出イベント列８２０内において、最も頻出する頻出イベントを取得する。ここまでの過程はステップ９０１と同じであり、最も頻出する頻出イベントは｛ａ，ｂ，ｅ，ｆ｝である。
【００４９】
次に、クエリ生成コンピュータ１３０は、最も頻出する頻出イベントからステップ１１０１で得た頻出イベントパターンに含まれる頻出イベントを除く。従って、得られた最も頻出する頻出イベントは{ｅ，ｆ}となる。
【００５０】
（ステップ１１０３）
クエリ生成コンピュータ１３０は、ステップ１１０１で得られた頻出イベントパターンと、ステップ１１０２で得られた最も頻出する頻出イベントの発生日時から時間窓を求める。時間窓は、ステップ９０２とステップ１００２の方法を組み合わせることで求める。
【００５１】
（ステップ１１０４）
クエリ生成コンピュータ１３０は、ステップ１１０１で得られた頻出イベントパターン、ステップ１１０２で得られた最も頻出な頻出イベント、ステップ１１０３で得られた時間窓から得られた時間窓から混在型クエリを生成する。頻出イベント列８２０からは、以下に示すような混在型クエリが生成される。
＜クエリ例＞
EVENT：ANY( SEQ(Event a, Event b), Event e, Event f)
WHERE：a.種類=”情報”∧a.ソース=”process27”∧a.イベント番号=1∧a.ユーザ=”user3”∧b.種類=”エラー”∧b.ソース=”process5”∧b.イベント番号=88∧b.コンピュータ=”server23”∧e.ユーザ=”user45”∧e.コンピュータ=”server56”∧f.ソース=”process81”∧f.コンピュータ=”server88”
WITHIN：95sec
【００５２】
（まとめ）
前述した形態例の場合には、複合イベント処理を利用してシステム障害を検知するシステム向けにクエリの条件句を自動的に生成する場合について説明した。しかし、前述したクエリの自動生成処理技術は、特定の分野に特化した知識を利用していない。このため、クエリ生成の対象となる複合イベント処理を用いたシステムはこれに限定されない。
【００５３】
また、前述した形態例の説明では、生成したクエリを非特許文献１の複合イベント処理システムSASEのクエリ言語の書式にあわせて表示している。しかし、複合イベント処理システムはSASEに限定されるものではなく、またクエリ言語の書式もこれに限定されるものではない。
【符号の説明】
【００５４】
１００…監視対象サーバ群、１１０…監視サーバ、１１１…ログＤＢ、１２０…複合イベント処理コンピュータ、１３０…クエリ生成コンピュータ
【図１】
2011076153.tif 000003
【図２】
2011076153.tif 000004
【図３】
2011076153.tif 000005
【図４】
2011076153.tif 000006
【図５】
2011076153.tif 000007
【図６】
2011076153.tif 000008
【図７】
2011076153.tif 000009
【図８】
2011076153.tif 000010
【図９】
2011076153.tif 000011
【図１０】
2011076153.tif 000012
【図１１】
2011076153.tif 000013
【図１２】
2011076153.tif 000014
【図１３】
2011076153.tif 000015