(57)【要約】【課題】イベントデータの分散処理において，イベントデータの紐付けを行うマシンの台数を増やしても通信コストを増大させないことが可能となる技術を提供する。【解決手段】特定の装置を出発地とするイベントデータが入力部１１により入力され，データ保管部１２に保管される。紐付け判定部１４は，入力された検索子の検索条件とイベントデータとのマッチングを行い，双方がマッチする場合には，紐付け部１６により，イベントデータと検索子が持つイベントデータ紐付けの途中結果との紐付けを行う。検索子生成部１８は，次に紐付けるイベントデータの検索条件とそれまでのイベントデータの紐付け途中結果を含む検索子を生成する。出力部１９は，最後に紐付けられたイベントデータの到着地となる装置から発行されるイベントデータを保管するシステム可視化サーバ１に，生成された検索子を出力する。【選択図】図４
2009277023.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータを，
出発地となる装置から到着先の装置までのネットワークを流れる各イベントデータのうち，ある出発地のイベントデータを保存するデータ保管部，
因果関係を有するインベントデータを紐付けするにあたって，紐付け対象イベントデータを検索する検索条件と，紐付けの先頭となるイベントデータまたは既に紐付けが行われている場合にはそのイベントデータ同士の紐付け途中結果である紐付けデータと，を含む紐付け処理要求が入力される入力部，
前記紐付け処理要求に含まれる検索条件に従って前記データ保管部に保存されているイベントデータを検索し，検索条件にマッチするイベントデータが存在する場合に，前記紐付け処理要求に含まれる紐付け元のイベントデータまたは紐付け途中結果である紐付けデータに，前記検索条件にマッチするイベントデータを紐付けして新たな紐付けデータを生成する紐付け処理部，
前記検索条件にマッチするイベントデータの到着先情報に基づいて，紐付け処理要求を送信する装置を決定し，該装置に対し，紐付け対象イベントデータを検索する検索条件と前記新たな紐付けデータとを含む紐付け処理要求を送信する出力部として，
機能させるためのデータ紐付けプログラム。
【請求項２】
前記紐付け処理部は，
イベントデータの紐付け関係があらかじめ定義された情報である紐付けモデルを保持する紐付けモデル保持部と，
前記紐付けモデルを参照して前記紐付けデータを解析するモデル解析部と，
前記モデル解析部による解析結果に基づいて，次に紐付けを行う紐付け対象イベントデータの検索条件を含む紐付け処理要求を生成する生成部とを備える
ことを特徴とする請求項１に記載のデータ紐付けプログラム。
【請求項３】
前記入力部は，紐付けられた先頭のイベントデータが前記出発地のイベントデータである紐付けデータが入力され，
前記データ保管部は，前記入力された紐付けデータを保存し，
前記紐付け処理部は，前記紐付け処理要求に含まれる検索条件に前記保存された紐付けデータがマッチする場合に，前記紐付け処理要求に含まれる紐付けの先頭となるイベントデータまたは紐付け途中結果である紐付けデータに，前記検索条件にマッチする紐付けデータを紐付けして新たな紐付けデータを生成する
ことを特徴とする請求項２に記載のデータ紐付けプログラム。
【請求項４】
前記紐付けモデルは，定義された紐付けを行うイベントデータごとに，そのイベントデータの前のイベントデータまたは後のイベントデータとの間に，共通するデータを持っているか否かを示す情報を有し，
前記モデル解析部は，前記紐付けモデルが有する共通するデータを持っているか否かを示す情報を参照することにより，次に紐付けを行う紐付け対象イベントデータが，それ以前に紐付けられたイベントデータと共通するデータを持っているか否かの判定を行う
ことを特徴とする請求項２または請求項３に記載のデータ紐付けプログラム。
【請求項５】
前記出力部は，前記検索条件にマッチするイベントデータの到着先情報と種別を示す情報とに基づいて，紐付け処理要求を送信する装置を決定し，該装置に対し，紐付け対象イベントデータを検索する検索条件と前記新たな紐付けデータとを含む紐付け処理要求を送信する
ことを特徴とする請求項１から請求項４までのいずれかに記載のデータ紐付けプログラム。
【請求項６】
出発地となる装置から到着先の装置までのネットワークを流れる各イベントデータのうち，ある出発地のイベントデータを保存するデータ保管部と，
因果関係を有するインベントデータを紐付けするにあたって，紐付け対象イベントデータを検索する検索条件と，紐付けの先頭となるイベントデータまたは既に紐付けが行われている場合にはそのイベントデータ同士の紐付け途中結果である紐付けデータと，を含む紐付け処理要求が入力される入力部と，
前記紐付け処理要求に含まれる検索条件に従って前記データ保管部に保存されているイベントデータを検索し，検索条件にマッチするイベントデータが存在する場合に，前記紐付け処理要求に含まれる紐付け元のイベントデータまたは紐付け途中結果である紐付けデータに，前記検索条件にマッチするイベントデータを紐付けして新たな紐付けデータを生成する紐付け処理部と，
前記検索条件にマッチするイベントデータの到着先情報に基づいて，紐付け処理要求を送信する装置を決定し，該装置に対し，紐付け対象イベントデータを検索する検索条件と前記新たな紐付けデータとを含む紐付け処理要求を送信する出力部とを備える
ことを特徴とする情報処理装置。
【請求項７】
コンピュータが，
出発地となる装置から到着先の装置までのネットワークを流れる各イベントデータのうち，ある出発地のイベントデータをデータ記憶装置に保存するデータ保管過程と，
因果関係を有するインベントデータを紐付けするにあたって，紐付け対象イベントデータを検索する検索条件と，紐付けの先頭となるイベントデータまたは既に紐付けが行われている場合にはそのイベントデータ同士の紐付け途中結果である紐付けデータと，を含む紐付け処理要求が入力される入力過程と，
前記紐付け処理要求に含まれる検索条件に従って前記データ記憶装置に保存されているイベントデータを検索し，検索条件にマッチするイベントデータが存在する場合に，前記紐付け処理要求に含まれる紐付け元のイベントデータまたは紐付け途中結果である紐付けデータに，前記検索条件にマッチするイベントデータを紐付けして新たな紐付けデータを生成する紐付け処理過程と，
前記検索条件にマッチするイベントデータの到着先情報に基づいて，紐付け処理要求を送信する装置を決定し，該装置に対し，紐付け対象イベントデータを検索する検索条件と前記新たな紐付けデータとを含む紐付け処理要求を送信する出力過程とを実行する
ことを特徴とするデータ紐付け方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は，関係するイベントデータ同士の紐付け処理を行う技術に関するものであり，特に，複数の情報処理装置によって紐付け処理を行う場合に，効率的なイベントデータの分散配置を可能とし，紐付け処理を行う情報処理装置の台数を増やしても通信コストを増大させないことを可能とするデータ紐付けプログラム，情報処理装置およびデータ紐付け方法に関するものである。
【背景技術】
【０００２】
イベントデータ，もしくはストリームデータと呼ばれるデータは，現在，様々な場面で利用され始めている。イベントデータとは，“ある時点（time）における事象（data）”を表した時系列データである。スタンフォード大学の研究チームでは，イベントデータを，
"Continuous, unbounded, rapid, time-varying streams of data elements" 
と定義している。
【０００３】
近年，物流の世界から広がりを見せているＲＦＩＤ（Radio Frequency IDentification）タグを読み取った結果であるセンサデータも，イベントデータの一種である。また，携帯機器の発達やＷｅｂ2.0 ，クラウドコンピューティングに代表されるネットワークを介したサービスの充実によって増加しているネットワークトラフィックデータも，イベントデータである。
【０００４】
ここで，イベントデータ処理の応用の１つとして，システム可視化技術を紹介する。
【０００５】
世界中に存在するインターネット上のＩＴサービスの多くは，Ｗｅｂ３階層モデルを採用したシステム環境で提供されている。ＩＴサービスのシステム環境は，その重要性が高まる一方で複雑性を増し，部分最適化はできても全体最適化がきわめて難しいという状況が顕在化し始めている。これは，多種多様なコンポーネントからなるＩＴシステムの不具合や性能劣化の発見ならびに特定が難しいということにもつながる。結果として，システム運用管理も煩雑になり，サービス品質（ＱｏＳ：Quality of Service）の低下を引き起こす可能性がある。
【０００６】
そこで，システム運用者の負荷を軽減し，ＩＴサービスを安定稼働させることを目指して，ＩＴサービスのシステム全体の動作を外部から観測し，リアルタイムで可視化する技術が重要になる。このような技術を，ここでは“システム可視化”と呼ぶ。
【０００７】
以下，システム可視化の実現するための技術の例と，その課題を説明する。
【０００８】
図１４は，システム可視化の技術の概要を説明する図である。図１４において，システム可視化の対象となるＩＴシステム３００は，複数のシステム可視化対象サーバ３１０から構成されている。
【０００９】
図１４に示すシステム可視化では，まず，可視化の対象となるＩＴシステム３００のネットワーク機器３２０（ルータやスイッチ等）を行き来する通信メッセージを，ポートミラーリングと呼ばれる技術を使って外部から観測する。ポートミラーリングは，ネットワーク機器３２０を通過するメッセージのコピーを，ネットワーク機器３２０のミラーポートから取得する技術である。この観測方法は，システム可視化対象サーバ３１０に特別なエージェント等を組み入れる必要がないため，導入が容易であり，かつ対象とするサーバやＯＳを選ばないというメリットがある。
【００１０】
次に，観測したメッセージから必要な情報を取り出し，ＩＴシステム内部で進行中の業務トランザクションの処理状況を読み解く。このとき，あらかじめデータマイニング技術によって取得された，通常の動作タイミングやフローと業務とを紐付けた“挙動モデル”をもとに，現在の業務トランザクションを一つ一つ判断する。
【００１１】
このようにして得られた情報を，処理内容ごとにまとめた統計情報として，ＩＴシステム３００の動作ログとして蓄積したり，グラフやシーケンス図で表示したりすることができる。例えば，図１４には，クライアント（Ｃｌｉａｎｔ）からメッセージが発行されてから，Ｗｅｂサーバ，アプリケーションサーバ（ＡＰサーバ），データベースサーバ（ＤＢサーバ）へと順に関連するメッセージが発行され，逆順を辿ってクライアントに応答のメッセージが返るまでの一連の業務処理において，各サーバの業務処理タイミングが可視化された表示例が示されている。
【００１２】
図１５は，システム可視化によって得られた統計情報の表示例を示す図である。図１４に示す表示例の他にも，例えば，図１５（Ａ）に示すような業務ごとの平均処理時間と内訳を示すグラフや，図１５（Ｂ）に示すような業務の発生頻度と平均処理時間の分布，図１５（Ｃ）に示すような業務の平均処理時間の時系列変化など，システム可視化の技術によって様々な統計情報を得ることができる。
【００１３】
システム可視化におけるイベントデータとは，ネットワークを流れるメッセージのことである。イベントデータの特徴の１つとして，関係のある複数のイベントデータを結びつけることにより意味のある情報が得られるというものがある。このような関係のあるイベントデータ同士を結びつけることを，“紐付け”と呼ぶ。システム可視化では，このイベントデータをポートミラーリングによって拾い上げ，それらの中から関係のあるもの同士を紐付けることで，システム環境の挙動の可視化を図る。
【００１４】
図１６は，システム可視化の技術における紐付けの例を説明する図である。例えば，図１６に示すＷｅｂ３階層モデルのシステムにおいて，ユーザＰＣ３１１がＷｅｂサーバ３１２にＨＴＴＰリクエストを送り，ＨＴＴＰリクエストを受けたＷｅｂサーバ３１２がユーザＰＣ３１１からのＨＴＴＰリクエストに応じたＩＩＯＰリクエストをアプリケーションサーバ３１３に送り，ＩＩＯＰリクエストを受けたアプリケーションサーバ３１３がＷｅｂサーバ３１２からのＩＩＯＰリクエストに応じたＤＢリクエストをデータベースサーバ３１４に送ることを，一連の処理とする。
【００１５】
一連の処理における各イベントデータ（各メッセージ）を，ポートミラーリングにより収集し，関係するもの同士を紐付けする。関係するイベントデータとは，例えば，メッセージ中に同じｓｅｓｓｉｏｎ＿ｉｄ番号を持つイベントデータなどである。図１６に示す一連の処理の場合，ポートミラーリングにより収集された多数のイベントデータから，一連の処理の流れで順に発行されたＨＴＴＰリクエスト，ＩＩＯＰリクエスト，ＤＢリクエストの互いに関係する組合せを，一連のイベントデータに共通する情報の検出などにより抽出し，それらのイベントデータの紐付けを行い，その紐付け結果を得る。
【００１６】
このようなシステム可視化の技術において，精度の高いシステム可視化を実現するためには，すべてのイベントデータについて何らかの処理を行う必要がある。例えば，システム可視化対象サーバ３１０が１０台あれば，その１０台から出されるすべてのイベントデータに対して，「他のイベントデータと紐付けできるか」や「関係のないイベントデータなのか」などの処理を行わなければならない。また，イベントデータは，流量や種類が多く，決まった型が存在するわけではない。さらに，１つのイベントデータに対して，それと紐付けるべきイベントデータが複数であることも多い。つまり，１つのイベントデータに対して行うべき処理は１つと決まっているわけではなく，状況によって変動する。
【００１７】
これらのことは，システム可視化対象サーバ３１０の台数が多ければ多いほど，イベントデータに対する処理量が増えることを意味する。つまり，大規模なＩＴシステム３００にシステム可視化を適用するときには，多数のシステム可視化対象サーバ３１０から発行されるすべてのイベントデータを処理可能な，高い能力のマシン（情報処理装置）が必要とされる。
【００１８】
しかし，この高性能イベントデータ処理を，１台のマシンで実現することは困難である。システム可視化で要求されるイベントデータ処理のスループットは，システム可視化対象サーバ３１０の台数に比例する。単純にイベントデータを受け取ることを考えてみても，１０台のシステム可視化対象サーバ３１０から最大性能で出力されるイベントデータを，１台のマシンで受けとることはできない。
【００１９】
さらに，ＩＴシステム３００は，利用するユーザ数に合わせて，日々成長する。このことを鑑みると，たとえスタートアップ時には１台のマシンでシステム可視化を実現できていたとしても，処理しなければならないイベントデータの量が１台のマシンでの処理能力を超える日がくることは明らかである。そのため，システム可視化を１台でなく複数のマシンで分散処理することで，処理のスループットを向上させる機構が重要になる。
【００２０】
しかし，大量のイベントデータを複数のマシンで分散処理しようとしても，それぞれのイベントデータについて，発見すべきすべての紐付けモデルに対してあらかじめ最適化したイベントデータの分散配置を用意することはできないため，イベントデータの配置だけを工夫しても効率的な分散処理は実現できない。
【００２１】
ここで，紐付けモデルとは，紐付けするイベントデータがあらかじめ定義されたモデルである。例えば，図１６に示す例において紐付けされる一連のイベントデータ，すなわちＨＴＴＰリクエスト→ＩＩＯＰリクエスト→ＤＢリクエストの定義が，紐付けモデルである。
【００２２】
図１７は，イベントデータの分散配置の課題を説明する図である。例えば，図１７に示すＷｅｂ３階層モデルのシステムにおいて，Ｗｅｂサーバ３１２は，ＩＩＯＰリクエストをアプリケーションサーバ３１３に送る。また，アプリケーションサーバ３１３は，ＤＢリクエストをデータベースサーバ３１４に送る。図１７に示すように，ポートミラーリングによって，＃０１〜＃０４の４つのＩＩＯＰリクエストと，＃１１〜＃１４の４つのＤＢリクエストが収集されたものとする。
【００２３】
なお，ここでは，イベントデータを解析し，あらかじめ定義された紐付けモデルに従ってイベントデータの紐付けを行う情報処理装置を，解析装置１００と呼ぶものとする。
【００２４】
１つのＩＩＯＰリクエストと，そのＩＩＯＰリクエストに応じた１つのＤＢリクエストとが紐付けられたものが，紐付けモデルであるものとし，それぞれ対応する組合せのリクエスト（イベントデータ）が同じ解析装置１００（ａ〜ｄ）に配置され，そこで紐付けの処理が行われるようにしたいものとする。ところが，イベントデータが収集された時点では，どのイベントデータとどのイベントデータとが紐付けられるかが分からないため，互いに紐付けられるイベントデータを同じ解析装置１００（ａ〜ｄ）に配置することは，容易ではない。
【００２５】
また，紐付けモデルが１つであるとは限らず，複数の紐付けモデルが定義されており，ある紐付けモデルに定義されたイベントデータが，他の紐付けモデルにも定義されているケースも考えられる。このとき，複数の紐付けモデルに定義されたイベントデータを，どの解析装置１００（ａ〜ｄ）に配置すればよいのかを決定することは容易ではない。それぞれの紐付きモデルに対応する複数の解析装置１００（ａ〜ｄ）にコピーして配置することも考えられるが，もともと膨大な量のイベントデータがコピーによりさらに増えることになり，それらのイベントデータの管理は容易ではない。
【００２６】
このように，紐付けするイベントデータ同士を同じ解析装置１００に配置することを考えても，効率的な分散処理は実現できない。
【００２７】
また，分散処理において重要なのは，スケーラビリティである。一般的に，台数効果を阻害する要因は，マシン間の通信オーバヘッドである。効率的なイベントデータの分散処理には，マシンの台数によらず通信コストが変わらないことが重要となる。
【００２８】
図１８は，イベントデータの分散処理における通信コストの課題を説明する図である。例えば，図１８に示すＷｅｂ３階層モデルのシステムにおいて，Ｗｅｂサーバ３１２がＩＩＯＰリクエストをアプリケーションサーバ３１３に送り，ＩＩＯＰリクエストを受けたアプリケーションサーバ３１３がＷｅｂサーバ３１２からのＩＩＯＰリクエストに応じたＤＢリクエストをデータベースサーバ３１４に送ることを，一連の処理とする。
【００２９】
図１８に示すように，ポートミラーリングによって，＃０１〜＃０４の４つのＩＩＯＰリクエストと，＃１１〜＃１４の４つのＤＢリクエストが収集されたものとする。収集されたイベントデータが単純に複数の解析装置１００（ａ〜ｈ）に配置され，解析装置１００（ａ〜ｈ）間の通信により紐付け相手となるイベントデータが配置された解析装置１００（ａ〜ｈ）を探索する場合において，図１８に示すように，収集された８つのイベントデータが，別々の解析装置１００（ａ〜ｈ）に配置されてしまったものとする。
【００３０】
図１８において，ＩＩＯＰリクエスト＃０１に関係するＤＢリクエストは，ＤＢリクエスト＃１１である場合に，ＩＩＯＰリクエスト＃０１が配置された解析装置１００ａは，ＩＩＯＰ＃０１に関係するＤＢリクエスト＃１１が配置された解析装置１００ｅを探索するために，すべての解析装置１００（ｂ〜ｈ）に対して通信を行う必要があり，大きな通信オーバヘッドが生じてしまう。このような通信オーバヘッドは，並列処理を行う解析装置１００の台数の増加によって増大するため，解析装置１００の台数による効果が膨大な通信オーバヘッドによって阻害されてしまう。
【００３１】
このように，イベントデータを分散処理する場合には，データ処理に適したデータ配置を考慮した上で利用するマシンを増やし，スループットをスケーラブルに向上することが必要となる。
【００３２】
なお，複数のノードで分散処理を実行する分散環境において，イベント処理を行う技術がある。この技術では，分散環境における複数のノードのうちいずれかのノードにイベントマネージャを設け，各ノードからの登録イベントと通知イベントとを管理し，いずれかのノードからイベント発生通知があった場合には，管理された登録イベントとの条件比較を行い，一致したときに，そのイベントを登録したノードを呼び出している。
【特許文献１】特開平８−１２９５３６号公報
【発明の開示】
【発明が解決しようとする課題】
【００３３】
本発明は，上記の問題点の解決を図り，効率的なイベントデータの分散配置が可能となり，またイベントデータの紐付けを行うマシンの台数を増やしても通信コストを増大させないことが可能となる技術を提供することを目的とする。
【課題を解決するための手段】
【００３４】
イベントデータの紐付けを行う複数のマシンに対して，イベントデータの出発地ごとに，イベントデータを分散配置し，次に紐付けするイベントデータの検索条件を含む検索子を，イベントデータの到着先情報に基づいてマシン間で転送することにより，関係するイベントデータの紐付けを行う。
【００３５】
具体的には，情報処理装置は，出発地となる装置から到着先の装置までのネットワークを流れる各イベントデータのうち，ある出発地のイベントデータを保存するデータ保管部と，因果関係を有するインベントデータを紐付けするにあたって，紐付け対象イベントデータを検索する検索条件と，紐付けの先頭となるイベントデータまたは既に紐付けが行われている場合にはそのイベントデータ同士の紐付け途中結果である紐付けデータと，を含む紐付け処理要求（後述の検索子に相当）が入力される入力部と，紐付け処理要求に含まれる検索条件に従ってデータ保管部に保存されているイベントデータを検索し，検索条件にマッチするイベントデータが存在する場合に，紐付け処理要求に含まれる紐付け元のイベントデータまたは紐付け途中結果である紐付けデータに，検索条件にマッチするイベントデータを紐付けして新たな紐付けデータを生成する紐付け処理部と，検索条件にマッチするイベントデータの到着先情報に基づいて，紐付け処理要求を送信する装置を決定し，該装置に対し，紐付け対象イベントデータを検索する検索条件と新たな紐付けデータとを含む紐付け処理要求を送信する出力部とを備える。
【発明の効果】
【００３６】
イベントデータの紐付けを行う複数のマシンに対して出発地ごとにイベントデータを分散配置し，次に紐付けするイベントデータの検索条件を含む検索子をイベントデータの到着先情報に基づいてマシン間で転送することにより関係するイベントデータの紐付けを行うので，イベントデータの紐付けを行うマシンの台数によらず，同じ通信コストでイベントデータの紐付け処理を行うことが可能となる。
【発明を実施するための最良の形態】
【００３７】
以下，本発明の実施の形態について，図を用いて説明する。
【００３８】
図１は，本実施の形態によるシステム可視化構成の概略を示す図である。本実施の形態では，図１に示すように，Ｗｅｂ３階層モデルである可視化対象システム３のシステム可視化を例とする。
【００３９】
システム可視化サーバ１は，可視化対象システム３から収集されたイベントデータを解析し，関係するイベントデータ同士の紐付けを行う装置である。本実施の形態によるシステム可視化では，複数のシステム可視化サーバ１により，イベントデータ紐付けの分散処理を行う。
【００４０】
データ分散配置装置２は，可視化対象システム３からポートミラーリングにより収集されたイベントデータを，所定のポリシに従って各システム可視化サーバ１に分散配置する。
【００４１】
図１の例に示す可視化対象システム３は，スイッチ３０，Ｗｅｂサーバ３１，ＡＰ（アプリケーション）サーバ３２，ＤＢ（データベース）サーバ３３，ＬＢ（ロードバランサー）３４，ＦＷ（ファイアウォール）３５，ＤＮＳ（ドメインネームシステム）３６を有する。
【００４２】
イベントデータには，その送り手となる装置と受け手となる装置とがある。図１に示すようなＷｅｂ３階層モデルにおいて，例えば，リクエストのイベントデータは，ユーザＰＣ（図示省略）からＷｅｂサーバ３１へ，そのＷｅｂサーバ３１からＡＰサーバ３２へ，そのＡＰサーバ３２からＤＢサーバ３３へと，順に発行される。そのレスポンスとなるイベントデータは，同じサーバを介して，ＤＢサーバ３３から同じＡＰサーバ３２へ，そのＡＰサーバ３２から同じＷｅｂサーバ３１へ，そのＷｅｂサーバから最初のユーザＰＣへと，返される。
【００４３】
また，あるイベントデータＡが発行された場合，そのイベントデータＡに関係する次のイベントデータＢが発行される装置は，イベントデータＡの受け手となる装置である。図１に示すようにＡＰサーバ３２が複数台用意してある場合でも，Ｗｅｂサーバ３１のリクエストを受けたＡＰサーバ３２と異なるＡＰサーバ３２から，そのＷｅｂサーバ３１のリクエストに関係する次のリクエストがＤＢサーバ３３に発行されることはない。すなわち，イベントデータＡの受け手である装置が，イベントデータＡに関係する次のイベントデータＢの送り手の装置となる。
【００４４】
これらのことから，イベントデータをその出発地となる装置ごとにシステム可視化サーバ１に分散させておけば，システム可視化サーバ１では，これから紐付けしようとするイベントデータの到着先情報（宛先の装置を示す情報）を用いて，そのイベントデータと紐付けるべき次のイベントデータが，どのシステム可視化サーバ１に送られるかが予測できる。すなわち，紐付けしようとするイベントデータの到着先となる装置から発行されたイベントデータの分散配置先となるシステム可視化サーバ１に，その紐付けしようとするイベントデータに関係する次のイベントデータが配置される。
【００４５】
データ分散配置装置２は，ポートミラーリングにより，可視化対象システム３の各スイッチ３０のミラーポートから，可視化対象システム３のネットワークを流れるイベントデータを収集する。また，収集された各イベントデータを，それぞれのイベントデータの出発地となる装置ごとに分散されるように，各システム可視化サーバ１に分散配置する。
【００４６】
イベントデータの分散配置を行う手法としては，例えば，ハッシュ関数を用いる手法などがある。本実施の形態では，ＩＰアドレスなどのイベントデータの発行元となる装置を特定する情報にハッシュ関数を用い，得られたハッシュ値で分散配置先のシステム可視化サーバ１を決定する。このようなハッシュ関数を用いた手法では，特定のシステム可視化サーバ１に集中的にイベントデータが配置されることを防ぎつつ，イベントデータをその出発地となる装置ごとに各システム可視化サーバ１に分散配置することができる。
【００４７】
各システム可視化サーバ１は，データ分散配置装置２から受け取ったイベントデータを解析し，他のシステム可視化サーバ１との的確な通信により，関係するイベントデータ同士の紐付けを行う。
【００４８】
図２は，本実施の形態の分散並列処理によるイベントデータ紐付け手法の概要を説明する図である。本実施の形態では，イベントデータの配置だけでなく，イベントデータ紐付け処理にも工夫がなされている。
【００４９】
図２において，ある装置から別の装置にイベントデータＡが送信される。イベントデータＡを受け取った別の装置は，イベントデータＡに関係するイベントデータＢを発行する。ここでは，イベントデータＡの出発地となる装置を特定する情報をｐ，イベントデータＡの到着地すなわちイベントデータＢの出発地となる装置を特定する情報をｑとする。
【００５０】
ポートミラーリングで取得されたイベントデータＡとイベントデータＢは，データ分散配置装置２により，それぞれ出発地ごとに各システム可視化サーバ１に分散配置される。ここでは，ハッシュ関数（ｐ）で特定されるシステム可視化サーバ１ａ，ハッシュ関数（ｑ）で特定されるシステム可視化サーバ１ｂに，それぞれイベントデータＡ，イベントデータＢが配置されるものとする。
【００５１】
各システム可視化サーバ１は，常に入力を監視している。システム可視化サーバ１ａは，入力としてイベントデータＡを発見すると，イベントデータＡ内にある到着地となる装置の情報ｑを基に，ハッシュ関数（ｑ）で特定されるシステム可視化サーバ１ｂに検索子を送り込む。
【００５２】
検索子は，次に紐付けを行う紐付け対象イベントデータの情報（検索条件と呼ぶ）と，それまでの紐付け途中結果とを有する。図２に示す例の場合，検索子はイベントデータＡの次に検索すべきイベントデータＢを検索するための情報と，それまでに紐付けたイベントデータＡの情報とを持つ。
【００５３】
検索子を受け取ったシステム可視化サーバ１ｂは，まず，検索対象となっているイベントデータＢがすでに届いているかを確認する。まだ届いていない場合には，検索子が検索子のリストに追加保存される。なお，イベントデータと検索子とのどちらが先に届くかはわからない。この状態でイベントデータＢが到着すると，保存されている検索子とのマッチングが行われ，検索子内の紐付け結果にイベントデータＢが紐付けられ，紐付け結果はイベントデータＡ→イベントデータＢとなる。
【００５４】
このように，イベントデータをその出発地で各システム可視化サーバ１に分散配置し，次のイベントデータの検索条件とそれまでの紐付け結果を含む検索子を，イベントデータの到着地を辿ってシステム可視化サーバ１間で送受信し合うことにより，少ない通信で関係するイベントデータの紐付けを行うことができる。
【００５５】
図３は，本実施の形態によるイベントデータ紐付けの具体的な例を示す図である。図３（Ａ）に示すように，ユーザＰＣ３７（図１では省略）がＷｅｂサーバ３１にＨＴＴＰリクエストを送り，ＨＴＴＰリクエストを受けたＷｅｂサーバ３１がＨＴＴＰリクエストに応じたＩＩＯＰリクエストをＡＰサーバ３２に送り，ＩＩＯＰリクエストを受けたＡＰサーバ３２がＩＩＯＰリクエストに応じたＤＢリクエストをＤＢサーバ３１４に送る処理を，一連の処理とする。
【００５６】
ユーザＰＣ３７を示す情報としてｐを，Ｗｅｂサーバ３１を示す情報としてｑを，ＡＰサーバ３２を示す情報としてｒを，ＤＢサーバ３３を示す情報としてｓを用いる。ｐ，ｑ，ｒ，ｓは，例えばＩＰアドレスなどである。
【００５７】
イベントデータは，その発行元装置を示す情報に所定のハッシュ関数を用いてハッシュ値を求め，得られたハッシュ値ごとに各システム可視化サーバ１に分散される。図３（Ｂ）において，ユーザＰＣ３７（ｐ）から発行されたイベントデータはシステム可視化サーバ１ａに入力され，Ｗｅｂサーバ３１（ｑ）から発行されたイベントデータはシステム可視化サーバ１ｂに入力され，ＡＰサーバ３２（ｒ）から発行されたイベントデータはシステム可視化サーバ１ｃに入力される。
【００５８】
各システム可視化サーバ１は，紐付けするイベントデータが定義された紐付けモデルの情報を持っている。ここでは，一連の処理としてログインモデルを例とする。紐付けモデルとしては，
（ＨＴＴＰログイン，ユーザ名，パスワード）
→（ＩＩＯＰ認証，ユーザ名，パスワード）
→（ＤＢパスワード問い合わせ，ユーザ名）
が定義されている。この紐付けモデルにおいて，括弧に囲まれたものが１つのイベントデータの型を意味し，矢印が紐付け順を意味する。括弧内の一番左が，イベントデータの種別を意味し，それ以外がイベントデータに少なくとも含まれるデータの種別を示す。
【００５９】
ユーザＰＣ３７から発行されたＨＴＴＰリクエストは，システム可視化サーバ１ａに入力される。ここで，入力されたイベントデータ＃１が，
（ＨＴＴＰログイン，ユーザ名＝小橋，パスワード＝ｋｏｂａｓｈｉ，... ）
であるとすると，イベントデータ＃１は上記の紐付けモデルの最初に指定されたイベントデータにマッチする。
【００６０】
システム可視化サーバ１ａは，イベントデータ＃１から必要なデータを抽出し，その時点での紐付け結果とする。この時点での紐付け結果は，
（ＨＴＴＰログイン，ユーザ名＝小橋，パスワード＝ｋｏｂａｓｈｉ）
となる。
【００６１】
また，システム可視化サーバ１ａは，次の検索すべきイベントデータの検索条件を生成する。ここでは，上記の紐付けモデルとイベントデータから抽出されたデータ（この場合にはユーザ名とパスワード）とから，
（ＩＩＯＰ認証，ユーザ名＝小橋，パスワード＝ｋｏｂａｓｈｉ）
という検索条件が生成される。
【００６２】
システム可視化サーバ１ａは，検索条件と紐付け結果とから検索子＃１を生成する。生成された検索子＃１は，｛検索条件，紐付け結果｝で表記すると，
｛（ＩＩＯＰ認証，ユーザ名＝小橋，パスワード＝ｋｏｂａｓｈｉ）
，（ＨＴＴＰログイン，ユーザ名＝小橋，パスワード＝ｋｏｂａｓｈｉ）｝
イベントデータ＃１の次のイベントデータ＃２は，イベントデータ＃１の到着地となるＷｅｂサーバ３１（ｑ）から発行される。システム可視化サーバ１ａは，イベントデータ＃１に含まれるＷｅｂサーバ３１を示す情報ｑと所定のハッシュ関数とに基づいて特定される，Ｗｅｂサーバ３１（ｑ）から発行されたイベントデータが入力されるシステム可視化サーバ１ｂに，生成された検索子＃１を送る。
【００６３】
システム可視化サーバ１ｂは，検索子＃１を入力すると，検索子＃１の検索条件にマッチするイベントデータが保持されているかを確認する。ここでは，まだ該当するイベントデータが保持されていないものとする。入力された検索子＃１を保持しておく。
【００６４】
その後，Ｗｅｂサーバ３１（ｐ）から発行されたＩＩＯＰリクエストが，システム可視化サーバ１ｂに入力される。ここで，入力されたイベントデータ＃２は，
（ＩＩＯＰ認証，ユーザ名＝小橋，パスワード＝ｋｏｂａｓｈｉ，... ）
であるとする。システム可視化サーバ１ｂは，イベントデータ＃２を入力すると，イベントデータ＃２とマッチする検索条件を有する検索子が保持されているかを確認し，検索子＃１が検出される。
【００６５】
システム可視化サーバ１ｂは，イベントデータ＃２から必要なデータを抽出し，検索子＃１に含まれた紐付け結果との紐付けを行い，新たな紐付け結果とする。この時点での紐付け結果は，
（ＨＴＴＰログイン，ユーザ名＝小橋，パスワード＝ｋｏｂａｓｈｉ）
→（ＩＩＯＰ認証，ユーザ名＝小橋，パスワード＝ｋｏｂａｓｈｉ）
となる。
【００６６】
この時点では，まだ上記の紐付けモデルを満たす紐付け結果が得られていない。システム可視化サーバ１ｂは，次の検索すべきイベントデータの検索条件を生成する。ここでは，上記の紐付けモデルとイベントデータから抽出されたデータ（この場合にはユーザ名）とから，
（ＤＢパスワード問い合わせ，ユーザ名＝小橋）
という検索条件が生成される。
【００６７】
システム可視化サーバ１ｂは，検索条件と紐付け結果とから検索子＃２を生成する。生成された検索子＃２は，
｛（ＤＢパスワード問い合わせ，ユーザ名＝小橋）
，（ＨＴＴＰログイン，ユーザ名＝小橋，パスワード＝ｋｏｂａｓｈｉ）
→（ＩＩＯＰ認証，ユーザ名＝小橋，パスワード＝ｋｏｂａｓｈｉ）｝
となる。
【００６８】
イベントデータ＃２の次のイベントデータ＃３は，イベントデータ＃２の到着地となるＡＰサーバ３２（ｒ）から発行される。システム可視化サーバ１ｂは，イベントデータ＃２に含まれるＡＰサーバ３２を示す情報ｒと所定のハッシュ関数とに基づいて特定される，ＡＰサーバ３２（ｒ）から発行されたイベントデータが入力されるシステム可視化サーバ１ｃに，生成された検索子＃２を送る。
【００６９】
システム可視化サーバ１ｃは，検索子＃２を入力すると，検索子＃２の検索条件にマッチするイベントデータが保持されているかを確認する。ここでは，まだ該当するイベントデータが保持されていないものとする。入力された検索子＃２を保持しておく。
【００７０】
その後，ＡＰサーバ３２（ｒ）から発行されたＤＢリクエストが，システム可視化サーバ１ｃに入力される。ここで，入力されたイベントデータ＃３は，
（ＤＢパスワード問い合わせ，ユーザ名＝小橋，... ）
であるとする。システム可視化サーバ１ｃは，イベントデータ＃３を入力すると，イベントデータ＃３とマッチする検索条件を有する検索子が保持されているかを確認し，検索子＃２が検出される。
【００７１】
システム可視化サーバ１ｃは，イベントデータ＃３から必要なデータを抽出し，検索子＃２に含まれた紐付け結果との紐付けを行い，新たな紐付け結果とする。この時点での紐付け結果は，
（ＨＴＴＰログイン，ユーザ名＝小橋，パスワード＝ｋｏｂａｓｈｉ）
→（ＩＩＯＰ認証，ユーザ名＝小橋，パスワード＝ｋｏｂａｓｈｉ）
→（ＤＢパスワード問い合わせ，ユーザ名＝小橋）
となる。
【００７２】
ここで得られた紐付け結果は，上記の紐付けモデルを満たす。すなわち，ここで得られた紐付け結果が最終的な紐付け結果となる。システム可視化サーバ１ｃは，得られた紐付け結果を保持する。
【００７３】
図４は，本実施の形態によるシステム可視化サーバの構成例を示す図である。システム可視化サーバ１は，イベントデータ紐付け部１０を備える。
【００７４】
イベントデータ紐付け部１０は，関係するイベントデータ同士の紐付けを行う手段であり，システム可視化サーバ１のコンピュータが備えるＣＰＵ，メモリ等のハードウェアと，ソフトウェアプログラムとにより実現される。イベントデータ紐付け部１０は，入力部１１，データ保管部１２，検索子格納部１３，紐付け判定部１４，紐付けモデル記憶部１５，紐付け部１６，モデル解析部１７，検索子生成部１８，出力部１９を備える。
【００７５】
入力部１１は，データ分散配置装置２から分散配置されたイベントデータや，システム可視化サーバ１からの検索子を入力する。入力されたイベントデータは，データ保管部１２に保管される。また，入力された検索子は，検索子格納部１３に保持される。
【００７６】
紐付け判定部１４は，イベントデータが入力された場合には，そのイベントデータと検索子格納部１３に格納されている検索子の検索条件とのマッチング処理を行う。このとき，マッチする検索子がないときには，紐付けモデル記憶部１５に記憶された紐付けモデルで定義された最初のイベントデータにマッチするかを確認する。また，検索子が入力された場合には，その検索子の検索条件とデータ保管部１２に保管されているイベントデータとのマッチング処理を行う。
【００７７】
紐付け部１６は，イベントデータと検索子の検索条件とがマッチした場合に，その検索子内の紐付けデータとそのイベントデータとの紐付けを行い，新たな紐付けデータとする。また，入力されたイベントデータが紐付けモデルで定義された最初のイベントデータにマッチする場合に，そのイベントデータを紐付け元のイベントデータとする最初の紐付けデータを生成する。
【００７８】
モデル解析部１７は，生成された紐付けデータと紐付けモデル記憶部１５に記憶された紐付けモデルとのマッチングによる解析処理を行う。生成された紐付けデータが紐付けモデル記憶部１５に記憶されたいずれかの紐付けモデルと全体がマッチしている場合には，その紐付けデータは完成していることになる。完成した紐付けデータを，データ保管部１２に保管する。
【００７９】
検索子生成部１８は，生成された紐付けデータがまだ完成形でない場合に，紐付けデータと紐付けモデルとの解析結果から，次に紐付けすべきイベントデータの検索条件を生成し，生成された検索条件と紐付けデータとを含む検索子を生成する。
【００８０】
出力部１９は，生成された検索子を，紐付けデータで最後に紐付けられたイベントデータの到着地となる装置から発行されたイベントデータを保管するシステム可視化サーバ１に出力する。このとき，出力先のシステム可視化サーバ１の特定には，データ分散配置装置２と同じポリシに従う。
【００８１】
図５は，本実施の形態による各データの構成例を示す図である。図５（Ａ）は，イベントデータのデータ構成例を示す。イベントデータ（ｅｖｅｎｔ＿ｄａｔａ）は，そのイベントデータの種別を示すタイプ（ｔｙｐｅ；例えば，プロトコル（ＨＴＴＰ，ＩＩＯＰ，... ）など），そのイベントデータが生成された時間（ｔｉｍｅｓｔａｍｐ），そのイベントデータの出発地となる装置を特定する情報（ｓｒｃ；例えば，送信元ＩＰアドレスなど），そのイベントデータの到着地となる装置を特定する情報（ｄｅｓｔ；例えば宛て先ＩＰアドレスなど），そのイベントデータ内部に保持された各データ（ｄａｔａ；例えば，ユーザ名＝小橋，品物＝本，金額＝１０００など）等の情報を有する。
【００８２】
図５（Ｂ）は，検索子のデータ構成例を示す。検索子（ｐｒｏｂｅ）は，次に紐付けすべきイベントデータの情報である検索条件，それまでの紐付け処理の途中結果である紐付けデータ（ｕｎｉｏｎ）等の情報を有する。検索条件は，例えば，
・（タイプ＝ＨＴＴＰ，ユーザ名＝小橋）：
タイプがＨＴＴＰで，ユーザ名＝小橋のデータを有するイベントデータを検索，
・（タイプ＝ＩＩＯＰ，ユーザ名＝小橋，品物＝＊）：
タイプがＩＩＯＰで，ユーザ名＝小橋のデータ，種別が品物である何らかのデータ（＊はワイルドカードを示す）を有するイベントデータを検索，
などである。
【００８３】
図５（Ｃ）は，紐付けデータのデータ構成例を示す。紐付けデータは，それまで紐付けられたイベントデータごとに，そのイベントデータが紐付けられたシステム可視化サーバ１を示す情報（ｐａｃｋ名；システム可視化サーバ１のＩＰアドレスなど），そのイベントデータのタイプ，そのイベントデータ内部のデータなどの情報を有する。
【００８４】
紐付けデータは，例えば，
・（（168.1.1.10，ＨＴＴＰ，ユーザ名＝小橋），）：
ＩＰアドレスが168.1.1.10のシステム可視化サーバ１が保持する，タイプがＨＴＴＰで，ユーザ名＝小橋のデータを有するイベントデータが最初に紐付けられただけの紐付けデータ，
・（（168.1.1.10，ＨＴＴＰ，ユーザ名＝小橋），
（168.1.1.11，ＩＩＯＰ，ユーザ名＝小橋，品物＝本），）：
上記の紐付けデータに，さらにＩＰアドレスが168.1.1.11のシステム可視化サーバ１が保持する，タイプがＩＩＯＰで，ユーザ名＝小橋のデータ，品物＝本のデータを有するイベントデータが紐付けられた紐付けデータ，
などである。
【００８５】
なお，紐付けデータのデータ形式としては，例えば，イベントデータをそのまま紐付ける形式，イベントデータから必要な情報のみを抽出して紐付ける形式，イベントデータの保管場所へのポインタ情報を紐付ける形式など，さまざまな形式が考えられる。
【００８６】
図５（Ｄ）は，紐付けモデルのデータ構成例を示す。紐付けモデルは，イベントデータの紐付け関係があらかじめ定義された情報であり，システム可視化サーバ１は，紐付けモデルの定義に従って，イベントデータの紐付け処理を行う。このような紐付けモデルを用いることにより，イベントデータ間の関係を明らかにすることができる。
【００８７】
紐付けモデルは，紐付けすべきイベントデータの順ごとに，イベントデータのタイプ，イベントデータに含まれるデータの種別（ｄａｔａ種別；例えば，ユーザ名，パスワード，品物，金額など），そのイベントデータの前に断絶があるか否かを示すフラグ（ｇａｐ）などの情報を有する。ｇａｐについては，別に説明する。
【００８８】
紐付けモデルは，例えば，
・（ＨＴＴＰログイン，ユーザ名，パスワード）
→（ＩＩＯＰ認証，ユーザ名，パスワード）
→（ＤＢパスワード問い合わせ，ユーザ名）：
タイプがＨＴＴＰログインで，ユーザ名，パスワードのデータを有するイベントデータと，そのイベントデータと関係する，タイプがＩＩＯＰ認証で，同じユーザ名，パスワードのデータを有するイベントデータと，そのイベントデータに関係する，タイプがＤＢパスワード問い合わせで，同じユーザ名のデータを有するイベントデータとを紐付ける，
などである。
【００８９】
図６は，本実施の形態によるイベントデータ紐付け処理フローチャートである。各システム可視化サーバ１は，データを入力するごとに，図６に示すイベントデータ紐付け処理を実行する。
【００９０】
入力部１１によりデータを取得し（ステップＳ１０），その取得データがイベントデータであれば（ステップＳ１１），データ保管部１２に取得されたイベントデータを格納する（ステップＳ１２）。
【００９１】
紐付け判定部１４により，取得されたイベントデータと，検索子格納部１３に格納された検索子の検索条件とのマッチングを行い，マッチする検索子が存在すれば（ステップＳ１３），紐付け部１６により，検出された検索子に含まれるそれまでの紐付けデータと取得されたイベントデータとをもとに新たな紐付けデータを生成する（ステップＳ１４）。モデル解析部１７により，生成された紐付けデータと紐付けモデル記憶部１５に保持された紐付けモデルとのマッチングを行い，生成された紐付けデータがいずれかの紐付けモデルを網羅していれば（ステップＳ１５），その完成された紐付けデータをデータ保管部１２に保管し（ステップＳ１６），処理を終了する。
【００９２】
ステップＳ１５において，生成された紐付けデータがまだ完成されたものでなければ，検索子生成部１８により，生成された紐付けデータでの紐付けモデルの参照結果に基づいて，次に検索すべきイベントデータの検索条件を生成し，生成された検索条件と紐付けデータとから検索子を生成する（ステップＳ１７）。出力部１９により，紐付けデータの最後のイベントデータの到着地の情報から求められる，検索すべき次のイベントデータを保持するシステム可視化サーバ１に，生成された検索子を転送し（ステップＳ１８），処理を終了する。
【００９３】
ステップＳ１３において，マッチする検索子が存在しなければ，取得されたイベントデータと紐付けモデル記憶部１５に保持された紐付けモデルとのマッチングを行い，取得されたイベントデータと最初のイベントデータがマッチする紐付けモデルが存在しなければ（ステップＳ１９），処理を終了する。取得されたイベントデータがいずれかの紐付けモデルで定義された最初のイベントデータとマッチすれば（ステップＳ１９），紐付け部１６により，そのイベントデータを紐付け元のイベントデータとする最初の紐付けデータを生成する（ステップＳ２０）。検索子生成部１８により，検索子を生成し（ステップＳ１７），出力部１９により，検索すべき次のイベントデータを保持するシステム可視化サーバ１に検索子を転送し（ステップＳ１８），処理を終了する。                      
【００９４】
入力部１１により取得されたデータが検索子であれば（ステップＳ２１），検索子格納部１３に取得された検索子を格納する（ステップＳ２２）。
【００９５】
紐付け判定部１４により，取得された検索子の検索条件と，データ保管部１２に保管されたイベントデータとのマッチングを行い，マッチするイベントデータが存在しなければ（ステップＳ２３），処理を終了する。
【００９６】
ステップＳ２３において，マッチするイベントデータが存在すれば，紐付け部１６により，取得された検索子に含まれるそれまでの紐付けデータと検出されたイベントデータとをもとに新たな紐付けデータを生成する（ステップＳ１４）。モデル解析部１７により，生成された紐付けデータと紐付けモデル記憶部１５に保持された紐付けモデルとのマッチングを行い，生成された紐付けデータがいずれかの紐付けモデルを網羅していれば（ステップＳ１５），その完成された紐付けデータをデータ保管部１２に保管し（ステップＳ１６），処理を終了する。生成された紐付けデータがまだ完成されたものでなければ，検索子生成部１８により，検索子を生成し（ステップＳ１７），出力部１９により，検索すべき次のイベントデータを保持するシステム可視化サーバ１に検索子を転送し（ステップＳ１８），処理を終了する。
【００９７】
図７は，本実施の形態によるイベントデータ紐付け処理の例を示す図である。ここでは，図７を用いて，イベントデータ紐付け部１０によるイベントデータ紐付け処理の流れが，どのように機能するかの具体的な例を説明する。なお，図７の説明において，各ステップは，図６のフローチャートのステップに対応する。
【００９８】
以下では，説明を簡単にするため，図７に示すように，イベントデータ，検索子，紐付けデータ，紐付けモデルの表記を一般化する。
【００９９】
図７において，各システム可視化サーバ１内に定義された紐付けモデル（点線の枠内）は，
Ａ（ｘ）→Ｂ（ｘ，ｙ）→Ｃ（ｙ，ｚ）
と表記されている。この紐付けモデルにおいて，Ａ（ｘ），Ｂ（ｘ，ｙ），Ｃ（ｙ，ｚ）は，紐付けるべきイベントデータの型を示している。大文字のアルファベットＡ，Ｂ，Ｃは，紐付けるべきイベントデータの型を示し，括弧内の小文字のアルファベットｘ，ｙ，ｚは，紐付けるべきイベントデータが有するデータの種別を示す。また，矢印は，次に紐付けすべきイベントデータの関係を示す。
【０１００】
なお，同じ小文字アルファベットが使用されている場合には，データの種別だけでなくデータ自身も共通していることを示し，種別が同じでもデータが異なる場合には，違う小文字アルファベットを用いて表記を行う。例えば，Ａ（ｘ），Ｂ（ｘ，ｙ）との表記は，紐付けるべき２つのイベントデータにおいて，ｘに該当するデータは，データ種別だけではなく，データ自身も同じものである必要がある。
【０１０１】
図７において，イベントデータは，例えば，
Ａ（ｘ1 ）
のように表記される。この場合，大文字アルファベットＡは，イベントデータのタイプを示し，括弧内の添字付き小文字アルファベットｘ1 は，イベントデータ内に含まれたデータを示す。なお，出発地，到着地となる装置を特定する情報などは，一般化の表記上では省略されているが，実際には存在する。なお，図７においてイベントデータを示す矢印の元はイベントデータの出発地となる装置のＩＰアドレスを示し，矢印の先はイベントデータの到着地となる装置のＩＰアドレスを示している。
【０１０２】
図７において，紐付けデータは，例えば，
Ａ（ｘ1 ）→Ｂ（ｘ1 ，ｙ1 ）
のように表記される。この例の表記では，タイプがＡでｘ1 のデータを含むイベントデータと，タイプがＢでｘ1 とｙ1 のデータを含むイベントデータとが紐付けられていることを示している。なお，データｘ1 は，紐付けられた双方のイベントデータにおいて，データの値が同じである。
【０１０３】
図７において，検索子は，例えば，
｛Ｂ（ｘ1 ，＊ｙ），Ａ（ｘ1 ）｝
のように表記される。この例の表記において，左側のＢ（ｘ1 ，＊ｙ）は検索条件を示し，右側のＡ（ｘ1 ）はそれまでの紐付けデータを示す。検索条件において，大文字アルファベットＢは，次に紐付けすべきイベントデータのタイプを示し，括弧内の小文字アルファベットは，次に紐付けすべきイベントデータ内に含まれるデータを示す。括弧内のデータのうち，添字付きのデータｘ1 は，そのデータがそのまま含まれている必要があることを示し，＊（ワイルドカード）付きのデータ＊ｙは，紐付けモデルにおいてｙで定義されたデータ種別の何らかのデータが含まれている必要があることを示す。
【０１０４】
図７において，ＩＰアドレスｐの装置から発行されたイベントデータはシステム可視化サーバ１ａに入力され，ＩＰアドレスｑの装置から発行されたイベントデータはシステム可視化サーバ１ｂに入力され，ＩＰアドレスｒの装置から発行されたイベントデータはシステム可視化サーバ１ｃに入力される。
【０１０５】
各システム可視化サーバ１には，あらかじめ紐付けモデル（点線の枠内），
Ａ（ｘ）→Ｂ（ｘ，ｙ）→Ｃ（ｙ，ｚ）
が定義されている。
【０１０６】
システム可視化サーバ１ａは，イベントデータＡ（ｘ1 ）が入力されると，そのイベントデータを格納する（ステップＳ１０〜Ｓ１２）。イベントデータＡ（ｘ1 ）にマッチする検索条件を有する検索子はなく（ステップＳ１３），イベントデータＡ（ｘ1 ）は，紐付けモデルの最初に定義されているイベントデータの型Ａ（ｘ）にマッチするので（ステップＳ１９），イベントデータＡ（ｘ1 ）から最初の紐付けデータＡ（ｘ1 ）を生成する（ステップＳ２０）。紐付けモデルにおいて次に紐付けすべきイベントデータの型は，Ｂ（ｘ，ｙ）であるので，すでに決まっているデータｘ1 を用いて検索条件Ｂ（ｘ1 ，＊ｙ）を生成し，検索子｛Ｂ（ｘ1 ，＊ｙ），Ａ（ｘ1 ）｝を生成する（ステップＳ１７）。最後に紐付けられたイベントデータＡ（ｘ1 ）の到着地のＩＰアドレスがｑであるので，生成された検索子｛Ｂ（ｘ1 ，＊ｙ），Ａ（ｘ1 ）｝を，システム可視化サーバ１ｂに転送する（ステップＳ１８）。
【０１０７】
システム可視化サーバ１ｂは，検索子｛Ｂ（ｘ1 ，＊ｙ），Ａ（ｘ1 ）｝が入力されると，その検索子を格納する（ステップＳ１０，Ｓ２１，Ｓ２２）。この時点では，入力された検索子の検索条件Ｂ（ｘ1 ，＊ｙ）にマッチするイベントデータがないので（ステップＳ２３），処理を終了する。
【０１０８】
システム可視化サーバ１ｂは，イベントデータＢ（ｘ1 ，ｙ1 ）が入力されると，そのイベントデータを格納する（ステップＳ１０〜Ｓ１２）。イベントデータＢ（ｘ1 ，ｙ1 ）にマッチする検索条件Ｂ（ｘ1 ，＊ｙ）を有する検索子があるので（ステップＳ１３），その検索子が有する紐付けデータＡ（ｘ1 ）と，イベントデータＢ（ｘ1 ，ｙ1 ）とから，新たな紐付けデータＡ（ｘ1 ）→Ｂ（ｘ1 ，ｙ1 ）を生成する（ステップＳ１４）。この時点で，新たに生成された紐付けデータは，まだ紐付けモデルを網羅していない（ステップＳ１５）。紐付けモデルにおいて次に紐付けすべきイベントデータの型は，Ｃ（ｙ，ｚ）であるので，すでに決まっているデータｙ1 を用いて検索条件Ｃ（ｙ1 ，＊ｚ）を生成し，検索子｛Ｃ（ｙ1 ，＊ｚ），Ａ（ｘ1 ）→Ｂ（ｘ1 ，ｙ1 ）｝を生成する（ステップＳ１７）。最後に紐付けられたイベントデータＢ（ｘ1 ，ｙ1 ）の到着地のＩＰアドレスがｒであるので，生成された検索子｛Ｃ（ｙ1 ，＊ｚ），Ａ（ｘ1 ）→Ｂ（ｘ1 ，ｙ1 ）｝を，システム可視化サーバ１ｃに転送する（ステップＳ１８）。
【０１０９】
システム可視化サーバ１ｃは，検索子｛Ｃ（ｙ1 ，＊ｚ），Ａ（ｘ1 ）→Ｂ（ｘ1 ，ｙ1 ）｝が入力されると，その検索子を格納する（ステップＳ１０，Ｓ２１，Ｓ２２）。この時点では，入力された検索子の検索条件Ｃ（ｙ1 ，＊ｚ）にマッチするイベントデータがないので（ステップＳ２３），処理を終了する。
【０１１０】
システム可視化サーバ１ｃは，イベントデータＣ（ｙ1 ，ｚ1 ）が入力されると，そのイベントデータを格納する（ステップＳ１０〜Ｓ１２）。イベントデータＣ（ｙ1 ，ｚ1 ）にマッチする検索条件Ｃ（ｙ1 ，＊ｚ）を有する検索子があるので（ステップＳ１３），その検索子が有する紐付けデータＡ（ｘ1 ）→Ｂ（ｘ1 ，ｙ1 ）と，イベントデータＣ（ｙ1 ，ｚ1 ）とから，新たな紐付けデータＡ（ｘ1 ）→Ｂ（ｘ1 ，ｙ1 ）→Ｃ（ｙ1 ，ｚ1 ）を生成する（ステップＳ１４）。この時点で，新たに生成された紐付けデータは紐付けモデルを網羅するので（ステップＳ１５），目的とする紐付けデータが完成となる。完成された紐付けデータＡ（ｘ1 ）→Ｂ（ｘ1 ，ｙ1 ）→Ｃ（ｙ1 ，ｚ1 ）を保存する（ステップＳ１６）。
【０１１１】
ここまでは，比較的シンプルな紐付けモデルを例に，本実施の形態によるイベントデータ紐付け処理について説明した。しかし，本来は関係があるイベント同士であっても，互いに共通するデータを持たないため，イベントデータ同士の紐付けが困難となる場合がある。
【０１１２】
図８は，断絶が発生するイベントデータの例を示す図である。図８の例に示すイベントデータの流れを紐付ける紐付けモデルを考えると，
Ａ（ｘ）→Ｂ（ｘ，ｙ）→Ｃ（ｚ）→Ｄ（ｙ，ｚ）
となる。ここで，Ｂ（ｘ，ｙ）とＣ（ｚ）とは，関係あるイベント同士ではあるが，互いに共通するデータを持たない。Ｂ（ｘ，ｙ）とＣ（ｚ）との関係は，Ｄ（ｙ，ｚ）を介して見ることができる。
【０１１３】
このようなケースは，例えば，Ｗｅｂサーバ３１からＡＰサーバ３２に何らかの情報Ａ（ｘ）が送られ，ＡＰサーバ３２では，Ｗｅｂサーバ３１からのデータ＝ｘとＡＰサーバ３２で処理をした結果のデータ＝ｙとをＤＢサーバ３３に保存依頼Ｂ（ｘ，ｙ）し，ＤＢサーバ３３が保存した結果のＩＤ＝ｚがＡＰサーバ３２に送り返されＣ（ｚ），ＡＰサーバ３２は，ＩＤ＝ｚに処理結果のデータ＝ｙを合わせてＷｅｂサーバ３１に送り返す，といった場合などに発生する。
【０１１４】
以下では，途中に共通のデータを持たないイベントデータの紐付けが定義されている部分を，断絶と呼ぶ。
【０１１５】
図９は，断絶が存在する場合の問題点を説明する図である。図９において，ＩＰアドレスｐの装置から発行されたイベントデータはシステム可視化サーバ１ａに入力され，ＩＰアドレスｑの装置から発行されたイベントデータはシステム可視化サーバ１ｂに入力され，ＩＰアドレスｒの装置から発行されたイベントデータはシステム可視化サーバ１ｃに入力され，ＩＰアドレスｓの装置から発行されたイベントデータはシステム可視化サーバ１ｄに入力される。
【０１１６】
各システム可視化サーバ１には，あらかじめ紐付けモデル（点線の枠内），
Ａ（ｘ）→Ｂ（ｘ，ｙ）→Ｃ（ｚ）→Ｄ（ｙ，ｚ）
が定義されている。
【０１１７】
システム可視化サーバ１ａでは，イベントデータＡ（ｘ1 ）が入力され，検索子｛Ｂ（ｘ1 ，＊ｙ），Ａ（ｘ1 ）｝が生成されて，システム可視化サーバ１ｂに送られる。
【０１１８】
システム可視化サーバ１ｂでは，検索子の検索条件Ｂ（ｘ1 ，＊ｙ）と入力されたイベントデータＢ（ｘ1 ，ｙ1 ）とのマッチングにより，紐付けデータＡ（ｘ1 ）→Ｂ（ｘ1 ，ｙ1 ）が生成される。また，紐付けモデルにおいて次に紐付けすべきイベントデータの型は，Ｃ（ｚ）であるので，検索条件Ｃ（＊ｚ）が生成される。検索子｛Ｃ（＊ｚ），Ａ（ｘ1 ）→Ｂ（ｘ1 ，ｙ1 ）｝が生成され，システム可視化サーバ１ｃに転送される。
【０１１９】
システム可視化サーバ１ｃでは，検索子の検索条件Ｃ（＊ｚ）と入力されたイベントデータとのマッチングが行われる。ところが，検索条件Ｃ（＊ｚ）にはすでに決まっているデータの条件がなく，Ｃで示されるイベントデータのタイプと，ｚで示されるデータ種別のみが条件となっている。図９に示すように，検索条件とマッチできるイベントデータの絞込みができず，多数のイベントデータＣ（ｚ1 ），Ｃ（ｚ2 ），... ，Ｃ（ｚn ）とマッチしてしまう。そのため，次に紐付けるべきイベントデータを検索するための検索子が，多数生成され，システム可視化サーバ１ｄに送られることになる。
【０１２０】
システム可視化サーバ１ｄでは，システム可視化サーバ１ｃから受け取った多数の検索子によるイベントデータとのマッチング処理が行われる。
【０１２１】
このように，紐付きモデルに断絶が存在すると，その断絶後に多くの無駄な処理が発生し，システム可視化サーバ１の処理や，システム可視化サーバ１間の通信に大きな負荷がかかるようになる。
【０１２２】
以下では，断絶が存在する場合でも，効率的にイベントデータの紐付けが可能となるイベントデータ紐付け処理の実施の形態を説明する。
【０１２３】
図１０は，本実施の形態による断絶がある場合のイベントデータ紐付け処理の例を示す図である。図１０において，システム可視化サーバ１ｂにおいて，紐付けデータＡ（ｘ1 ）→Ｂ（ｘ1 ，ｙ1 ）を生成するまでは，図９と同様である。
【０１２４】
図１０において，システム可視化サーバ１ｂは，それまでに紐付けられたイベントデータと，紐付けモデルで定義された次に紐付けすべきイベントデータとの間に共通するデータがなければ，そこに断絶があると判断する。このとき，システム可視化サーバ１ｂは，それまでに紐付けられたイベントデータと共通するデータが定義された，次のイベントデータまでの検索条件を生成する。図１０に示す例では，Ｃ（ｚ）の後にｙを含むＤ（ｙ，ｚ）があるので，すでに決まっているデータｙ1 を用いて，Ｃ（ｚ）からそのＤ（ｙ，ｚ）までを含む検索条件，すなわち検索条件Ｃ（＊ｚ）→Ｄ（ｙ1 ，＊ｚ）を生成する。この検索条件は，イベントデータの検索条件ではなく，紐付けデータの検索条件である。検索子｛Ｃ（＊ｚ）→Ｄ（ｙ1 ，＊ｚ），Ａ（ｘ1 ）→Ｂ（ｘ1 ，ｙ1 ）｝を生成し，次のシステム可視化サーバ１ｃに送る。
【０１２５】
システム可視化サーバ１ｃは，入力された検索子の検索条件Ｃ（＊ｚ）→Ｄ（ｙ1 ，＊ｚ）とマッチする紐付けデータがまだないので，検索子｛Ｃ（＊ｚ）→Ｄ（ｙ1 ，＊ｚ），Ａ（ｘ1 ）→Ｂ（ｘ1 ，ｙ1 ）｝を保存しておく。
【０１２６】
また，システム可視化サーバ１ｃは，イベントデータＣ（ｚ1 ）が入力されたときに，そのイベントデータＣ（ｚ1 ）が，紐付けモデルの断絶後の最初の紐付けすべきイベントデータの型Ｃ（ｚ）にマッチするので，イベントデータＣ（ｚ1 ）をもとに紐付けデータＣ（ｚ1 ）を生成し，紐付けモデルにおいて次に紐付けすべきイベントデータの型Ｄ（ｙ，ｚ）から，すでに決まっているデータｚ1 を用いて，検索条件Ｄ（＊ｙ，ｚ1 ）を生成する。検索子｛Ｄ（＊ｙ，ｚ1 ），Ｃ（ｚ1 ）｝を生成し，次のシステム可視化サーバ１ｄに送る。
【０１２７】
システム可視化サーバ１ｄは，検索子の検索条件Ｄ（＊ｙ，ｚ1 ）と入力されたイベントデータＤ（ｙ1 ，ｚ1 ）とのマッチングにより，紐付けデータＣ（ｚ1 ）→Ｄ（ｙ1 ，ｚ1 ）を生成する。ここで生成された紐付けデータＣ（ｚ1 ）→Ｄ（ｙ1 ，ｚ1 ）は，紐付けモデルの断絶後の部分の紐付けの定義を満たしている。システム可視化サーバ１ｄは，生成された紐付けデータＣ（ｚ1 ）→Ｄ（ｙ1 ，ｚ1 ）の先頭のイベントデータＣ（ｚ1 ）を保管するシステム可視化サーバ１ｃに，生成された紐付けデータＣ（ｚ1 ）→Ｄ（ｙ1 ，ｚ1 ）を送る。
【０１２８】
システム可視化サーバ１ｃは，入力された紐付けデータＣ（ｚ1 ）→Ｄ（ｙ1 ，ｚ1 ）と，保存された検索子の検索条件Ｃ（＊ｚ）→Ｄ（ｙ1 ，＊ｚ）とのマッチングにより，紐付けデータＡ（ｘ1 ）→Ｂ（ｘ1 ，ｙ1 ）→Ｃ（ｚ1 ）→Ｄ（ｙ1 ，ｚ1 ）を生成する。ここで生成された紐付けデータは，定義された紐付けモデルを網羅しているので，完成形となる。
【０１２９】
このように，断絶がある場合でも，システム可視化サーバ１の処理や，システム可視化サーバ１間の通信に大きな無駄を発生させずに，イベントデータ紐付け処理を行うことができる。
【０１３０】
このような断絶がある場合には，図４に示すイベントデータ紐付け部１０における各機能ブロックの機能の一部に，変更が必要となる。
【０１３１】
入力部１１は，データ分散配置装置２からのイベントデータや，システム可視化サーバ１からの検索子，紐付けデータを入力する。入力されたイベントデータ，紐付けデータは，データ保管部１２に保管される。また，入力された検索子は，検索子格納部１３に保持される。
【０１３２】
紐付け判定部１４は，イベントデータが入力された場合には，そのイベントデータと検索子格納部１３に格納されている検索子の検索条件とのマッチング処理を行う。このとき，マッチする検索子がない場合には，紐付けモデル記憶部１５に記憶された紐付けモデルで定義された最初のイベントデータ，または断絶後の最初のイベントデータにマッチするかを確認する。また，検索子が入力された場合には，その検索子の検索条件とデータ保管部１２に保管されているイベントデータ，または紐付けデータとのマッチング処理を行う。
【０１３３】
紐付け部１６は，イベントデータと検索子の検索条件とがマッチした場合に，その検索子内の紐付けデータとそのイベントデータとの紐付けを行い，新たな紐付けデータとする。また，入力されたイベントデータが紐付けモデルで定義された最初のイベントデータ，または断絶後の最初のイベントデータにマッチする場合に，そのイベントデータを紐付け元のイベントデータとする最初の紐付けデータを生成する。また，紐付けデータと検索子の検索条件とがマッチした場合に，その紐付けデータと，その検索子内の紐付けデータとの紐付けを行い，新たな紐付けデータとする。
【０１３４】
モデル解析部１７は，生成された紐付けデータと紐付けモデル記憶部１５に記憶された紐付けモデルとのマッチングによる解析処理を行う。生成された紐付けデータが紐付けモデル記憶部１５に記憶されたいずれかの紐付けモデルと全体がマッチしている場合には，その紐付けデータは完成していることになる。完成した紐付けデータを，データ保管部１２に保管する。
【０１３５】
検索子生成部１８は，生成された紐付けデータがまだ完成形でなく，また紐付けモデルの断絶後の部分を満たしていない場合に，紐付けデータと紐付けモデルの解析結果とから，次に紐付けすべきイベントデータの検索条件を生成し，生成された検索条件と紐付けデータとを含む検索子を生成する。このとき，次に紐付けすべきイベントデータの前に断絶がある場合には，次に紐付けすべきイベントデータからそれまでの紐付けデータと共通するデータが含まれるイベントデータ部分までの紐付けデータの検索条件を生成する。
【０１３６】
出力部１９は，生成された検索子を，紐付けデータで最後に紐付けられたイベントデータの到着地となる装置から発行されたイベントデータを保管するシステム可視化サーバ１に出力する。このとき，出力先のシステム可視化サーバ１の特定には，データ分散配置装置２と同じポリシに従う。また，生成された紐付けデータが紐付けモデルの断絶後の部分定義を満たしている場合には，生成された紐付けデータを，その紐付けデータの先頭となっているイベントデータを管理するシステム可視化サーバ１に出力する。
【０１３７】
ここで，図５（Ｄ）に示す紐付けモデルのデータ構成例におけるｇａｐについて説明する。前述したように，ｇａｐは，そのイベントデータの前（後でもよい）に断絶があるか否かを示すフラグである。例えば，ｇａｐ＝１でそのイベントデータの前に断絶があることを示し，ｇａｐ＝０でそのイベントデータの後に断絶がないことを示す。
【０１３８】
断絶が存在するか否かは，紐付けモデルの隣り合ったイベントデータの型の定義のデータの比較によって見つけることができる。ただし，紐付けモデルの定義の段階ですでに断絶が存在するか否かが分かるので，このときにｇａｐのフラグを定義するようにすれば，紐付けモデルから断絶を検出する処理を省くことができる。
【０１３９】
図１１，図１２は，本実施の形態による断絶への対処を含むイベントデータ紐付け処理フローチャートである。各システム可視化サーバ１は，データを入力するごとに，図１１，図１２に示すイベントデータ紐付け処理を実行する。
【０１４０】
入力部１１によりデータを取得し（ステップＳ３０），その取得データがイベントデータであれば（ステップＳ３１），データ保管部１２に取得されたイベントデータを格納する（ステップＳ３２）。
【０１４１】
紐付け判定部１４により，取得されたイベントデータと，検索子格納部１３に格納された検索子の検索条件とのマッチングを行い，マッチする検索子が存在すれば（ステップＳ３３），紐付け部１６により，検出された検索子に含まれるそれまでの紐付けデータと取得されたイベントデータとをもとに新たな紐付けデータを生成する（ステップＳ３４）。モデル解析部１７により，生成された紐付けデータと紐付けモデル記憶部１５に保持された紐付けモデルとのマッチングを行い，生成された紐付けデータがいずれかの紐付けモデルを網羅していれば（ステップＳ３５），その完成された紐付けデータをデータ保管部１２に保管し（ステップＳ３６），処理を終了する。
【０１４２】
ステップＳ３５において，生成された紐付けデータがまだ完成されたものでない場合に，ステップＳ３０で取得され，ステップＳ３４で紐付けられたイベントデータが紐付けモデルの最後に定義されたイベントデータでなければ（ステップＳ３７），検索子生成部１８により，生成された紐付けデータでの紐付けモデルの参照結果に基づいて，次に検索すべきイベントデータの検索条件を生成し，生成された検索条件と紐付けデータとから検索子を生成する（ステップＳ３８）。出力部１９により，紐付けデータの最後のイベントデータの到着地の情報から求められる，検索すべき次のイベントデータを保持するシステム可視化サーバ１に，生成された検索子を転送し（ステップＳ３９），処理を終了する。なお，ステップＳ３８の検索子の生成において，次に検索すべきイベントデータとの間に断絶が存在する場合には，次に紐付けすべきイベントデータから紐付けモデルにおいて次に紐付けデータのイベントデータと共通するデータが定義されたイベントデータまでの検索条件を生成する。
【０１４３】
ステップＳ３７において，ステップＳ３０で取得され，ステップＳ３４で紐付けられたイベントデータが紐付けモデルの最後に定義されたイベントデータであれば，出力部１９により，紐付けデータの先頭のイベントデータが保持されたシステム可視化サーバ１に，紐付けデータを転送し（ステップＳ４０），処理を終了する。
【０１４４】
ステップＳ３３において，マッチする検索子が存在しなければ，取得されたイベントデータと紐付けモデル記憶部１５に保持された紐付けモデルとのマッチングを行い，取得されたイベントデータと最初のイベントデータ，または断絶後の最初のイベントデータがマッチする紐付けモデルが存在しなければ（ステップＳ４１），処理を終了する。取得されたイベントデータがいずれかの紐付けモデルで定義された最初のイベントデータ，または断絶後の最初のイベントデータとマッチすれば（ステップＳ４１），紐付け部１６により，そのイベントデータを紐付け元のイベントデータとする最初の紐付けデータを生成する（ステップＳ４２）。検索子生成部１８により，検索子を生成し（ステップＳ３８），出力部１９により，検索すべき次のイベントデータを保持するシステム可視化サーバ１に検索子を転送し（ステップＳ３９），処理を終了する。なお，ステップＳ３８の検索子の生成において，次に検索すべきイベントデータとの間に断絶が存在する場合には，次に紐付けすべきイベントデータから紐付けモデルにおいて次に紐付けデータのイベントデータと共通するデータが定義されたイベントデータまでの検索条件を生成する。
【０１４５】
入力部１１により取得されたデータが紐付けデータであれば（ステップＳ４３），データ保管部１２に取得された紐付けデータを格納する（ステップＳ４４）。
【０１４６】
紐付け判定部１４により，取得された紐付けデータと，検索子格納部１３に格納された検索子の検索条件とのマッチングを行い，マッチする検索子が存在しなければ（ステップＳ４５），処理を終了する。
【０１４７】
ステップＳ４５において，マッチする検索子が存在すれば，紐付け部１６により，検出された検索子に含まれるそれまでの紐付けデータと取得された紐付けデータとをもとに新たな紐付けデータを生成する（ステップＳ４６）。モデル解析部１７により，生成された紐付けデータと紐付けモデル記憶部１５に保持された紐付けモデルとのマッチングを行い，生成された紐付けデータがいずれかの紐付けモデルを網羅していれば（ステップＳ４７），その完成された紐付けデータをデータ保管部１２に保管し（ステップＳ４８），処理を終了する。
【０１４８】
ステップＳ４７において，生成された紐付けデータがまだ完成されたものでなければ，出力部１９により，紐付けデータの先頭のイベントデータが保持されたシステム可視化サーバ１に，紐付けデータを転送し（ステップＳ４９），処理を終了する。
【０１４９】
入力部１１により取得されたデータが検索子であれば（ステップＳ５０），検索子格納部１３に取得された検索子を格納する（ステップＳ５１）。
【０１５０】
紐付け判定部１４により，取得された検索子の検索条件と，データ保管部１２に保管されたイベントデータまたは紐付けデータとのマッチングを行い，マッチするイベントデータまたは紐付けデータが存在しなければ（ステップＳ５２），処理を終了する。
【０１５１】
ステップＳ５２において，マッチするイベントデータが存在すれば，紐付け部１６により，取得された検索子に含まれるそれまでの紐付けデータと検出されたイベントデータとをもとに新たな紐付けデータを生成する（ステップＳ３４）。モデル解析部１７により，生成された紐付けデータと紐付けモデル記憶部１５に保持された紐付けモデルとのマッチングを行い，生成された紐付けデータがいずれかの紐付けモデルを網羅していれば（ステップＳ３５），その完成された紐付けデータをデータ保管部１２に保管し（ステップＳ３６），処理を終了する。
【０１５２】
ステップＳ３５において，生成された紐付けデータがまだ完成されたものでない場合に，データ保管部１２に保管されており，ステップＳ３４で紐付けられたイベントデータが紐付けモデルの最後に定義されたイベントデータでなければ（ステップＳ３７），検索子生成部１８により，検索子を生成し（ステップＳ３８），出力部１９により，検索すべき次のイベントデータを保持するシステム可視化サーバ１に検索子を転送し（ステップＳ３９），処理を終了する。なお，ステップＳ３８の検索子の生成において，次に検索すべきイベントデータとの間に断絶が存在する場合には，次に紐付けすべきイベントデータから紐付けモデルにおいて次に紐付けデータのイベントデータと共通するデータが定義されたイベントデータまでの検索条件を生成する。
【０１５３】
ステップＳ３７において，データ保管部１２に保管されており，ステップＳ３４で紐付けられたイベントデータが紐付けモデルの最後に定義されたイベントデータであれば，出力部１９により，紐付けデータの先頭のイベントデータが保持されたシステム可視化サーバ１に，紐付けデータを転送し（ステップＳ４０），処理を終了する。
【０１５４】
ステップＳ５２において，マッチする紐付けデータが存在すれば，紐付け部１６により，取得された検索子に含まれるそれまでの紐付けデータと検出された紐付けデータとをもとに新たな紐付けデータを生成する（ステップＳ４６）。モデル解析部１７により，生成された紐付けデータと紐付けモデル記憶部１５に保持された紐付けモデルとのマッチングを行い，生成された紐付けデータがいずれかの紐付けモデルを網羅していれば（ステップＳ４７），その完成された紐付けデータをデータ保管部１２に保管し（ステップＳ４８），処理を終了する。生成された紐付けデータがまだ完成されたものでなければ（ステップＳ４７），出力部１９により，紐付けデータの先頭のイベントデータが保持されたシステム可視化サーバ１に，紐付けデータを転送し（ステップＳ４９），処理を終了する。
【０１５５】
ここで，図１０を用いて，イベントデータ紐付け部１０による断絶への対処を含むイベントデータ紐付け処理の流れが，どのように機能するかの具体的な例を説明する。なお，図１０の説明において，各ステップは，図１１，図１２のフローチャートのステップに対応する。
【０１５６】
図１０において，ＩＰアドレスｐの装置から発行されたイベントデータはシステム可視化サーバ１ａに入力され，ＩＰアドレスｑの装置から発行されたイベントデータはシステム可視化サーバ１ｂに入力され，ＩＰアドレスｒの装置から発行されたイベントデータはシステム可視化サーバ１ｃに入力され，ＩＰアドレスｓの装置から発行されたイベントデータはシステム可視化サーバ１ｄに入力される。
【０１５７】
各システム可視化サーバ１には，あらかじめ紐付けモデル（点線の枠内），
Ａ（ｘ）→Ｂ（ｘ，ｙ）→Ｃ（ｚ）→Ｄ（ｙ，ｚ）
が定義されている。
【０１５８】
システム可視化サーバ１ａは，イベントデータＡ（ｘ1 ）が入力されると，そのイベントデータを格納する（ステップＳ３０〜Ｓ３２）。イベントデータＡ（ｘ1 ）にマッチする検索条件を有する検索子はなく（ステップＳ３３），イベントデータＡ（ｘ1 ）は，紐付けモデルの最初に定義されているイベントデータの型Ａ（ｘ）にマッチするので（ステップＳ４１），イベントデータＡ（ｘ1 ）から最初の紐付けデータＡ（ｘ1 ）を生成する（ステップＳ４２）。紐付けモデルにおいて次に紐付けすべきイベントデータの型は，Ｂ（ｘ，ｙ）であるので，すでに決まっているデータｘ1 を用いて検索条件Ｂ（ｘ1 ，＊ｙ）を生成し，検索子｛Ｂ（ｘ1 ，＊ｙ），Ａ（ｘ1 ）｝を生成する（ステップＳ３８）。最後に紐付けられたイベントデータＡ（ｘ1 ）の到着地のＩＰアドレスがｑであるので，生成された検索子｛Ｂ（ｘ1 ，＊ｙ），Ａ（ｘ1 ）｝を，システム可視化サーバ１ｂに転送する（ステップＳ３９）。
【０１５９】
システム可視化サーバ１ｂは，検索子｛Ｂ（ｘ1 ，＊ｙ），Ａ（ｘ1 ）｝が入力されると，その検索子を格納する（ステップＳ３０，Ｓ５０，Ｓ５１）。この時点では，入力された検索子の検索条件Ｂ（ｘ1 ，＊ｙ）にマッチするイベントデータがないので（ステップＳ５２），処理を終了する。
【０１６０】
システム可視化サーバ１ｂは，イベントデータＢ（ｘ1 ，ｙ1 ）が入力されると，そのイベントデータを格納する（ステップＳ３０〜Ｓ３２）。イベントデータＢ（ｘ1 ，ｙ1 ）にマッチする検索条件Ｂ（ｘ1 ，＊ｙ）を有する検索子があるので（ステップＳ３３），その検索子が有する紐付けデータＡ（ｘ1 ）と，イベントデータＢ（ｘ1 ，ｙ1 ）とから，新たな紐付けデータＡ（ｘ1 ）→Ｂ（ｘ1 ，ｙ1 ）を生成する（ステップＳ３４）。この時点で，新たに生成された紐付けデータは，まだ紐付けモデルを網羅していない（ステップＳ３５）。また，紐付けデータの最後のイベントデータＢ（ｘ1 ，ｙ1 ）は，紐付けモデルで定義された最後のイベントデータの型にはマッチしていない（ステップＳ３７）。さらに，紐付けモデルにおいて次に紐付けすべきイベントデータの型は，Ｃ（ｚ）であるので，ここに断絶が存在する。紐付けモデルにおいてＣ（ｚ）の次に紐付けすべきイベントデータの型はＤ（ｙ，ｚ）であり，これまでの紐付けデータに共通するデータｙを含むので，すでに決まっているデータｙ1 を用いて，検索条件Ｃ（＊ｚ）→Ｄ（ｙ1 ，＊ｚ）を生成し，検索子｛Ｃ（＊ｚ）→Ｄ（ｙ1 ，＊ｚ），Ａ（ｘ1 ）→Ｂ（ｘ1 ，ｙ1 ）｝を生成する（ステップＳ３８）。最後に紐付けられたイベントデータＢ（ｘ1 ，ｙ1 ）の到着地のＩＰアドレスがｒであるので，生成された検索子｛Ｃ（＊ｚ）→Ｄ（ｙ1 ，＊ｚ），Ａ（ｘ1 ）→Ｂ（ｘ1 ，ｙ1 ）｝を，システム可視化サーバ１ｃに転送する（ステップＳ３９）。
【０１６１】
システム可視化サーバ１ｃは，検索子｛Ｃ（＊ｚ）→Ｄ（ｙ1 ，＊ｚ），Ａ（ｘ1 ）→Ｂ（ｘ1 ，ｙ1 ）｝が入力されると，その検索子を格納する（ステップＳ３０，Ｓ５０，Ｓ５１）。この時点では，入力された検索子の検索条件Ｃ（＊ｚ）→Ｄ（ｙ1 ，＊ｚ）にマッチする紐付けデータがないので（ステップＳ５２），処理を終了する。
【０１６２】
システム可視化サーバ１ｃは，イベントデータＣ（ｚ1 ）が入力されると，そのイベントデータを格納する（ステップＳ３０〜Ｓ３２）。イベントデータＣ（ｚ1 ）にマッチする検索条件を有する検索子はなく（ステップＳ３３），イベントデータＣ（ｚ1 ）は，紐付けモデルの断絶後の最初に定義されているイベントデータの型Ｃ（ｚ）にマッチするので（ステップＳ４１），イベントデータＣ（ｚ1 ）から最初の紐付けデータＣ（ｚ1 ）を生成する（ステップＳ４２）。紐付けモデルにおいて次に紐付けすべきイベントデータの型は，Ｄ（ｙ，ｚ）であるので，すでに決まっているデータｚ1 を用いて検索条件Ｄ（＊ｙ，ｚ1 ）を生成し，検索子｛Ｄ（＊ｙ，ｚ1 ），Ｃ（ｚ1 ）｝を生成する（ステップＳ３８）。最後に紐付けられたイベントデータＣ（ｚ1 ）の到着地のＩＰアドレスがｓであるので，生成された検索子｛Ｄ（＊ｙ，ｚ1 ），Ｃ（ｚ1 ）｝を，システム可視化サーバ１ｄに転送する（ステップＳ３９）。
【０１６３】
システム可視化サーバ１ｄは，検索子｛Ｄ（＊ｙ，ｚ1 ），Ｃ（ｚ1 ）｝が入力されると，その検索子を格納する（ステップＳ３０，Ｓ５０，Ｓ５１）。この時点では，入力された検索子の検索条件Ｄ（＊ｙ，ｚ1 ）にマッチするイベントデータがないので（ステップＳ５２），処理を終了する。
【０１６４】
システム可視化サーバ１ｄは，イベントデータＤ（ｙ1 ，ｚ1 ）が入力されると，そのイベントデータを格納する（ステップＳ３０〜Ｓ３２）。イベントデータＤ（ｙ1 ，ｚ1 ）にマッチする検索条件Ｄ（＊ｙ，ｚ1 ）を有する検索子があるので（ステップＳ３３），その検索子が有する紐付けデータＣ（ｚ1 ）と，イベントデータＤ（ｙ1 ，ｚ1 ）とから，新たな紐付けデータＣ（ｚ1 ）→Ｄ（ｙ1 ，ｚ1 ）を生成する（ステップＳ３４）。この時点で，新たに生成された紐付けデータは，まだ紐付けモデルを網羅していない（ステップＳ３５）。また，紐付けデータの最後のイベントデータＤ（ｙ1 ，ｚ1 ）は，紐付けモデルで定義された最後のイベントデータの型にマッチしてる（ステップＳ３７）。生成された紐付けデータＣ（ｚ1 ）→Ｄ（ｙ1 ，ｚ1 ）を，紐付けデータの先頭のイベントデータＣ（ｚ1 ）を保管しているシステム可視化サーバ１ｃに転送する（ステップＳ４０）。
【０１６５】
システム可視化サーバ１ｃは，紐付けデータＣ（ｚ1 ）→Ｄ（ｙ1 ，ｚ1 ）が入力されると，その紐付けデータを格納する（ステップＳ１０，Ｓ４３，Ｓ４４）。紐付けデータＣ（ｚ1 ）→Ｄ（ｙ1 ，ｚ1 ）にマッチする検索条件Ｃ（＊ｚ）→Ｄ（ｙ1 ，＊ｚ）を有する検索子があるので（ステップＳ４５），その検索子が有する紐付けデータＡ（ｘ1 ）→Ｂ（ｘ1 ，ｙ1 ）と，紐付けデータＣ（ｚ1 ）→Ｄ（ｙ1 ，ｚ1 ）とから，新たな紐付けデータＡ（ｘ1 ）→Ｂ（ｘ1 ，ｙ1 ）→Ｃ（ｚ1 ）→Ｄ（ｙ1 ，ｚ1 ）を生成する（ステップＳ４６）。この時点で，新たに生成された紐付けデータは紐付けモデルを網羅するので（ステップＳ４７），目的とする紐付けデータが完成となる。完成された紐付けデータＡ（ｘ1 ）→Ｂ（ｘ1 ，ｙ1 ）→Ｃ（ｚ1 ）→Ｄ（ｙ1 ，ｚ1 ）を保存する（ステップＳ４８）。
【０１６６】
このように，断絶がある場合でも，システム可視化サーバ１の処理や，システム可視化サーバ１間の通信に大きな無駄を発生させずに，イベントデータ紐付け処理を行うことができる。
【０１６７】
図１３は，本実施の形態による複数の断絶がある場合のイベントデータ紐付け処理の例を示す図である。ここまで説明した本実施の形態による断絶への対処を含むイベントデータ紐付け処理を用いれば，複数の断絶が存在する場合でも，十分対処可能である。ここでは，図１３を用いて，複数の断絶がある場合のイベントデータ紐付け処理の例を説明する。なお，ここまで詳細に説明した断絶がある場合のイベントデータ紐付け処理を適用するだけであるので，図１３の説明は簡潔に留める。
【０１６８】
図１３において，ＩＰアドレスｐの装置から発行されたイベントデータはシステム可視化サーバ１ａに入力され，ＩＰアドレスｑの装置から発行されたイベントデータはシステム可視化サーバ１ｂに入力され，ＩＰアドレスｒの装置から発行されたイベントデータはシステム可視化サーバ１ｃに入力され，ＩＰアドレスｓの装置から発行されたイベントデータはシステム可視化サーバ１ｄに入力され，ＩＰアドレスｔの装置から発行されたイベントデータはシステム可視化サーバ１ｅに入力され，ＩＰアドレスｕの装置から発行されたイベントデータはシステム可視化サーバ１ｆに入力される。
【０１６９】
各システム可視化サーバ１には，あらかじめ紐付けモデル（点線の枠内），
Ａ（ｇ）→Ｂ（ｇ，ｈ）→Ｃ（ｉ）→Ｄ（ｈ，ｉ，ｊ）→Ｅ（ｋ）→Ｆ（ｊ，ｋ）
が定義されている。
【０１７０】
システム可視化サーバ１ａは，イベントデータＡ（ｇ1 ）を入力し，検索子｛Ｂ（ｇ1 ，＊ｈ），Ａ（ｇ1 ）｝を生成して，システム可視化サーバ１ｂに送る。
【０１７１】
システム可視化サーバ１ｂは，検索子｛Ｂ（ｇ1 ，＊ｈ），Ａ（ｇ1 ）｝を保持しておき，イベントデータＢ（ｇ1 ，ｈ1 ）を入力すると，次に断絶があるので，検索子｛Ｃ（＊ｉ）→Ｄ（ｈ1 ，＊ｉ，＊ｊ），Ａ（ｇ1 ）→Ｂ（ｇ1 ，ｈ1 ）｝を生成して，システム可視化サーバ１ｃに送る。
【０１７２】
システム可視化サーバ１ｃは，検索子｛Ｃ（＊ｉ）→Ｄ（ｈ1 ，＊ｉ，＊ｊ），Ａ（ｇ1 ）→Ｂ（ｇ1 ，ｈ1 ）｝を保持しておく。システム可視化サーバ１ｃは，イベントデータＣ（ｉ1 ）を入力し，検索子｛Ｄ（＊ｈ，ｉ1 ，＊ｊ），Ｃ（ｉ1 ）｝を生成して，システム可視化サーバ１ｄに送る。
【０１７３】
システム可視化サーバ１ｄは，検索子｛Ｄ（＊ｈ，ｉ1 ，＊ｊ），Ｃ（ｉ1 ）｝を保持しておき，イベントデータＤ（ｈ1 ，ｉ1 ，ｊ1 ）を入力すると，次に断絶があるので，検索子｛Ｅ（＊ｋ）→Ｆ（ｊ1 ，＊ｋ），Ｃ（ｉ1 ）→Ｄ（ｈ1 ，ｉ1 ，ｊ1 ）｝を生成して，システム可視化サーバ１ｅに送る。
【０１７４】
システム可視化サーバ１ｅは，検索子｛Ｅ（＊ｋ）→Ｆ（ｊ1 ，＊ｋ），Ｃ（ｉ1 ）→Ｄ（ｈ1 ，ｉ1 ，ｊ1 ）｝を保持しておく。システム可視化サーバ１ｅは，イベントデータＥ（ｋ1 ）を入力し，検索子｛Ｆ（＊ｊ，ｋ1 ），Ｅ（ｋ1 ）｝を生成して，システム可視化サーバ１ｆに送る。
【０１７５】
システム可視化サーバ１ｆは，検索子｛Ｆ（＊ｊ，ｋ1 ），Ｅ（ｋ1 ）｝を保持しておき，イベントデータＦ（ｊ1 ，ｋ1 ）を入力すると，イベントデータＦ（ｊ1 ，ｋ1 ）紐付けモデルの最終イベントデータの型にマッチするので，紐付けデータＥ（ｋ1 ）→Ｆ（ｊ1 ，ｋ1 ）を生成して，システム可視化サーバ１ｅに送る。
【０１７６】
システム可視化サーバ１ｅは，紐付けデータＥ（ｋ1 ）→Ｆ（ｊ1 ，ｋ1 ）を入力すると，保持された検索子｛Ｅ（＊ｋ）→Ｆ（ｊ1 ，＊ｋ），Ｃ（ｉ1 ）→Ｄ（ｈ1 ，ｉ1 ，ｊ1 ）｝とあわせて，紐付けデータＣ（ｉ1 ）→Ｄ（ｈ1 ，ｉ1 ，ｊ1 ）→Ｅ（ｋ1 ）→Ｆ（ｊ1 ，ｋ1 ）を生成し，まだ紐付けモデルの全体が網羅されていないので，紐付けデータＣ（ｉ1 ）→Ｄ（ｈ1 ，ｉ1 ，ｊ1 ）→Ｅ（ｋ1 ）→Ｆ（ｊ1 ，ｋ1 ）をシステム可視化サーバ１ｃに送る。
【０１７７】
システム可視化サーバ１ｃは，紐付けデータＣ（ｉ1 ）→Ｄ（ｈ1 ，ｉ1 ，ｊ1 ）→Ｅ（ｋ1 ）→Ｆ（ｊ1 ，ｋ1 ）を入力すると，保持された検索子｛Ｃ（＊ｉ）→Ｄ（ｈ1 ，＊ｉ，＊ｊ），Ａ（ｇ1 ）→Ｂ（ｇ1 ，ｈ1 ）｝とあわせて，紐付けデータＡ（ｇ1 ）→Ｂ（ｇ1 ，ｈ1 ）→Ｃ（ｉ1 ）→Ｄ（ｈ1 ，ｉ1 ，ｊ1 ）→Ｅ（ｋ1 ）→Ｆ（ｊ1 ，ｋ1 ）を生成する。これで紐付けモデルの全体が網羅され，目的とする紐付けデータが完成される。
【０１７８】
このように，複数の断絶がある場合でも，システム可視化サーバ１の処理や，システム可視化サーバ１間の通信に大きな無駄を発生させずに，イベントデータ紐付け処理を行うことができる。
【０１７９】
以上説明したシステム可視化サーバ１のイベントデータ紐付け部１０による処理は，コンピュータとソフトウェアプログラムとによって実現することができ，そのプログラムをコンピュータ読み取り可能な記録媒体に記録することも，ネットワークを通して提供することも可能である。
【０１８０】
以上，本実施の形態について説明したが，本発明は本実施の形態に限られるものではない。例えば，本実施の形態では，収集されたイベントデータを，その出発地となる装置（例えば，ＩＰアドレス）ごとに，各システム可視化サーバ１に分散配置しているが，イベントデータの出発地となる装置ごとだけではなく，さらにイベントデータのタイプ（種別：プロトコルなど）ごとに（例えば，ＩＰアドレス＋ポートＮｏ．ごとに），各システム可視化サーバ１に分散配置するようにしてもよい。例えば，イベントデータの出発地となる装置＋イベントデータのタイプにハッシュ関数を用いてイベントデータを分散配置すれば，よりバランスよく各システム可視化サーバ１に分散することが可能となる。
【図面の簡単な説明】
【０１８１】
【図１】本実施の形態によるシステム可視化構成の概略を示す図である。
【図２】本実施の形態の分散並列処理によるイベントデータ紐付け手法の概要を説明する図である。
【図３】本実施の形態によるイベントデータ紐付けの具体的な例を示す図である。
【図４】本実施の形態によるシステム可視化サーバの構成例を示す図である。
【図５】本実施の形態による各データの構成例を示す図である。
【図６】本実施の形態によるイベントデータ紐付け処理フローチャートである。
【図７】本実施の形態によるイベントデータ紐付け処理の例を示す図である。
【図８】断絶が発生するイベントデータの例を示す図である。
【図９】断絶が存在する場合の問題点を説明する図である。
【図１０】本実施の形態による断絶がある場合のイベントデータ紐付け処理の例を示す図である。
【図１１】本実施の形態による断絶への対処を含むイベントデータ紐付け処理フローチャートである。
【図１２】本実施の形態による断絶への対処を含むイベントデータ紐付け処理フローチャートである。
【図１３】本実施の形態による複数の断絶がある場合のイベントデータ紐付け処理の例を示す図である。
【図１４】システム可視化の技術の概要を説明する図である。
【図１５】システム可視化によって得られた統計情報の表示例を示す図である。
【図１６】システム可視化の技術における紐付けの例を説明する図である。
【図１７】イベントデータの分散配置の課題を説明する図である。
【図１８】イベントデータの分散処理における通信コストの課題を説明する図である。
【符号の説明】
【０１８２】
１  システム可視化サーバ
２  データ分散配置装置
３  可視化対象システム
１０  イベントデータ紐付け部
１１  入力部
１２  データ保管部
１３  検索子格納部
１４  紐付け判定部
１５  紐付けモデル記憶部
１６  紐付け部
１７  モデル解析部
１８  検索子生成部
１９  出力部
【図１】
2009277023.tif 000003
【図２】
2009277023.tif 000004
【図３】
2009277023.tif 000005
【図４】
2009277023.tif 000006
【図５】
2009277023.tif 000007
【図６】
2009277023.tif 000008
【図７】
2009277023.tif 000009
【図８】
2009277023.tif 000010
【図９】
2009277023.tif 000011
【図１０】
2009277023.tif 000012
【図１１】
2009277023.tif 000013
【図１２】
2009277023.tif 000014
【図１３】
2009277023.tif 000015
【図１４】
2009277023.tif 000016
【図１５】
2009277023.tif 000017
【図１６】
2009277023.tif 000018
【図１７】
2009277023.tif 000019
【図１８】
2009277023.tif 000020