(57)【特許請求の範囲】
【請求項１】
コンピュータに、
入力されたデータを該データに付与された識別情報により振り分ける転送装置によって振り分けられた該データについて、該識別情報に対応付けられたパターン集合に含まれるパターンの検知処理を該識別情報毎に行う複数のサーバ装置のそれぞれから、該検知処理に関する負荷値を該識別情報単位で取得し、
前記複数のサーバ装置のうち第１サーバ装置より取得した前記負荷値が所定の許容範囲を超えた場合、該第１サーバ装置から前記複数のサーバ装置のうち第２サーバ装置へ、前記識別情報と単一の該識別情報に対応付けられた前記パターン集合から切り出した一部のパターンとの組み合わせを、該第１サーバ装置と該第２サーバ装置との該負荷値がそれぞれ該許容範囲内であるか否かに応じて、前記組み合わせ単位で移動させる
処理を実行させることを特徴とする分散処理プログラム。
【請求項２】
前記移動させる場合において、前記第１サーバ装置より取得した該第１サーバ装置の前記検知処理に関する負荷値のうちの検知負荷の負荷値が第１許容範囲を超えた場合であって、該第１サーバ装置から前記第２サーバ装置へ、前記組み合わせ単位を移動させて該第１サーバ装置と該第２サーバ装置との該検知負荷の負荷値がそれぞれ該第１許容範囲内に収まる場合、該第２サーバ装置へ該組み合わせ単位を移動する旨を該第１サーバ装置に指示する
ことを特徴とする請求項１に記載の分散処理プログラム。
【請求項３】
前記移動を行っても前記第１サーバ装置と前記第２サーバ装置の少なくとも１つで、
前記検知処理に関する負荷値のうちの検知負荷の負荷値が前記第１許容範囲を超えた場合か、
前記検知処理に関する負荷値のうちの通信負荷の負荷値が第２許容範囲を超えた場合か、または、
前記複数のサーバ装置のそれぞれより取得したそれぞれのサーバ装置の通信負荷の合計が第３許容範囲を超えた場合、
前記サーバ装置の追加を通知する
ことを特徴とする請求項２に記載の分散処理プログラム。
【請求項４】
入力されたデータを該データに付与された識別情報により振り分ける転送装置によって振り分けられた該データについて、該識別情報に対応付けられたパターン集合に含まれるパターンの検知処理を該識別情報毎に行う複数のサーバ装置のそれぞれから、該検知処理に関する負荷値を該識別情報単位で取得する取得部と、
前記複数のサーバ装置のうち第１サーバ装置より取得した前記負荷値が所定の許容範囲を超えた場合、該第１サーバ装置から前記複数のサーバ装置のうち第２サーバ装置へ、前記識別情報と単一の該識別情報に対応付けられた前記パターン集合から切り出した一部のパターンとの組み合わせを、該第１サーバ装置と該第２サーバ装置との該負荷値がそれぞれ該許容範囲内であるか否かに応じて、前記組み合わせ単位で移動させる移動制御部と、
を備えることを特徴とする分散処理管理装置。
【請求項５】
コンピュータが、
入力されたデータを該データに付与された識別情報により振り分ける転送装置によって振り分けられた該データについて、該識別情報に対応付けられたパターン集合に含まれるパターンの検知処理を該識別情報毎に行う複数のサーバ装置のそれぞれから、該検知処理に関する負荷値を該識別情報単位で取得し、
前記複数のサーバ装置のうち第１サーバ装置より取得した前記負荷値が所定の許容範囲を超えた場合、該第１サーバ装置から前記複数のサーバ装置のうち第２サーバ装置へ、前記識別情報と単一の該識別情報に対応付けられた前記パターン集合から切り出した一部のパターンとの組み合わせを、該第１サーバ装置と該第２サーバ装置との該負荷値がそれぞれ該許容範囲内であるか否かに応じて、前記組み合わせ単位で移動させる
処理を実行することを特徴とする分散処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、分散処理に関する。
【背景技術】
【０００２】
リアルタイムに流れてくる大量データから、様々な外部の事象（イベント）毎に、所定のパターンを検知して出力するリアルタイム検知技術がある。このようなリアルタイム検知技術は、例えば、金融、医療、セキュリティなどの分野で利用される情報処理システムで用いられる。
【０００３】
このような大量のイベントデータを格納・処理する方法の１つとして、分散Key-Value Store（以下、KVS）技術がある（例えば、非特許文献１）。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】Giuseppe DeCandia、外８名“Dynamo:Amazon's Highly Available Key-value Store”ACM SIGOPS Operating Systems Review - SOSP '07 , Volume 41 Issue 6, December 2007 Pages 205-220
【発明の概要】
【発明が解決しようとする課題】
【０００５】
検知対象のパターンは複数あり、複数パターンの検知を高速に行うために検知処理を複数のサーバに分散して行う技術がある。このような分散検知処理として、例えば、入力されたイベントデータ（入力イベントデータ）のキーに応じて、イベントデータをサーバに振り分けたり、イベントデータのパターン毎にイベントデータを振り分けることが考えられる。
【０００６】
しかしながら、上述した分散検知処理では、ある入力イベントデータを大量に受信した場合やパターンの動的変化が発生した場合に、いずれかのサーバやいずれかのサーバに対する通信に負荷が偏ってしまい、パターン検知処理の負荷分散が効率よくできていない。
【０００７】
本発明は、一側面として、入力データのパターン検知分散処理において、分散する負荷の平準化精度を向上させる技術を提供する。
【課題を解決するための手段】
【０００８】
本発明の一側面にかかる分散処理プログラムは、コンピュータに、次の処理を実行させる。すなわち、コンピュータは、入力されたデータをデータに付与される識別情報により振り分ける転送装置によって振り分けられたデータについてのパターンの検知処理を識別情報毎に行う複数のサーバ装置のそれぞれから、検知処理に関する負荷値を識別情報単位で取得する。コンピュータは、複数のサーバ装置のうち第１サーバ装置より取得した負荷値が所定の許容範囲を超えた場合、次を行う。つまり、コンピュータは、第１サーバ装置から複数のサーバ装置のうち第２サーバ装置へ、識別情報と識別情報に対応する一パターンとの組み合わせを、第１サーバ装置と第２サーバ装置との負荷値がそれぞれ許容範囲内であるか否かに応じて、組単位で移動させる。
【発明の効果】
【０００９】
本発明によれば、一側面として、入力データのパターン検知分散処理において、分散する負荷の平準化精度を向上させることができる。
【図面の簡単な説明】
【００１０】
【図１】リアルタイム検知システムの一例を示す図である。
【図２】入力イベント分散処理システムの一例を示す図である。
【図３】パターン分散処理システムの一例を示す図である。
【図４】本実施形態における分散処理管理装置を示す図である。
【図５】本実施形態における負荷移動制御処理を説明するための図である。
【図６】本実施形態におけるイベント検知システムの一例を示す図である。
【図７】本実施形態におけるイベント検知システムで用いられるルーティングテーブル、負荷テーブル、及び全体負荷テーブルの一例を示す図である。
【図８】本実施形態における監視対象が、対応する条件を充足するか否かに応じて、方式１〜４を実行するフローを示す図である。
【図９】本実施形態における方式１を説明するための図である。
【図１０】本実施形態における方式２を説明するための図である。
【図１１】本実施形態における方式３を説明するための図である。
【図１２】本実施形態における管理サーバの移動管理部による方式１を用いた負荷移動処理のフローを示す図である。
【図１３】本実施形態における移動後条件判定処理のフローを示す図である。
【図１４】本実施形態における管理サーバの移動管理部による方式２を用いた負荷移動処理のフローを示す図である。
【図１５】本実施形態における管理サーバの移動管理部による方式３を用いた負荷移動処理のフローを示す図である。
【図１６】本実施形態における管理サーバの移動管理部による方式４を用いた負荷移動処理のフローを示す図である。
【図１７】本実施形態におけるプログラムを実行するコンピュータのハードウェア環境の構成ブロック図の一例である。
【発明を実施するための形態】
【００１１】
パターン数は、入力イベントデータの量やパターンの抽出処理の内容に応じて、増減する。例えば、ビッグデータの場合、入力イベントデータ量やパターン数も大規模であることから単一サーバでは限界があるため、複数のサーバを用いて分散処理が行われることが多い。一方で、コスト面から負荷に応じた台数のサーバを使用することも重要である。
【００１２】
したがって、入力イベントデータや、パターンの増減に合わせて動的に負荷分散を可能とする、低レイテンシや高スループットを維持する分散処理機構が要求される。
【００１３】
図１は、リアルタイム検知システムの一例を示す。リアルタイム検知システムでは、学習サーバ１は、学習処理２により通信ネットワーク上を流れるイベントデータのパターンを検知し、その検知したパターンを抽出する。図１では、説明の便宜上、イベントデータは、ある特定のイベントのイベントデータであるとする。その学習処理の結果、学習サーバ１は、抽出したパターンＡ，Ｂ，Ｃ，・・・を検知サーバ３へ送る。ここで、データのパターンとは、例えば、パケットデータのビット列のパターン、パケットのサイズのパターン、時系列で観察した際のデータの電圧の波形パターン、サーバに対するアクセス挙動のパターン等の様々なパターンを含む。
【００１４】
検知サーバ３には、転送サーバ５を介して、イベント毎に発生し、通信ネットワーク上をリアルタイムで流れるイベントデータが入力される。ここで、入力されるイベントデータには、例えば、イベントを特定するイベント種別と、イベント種別で示されるイベント毎に付与される識別値とより形成される一意の識別情報が付与されている。
【００１５】
イベント種別とは、イベントデータの種類のことであり、例えば温度センサデータ、分電盤の電力センサデータ、端末の通信データを示す。イベント種別が異なると、イベントデータの属性も異なる。イベントデータが温度センサデータである場合は、例えば、その属性は、（機器ＩＤ、温度）であり、イベントデータが通信データである場合は、例えば、その属性は、端末ＩＤ、接続先ＩＰアドレス、通信量である。
【００１６】
また、識別値とは、イベント種別で示されるイベントのうちの特定の値であって、イベントデータの属性のうち、どの属性を用いて集計等の処理を行うかによって決定されるいずれか一つの属性の値である。例えば、イベントデータが属性（機器ＩＤ、温度）を有する温度センサデータであって、機器ＩＤ毎に１時間分の温度平均値を集計する場合、識別値は、機器ＩＤとなる。
【００１７】
検知サーバ３は、検知処理４により、その入力されたイベントデータと、学習サーバ１より提供された全てのパターンとをマッチングする。
【００１８】
しかしながら、全ての入力イベントデータに対し、全てのパターンと検知処理（マッチング）を行うと、ネットワーク、中央処理演算装置（ＣＰＵ）、メモリ等のネックを引き起こし、レイテンシを損なうおそれがある。したがって、全ての入力イベントデータに対し、全てのパターンと検知処理（マッチング）を行う場合、検知サーバ単体では、好ましくない。そこで、図２に示すように、複数の検知サーバでパターンマッチング処理を行うことが考えられる。
【００１９】
図２は、入力イベント分散処理システムの一例を示す。図２では、説明の便宜上、イベントデータは、ある特定のイベントのイベントデータであり、イベント種別は考慮しない。イベントデータに付与される識別値を分散キー値と定義する。入力イベント分散処理システムでは、各検知サーバ３には、分散キー値に応じたパターンが格納されている。転送サーバ５は、通信ネットワーク上を流れるイベントデータを受信すると、イベントデータに付与されたイベント種別毎の分散キー値に応じて、そのイベントデータをいずれかの検知サーバ３に振り分ける。
【００２０】
各検知サーバ３は、自身が担当するイベントの分散キー値に応じたデータと、予め保持するパターンとのパターンマッチングを行う。これにより、入力イベントデータ量の増加がしても、検知サーバを増やして、パターンマッチング処理の分散並列処理が可能になる。
【００２１】
しかしながら、あるイベントの分散キー値に対するパターン数が増加すると、パターンマッチング処理量が増加するので、レイテンシが増加する。このように、分散キー値を用いた分散並列処理では、検知サーバ３にかかる負荷に偏りが生じ、負荷の平準化の妨げになり、場合によっては、破綻する検知サーバもある。そこで、図３に示すように、各検知サーバが保持するパターン数を均衡にすることが考えられる。
【００２２】
図３は、パターン分散処理システムの一例を示す。図３では、説明の便宜上、イベントデータは、ある特定のイベントのイベントデータであり、イベント種別は考慮しない。パターン分散処理システムでは、各検知サーバ３が保持するパターン数は、均等化されている。このように、パターン毎で分散させることにより、図２のパターン数の偏りには対処可能である。
【００２３】
パターン分散処理システムでは、各検知サーバ３は、自身が保持するパターンに対応するイベントの分散キー値に対応するイベントデータのマッチング処理を担当することになる。そのため、検知サーバ３によっては、その担当する分散キー値が複数になる場合がある。また、同じ分散キー値を担当する検知サーバ３が複数になることから、転送サーバ５は、入力されたイベントデータをマルチキャストにて全ての検知サーバ３に送信する。
【００２４】
そのため、特定のパターンに対する分散キー値数の偏りが発生するおそれもあり、さらにマルチキャストによる通信トラフィックも増加する。このように、パターン分散処理システムでは、ネットワークネックとなり、スケーラビリティを損なうことが考えられる。
【００２５】
そこで、本実施形態では、入力イベントデータ及びパターンの動的な増減に対しても、負荷平準化で、スケーラビリティを維持した分散を行うことについて説明する。
【００２６】
図４は、本実施形態における分散処理管理装置を示す。分散処理管理装置１１は、取得部１２、移動制御部１３を含む。分散処理管理装置１１の一例として、管理サーバ３６が挙げられる。
【００２７】
取得部１２は、複数のサーバ装置１５のそれぞれから、検知処理に関する負荷値を識別情報単位で取得する。複数のサーバ装置１５は、転送装置１４によって振り分けられたデータについてのパターンの検知処理を識別情報毎に行う。転送装置１４は、入力されたデータをデータに付与される識別情報により振り分ける。複数のサーバ装置１５の一例として、検知サーバ４１が挙げられる。転送装置１４の一例として、転送サーバ３３が挙げられる。取得部１２の一例として、移動管理部３７が挙げられる。識別情報は、一意の単一のデータ項目であっても、本実施形態のイベント種別と分散キー値との組み合わせのように、複数のデータ項目を複合して一意にしたものであってもよい。
【００２８】
移動管理部３７は、複数のサーバ装置１５のうち第１サーバ装置１５ａより取得した負荷値が所定の許容範囲を超えた場合、次の処理を行う。すなわち、移動管理部３７は、第１サーバ装置１５ａから複数のサーバ装置１５のうち第２サーバ装置１５ｂへ、識別情報と識別情報に対応する一パターンとの組み合わせを、組単位で移動させる。その識別情報と識別情報に対応する一パターンとの組み合わせの移動は、第１サーバ装置１５ａと第２サーバ装置１５ｂとの負荷値がそれぞれ許容範囲内であるか否かに応じて、行われる。移動制御部１３の一例として、移動管理部３７が挙げられる。
【００２９】
このように構成することにより、入力データのパターン検知分散処理において、分散する負荷の平準化精度を向上させることができる。
【００３０】
移動制御部１３は、第１サーバ装置１５ａより取得した第１サーバ装置１５ａの検知負荷の負荷値が第１許容範囲（後述する第１条件に対応する）を超えた場合に、次を行う。移動制御部１３は、第１サーバ装置１５ａから第２サーバ装置１５ｂへ、一または複数組の組み合わせを移動させて第１サーバ装置１５ａと第２サーバ装置１５ｂとの検知負荷の負荷値がそれぞれ第１許容範囲内に収まるか否かを判定する。第１サーバ装置１５ａと第２サーバ装置１５ｂとの検知負荷の負荷値がそれぞれ第１許容範囲内に収まる場合、移動制御部１３は、第２サーバ装置１５ｂへ一または複数組の組み合わせを移動する旨を第１サーバ装置に指示する。
【００３１】
このように構成することにより、識別情報とパターンとの組み合わせを移動単位とすることができるので、移動単位の粒度を細かくすることができる。その結果、より柔軟に負荷（各サーバの検知処理コスト）の分散の平準化の調整を行うことができるので、平準化の精度を向上させることができる。また、第１サーバ装置１５ａより取得した負荷値が許容範囲を超えた場合に、負荷の平準化の調整が実行されるので、動的に負荷分散を行うことができる。
【００３２】
移動制御部１３は、さらに、第一条件として、第１サーバ装置１５ａより取得した第１サーバ装置１５ａの通信負荷の負荷値が第２許容範囲（後述する第二条件に対応する）を超えた場合、次を行う。移動制御部１３は、第１サーバ装置１５ａから第２サーバ装置１５ｂへ、第１サーバ装置１５ａが処理する識別情報に対応する全パターンを移動させて第１サーバ装置１５ａと第２サーバ装置１５ｂとの通信負荷の負荷値がそれぞれ第２許容範囲内に収まるか判定する。第１サーバ装置１５ａと第２サーバ装置１５ｂとの通信負荷の負荷値がそれぞれ第２許容範囲内に収まる場合、移動制御部１３は、第２サーバ装置１５ｂへ識別情報と識別情報に対応する全パターンを移動する旨を第１サーバ装置１５ａに指示する。
【００３３】
このように構成することにより、負荷（各サーバの通信処理コスト）の分散の平準化の調整を行うことができる。
【００３４】
移動制御部１３は、さらに、複数のサーバ装置１５のそれぞれより取得したそれぞれのサーバ装置１５の負荷値の合計が第３許容範囲（後述する第三条件に対応する）を超えた場合、次を行う。第１サーバ装置１５ａは、検知処理に係る負荷が最も小さい検知処理を行うと仮定する。移動制御部１３は、第１サーバ装置１５ａの負荷が最も小さい検知処理で用いる検知対象のパターンを第２サーバ装置１５ｂへ移動させて第１サーバ装置１５ａと第２サーバ装置１５ｂとの検知負荷の負荷値がそれぞれ第１許容範囲内に収まるか否かを判定する。移動制御部１３は、第１サーバ装置１５ａと第２サーバ装置１５ｂとの検知負荷の負荷値がそれぞれ第１許容範囲内に収まる場合、第２サーバ装置１５ｂへ一または複数組の組み合わせを移動する旨を第１サーバ装置１５ａに指示する。
【００３５】
このように構成することにより、全体のネットワーク負荷を低減させることができる。
移動制御部１３は、移動対象の組に含まれるパターンのうち、第２サーバ装置１５ｂが有しているパターンについて、パターンの実データを移動させずにパターンの識別情報を移動させる。一方、移動制御部１３は、移動対象の組に含まれるパターンのうち、第２サーバ装置が有していないパターンについて、パターンの実データ及びパターンの識別情報を移動させる。
【００３６】
このように構成することにより、移動対象の組に含まれるパターンのうち、第２サーバ装置１５ｂが有しているパターンについて、パターンの実データを移動先サーバに送らなくてよいので、通信コストを低減させることができる。
【００３７】
移動制御部１３は、さらに、一または複数組の組み合わせを第２サーバ装置１５ｂへ移動させて第１サーバ装置１５ａと第２サーバ装置１５ｂとの負荷値が許容範囲を超える場合、サーバ装置１５の追加または削減を通知する。
【００３８】
このように構成することにより、既存のサーバでの負荷の許容範囲を超えて平準化を図れなくなった場合、サーバ数を動的に増減させて、スケーラビリティを維持した負荷分散を行うことができる。
【００３９】
図５は、本実施形態における負荷移動制御処理を説明するための図である。図５では、説明の便宜上、イベントデータは、ある特定のイベントのイベントデータであり、イベント種別は考慮しない。
【００４０】
転送サーバ２４は、リアルタイムで受信したイベントデータにイベント毎に付与された分散キー値に基づいて、あるイベントの分散キー値に対応する検知サーバ２１へユニキャストで、そのイベントを送信する。
【００４１】
各検知サーバ２１ａ，２１ｂには、担当するあるイベントの分散キー値と、そのイベントの分散キー値に対応する検知すべきパターン集合２２（２２ａ，２２ｂ，２２ｃ）とが格納されている。あるイベントの同じ分散キー値であっても、パターン集合の内容は、検知サーバ２１（２１ａ，２１ｂ）毎に異なる。例えば、検知サーバ２１ａは、あるイベントの分散キー値＝１が付与されたイベントデータに対して、パターン（Ａ，Ｂ，Ｃ，Ｄ，Ｅ，Ｆ，Ｇ）２２ａを用いて、パターンの検知を行う。
【００４２】
また、例えば、ある検知サーバにおいて、あるイベントについて、異なる分散キー値に対応するパターン集合内に、双方同じパターンを保持する場合は、パターンの実データは一つ（共有）でもいい。例えば、検知サーバ２１ａにおいて、パターン集合２２ａとパターン集合２２ｂとでは、パターンＡ，Ｂ，Ｃ，Ｄ，Ｅ，Ｆが共通しているので、検知サーバ２１ａはこれらのパターンデータをそれぞれ１つづつ保持しておけばよい。
【００４３】
本実施形態におけるシステムにおいて、検知サーバ２１ａに負荷が偏った場合、その負荷を軽減するために、検知サーバ２１ａで処理しているパターンマッチング処理の一部、すなわち負荷を他の検知サーバに移すことが考えられる。
【００４４】
しかしながら、パターン集合単位で他の検知サーバにパターンマッチング処理を移行すると、移行先の検知サーバでの処理許容量を超えてしまい、その移行先の検知サーバに負荷が偏ることになることが想定される。
【００４５】
そこで、検知サーバ２１ａからパターン集合の一部を切り出し、その切り出したパターン集合の一部と、そのパターンに対応するイベントの分散キー値との組み合わせを他の検知サーバ２１ｂに移動させることが考えられる。図５の場合、切り出されたイベントのパターン集合の一部２３（パターンＢ，Ｈ）と、そのイベントの分散キー値＝４とが、検知サーバ２１ａから検知サーバ２１ｂへ移行される。これにより、検知サーバ２１ａだけでなく、検知サーバ２１ｂも、分散キー値＝４が付与されたあるイベントについて、パターンマッチング処理を行うことができる。
【００４６】
この場合、転送サーバ２４は、リアルタイムで受信したあるイベントのイベントデータに付与された識別値（分散キー値）が“４”の場合、全検知サーバ２１へマルチキャストでそのイベントを送信する。あるイベントの分散キー値＝４を担当する検知サーバ２１ａ，２１ｂは、転送サーバ２４からマルチキャストで送信された、分散キー値＝４が付与されたあるイベントのイベントデータを受信すると、そのイベントの分散キー値に対応するパターン集合を用いてパターンマッチング処理を行う。
【００４７】
なお、あるイベントについて、同一の分散キー値を担当する検知サーバが複数になると、上述の通り、マルチキャストでイベントが送信されるので、ネットワークのトラフィックが増加する。そのため、パターン集合の一部または全部を移行する前に、トラフィック増加の影響を考慮したほうがよい。
【００４８】
このように、本実施形態では、入力イベントデータのイベント種別と、分散キー値とを識別情報とし、その識別情報とその識別情報に対応するパターンを１つの組とし、この組を移動単位として、どの組をどこに移動すれば最適な分散処理が実現できるかを制御する。これにより、入力イベントデータのイベント種別と識別値とパターンとの組み合わせを移動処理単位とすることによって、より柔軟な（効果的・効率的な平準化を実現する）動的負荷分散を行い、低レイテンシ及び高スループットを維持することが可能となる。すなわち、各検知サーバの負荷を効果的に平準化することができる。また、入力イベントデータのイベント種別と識別値とパターンとの組み合わせを移動させる場合であって、移動先に既に同一のパターンデータがある場合には、そのパターンデータを送る必要がない。そのため、平準化コストを低減させることができ、効率的な平均化を実現することができる。
【００４９】
以下に、本実施形態の詳細について説明する。
図６は、本実施形態におけるイベント検知システムの一例を示す。イベント検知システム（以下では、「システム」と表記する場合もある）３０は、学習サーバ３１、転送サーバ３３、管理サーバ３６、複数の検知サーバ４１（４１ａ，４１ｂ，・・・）を含む。学習サーバ３１、転送サーバ３３、管理サーバ３６、複数の検知サーバ４１（４１ａ，４１ｂ，・・・・）は、インターネット、ＬＡＮ（Local Area Network）等の通信ネットワーク４６で接続されている。学習サーバ３１、転送サーバ３３、管理サーバ３６、複数の検知サーバ４１（４１ａ，４１ｂ，・・・・）は、それぞれ、プロセッサ、メモリ、及び記憶装置、通信インターフェース等を含む。
【００５０】
学習サーバ３１は、抽出部３２を含む。抽出部３２は、学習サーバ３１のプロセッサにより実現される。抽出部３２は、通信ネットワーク４６を介して受信したイベントデータまたは既に定義済みの情報から、検知すべきパターンを抽出し、抽出したパターンと、抽出したパターンのイベント種別及び分散キー値を管理サーバ３６へ通知する。また、抽出部３２は、検知から外すパターンも管理サーバ３６に通知する。
【００５１】
管理サーバ３６は、移動管理部３７、全体負荷テーブル３８、詳細負荷テーブル３９，閾値情報４０を含む。全体負荷テーブル３８、詳細負荷テーブル３９、閾値情報４０は、管理サーバ３６のメモリまたは記憶装置に格納されている。全体負荷テーブル３８は、各検知サーバ４１（４１ａ，４１ｂ，・・・・）から送信された検知サーバ４１単位の負荷情報（sum(Tproc), sum(Tcomm)）を格納する。
【００５２】
Tprocは、各検知サーバ４１（４１ａ，４１ｂ，・・・・）から通知される単位時間当たりの所定のイベントの分散キー値に関する検知処理コストを示す。sum(Tproc)は、全検知サーバ４１から送信されたTprocの合計を示す。
【００５３】
Tcommは、各検知サーバ４１（４１ａ，４１ｂ，・・・・）から通知される単位時間当たりの所定のイベントの分散キー値に関するイベント入力通信コストを示す。sum(Tcomm)は、全検知サーバ４１から送信されたTcommの合計を示す。
【００５４】
全体負荷テーブル３８は、パターンの割り当て及び移動判定に使用される。負荷情報（sum(Tproc), sum(Tcomm)）の詳細については後述する。
【００５５】
詳細負荷テーブル３９は、各検知サーバ４１から送信されたパターンテーブル４４の情報を格納する。閾値情報４０は、後述するように、sum(Tproc)の下限閾値及び上限閾値、sum(Tcomm)の下限閾値及び上限閾値、total(sum(Tcomm)の上限閾値を保持する。
【００５６】
移動管理部３７は、管理サーバ３６のプロセッサにより実現される。移動管理部３７は、全体負荷テーブル３８と詳細負荷テーブル３９を参照し、いずれかの検知サーバまたはイベント検知システムの状態が後述する条件を満たすか否かを判定する。
【００５７】
いずれかの検知サーバまたはイベント検知システムの状態が後述する条件を満たさない場合、移動管理部３７は、イベント種別と分散キー値とパターンとのどの組み合わせを、どのサーバに割り当てて、移動させるとその条件を満たすかを見積もる。そして、移動管理部３７は、その見積もり情報に基づいて、イベント種別と分散キー値とパターンとの組み合わせを移動させる。
【００５８】
学習サーバ３１の抽出部３２によって抽出されたイベント種別と分散キー値とパターンとの新規の組み合わせが学習サーバ３１から通知されると、移動管理部３７は、全体負荷テーブル３８を参照して、負荷の低い検知サーバを担当検知サーバとして決定する。移動管理部３７は、担当検知サーバと、イベント種別、分散キー値を転送サーバ３３に通知する。
【００５９】
また、新規な負荷の割り当てを行う際は、移動管理部３７は、担当検知サーバ４１にイベント種別、分散キー値、及びパターンを含むテーブル更新指示を送信する。
【００６０】
また、イベント種別と分散キー値との組み合わせに対応するパターン集合の一部を分割して、パターン集合の一部とイベント種別と分散キー値の組み合わせを他の検知サーバへ移動させる場合、移動管理部３７は、移動元の検知サーバに移動指示を通知する。移動指示は、イベント種別、分散キー値、及びパターン名、移動先のサーバのアドレス情報を含む。
【００６１】
また、移動管理部３７は、検知サーバ４１からの通知に基づいて、全体負荷テーブル３８及び詳細負荷テーブル３９を更新する。
【００６２】
転送サーバ３３は、転送部３４、ルーティングテーブル３５を含む。ルーティングテーブル３５は、転送サーバ３３のメモリまたは記憶装置に格納されている。ルーティングテーブル３５は、イベント種別及び分散キー値毎に、どの検知サーバがそのイベントの分散キー値に対応するイベントのパターンマッチング処理を担当しているかの情報を保持する。
【００６３】
転送部３４は、転送サーバ３３のプロセッサにより実現される。転送部３４は、イベントデータの入力を受け付け、イベント種別及び分散キー値に応じて、ルーティングテーブル３５に格納された検知サーバ４１へ転送（転送先が１つの場合にはユニキャストで送信、転送先が複数の場合にはマルチキャストで送信）する。転送部３４は、ルーティングテーブル３５の更新依頼を管理サーバ３６から受け付ける。
【００６４】
検知サーバ４１は、検知部４２、仲介部４３、パターンテーブル４４、負荷テーブル４５を含む。パターンテーブル４４、負荷テーブル４５は、検知サーバ４１のメモリまたは記憶装置に格納されている。
【００６５】
負荷テーブル４５は、イベント種別と分散キー値との組み合わせを一意の情報として、検知するパターンを識別するパターン名、Tproc、Tcommの情報を保持する。
【００６６】
パターンテーブル４４は、パターンの実データを保持する。パターンテーブル４４は、負荷テーブル４５のパターン名をキーにアクセスされる。なお、検知手法によってパターンの実データのデータ構造は異なる。
【００６７】
検知部４２は、転送サーバ３３から送信された入力イベントデータを受信すると、入力イベントデータからパターンを抽出し、抽出したパターンと、パターンテーブル４４に登録されたパターンとの比較を行う。
【００６８】
仲介部４３は、管理サーバ３６からテーブル更新指示または移動指示を受信すると、負荷テーブル４５またはパターンテーブル４４の更新を行う。さらに、移動指示の場合、仲介部４３は、移動指示に従って、イベント種別と、分散キー値と、分散キー値に対応するパターンの組み合わせを、組単位で他の検知サーバへ移動させる。
【００６９】
また、仲介部４３は、管理サーバ３６における移動判定のために、負荷テーブル情報（sum(Tcomm)、sum(Tproc)）を指定間隔で管理サーバ３６へ通知する。また、仲介部４３は、管理サーバ３６からの要求に基づいて、詳細負荷情報（イベント種別、分散キー値、パターン名、Tproc、Tcommを含む）を管理サーバ３６へ通知する。
【００７０】
図７は、本実施形態におけるイベント検知システムで用いられるルーティングテーブル、負荷テーブル、及び全体負荷テーブルの一例を示す。
【００７１】
図７（Ａ）に示すルーティングテーブル３５は、転送サーバ３３が受信した入力イベントデータを、その入力イベントデータに付与されたイベント種別及び分散キー値の組み合わせを担当する転送先の検知サーバに送信するために用いられる。
【００７２】
ルーティングテーブル３５は、「イベント種別」、「分散キー値」、「検知サーバ」のデータ項目を含む。項目「イベント種別」は、イベントの種類を示す。項目「分散キー値」は、そのイベントに割り与えられた分散キー値を示す。
【００７３】
項目「検知サーバ」には、そのイベントの転送先となる検知サーバのＩＰ（Intetnet Protocol）アドレス等が格納される。項目「検知サーバ」には、リストとして複数の検知サーバのアドレスを格納することができる。イベント種別及び分散キー値に対応する送信先として、項目「検知サーバ」に複数の検知サーバが登録されている場合、転送部３４は、マルチキャスト送信を行う。一方、イベント種別及び分散キー値に対応する送信先として、項目「検知サーバ」に１つの検知サーバが登録されている場合、転送部３４は、ユニキャスト送信を行う。
【００７４】
図７（Ｂ）に示す負荷テーブル４５は、各検知サーバのイベント種別と分散キー値の組み合わせに対応するパターンリスト毎の負荷情報を管理するために用いられる。負荷テーブル４５は、「イベント種別」、「分散キー値」、「パターンリスト」、「Tproc」、「Tcomm」のデータ項目を含む。
【００７５】
項目「イベント種別」は、イベントの種類を示す。項目「分散キー値」は、そのイベントに割り与えられた分散キー値を示す。
【００７６】
項目「パターンリスト」は、パターンを識別する１以上のパターン名が格納される。項目「パターンリスト」は、イベント種別と分散キー値の組み合わせに対応する１以上のパターンが含まれるパターン集合のリストである。パターン名に対応する実データは、パターンテーブル４４に格納されている。
【００７７】
項目「Tproc」、項目「Tcomm」は、移動判定用のメトリクスとして用いられるパラメータを格納する。
【００７８】
「Tcomm」は、単位時間当たりの所定のイベントの分散キー値毎のイベント入力通信コストを示す。Tcommは、イベントの分散キー値毎に異なるが、該当イベントの分散キー値を担当する検知サーバ群へマルチキャストするため同一のイベントの分散キー値に対しては、全検知サーバで一定である。ただし、担当しないイベントの分散キー値に対しては、そのサーバ上ではTcomm=０となる。なお、Tcommを検知サーバ毎に計算してもいいが、一定なので、一箇所（入力アダプタなど）で管理する方がより望ましい。Tcommは、入力頻度に比例する。例えば、ある分散キー値=aの通信コストは、Tcomm(a) = k1 * n(a)
（k1:係数（1入力あたりの通信コスト。直列化など通信要因コスト、データサイズに依存する）、n:入力頻度（所定のイベントの分散キー値に対する入力イベント数））
で表される。
【００７９】
「Tproc」は、単位時間当たりの所定イベントの分散キー値毎の検知処理コストを示す。Tprocは、所定イベントの同一分散キー値に対しても、検知サーバ毎に異なる。Tprocは、Tcommと異なり、分散キー値に対する検知パターン数が検知サーバ毎に異なるため、検知サーバ毎に計算される。Tprocは、入力頻度、パターン数に比例する。例えば、あるイベントの分散キー値=aの検知処理コストは、
Tproc(a) = k2 * n(a) * np(a)
（k2:係数（１入力あたりの検知処理コスト。データ種別・サイズ・処理内容などに依存する）、n:入力頻度（所定のイベントの分散キー値に対する入力イベント数）、np:パターン数）
で表される。
【００８０】
検知サーバ４１の仲介部４３は、負荷テーブル４５の「Tproc」及び「Tcomm」をそれぞれ集計（sum(Tcomm)、sum(Tproc)）し、その集計したsum(Tcomm)、sum(Tproc)を負荷情報として管理サーバ３６へ送信する。
【００８１】
全体負荷テーブル３８は、各検知サーバ４１から送信された負荷情報を管理するために用いられる。全体負荷テーブル３８は、「検知サーバ」、「sum(Tproc)」、「sum(Tcomm)」のデータ項目を含む。項目「検知サーバ」は、検知サーバを識別する情報が格納される。項目「sum(Tproc)」には、検知サーバ４１から送信されたsum(Tproc)が格納される。項目「sum(Tcomm)」には、検知サーバ４１から送信されたsum(Tcomm)が格納される。ここで、全サーバのsum(Tcomm)の総計トラフィックをtotal(sum(Tcomm)で表す。
【００８２】
次に、移動判定について説明する。sum(Tproc)、sum(Tcomm)は、各検知サーバの負荷の平準化のための閾値であり、それぞれ上限・下限閾値が設定される。上限閾値は、その検知サーバにおいて、負荷が高すぎる、すなわちそれ以上の処理は許容できないと判断される値であり、リソース使用率の6〜8割当たりが好ましい。下限閾値は、その検知サーバにおいて、負荷が低すぎる、すなわち余剰リソースが大きいまたは使用効率が悪い状態であると判断される値であり、下回っていたら、他の検知サーバが上限閾値に達していなくてもなるべく処理を受ける。下限閾値は、リソース使用率の1〜3割当たりが好ましい。
【００８３】
total(sum(Tcomm))は、全体トラフィックを減らすべきと判断される場合に用いられる閾値であり、上限閾値が設定される。
【００８４】
管理サーバ３６は以下の３条件を満たすように、イベント検知システム全体の負荷を制御する。
第一条件：各検知サーバの検知処理コスト（sum(Tproc)）が下限閾値〜上限閾値であること
第二条件：各検知サーバの通信コスト（sum(Tcomm)）が下限閾値〜上限閾値であること
第三条件：全サーバのsum(Tcomm)の合計（total(sum(Tcomm)）が上限閾値以下であること
上記３つの条件のいずれかに合致しない場合、管理サーバ３６は、図８で説明するように、合致しない条件に対応する方式１〜４のいずれかを用いて処理の移動を行うように制御する。その場合、それぞれ移動元及び移動先サーバ、移動するイベントのイベント種別、分散キー値及びパターン名の組み合わせが選択される。
【００８５】
図８は、本実施形態における監視対象が、対応する条件を充足するか否かに応じて、方式１〜４を実行するフローを示す。移動管理部３７は、閾値情報４０に登録されたsum(Tproc)）についての下限閾値〜上限閾値と、sum(Tcommについての下限閾値〜上限閾値と、total(sum(Tcomm)）についての上限閾値とを取得する。
【００８６】
管理サーバ３６は、各検知サーバ４１から所定間隔で送信された負荷情報（sum(Tproc）、sum(Tcomm)）を受信して、全体負荷テーブル３８に格納する。そして、管理サーバ３６の移動管理部３７は、全体負荷テーブル３８を所定間隔で参照し、各検知サーバ４１のsum(Tproc）とsum(Tcomm)、及び全サーバのsum(Tcomm)の合計total(sum(Tcomm)を監視する（Ｓ１，Ｓ４，Ｓ７）。
【００８７】
監視において、移動管理部３７は、sum(Tproc)）についての下限閾値〜上限閾値と、各検知サーバ４１のsum(Tproc）とを比較する（Ｓ２）。また、移動管理部３７は、sum(Tcommについての下限閾値〜上限閾値と、各検知サーバ４１のsum(Tcomm)とを比較する（Ｓ５）。また、移動管理部３７は、total(sum(Tcomm)）についての上限閾値と、全サーバのsum(Tcomm)の合計total(sum(Tcomm)とを比較する（Ｓ８）。
【００８８】
監視の結果、各検知サーバの検知処理コスト（sum(Tproc)）が下限閾値〜上限閾値の範囲を超えたと判定した場合、すなわち、第一条件を満たさなくなった場合（Ｓ２で「Ｎｏ」）、移動管理部３７は、方式１を実行する（Ｓ３）（図１２）。
【００８９】
監視の結果、各検知サーバの通信コスト（sum(Tcomm)）が下限閾値〜上限閾値の範囲を超えたと判定した場合、すなわち、第二条件を満たさなくなった場合（Ｓ５で「Ｎｏ」）、移動管理部３７は、方式２を実行する（Ｓ６）（図１４）。
【００９０】
監視の結果、全サーバのsum(Tcomm)の合計（total(sum(Tcomm)）が上限閾値を超えたと判定した場合、すなわち、第三条件を満たさなくなった場合（Ｓ８で「Ｎｏ」）、移動管理部３７は、方式３を実行する（Ｓ９）（図１５）。
【００９１】
方式１〜３のいずれを実行してもそれぞれが対応する第一〜第三条件を満たさない場合、移動管理部３７は、方式４を実行する（Ｓ１０）（図１６）。
【００９２】
図９は、本実施形態における方式１を説明するための図である。方式１は、第一条件を満たさない場合に適用される。
【００９３】
sum(Tproc)が上限閾値を上回ったサーバがある場合、管理サーバ３６は、上回ったサーバを移動元サーバ、最もsum(Tproc)の低いサーバを移動先サーバとして選択する。
【００９４】
sum(Tproc)が下限閾値を下回ったサーバがある場合、管理サーバ３６は、下回ったサーバを移動先サーバ、最もsum(Tproc)の高いサーバを移動元サーバとして選択する。
【００９５】
管理サーバ３６は、移動元サーバの中で、Tprocの高いイベントの分散キー値を順番に選択する。ただし、管理サーバ３６は、選択したイベントの分散キー値とパターンとの組み合わせを実際に移動させる前に、移動後の移動元及び移動先サーバのsum(Tproc)を見積もる。そして、第一条件及び第二条件を満たさない場合、管理サーバ３６は、イベントの分散キー値に対応するパターンリストから、一部のパターンを移動させるパターン候補として分割する。
【００９６】
移動させるパターンの候補は、移動先の検知サーバが有するパターンと同一のパターンを優先する。これにより、同一のパターンの実データを移動させずに、移動先の既存のパターンを共有することができるので、パターン移動コストを削減することができる。また、分割した場合も同様に、移動前に、移動後の移動元及び移動先サーバのsum(Tproc)を見積もる。その見積もりの結果、第一条件を満たせない場合は、管理サーバ３６は、方式４を行う。
【００９７】
例えば、図９の場合、管理サーバ３６は、sum(Tproc)が上限閾値を超えている検知サーバ２を検知すると、検知サーバ２より通知された詳細負荷情報から、最もTprocの高いイベントの分散キー値（”EventA”, “0001”）の負荷を選択する。
【００９８】
しかしながら、最もTprocの高いイベントの分散キー値（”EventA”, “0001”）の負荷を検知サーバ１へ移動させたとしても、検知サーバ２のsum(Tproc)は、まだ上限閾値を超えているので、管理サーバ３６は、次にTprocの高いイベントの分散キー値（”EventA”, “0003”）の負荷を選択する。
【００９９】
しかし、この選択した負荷ごと移動すると、検知サーバ１のTprocが上限閾値を超えてしまうため、管理サーバ３６は、この選択した負荷の中でさらに負荷（パターンリスト）を分割する。パターンリストの分割に際して、管理サーバ３６は、移動先の検知サーバが有するパターンと同一のパターン”p002”が優先して選択する。管理サーバ３６は、イベントの分散キー値（”EventA”, “0003”）と、パターン名”p002”との組み合わせを検知サーバ１に移動させる。
【０１００】
図１０は、本実施形態における方式２を説明するための図である。方式２は、第ニ条件を満たさない場合に適用される。図１０（Ａ）は、方式２の適用前の検知サーバ１、２の状態の一例を示す。
【０１０１】
sum(Tcomm)が上限閾値を上回った検知サーバがある場合、管理サーバ３６は、上回った検知サーバを移動元サーバ、最もsum(Tproc)の低い検知サーバを移動先サーバとして選択する。
【０１０２】
sum(comm)が下限閾値を下回った検知サーバがある場合、管理サーバ３６は、下回ったサーバを移動先サーバ、最もsum(Tcomm)の高い検知サーバを移動元サーバとして選択する。
【０１０３】
管理サーバ３６は、移動元サーバの中で、Tcommの高いイベントの分散キー値を順番に選択する。しかし、方式１のように、分割して移動しても、分割したイベントの分散キー値のイベントデータはマルチキャストされるため、Tcommが減らない。そのため、方式２では、図１０（Ｂ）に示すように、Tcommを減らすため、管理サーバ３６は、分割キー値＝３に対応するパターン全てを移動させる。その結果、移動元の検知サーバのTprocは減少する。
【０１０４】
さらに、移動元の検知サーバだけなく移動先の検知サーバも同一の分散キー値を保持する場合について考える。図１０（Ｃ）に示すように、移動先の検知サーバ２は、元々その分散キー値＝４をもつ所定のイベントデータを受信しているため、移動先サーバのTcommを増加させることなく、移動先サーバ１から移動先サーバ２へ所定のイベントの分散キー値＝４に対応するパターンを移動させることができる。
【０１０５】
移動させるパターンは、方式１で説明したのと同様に、移動先の検知サーバが有するパターンと同一のパターンを優先する。これにより、同一のパターンを移動させずに、移動先の既存のパターンを共有することができるので、パターン移動コストを削減することができる。
【０１０６】
これらの考慮した上で、方式１のようにTcommの高い組み合わせから移動させる。そのとき、管理サーバ３６は、方式１と同様に、移動前に、イベント種別と分散キー値とパターンの組み合わせを選択し、移動後の移動元及び移動先サーバのsum(Tcomm)を見積もる。その見積もりの結果、第ニ条件を満たせない場合は、管理サーバ３６は、方式４を行う。
【０１０７】
図１１は、本実施形態における方式３を説明するための図である。方式３は、total(sum(Tcomm))を下げるための方式であり、第三条件を満たさない場合に、適用される。
【０１０８】
第一条件を満たさない状態が継続すると、パターン集合の分割が広範囲に進んでいくので、マルチキャストによるイベントの送信が増える。その結果、システム全体としてのトラフィック（total(sum(Tcomm))）が増える、という状況になる。その状況下では、負荷が上がった時、どのイベント種別と分散キー値とパターンの組み合わせをどのサーバへ移動しても第二条件を満たせない可能性が高い。なお、方式２でも、全体のネットワーク負荷total(sum(Tcomm))を増やさないように考慮されている。
【０１０９】
方式３では、管理サーバ３６は、Tprocが小さいイベント種別と分散キー値とパターンとの組み合わせを、同一サーバ上に集約する。サーバを追加する方法もあるが、まずはリソース効率から再配置を試みるのが好ましい。また、Tprocが小さいイベントの分散キー値とパターンとの組み合わせによる負荷は移動させやすい。また、方式１、方式２と同様に、移動後に第一条件及び第二条件を満たすように負荷を選択する。
【０１１０】
図１１では、（i（i-1, i-2）最もTprocの低い検知サーバが移動元サーバとして選択され、そのTprocと、イベント種別と、分散キー値との組み合わせが（順に）選択される。（ii）次に、移動元サーバとして選択された検知サーバを除く、sum(Tproc)の最も低い検知サーバが移動先サーバとして選択され、イベント種別と、分散キー値と、Tprocとの組み合わせが（順に）選択される。（iii）移動元サーバにおいて、選択されたベント種別と、分散キー値と、Tprocとの組み合わせで最もTprocの低い検知サーバが（順に）移動されられる。上記（i）〜（iii）は、第三条件を満たすまで入れ子でループする。その結果、図１１では、全体のネットワーク負荷total(sum(Tcomm))が２０減少している。
【０１１１】
次に方式４について説明する。方式１、２、または３を行っても、第一、第二、または第三条件を満足できない場合、検知サーバを追加または削除することにより、検知サーバまたはシステム全体の負荷を調整する。これを方式４とする。すなわち、第一、第二、または第三条件において上限閾値を上回ってしまう場合、検知サーバが追加される。また、第一、第二、または第三条件においての下限閾値を下回ってしまう場合、システムから検知サーバが 削除される。
【０１１２】
追加した検知サーバへのイベント種別と分散キー値とパターンとの組み合わせの移動、及び削除対象の検知サーバからのイベント種別と分散キー値とパターンとの組み合わせの移動は、方式１、２，３と同様の手順で行われる。
【０１１３】
図１２は、本実施形態における管理サーバの移動管理部による方式１を用いた負荷移動処理のフローを示す。図１２のフローは、図８のＳ３の処理の詳細である。
【０１１４】
移動管理部３７は、全体負荷テーブル３８を参照し、sum(Tproc)の上限閾値を上回った検知サーバ、または最もsum(Tproc)の高い検知サーバを移動元検知サーバ（src）として選択する（Ｓ２１）。移動管理部３７は、選択した移動元検知サーバ（src）に対して、負荷テーブル４５の内容を送るように要求し、その応答にて得られた詳細負荷情報を詳細負荷テーブル３９に格納する。
【０１１５】
移動管理部３７は、詳細負荷テーブル３９を参照し、移動元検知サーバ（src）のイベントの分散キー値の中で最もTprocが高い分散キー値(x)を選択する（Ｓ２２）。
【０１１６】
移動管理部３７は、全体負荷テーブル３８を参照し、最もsum(Tproc)の低い検知サーバを移動先サーバ候補（dst）として選択する（Ｓ１３）。移動管理部３７は、選択した移動先サーバ候補（dst）に対して、負荷テーブル４５の内容を送るように要求し、その応答にて得られた詳細負荷情報を詳細負荷テーブル３９に格納する。
【０１１７】
移動管理部３７は、移動元検知サーバ（src）から移動先サーバ候補（dst）へ、イベントの分散キー値(x)に対応するパターンマッチング処理（負荷）を移動させたと仮定した場合に第１条件を満たすかを判定する移動後条件判定処理を実行する（Ｓ１４）。
【０１１８】
Ｓ１４の移動後条件判定処理への入力パラメータとして、Tproc（＝係数k2×入力頻度n×イベントの分散キー値(x)に対応するパターン数）、移動元検知サーバ（src）、移動先サーバ候補（dst）、イベント種別、分散キー値(x)が入力される。Ｓ１４の処理の詳細は、図１３で説明する。
【０１１９】
Ｓ１４の移動後条件判定処理の返り値が「真」の場合（第１条件を満たすと判定された場合）（Ｓ１５で「Ｙｅｓ」）、移動管理部３７は、次の処理を行う。すなわち、移動管理部３７は、移動元検知サーバ（src）が担当するイベントの分散キー値(x)に対応する全パターンの処理を移動先サーバ候補（dst）に移動するように、移動元検知サーバ（src）に移動指示を行う（Ｓ１６）。
【０１２０】
このとき、移動管理部３７は、詳細負荷テーブル３９に格納された移動先検知サーバ（dst）の詳細負荷情報のパターンリストを参照して、移動対象となるイベントの分散キー値(x)に対応する各パターン名がそのパターンリストに含まれるかを判定する。
【０１２１】
移動対象となるイベントの分散キー値(x)に対応する全パターン名が移動先検知サーバ（dst）のパターンリストに含まれている場合、移動管理部３７は、次を行う。すなわち。移動管理部３７は、移動指示にそのパターン名を送信する旨を含め、そのパターン名に対応する実データを送信する旨を含めない。
【０１２２】
一方、移動対象となるイベントの分散キー値(x)に対応するパターン名のうち移動先検知サーバ（dst）のパターンリストに含まれていないパターン名がある場合、移動管理部３７は、次の処理を行う。すなわち、移動管理部３７は、移動指示にそのパターン名と、そのパターン名に対応する実データを送信する指示を含める。
【０１２３】
移動元検知サーバ（src）の仲介部４３は、管理サーバ３６から移動指示を受信すると、その移動指示に基づいて、移動対象となるイベントの分散キー値(x)に対応する全パターン名を移動先検知サーバ（dst）へ送信する。その移動指示に移動対象となるパターン名に対応する実データも移動させるように指示がある場合には、仲介部４３は、パターンの実データも送信する。
【０１２４】
イベント種別と分散キー値(x)とパターンとの組み合わせの移動後、移動元検知サーバ（src）、移動先検知サーバ（dst）はそれぞれ、負荷テーブル４５を更新する。その結果、移動対象の負荷が移動元検知サーバ（src）から移動先検知サーバ（dst）に移動している。したがって、移動させたイベント種別と分散キー値とパターンとの組み合わせによる処理は、移動元検知サーバ（src）では実行されず、移動先検知サーバ（dst）で実行されることになる。また、移動元検知サーバ（src）、移動先検知サーバ（dst）はそれぞれ、更新した負荷テーブル４５に基づいて、負荷情報（sum(Tcomm)、sum(Tproc)）を管理サーバ３６に通知する。
【０１２５】
移動管理部３７は、移動元検知サーバ（src）及び移動先検知サーバ（dst）から受信した負荷情報（sum(Tcomm)、sum(Tproc)）に基づいて、全体負荷テーブル３８を更新する。
【０１２６】
移動管理部３７は、移動元検知サーバ（src）、移動先検知サーバ（dst）共に、第一条件及び第二条件を満たすかを判定する（Ｓ１７）。すなわち、移動管理部３７は、全体負荷テーブル３８を参照し、移動元検知サーバ（src）、移動先検知サーバ（dst）共に、（sum(Tproc)）が下限閾値〜上限閾値で、かつsum(Tcomm)が下限閾値〜上限閾値であるかを判定する。
【０１２７】
移動元検知サーバ（src）、移動先検知サーバ（dst）共に、第一条件及び第二条件を満たしていない場合（Ｓ１７で「Ｎｏ」）、Ｓ１２へ戻る。移動元検知サーバ（src）、移動先検知サーバ（dst）共に、第一条件及び第二条件を満たす場合（Ｓ１７で「Ｙｅｓ」）、本フローは終了する。
【０１２８】
Ｓ１４の移動後条件判定処理の返り値が「偽」の場合（第１条件を満たさないと判定された場合）（Ｓ１５で「Ｎｏ」）、移動管理部３７は、詳細負荷テーブル３９に格納した移動元検知サーバ（src）の詳細負荷情報を参照し、次の処理を行う。
すなわち、移動管理部３７は、移動元検知サーバ（src）のイベントの分散キー値(x)に対応するパターンリスト内の全パターン名と、移動先検知サーバ（dst）の全パターンリスト内の全パターン名の中で、同一のパターン名があるかを判定する（Ｓ１８）。
【０１２９】
移動元検知サーバ（src）のイベントの分散キー値(x)に対応する全パターン名と、移動先検知サーバ（dst）の全パターンリスト内の全パターン名の中で、同一のパターン名がある場合（Ｓ１８で「Ｙｅｓ」）、移動管理部３７は、次の処理を行う。すなわち、移動管理部３７は、移動元検知サーバ（src）のイベントの分散キー値(x)に対応するパターンリスト内の全パターン名から、同一のパターン名(y)を一つ選択し、パターン名(y)とイベント種別と分散キー値(x)との組み合わせをｚとする（Ｓ１９）。
【０１３０】
移動元検知サーバ（src）が担当するイベントの分散キー値(x)に対する全パターン名と、移動先検知サーバ（dst）が担当する全パターン名の中で、同一のパターン名がない場合（Ｓ８で「Ｎｏ」）、移動管理部３７は、次の処理を行う。すなわち、移動管理部３７は、移動元検知サーバ（src）が担当するイベントの分散キー値(x)に対する全パターン名から、ランダムにパターン名(y)を一つ選択し、パターン名(y)とイベント種別と分散キー値(x)との組み合わせをｚとする（Ｓ２０）。
【０１３１】
移動管理部３７は、Ｓ１９またはＳ２０の処理後、移動後条件判定処理（Tproc,src,dst,z）を実行する（Ｓ２１）。入力パラメータとして、Tproc（＝係数k2×入力頻度n×選択したパターン数）、移動元検知サーバ（src）、移動先サーバ候補（dst）、パターン名(y)とイベント種別と分散キー値(x)との組み合わせzが入力される。Ｓ２１の処理の詳細は、図１３で説明する。
【０１３２】
Ｓ２１の移動後条件判定処理の返り値が「真」の場合（第１条件を満たすと判定された場合）（Ｓ２２で「Ｙｅｓ」）、移動管理部３７は、次の処理を行う。すなわち、移動管理部３７は、選択したパターン(y)とイベント種別と分散キー値(x)との組み合わせzについての処理（負荷）を移動先サーバ候補（dst）に移動するように、移動元検知サーバ（src）に移動指示を行う（Ｓ２３）。
【０１３３】
このとき、Ｓ１９で選択されたパターン名が移動先検知サーバ（dst）に既に存在する場合、移動管理部３７は、移動指示にそのパターン名に対応する実データを送信する指示を含めない。一方、Ｓ１０で選択されたパターンが移動先検知サーバ（dst）に存在しない場合、移動管理部３７は、移動指示にそのパターン名に対応する実データを送信する指示を含める。
【０１３４】
移動元検知サーバ（src）の仲介部４３は、管理サーバ３６から移動指示を受信すると、その移動指示に基づいて、移動対象となるイベントの分散キー値(x)に対するパターン名を移動先検知サーバ（dst）へ送信する。その移動指示に移動対象となるパターン名に対応する実データも移動させるように指示がある場合には、仲介部４３は、パターンの実データも送信する。
【０１３５】
イベント種別と分散キー値(x)とパターンとの組み合わせの移動後、移動元検知サーバ（src）、移動先検知サーバ（dst）はそれぞれ、負荷テーブル４５を更新する。その結果、移動対象の負荷が移動元検知サーバ（src）から移動先検知サーバ（dst）に移動している。したがって、移動させたイベント種別と分散キー値とパターンとの組み合わせによる処理は、移動元検知サーバ（src）では実行されず、移動先検知サーバ（dst）で実行されることになる。また、移動元検知サーバ（src）、移動先検知サーバ（dst）はそれぞれ、更新した負荷テーブル４５に基づいて、負荷情報（sum(Tcomm)、sum(Tproc)）を管理サーバ３６に通知する。
【０１３６】
移動管理部３７は、移動元検知サーバ（src）及び移動先検知サーバ（dst）から受信した負荷情報（sum(Tcomm)、sum(Tproc)）に基づいて、全体負荷テーブル３８を更新する。Ｓ２３の処理後、Ｓ１７の処理へ進む。
【０１３７】
Ｓ２２の移動後条件判定処理の返り値が「偽」の場合（第１条件を満たさないと判定された場合）（Ｓ２２で「Ｎｏ」）、移動管理部３７は、方式４の処理へ進む（Ｓ２４）。
【０１３８】
図１３は、本実施形態における移動後条件判定処理のフローを示す。移動後条件判定処理は、移動元検知サーバ（src）から移動先サーバ候補（dst）へ、選択したイベントの分散キー値(x)に対応するパターンマッチング処理（負荷）を移動させたと仮定した場合に、負荷値が第ｉ条件（ｉ=１，２）を満たすかを判定する処理である。ここで、負荷値とは、第一条件を満たすか否かを判定する場合にはTprocの値であり、第二条件を満たすか否かを判定する場合にはTcommの値である。
【０１３９】
入力パラメータとして、TprocまたはTcommと、移動元検知サーバ（src）と、移動先サーバ候補（dst）と、イベント種別と、分散キー値(x)または組み合わせ(z)とが入力される。
【０１４０】
移動管理部３７は、移動元検知サーバ（src）から移動先サーバ候補（dst）へ負荷を移動したと仮定した場合、移動元検知サーバ（src）で負荷値が下限閾値を下回らない、かつdstで負荷値が上限閾値を上回らないかを判定する（Ｓ３１）。ここで、入力パラメータとして、xが指定されている場合、負荷はイベントの分散キー値(x)に対応する全てのパターン”となる。一方、zが指定されている場合、負荷はイベントの分散キー値(x)に対応するパターンのうちの一つのパターン(y)”となる。
【０１４１】
移動元検知サーバ（src）で負荷値が下限閾値を下回らない、かつdstで負荷値が上限閾値を上回らないと判定した場合（第ｉ条件を満たす、Ｓ３１で「Ｙｅｓ」）、移動管理部３７は、返り値として、「真」を呼び出し元の処理へ返す（Ｓ３２）。一方、移動元検知サーバ（src）で負荷値が下限閾値を下回る、またdstで負荷値が上限閾値を上回ると判定した場合（第ｉ条件を満たさない、Ｓ３１で「Ｎｏ」）、移動管理部３７は、返り値として、「偽」を呼び出し元の処理へ返す（Ｓ３３）。
【０１４２】
図１４は、本実施形態における管理サーバの移動管理部による方式２を用いた負荷移動処理のフローを示す。図１４のフローは、図８のＳ６の処理の詳細である。
【０１４３】
移動管理部３７は、全体負荷テーブル３８を参照し、sum(Tcomm)の上限閾値を上回った検知サーバ、または最もsum(Tcomm)の高い検知サーバを移動元検知サーバ（src）として選択する（Ｓ４１）。移動管理部３７は、選択した移動元検知サーバ（src）に対して、負荷テーブル４５の内容を送るように要求し、その応答にて得られた詳細負荷情報を詳細負荷テーブル３９に格納する。
【０１４４】
移動管理部３７は、詳細負荷テーブル３９を参照し、移動元検知サーバ（src）のイベントの分散キー値の中で最もTcommが高い分散キー値(x)を選択する（Ｓ４２）。
【０１４５】
移動管理部３７は、全体負荷テーブル３８を参照し、最もsum(Tcomm)の低い検知サーバを移動先サーバ候補（dst）として選択する（Ｓ４３）。移動管理部３７は、選択した移動先サーバ候補（dst）に対して、負荷テーブル４５の内容を送るように要求し、その応答にて得られた詳細負荷情報を詳細負荷テーブル３９に格納する。
【０１４６】
移動管理部３７は、移動元検知サーバ（src）から移動先サーバ候補（dst）へ、イベントの分散キー値(x)に対応するパターンマッチング処理（負荷）を移動させたと仮定した場合に第二条件を満たすかを判定する移動後条件判定処理を実行する（Ｓ４４）。
【０１４７】
Ｓ４４の移動後条件判定処理への入力パラメータとして、Tcomm（＝係数k1×入力頻度n）、移動元検知サーバ（src）、移動先サーバ候補（dst）、イベント種別、分散キー値(x)が入力される。Ｓ４４の処理の詳細は、図１３で説明した通りである。
【０１４８】
Ｓ４４の移動後条件判定処理の返り値が「真」の場合（第二条件を満たすと判定された場合）（Ｓ４５で「Ｙｅｓ」）、移動管理部３７は、次の処理を行う。すなわち、移動管理部３７は、移動元検知サーバ（src）が担当するイベントの分散キー値(x)に対応する全パターンの処理を移動先サーバ候補（dst）に移動するように、移動元検知サーバ（src）に移動指示を行う（Ｓ４６）。
【０１４９】
このとき、移動管理部３７は、詳細負荷テーブル３９に格納された移動先検知サーバ（dst）の詳細負荷情報のパターンリストを参照して、移動対象となるイベントの分散キー値(x)に対応する各パターン名がそのパターンリストに含まれるかを判定する。
【０１５０】
移動対象となるイベントの分散キー値(x)に対応する全パターン名が移動先検知サーバ（dst）のパターンリストに含まれている場合、移動管理部３７は、移動指示にそのパターン名に対応する実データを送信する指示を含めない。
【０１５１】
一方、移動対象となるイベントの分散キー値(x)に対応するパターン名のうち移動先検知サーバ（dst）のパターンリストに含まれていないパターン名がある場合、移動管理部３７は、移動指示にそのパターン名に対応する実データを送信する指示を含める。
【０１５２】
移動元検知サーバ（src）の仲介部４３は、管理サーバ３６から移動指示を受信すると、その移動指示に基づいて、移動対象となるイベントの分散キー値(x)に対応する全パターン名を移動先検知サーバ（dst）へ送信する。その移動指示に移動対象となるパターン名に対応する実データも移動させるように指示がある場合には、仲介部４３は、パターンの実データも送信する。
【０１５３】
イベントの分散キー値(x)とパターンとの組み合わせの移動後、移動元検知サーバ（src）、移動先検知サーバ（dst）はそれぞれ、負荷テーブル４５を更新する。その結果、移動対象の負荷が移動元検知サーバ（src）から移動先検知サーバ（dst）に移動している。したがって、移動させたイベント種別と分散キー値とパターンとの組み合わせによる処理は、移動元検知サーバ（src）では実行されず、移動先検知サーバ（dst）で実行されることになる。また、移動元検知サーバ（src）、移動先検知サーバ（dst）はそれぞれ、更新した負荷テーブル４５に基づいて、負荷情報（sum(Tcomm)、sum(Tproc)）を管理サーバ３６に通知する。
【０１５４】
移動管理部３７は、移動元検知サーバ（src）及び移動先検知サーバ（dst）から受信した負荷情報（sum(Tcomm)、sum(Tproc)）に基づいて、全体負荷テーブル３８を更新する。
【０１５５】
移動管理部３７は、移動元検知サーバ（src）、移動先検知サーバ（dst）共に、第一条件及び第二条件を満たすかを判定する（Ｓ４７）。すなわち、移動管理部３７は、全体負荷テーブル３８を参照し、移動元検知サーバ（src）、移動先検知サーバ（dst）共に、（sum(Tproc)）が下限閾値〜上限閾値で、かつsum(Tcomm)が下限閾値〜上限閾値であるかを判定する。
【０１５６】
移動元検知サーバ（src）、移動先検知サーバ（dst）共に、第一条件及び第二条件を満たしていない場合（Ｓ４７で「Ｎｏ」）、Ｓ３２へ戻る。移動元検知サーバ（src）、移動先検知サーバ（dst）共に、第一条件及び第二条件を満たす場合（Ｓ４７で「Ｙｅｓ」）、本フローは終了する。
【０１５７】
移動後条件判定処理の返り値が「偽」の場合（第二条件を満たさないと判定された場合）（Ｓ４５で「Ｎｏ」）、移動管理部３７は、方式４の処理へ進む（Ｓ４８）。
【０１５８】
図１５は、本実施形態における管理サーバの移動管理部による方式３を用いた負荷移動処理のフローを示す。図１５のフローは、図８のＳ９の処理の詳細である。
【０１５９】
図１５では、Tproc及びTcommを総称して負荷値という。図１５では、説明の都合上、負荷値がTprocの場合について説明するが、負荷値としてTcommを用いても良い。
【０１６０】
移動管理部３７は、全検知サーバに対して、負荷テーブル４５の内容を送るように要求し、その応答にて得られた詳細負荷情報を詳細負荷テーブル３９に格納する。移動管理部３７は、詳細負荷テーブル３９を参照し、全検知サーバの中で、最もTprocの低いイベントの分散キー値(x)を持つ検知サーバを移動元検知サーバ（src）として選択する（Ｓ５１）。
【０１６１】
移動管理部３７は、全体負荷テーブル３８と詳細負荷テーブル３９を参照し、イベントの分散キー値(x)を所持する検知サーバの中で、移動元検知サーバ（src）を除く最もsum(Tproc)の低い検知サーバを移動先サーバ（dst）として選択する（Ｓ５２）。
【０１６２】
移動管理部３７は、移動元検知サーバ（src）から移動先サーバ候補（dst）へ、イベントの分散キー値(x)に対応するパターンマッチング処理（負荷）を移動させたと仮定した場合に第ｉ条件を満たすかを判定する移動後条件判定処理を実行する（Ｓ５３）。ここで、負荷値がTprocの場合ｉ＝１であり、負荷値がTcommの場合ｉ＝２である。
【０１６３】
負荷値がTprocの場合、Ｓ５３の移動後条件判定処理への入力パラメータとして、Tproc（＝係数k2×入力頻度n×イベントの分散キー値(x)に対応するパターン数）、移動元検知サーバ（src）、移動先サーバ候補（dst）、イベント種別、分散キー値(x)が入力される。負荷値がTcommの場合、Ｓ５３の移動後条件判定処理への入力パラメータとして、Tcomm（＝係数k1×入力頻度n）、移動元検知サーバ（src）、移動先サーバ候補（dst）、イベント種別、分散キー値(x)が入力される。Ｓ５３の処理の詳細は、図１３で説明した通りである。
【０１６４】
Ｓ５３の移動後条件判定処理の返り値が「真」の場合（第ｉ条件を満たすと判定された場合）（Ｓ５４で「Ｙｅｓ」）、移動管理部３７は、次の処理を行う。すなわち、移動管理部３７は、移動元検知サーバ（src）が担当するイベントの分散キー値(x)に対応する全パターンの処理を移動先サーバ候補（dst）に移動するように、移動元検知サーバ（src）に移動指示を行う（Ｓ５５）。
【０１６５】
このとき、移動管理部３７は、詳細負荷テーブル３９に格納された移動先検知サーバ（dst）の詳細負荷情報のパターンリストを参照して、移動対象となるイベントの分散キー値(x)に対応する各パターン名がそのパターンリストに含まれるかを判定する。
【０１６６】
移動対象となるイベントの分散キー値(x)に対応する全パターン名が移動先検知サーバ（dst）のパターンリストに含まれている場合、移動管理部３７は、移動指示にそのパターン名を送信する旨を含め、そのパターン名に対応する実データを送信する旨を含めない。
【０１６７】
一方、移動対象となるイベントの分散キー値(x)に対応するパターン名のうち移動先検知サーバ（dst）のパターンリストに含まれていないパターン名がある場合、移動管理部３７は、次の処理を行う。すなわち、移動管理部３７は、移動指示にそのパターン名と、そのパターン名に対応する実データを送信する旨を含める。
【０１６８】
移動元検知サーバ（src）の仲介部４３は、管理サーバ３６から移動指示を受信すると、その移動指示に基づいて、移動対象となるイベントの分散キー値(x)に対応する全パターン名を移動先検知サーバ（dst）へ送信する。その移動指示に移動対象となるパターン名に対応する実データも移動させるように指示がある場合には、仲介部４３は、パターンの実データも送信する。
【０１６９】
イベント種別と分散キー値(x)とパターンとの組み合わせの移動後、移動元検知サーバ（src）、移動先検知サーバ（dst）はそれぞれ、負荷テーブル４５を更新する。その結果、移動対象の負荷が移動元検知サーバ（src）から移動先検知サーバ（dst）に移動している。したがって、移動させたイベント種別と分散キー値とパターンとの組み合わせによる処理は、移動元検知サーバ（src）では実行されず、移動先検知サーバ（dst）で実行されることになる。また、移動元検知サーバ（src）、移動先検知サーバ（dst）はそれぞれ、更新した負荷テーブル４５に基づいて、負荷情報（sum(Tcomm)、sum(Tproc)）を管理サーバ３６に通知する。
【０１７０】
移動管理部３７は、移動元検知サーバ（src）及び移動先検知サーバ（dst）から受信した負荷情報（sum(Tcomm)、sum(Tproc)）に基づいて、全体負荷テーブル３８を更新する。
【０１７１】
移動管理部３７は、システムが第三条件を満たすかを判定する（Ｓ５６）。すなわち、移動管理部３７は、全体負荷テーブル３８を参照し、sum(Tcomm）の全サーバの合計(total(sum(Tcomm))が上限閾値以下であるかを判定する。
【０１７２】
sum(Tcomm）の全サーバの合計(total(sum(Tcomm))が上限閾値を上回る場合（第三条件を満たさない場合）（Ｓ５６で「Ｎｏ」）、Ｓ５１へ戻る。sum(Tcomm）の全サーバの合計(total(sum(Tcomm))が上限閾値以下である場合（第三条件を満たす場合）（Ｓ５６で「Ｙｅｓ」）、本フローは終了する。
【０１７３】
Ｓ５３の移動後条件判定処理の返り値が「偽」の場合（第ｉ条件を満たさないと判定された場合）（Ｓ５４で「Ｎｏ」）、移動管理部３７は、方式４の処理へ進む（Ｓ５７）。
【０１７４】
図１６は、本実施形態における管理サーバの移動管理部による方式４を用いた負荷移動処理のフローを示す。図１６のフローは、図８のＳ１０の処理の詳細である。
【０１７５】
移動管理部３７は、全検知サーバ（src）に対して、負荷テーブル４５の内容を送るように要求し、その応答にて得られた詳細負荷情報を詳細負荷テーブル３９に格納する。移動管理部３７は、いずれかの検知サーバが第一条件または第二条件における下限閾値を下回った状態か否かを判定する（Ｓ６１）。いずれかの検知サーバが第一条件または第二条件における下限閾値を下回った状態でないと判定した場合（Ｓ６１で「Ｎｏ」）、移動管理部３７は、検知サーバを１台追加するように、システム管理者に電子メール等で通知する（Ｓ７２）。
【０１７６】
いずれかの検知サーバが第一条件または第二条件における下限閾値を下回った状態であると判定した場合（Ｓ６１で「Ｙｅｓ」）、移動管理部３７は、全体負荷テーブル３８を参照し、下限閾値を下回った検知サーバを移動元検知サーバ（src）として選択する（Ｓ６２）。
【０１７７】
移動管理部３７は、詳細負荷テーブル３９を参照し、移動元検知サーバ（src）を除く最もTprocの低い検知サーバを移動先検知サーバ（dst）として選択する（Ｓ６３）。
【０１７８】
移動管理部３７は、移動元検知サーバ（src）が担当するイベントの分散キー値(x)を一つ選択する（Ｓ６４）。
【０１７９】
移動管理部３７は、移動元検知サーバ（src）から移動先サーバ候補（dst）へ、イベントの分散キー値(x)に対応するパターンマッチング処理（負荷）を移動させたと仮定した場合に第１条件を満たすかを判定する移動後条件判定処理を実行する（Ｓ６５）。
【０１８０】
Ｓ６５の移動後条件判定処理への入力パラメータとして、Tcomm（＝係数k1×入力頻度n）、移動元検知サーバ（src）、移動先サーバ候補（dst）、イベント種別、分散キー値(x)が入力される。Ｓ６５の処理の詳細は、図１３で説明した通りである。
【０１８１】
Ｓ６５の移動後条件判定処理の返り値が「真」の場合（第１条件を満たすと判定された場合）（Ｓ６６で「Ｙｅｓ」）、移動管理部３７は、次の処理を行う。すなわち、移動管理部３７は、移動元検知サーバ（src）が担当するイベントの分散キー値(x)に対応する全パターンの処理を移動先サーバ候補（dst）に移動するように、移動元検知サーバ（src）に移動指示を行う（Ｓ６７）。
【０１８２】
このとき、移動管理部３７は、詳細負荷テーブル３９に格納された移動先検知サーバ（dst）の詳細負荷情報３９のパターンリストを参照して、移動対象となるイベントの分散キー値(x)に対応する各パターン名がそのパターンリストに含まれるかを判定する。
【０１８３】
移動対象となるイベントの分散キー値(x)に対応する全パターン名が移動先検知サーバ（dst）のパターンリストに含まれている場合、移動管理部３７は、次を行う。すなわち。移動管理部３７は、移動指示にそのパターン名を送信する旨を含め、そのパターン名に対応する実データを送信する指示を含めない。
【０１８４】
一方、移動対象となるイベントの分散キー値(x)に対応するパターン名のうち移動先検知サーバ（dst）のパターンリストに含まれていないパターン名がある場合、移動管理部３７は、次の処理を行う。すなわち、移動管理部３７は、移動指示にそのパターン名と、そのパターン名に対応する実データを送信する指示を含める。
【０１８５】
移動元検知サーバ（src）の仲介部４３は、管理サーバ３６から移動指示を受信すると、その移動指示に基づいて、移動対象となるイベントの分散キー値(x)に対応する全パターン名を移動先検知サーバ（dst）へ送信する。その移動指示に移動対象となるパターン名に対応する実データも移動させるように指示がある場合には、仲介部４３は、パターンの実データも送信する。
【０１８６】
イベント種別と分散キー値(x)とパターンとの組み合わせの移動後、移動元検知サーバ（src）、移動先検知サーバ（dst）はそれぞれ、負荷テーブル４５を更新する。その結果、移動対象の負荷が移動元検知サーバ（src）から移動先検知サーバ（dst）に移動している。したがって、移動させたイベント種別と分散キー値とパターンとの組み合わせによる処理は、移動元検知サーバ（src）では実行されず、移動先検知サーバ（dst）で実行されることになる。また、移動元検知サーバ（src）、移動先検知サーバ（dst）はそれぞれ、更新した負荷テーブル４５に基づいて、負荷情報（sum(Tcomm)、sum(Tproc)）を管理サーバ３６に通知する。
【０１８７】
移動管理部３７は、移動元検知サーバ（src）及び移動先検知サーバ（dst）から受信した負荷情報（sum(Tcomm)、sum(Tproc)）に基づいて、全体負荷テーブル３８を更新する。
【０１８８】
Ｓ６５の移動後条件判定処理の返り値が「偽」の場合（第１条件を満たさないと判定された場合）（Ｓ６６で「Ｎｏ」）、移動管理部３７は、次の処理を行う。すなわち、移動管理部３７は、移動元検知サーバ（src）が担当するイベント種別の全パターンから、ランダムにパターン(y)を一つ選択し、パターン(y)とイベント種別と分散キー値(x)との組み合わせをｚとする（Ｓ６９）。
【０１８９】
移動管理部３７は、選択したパターン(y)とイベント種別と分散キー値(x)との組み合わせzについての処理（負荷）を移動先サーバ候補（dst）に移動するように、移動元検知サーバ（src）に移動指示を行う（Ｓ７０）。
【０１９０】
このとき、Ｓ６９において、移動先検知サーバ（dst）に、選択されたパターン名が既に存在する場合、移動管理部３７は、移動指示にそのパターン名に対応する実データを送信する指示を含めない。一方、Ｓ５０において、選択されたパターンが移動先検知サーバ（dst）に、存在しない場合、移動管理部３７は、移動指示にそのパターン名に対応する実データを送信する指示を含める。
【０１９１】
移動元検知サーバ（src）の仲介部４３は、管理サーバ３６から移動指示を受信すると、その移動指示に基づいて、移動対象となるイベントの分散キー値(x)に対するパターン名を移動先検知サーバ（dst）へ送信する。その移動指示に移動対象となるパターン名に対応する実データも移動させるように指示がある場合には、仲介部４３は、パターンの実データも送信する。
【０１９２】
イベント種別と分散キー値(x)とパターンとの組み合わせの移動後、移動元検知サーバ（src）、移動先検知サーバ（dst）はそれぞれ、負荷テーブル４５を更新する。その結果、移動対象の負荷が移動元検知サーバ（src）から移動先検知サーバ（dst）に移動している。したがって、移動させたイベント種別と分散キー値とパターンとの組み合わせによる処理は、移動元検知サーバ（src）では実行されず、移動先検知サーバ（dst）で実行されることになる。また、移動元検知サーバ（src）、移動先検知サーバ（dst）はそれぞれ、更新した負荷テーブル４５に基づいて、負荷情報（sum(Tcomm)、sum(Tproc)）を管理サーバ３６に通知する。
【０１９３】
移動管理部３７は、移動元検知サーバ（src）及び移動先検知サーバ（dst）から受信した負荷情報（sum(Tcomm)、sum(Tproc)）に基づいて、全体負荷テーブル３８を更新する。
【０１９４】
Ｓ６７またはＳ７０の処理後、移動管理部３７は、全体負荷テーブル３８または詳細負荷テーブル３９を参照し、移動元検知サーバ（src）が処理を持っているかを判定する（Ｓ６８）。
【０１９５】
移動元検知サーバ（src）が処理を持っている場合（Ｓ６８で「Ｙｅｓ」）、Ｓ６３へ戻る。移動元検知サーバ（src）が処理を持っていない場合（Ｓ６８で「Ｎｏ」）、移動管理部３７は、移動元検知サーバ（src）をシステムから削除するように、システム管理者に電子メール等で通知する（Ｓ７１）。
【０１９６】
図１７は、本実施形態におけるプログラムを実行するコンピュータのハードウェア環境の構成ブロック図の一例である。コンピュータ５０は、学習サーバ３１、転送サーバ３３、管理サーバ３６、または検知サーバ４１として機能する。コンピュータ５０は、ＣＰＵ５２、ＲＯＭ５３、ＲＡＭ５６、通信Ｉ／Ｆ５４、記憶装置５７、出力Ｉ／Ｆ５１、入力Ｉ／Ｆ５５、読み取り装置５８、バス８９、出力機器６１、入力機器６２によって構成されている。
【０１９７】
ここで、ＣＰＵは、中央演算装置を示す。ＲＯＭは、リードオンリメモリを示す。ＲＡＭは、ランダムアクセスメモリを示す。Ｉ／Ｆは、インターフェースを示す。バス５９には、ＣＰＵ５２、ＲＯＭ５３、ＲＡＭ５６、通信Ｉ／Ｆ５４、記憶装置５７、出力Ｉ／Ｆ５１、入力Ｉ／Ｆ５５、及び読み取り装置５８が接続されている。読み取り装置５８は、可搬型記録媒体を読み出す装置である。出力機器６１は、出力Ｉ／Ｆ５１に接続されている。入力機器６２は、入力Ｉ／Ｆ５５に接続にされている。
【０１９８】
記憶装置５７としては、ハードディスク、フラッシュメモリ、磁気ディスクなど様々な形式の記憶装置を使用することができる。記憶装置５７またはＲＯＭ５３には、ＣＰＵ５２を抽出部３２、転送部３４、移動管理部３７、または、検知部４２及び仲介部４３として機能させるプログラムが格納されている。また、記憶装置５７またはＲＯＭ５３には、コンピュータ５０が転送サーバ３３の場合にはルーティングテーブル３５が格納されている。記憶装置５７またはＲＯＭ５３には、コンピュータ５０が管理サーバ３６の場合には全体負荷テーブル３８、詳細負荷テーブル３９、閾値情報テーブル４０が格納されている。記憶装置５７またはＲＯＭ５３には、コンピュータ５０が検知サーバ４１の場合にはパターンテーブル４４、負荷テーブル４５が格納されている。ＲＡＭ５６には、情報が一時的に記憶される。
【０１９９】
ＣＰＵ５２は、本実施形態に係るプログラムを読み出し、当該プログラムを実行する。
上記実施形態で説明した処理を実現するプログラムは、プログラム提供者側から通信ネットワーク６０、および通信Ｉ／Ｆ５４を介して、例えば記憶装置５７に格納されてもよい。また、上記実施形態で説明した処理を実現するプログラムは、市販され、流通している可搬型記憶媒体に格納されていてもよい。この場合、この可搬型記憶媒体は読み取り装置５８にセットされて、ＣＰＵ５２によってそのプログラムが読み出されて、実行されてもよい。可搬型記憶媒体としてはＣＤ−ＲＯＭ、フレキシブルディスク、光ディスク、光磁気ディスク、ＩＣカード、ＵＳＢメモリ装置など様々な形式の記憶媒体を使用することができる。このような記憶媒体に格納されたプログラムが読み取り装置５８によって読み取られる。
【０２００】
また、入力機器６２には、キーボード、マウス、電子カメラ、ウェブカメラ、マイク、スキャナ、センサ、タブレットなどを用いることが可能である。また、出力機器６１には、ディスプレイ、プリンタ、スピーカなどを用いることが可能である。また、ネットワーク６０は、インターネット、ＬＡＮ、ＷＡＮ、専用線、有線、無線等の通信網であってよい。
【０２０１】
上記実施形態に関し、更に以下の付記を開示する。
（付記１）
コンピュータに、
入力されたデータを該データに付与された識別情報により振り分ける転送装置によって振り分けられた該データについてのパターンの検知処理を該識別情報毎に行う複数のサーバ装置のそれぞれから、該検知処理に関する負荷値を該識別情報単位で取得し、
前記複数のサーバ装置のうち第１サーバ装置より取得した前記負荷値が所定の許容範囲を超えた場合、該第１サーバ装置から前記複数のサーバ装置のうち第２サーバ装置へ、前記識別情報と該識別情報に対応する一パターンとの組み合わせを、該第１サーバ装置と該第２サーバ装置との該負荷値がそれぞれ該許容範囲内であるか否かに応じて、組単位で移動させる
処理を実行させることを特徴とする分散処理プログラム。
（付記２）
前記移動させる場合において、前記第１サーバ装置より取得した該第１サーバ装置の検知負荷の負荷値が第１許容範囲を超えた場合であって、該第１サーバ装置から前記第２サーバ装置へ、一または複数組の前記組み合わせを移動させて該第１サーバ装置と該第２サーバ装置との該検知負荷の負荷値がそれぞれ該第１許容範囲内に収まる場合、該第２サーバ装置へ該一または複数組の組み合わせを移動する旨を該第１サーバ装置に指示する
ことを特徴とする付記１に記載の分散処理プログラム。
（付記３）
前記移動させる場合において、さらに、前記第１サーバ装置より取得した該第１サーバ装置の通信負荷の負荷値が第２許容範囲を超えた場合であって、該第１サーバ装置から前記第２サーバ装置へ、該第１サーバ装置が処理する前記識別情報に対応する全パターンを移動させて該第１サーバ装置と該第２サーバ装置との該通信負荷の負荷値がそれぞれ該第２許容範囲内に収まる場合、該第２サーバ装置へ該識別情報と該識別情報に対応する全パターンを移動する旨を該第１サーバ装置に指示する
ことを特徴とする付記１または２に記載の分散処理プログラム。
（付記４）
前記移動させる場合において、さらに、前記複数のサーバ装置のそれぞれより取得したそれぞれのサーバ装置の負荷値の合計が第３許容範囲を超えた場合であって、前記検知処理に係る負荷が最も小さい該検知処理を行う前記第１サーバ装置の該負荷が最も小さい該検知処理で用いる検知対象の前記パターンを前記第２サーバ装置へ移動させて該第１サーバ装置と該第２サーバ装置との該検知負荷の負荷値がそれぞれ第１許容範囲内に収まる場合、該第２サーバ装置へ該一または複数組の組み合わせを移動する旨を該第１サーバ装置に指示する
ことを特徴とする付記１〜３のうちいずれか１項に記載の分散処理プログラム。
（付記５）
前記移動させる場合において、移動対象の組に含まれるパターンのうち、前記第２サーバ装置が有しているパターンについて、該パターンの実データを移動させずに該パターンの識別情報を移動させ、移動対象の組に含まれるパターンのうち、前記第２サーバ装置が有していないパターンについて、該パターンの実データ及び該パターンの識別情報を移動させる
ことを特徴とする付記１〜４のうちいずれか１項に記載の分散処理プログラム。
（付記６）
前記移動させる場合において、さらに、前記一または複数組の組み合わせを前記第２サーバ装置へ移動させて前記第１サーバ装置と前記第２サーバ装置との前記負荷値が前記許容範囲を超える場合、前記サーバ装置の追加または削減を通知する
ことを特徴とする付記２〜４のうちいずれか１項に記載の分散処理プログラム。
（付記７）
入力されたデータを該データに付与された識別情報により振り分ける転送装置によって振り分けられた該データについてのパターンの検知処理を該識別情報毎に行う複数のサーバ装置のそれぞれから、該検知処理に関する負荷値を該識別情報単位で取得する取得部と、
前記複数のサーバ装置のうち第１サーバ装置より取得した前記負荷値が所定の許容範囲を超えた場合、該第１サーバ装置から前記複数のサーバ装置のうち第２サーバ装置へ、前記識別情報と該識別情報に対応する一パターンとの組み合わせを、該第１サーバ装置と該第２サーバ装置との該負荷値がそれぞれ該許容範囲内であるか否かに応じて、組単位で移動させる移動制御部と、
を備えることを特徴とする分散処理管理装置。
（付記８）
前記移動制御部は、前記第１サーバ装置より取得した該第１サーバ装置の検知負荷の負荷値が第１許容範囲を超えた場合であって、該第１サーバ装置から前記第２サーバ装置へ、一または複数組の前記組み合わせを移動させて該第１サーバ装置と該第２サーバ装置との該検知負荷の負荷値がそれぞれ該第１許容範囲内に収まる場合、該第２サーバ装置へ該一または複数組の組み合わせを移動する旨を該第１サーバ装置に指示する
ことを特徴とする付記７に記載の分散処理管理装置。
（付記９）
前記移動制御部は、さらに、前記第１サーバ装置より取得した該第１サーバ装置の通信負荷の負荷値が第２許容範囲を超えた場合であって、該第１サーバ装置から前記第２サーバ装置へ、該第１サーバ装置が処理する前記識別情報に対応する全パターンを移動させて該第１サーバ装置と該第２サーバ装置との該通信負荷の負荷値がそれぞれ該第２許容範囲内に収まる場合、該第２サーバ装置へ該識別情報と該識別情報に対応する全パターンを移動する旨を該第１サーバ装置に指示する
ことを特徴とする付記７または８に記載の分散処理管理装置。
（付記１０）
前記移動制御部は、さらに、前記複数のサーバ装置のそれぞれより取得したそれぞれのサーバ装置の負荷値の合計が第３許容範囲を超えた場合であって、前記検知処理に係る負荷が最も小さい該検知処理を行う前記第１サーバ装置の該負荷が最も小さい該検知処理で用いる検知対象の前記パターンを前記第２サーバ装置へ移動させて該第１サーバ装置と該第２サーバ装置との該検知負荷の負荷値がそれぞれ第１許容範囲内に収まる場合、該第２サーバ装置へ該一または複数組の組み合わせを移動する旨を該第１サーバ装置に指示する、
ことを特徴とする付記７〜９のうちいずれか１項に記載の分散処理管理装置。
（付記１１）
前記移動制御部は、移動対象の組に含まれるパターンのうち、前記第２サーバ装置が有しているパターンについて、該パターンの実データを移動させずに該パターンの識別情報を移動させ、移動対象の組に含まれるパターンのうち、前記第２サーバ装置が有していないパターンについて、該パターンの実データ及び該パターンの識別情報を移動させる
ことを特徴とする付記７〜１０のうちいずれか１項に記載の分散処理管理装置。
（付記１２）
前記移動制御部は、さらに、前記一または複数組の組み合わせを前記第２サーバ装置へ移動させて前記第１サーバ装置と前記第２サーバ装置との前記負荷値が前記許容範囲を超える場合、前記サーバ装置の追加または削減を通知する
ことを特徴とする付記７〜１０のうちいずれか１項に記載の分散処理管理装置。
（付記１３）
コンピュータが、
入力されたデータを該データに付与された識別情報により振り分ける転送装置によって振り分けられた該データについてのパターンの検知処理を該識別情報毎に行う複数のサーバ装置のそれぞれから、該検知処理に関する負荷値を該識別情報単位で取得し、
前記複数のサーバ装置のうち第１サーバ装置より取得した前記負荷値が所定の許容範囲を超えた場合、該第１サーバ装置から前記複数のサーバ装置のうち第２サーバ装置へ、前記識別情報と該識別情報に対応する一パターンとの組み合わせを、該第１サーバ装置と該第２サーバ装置との該負荷値がそれぞれ該許容範囲内であるか否かに応じて、組単位で移動させる
処理を実行することを特徴とする分散処理方法。
（付記１４）
前記移動させる場合において、前記第１サーバ装置より取得した該第１サーバ装置の検知負荷の負荷値が第１許容範囲を超えた場合であって、該第１サーバ装置から前記第２サーバ装置へ、一または複数組の前記組み合わせを移動させて該第１サーバ装置と該第２サーバ装置との該検知負荷の負荷値がそれぞれ該第１許容範囲内に収まる場合、前記コンピュータは、該第２サーバ装置へ該一または複数組の組み合わせを移動する旨を該第１サーバ装置に指示する
ことを特徴とする付記１３に記載の分散処理方法。
（付記１５）
前記移動させる場合において、さらに、前記第１サーバ装置より取得した該第１サーバ装置の通信負荷の負荷値が第２許容範囲を超えた場合であって、該第１サーバ装置から前記第２サーバ装置へ、該第１サーバ装置が処理する前記識別情報に対応する全パターンを移動させて該第１サーバ装置と該第２サーバ装置との該通信負荷の負荷値がそれぞれ該第２許容範囲内に収まる場合、該第２サーバ装置へ該識別情報と該識別情報に対応する全パターンを移動する旨を該第１サーバ装置に指示する
ことを特徴とする付記１３または１４に記載の分散処理方法。
【０２０２】
なお、本発明は、以上に述べた実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲内で種々の構成または実施形態を取ることができる。
【符号の説明】
【０２０３】
１１    分散処理管理装置
１２    取得部
１３    移動制御部
３１    学習サーバ
３２    抽出部
３３    転送サーバ
３４    転送部
３５    ルーティングテーブル
３６    管理サーバ
３７    移動管理部
３８    全体負荷テーブル
３９    詳細負荷テーブル
４０    閾値情報テーブル
４１（４１ａ，４１ｂ，・・・）    複数の検知サーバ
４２    検知部
４３    仲介部
４４    パターンテーブル
４５    負荷テーブル
【図１】
0006428012.tif 000002
【図２】
0006428012.tif 000003
【図３】
0006428012.tif 000004
【図４】
0006428012.tif 000005
【図５】
0006428012.tif 000006
【図６】
0006428012.tif 000007
【図７】
0006428012.tif 000008
【図８】
0006428012.tif 000009
【図９】
0006428012.tif 000010
【図１０】
0006428012.tif 000011
【図１１】
0006428012.tif 000012
【図１２】
0006428012.tif 000013
【図１３】
0006428012.tif 000014
【図１４】
0006428012.tif 000015
【図１５】
0006428012.tif 000016
【図１６】
0006428012.tif 000017
【図１７】
0006428012.tif 000018