(57)【要約】【課題】ウェブシステム等の複数のコンピュータが相互に関連しつつ活動するシステムを監視し、異常をオンラインで検出する。【解決手段】複数のコンピュータの各々が、何れか他のコンピュータに対して行うサービスのトランザクションを収集し、該トランザクションからシステムにおけるノード間の相関行列を算出し、そこからそのノードの活性バランスを表す特徴ベクトルを求める。その特徴ベクトルを確率モデルにより監視することで、異常状態への遷移を検出する。【選択図】        図４
2005216066.tif 000002
【特許請求の範囲】
【請求項１】
複数のコンピュータによりネットワークを構成するコンピュータシステム内の各々のコンピュータが相互に関連しつつ動作するプログラムの障害を確率モデルに基づいて監視し、障害を自動検知する異常検出システムであって、
前記プログラムに関連づけられたサービスを提供する複数のコンピュータと、
前記複数のコンピュータの各々が他の何れかのコンピュータで動作するプログラムから呼び出されて行ったサービスの処理であるトランザクションを、当該サービスに対応付けて記録するエージェント装置と、
前記ネットワークに接続された異常監視サーバであって、前記エージェント装置が記録したトランザクションを、前記複数のコンピュータの各々から収集するトランザクション収集部と、前記複数のコンピュータの各々から収集したトランザクションより算出したノード相関行列を出力する相関行列算出部と、前記ノード相関行列の固有方程式を解くことで活動度ベクトルを算出する活動度ベクトル算出部と、前記活動度ベクトルが発生する確率を推定する確率推定部と、前記確率推定部が推定する確率密度から活動度ベクトルの外れ値度を算出することで、前記複数のコンピュータの各々が相互に関連しつつ動作するプログラムの障害を自動検知する障害検知部とを含む異常監視サーバと、
を含む異常検出システム。
【請求項２】
前記複数のコンピュータの各々が提供する前記プログラムに関連づけられたサービスは、ＩＰアドレス、ポート番号、トランザクションタイプ、からなる群から一以上選択して構成したサービスである請求項1記載の異常検出システム。
【請求項３】
前記複数のコンピュータの各々が前記プログラムに関連づけられて提供するサービスが、要求元ＩＰアドレス、要求先ＩＰアドレス、要求先のポート番号、要求先のポートにおけるトランザクションタイプ、からなる群から一以上選択して構成したサービスを使用することで、前記プログラムのアプリケーション層における障害を検知する障害検知部を備えた請求項２記載の異常検出システム。
【請求項４】
前記障害検知部は、前記活動度ベクトルをコサイン尺度に変形し、外れ値度を算出することで障害を自動検知する請求項1記載の異常検出システム。
【請求項５】
前記確率推定部は、オンラインＥＭ法により確率分布をオンライン学習する確率推定部である請求項1記載の異常検出システム。
【請求項６】
前記エージェント装置は、前記複数のコンピュータに備えられた請求項1記載の異常検出システム。
【請求項７】
前記エージェント装置は、前記コンピュータシステム内のネットワーク機器に備えられた請求項1記載の異常検出システム。
【請求項８】
前記ノード相関行列を算出するデータとして、事前にキャプチャした前記コンピュータの各々のトランザクションのデータを使用することで、異常の発生した時刻と異常が発生したサービスを決定する請求項1記載の異常検出システム。
【請求項９】
複数のコンピュータによりネットワークを構成するコンピュータシステム内の各々のコンピュータが相互に関連しつつ動作するプログラムの障害を検知する異常検出システムであって、
前記プログラムに関連づけられたサービスを提供する複数のコンピュータと、
前記複数のコンピュータの各々が他の何れかのコンピュータで動作するプログラムから呼び出されて行ったサービスの処理であるトランザクションを、当該サービスに対応付けて記録するエージェント装置と、
前記ネットワークに接続された異常監視サーバであって、前記エージェント装置が記録したトランザクションを、前記複数のコンピュータの各々から収集するトランザクション収集部と、前記複数のコンピュータの各々から収集したトランザクションより算出したノード相関行列を出力する相関行列算出部と、前記ノード相関行列の固有方程式を解くことで活動度ベクトルを算出する活動度ベクトル算出部と、前記活動度ベクトルから、前記複数のコンピュータの各々が相互に関連しつつ動作するプログラムの障害を報知する障害検知部とを含む異常監視サーバと、
を含む異常検出システム。
【請求項１０】
前記複数のコンピュータの各々が提供する前記プログラムに関連づけられたサービスは、ＩＰアドレス、ポート番号、トランザクションタイプ、からなる群から一以上選択して構成したサービスである請求項９記載の異常検出システム。
【請求項１１】
前記複数のコンピュータの各々が前記プログラムに関連づけられて提供するサービスが、要求元ＩＰアドレス、要求先ＩＰアドレス、要求先のポート番号、要求先のポートにおけるトランザクションタイプ、からなる群から一以上選択して構成したサービスを使用することで、前記プログラムのアプリケーション層における障害を検知する障害検知部を備えた請求項１０記載の異常検出システム。
【請求項１２】
前記エージェント装置は、前記複数のコンピュータの各々に備えられた請求項９記載の異常検出システム。
【請求項１３】
前記エージェント装置は、前記コンピュータシステム内のネットワーク機器に備えられた請求項９記載の異常検出システム。
【請求項１４】
前記ノード相関行列を算出するデータとして、事前にキャプチャした前記コンピュータの各々のトランザクションのデータを使用することで、異常の発生した時刻と異常が発生したサービスを決定する請求項９記載の異常検出システム。
【請求項１５】
複数のコンピュータによりネットワークを構成するコンピュータシステム内の各々のコンピュータが相互に関連しつつ動作するプログラムの障害を確率モデルに基づいて監視し、障害を自動検知する異常検出システムであって、
前記複数のコンピュータの各々が他の何れかのコンピュータで動作するプログラムから呼び出されて行ったサービスの処理であるトランザクションを、当該サービスに対応付けて記録するトランザクション記録手段を有するエージェント部と、
前記ネットワークに接続された異常監視サーバであって、前記エージェント部が記録したトランザクションを、前記複数のコンピュータの各々から収集するトランザクション収集手段と、前記複数のコンピュータの各々から収集したトランザクションより算出したノード相関行列を出力する相関行列算出手段と、前記ノード相関行列の固有方程式を解くことで活動度ベクトルを算出する活動度ベクトル算出手段と、前記活動度ベクトルが発生する確率を推定する確率推定手段と、前記確率推定部が推定する確率密度から活動度ベクトルの外れ値度を算出することで、前記複数のコンピュータの各々が相互に関連しつつ動作するプログラムの障害を自動検知する障害検知手段を有する異常監視サーバと、
を含む異常検出システム。
【請求項１６】
前記複数のコンピュータの各々が前記プログラムに関連づけられて提供するサービスが、要求元ＩＰアドレス、要求先ＩＰアドレス、要求先のポート番号、要求先のポートにおけるトランザクションタイプ、からなる群から一以上選択して構成したサービスを使用することで、前記プログラムのアプリケーション層における障害を検知する障害検知手段を備えた請求項１５記載の異常検出システム。
【請求項１７】
前記障害検知手段は、前記活動度ベクトルをコサイン尺度に変形し、外れ値度を算出することで障害を自動検知する手段である請求項１５記載の異常検出システム。
【請求項１８】
前記確率推定手段は、オンラインＥＭ法により確率分布をオンライン学習する手段である請求項１５記載の異常検出システム。
【請求項１９】
複数のコンピュータによりネットワークを構成するコンピュータシステム内の各々のコンピュータが相互に関連しつつ動作するプログラムの障害を確率モデルに基づいて監視し、障害を自動検知する異常検出方法であって、
エージェント部が、前記複数のコンピュータの各々が他の何れかのコンピュータで動作するプログラムから呼び出されて行ったサービスの処理であるトランザクションを、当該サービスに対応付けて記録する記録ステップと、
前記ネットワークに接続された異常監視サーバが、前記エージェント部が記録したトランザクションを、前記複数のコンピュータの各々から収集するトランザクション収集ステップと、前記複数のコンピュータの各々から収集したトランザクションより算出したノード相関行列を出力する相関行列算出ステップと、前記ノード相関行列の固有方程式を解くことで活動度ベクトルを算出する活動度ベクトル算出ステップと、前記活動度ベクトルが発生する確率を推定する確率推定ステップと、前記確率推定部が推定する確率密度から活動度ベクトルの外れ値度を算出することで、前記複数のコンピュータが相互に関連しつつ動作するプログラムの障害を自動検知する障害検知ステップと、
を含むステップを実行する異常検出方法。
【請求項２０】
前記複数のコンピュータの各々が前記プログラムに関連づけられて提供するサービスが、要求元ＩＰアドレス、要求先ＩＰアドレス、要求先のポート番号、要求先のポートにおけるトランザクションタイプ、からなる群から一以上選択して構成したサービスを使用することで、前記プログラムのアプリケーション層における障害を検知する障害検知ステップを備えた請求項１９記載の異常検出方法。
【請求項２１】
前記障害検知ステップは、前記活動度ベクトルをコサイン尺度に変形し、外れ値度を算出することで障害を自動検知するステップである請求項１９記載の異常検出方法。
【請求項２２】
前記確率推定ステップは、オンラインＥＭ法により確率分布をオンライン学習するステップである請求項１９記載の異常検出方法。
【請求項２３】
複数のコンピュータによりネットワークを構成するコンピュータシステム内の各々のコンピュータが相互に関連しつつ動作するプログラムの障害を確率モデルに基づいて監視し、障害を自動検知する異常検出プログラムであって、
エージェント部が、前記複数のコンピュータの各々が他の何れかのコンピュータで動作するプログラムから呼び出されて行ったサービスの処理であるトランザクションを、当該サービスに対応付けて記録する記録ステップと、
前記ネットワークに接続された異常監視サーバが、前記エージェント部が記録したトランザクションを、前記複数のコンピュータの各々から収集するトランザクション収集ステップと、前記複数のコンピュータの各々から収集したトランザクションより算出したノード相関行列を出力する相関行列算出ステップと、前記ノード相関行列の固有方程式を解くことで活動度ベクトルを算出する活動度ベクトル算出ステップと、前記活動度ベクトルが発生する確率を推定する確率推定ステップと、前記確率推定部が推定する確率密度から活動度ベクトルの外れ値度を算出することで、前記複数のコンピュータの各々が相互に関連しつつ動作するプログラムの障害を自動検知する障害検知ステップと、
を含むステップを実行する異常検出プログラム。
【請求項２４】
前記複数のコンピュータで動作する前記プログラムに関連づけられて提供するサービスが、要求元ＩＰアドレス、要求先ＩＰアドレス、要求先のポート番号、要求先のポートにおけるトランザクションタイプ、からなる群から一以上選択して構成したサービスを使用することで、前記プログラムのアプリケーション層における障害を検知する障害検知ステップを備えた請求項２３記載の異常検出プログラム。
【請求項２５】
前記障害検知ステップは、前記活動度ベクトルをコサイン尺度に変形し、外れ値度を算出することで障害を自動検知するステップである請求項２３記載の異常検出プログラム。
【請求項２６】
前記確率推定ステップは、オンラインＥＭ法により確率分布をオンライン学習するステップである請求項２３記載の異常検出プログラム。
【請求項２７】
請求項２３の異常検出プログラムを記憶した記憶媒体。
【請求項２８】
複数のコンピュータによりネットワークを構成するコンピュータシステム内の各々のコンピュータが相互に関連しつつ動作するプログラムの障害を確率モデルに基づいて監視し、障害を自動検知する異常監視サーバであって、
前記複数のコンピュータの各々が他の何れかのコンピュータで動作するプログラムから呼び出されて行ったサービスの処理であるトランザクションを複数のコンピュータの各々から収集するトランザクション収集部と、
前記複数のコンピュータの各々から収集したトランザクションより算出したノード相関行列を出力する相関行列算出部と、
前記ノード相関行列の固有方程式を解くことで活動度ベクトルを算出する活動度ベクトル算出部と、前記活動度ベクトルが発生する確率を推定する確率推定部と、
前記確率推定部が推定する確率密度から活動度ベクトルの外れ値度を算出することで、前記複数のコンピュータの各々が相互に関連しつつ動作するプログラムの障害を自動検知する障害検知部と、
を含む異常監視サーバ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、異常検出システム、異常検出方法、異常検出サーバ、異常検出プログラム及び記憶媒体に関する。特に本発明は、複数のコンピュータで構成されるコンピュータシステムの異常状態を検知する異常検出システム、異常検出方法、異常検出サーバ、異常検出プログラム及び記憶媒体に関する。
【背景技術】
【０００２】
多くの要素が複雑に結合したネットワークシステムは、さまざまな分野で関心がもたれている。たとえば、固体物理の分野では電子ないし原子の多体系の記述は中心的な研究領域であり、経済学の分野では古くから国家間・産業分野間の関連が議論されている。コンピュータが多数接続されたネットワークシステムもこの多体系の範疇に入るといえる。
【０００３】
コンピュータにおけるネットワークシステムで難しいのは、システムを観測する観測値が、ＯＳＩ階層モデルにおける層によって複数存在するため、どの層にターゲットを絞るべきなのか、各々の層間の関係をどのように考慮するかを決定しなければならない。さらに、各々の層におけるネットワークノード間の相互作用といったものが、どのようなものであるかが自明に定義されていないため、多体問題の相互作用を記述する観測データに何を採用するかといった根本的な課題がある。
【０００４】
社会基盤におけるＩＴ技術の重要性が高まるにつれ、コンピュータシステムの障害が社会に与えるインパクトも大きなものになってきている。また、近年の分散化と複雑化が進んだシステムにおいては、コンピュータシステム自体に何らかの自律型の性質を持たせることで、管理者が常時システムを監視する必要がないことが望ましい。
【０００５】
例えば、このような自律性をコンピュータに付与し自らの異常を検知する方法として、システムの状態を総合的に認識し、障害の兆候を自動検知する方法が考えられる。しかしながら、上述のようなコンピュータネットワークの層構造による観測データの複雑さや、相関のあるシステムでの観測データが自明でないため、コンピュータシステム全体の状態記述や、その障害検知もまだ課題を残している。
【０００６】
たとえば、コンピュータシステム管理のために、ネットワークノードマネジメントシステム（以下「ＮＮＭＳ」）と呼ばれる製品群が市販され、広く使われている。しかしこれらは、主として情報を収集する機能と、それを可視化表示することに力が注がれ、障害自動検知という意味では十分な性能を備えているとは言いがたい。実際、これらのＮＮＭＳはＳＮＭＰ(Simple Network Management Protocol)マネージャとしての機能を持つのが普通である。
【０００７】
しかしながら、通常の設定ではＳＮＭＰ  Ｔｒａｐの発生はあまりに頻繁で、しかも具体的な障害と必ずしも結びつかないため、管理者によってそのイベント送出オプションをオフにしている場合がある。従って、ＮＮＭＳを利用したところで、障害の予兆を見出すには、可視化された観測値を人間が常時監視するしかないのが現状である。
【０００８】
一例として、コンピュータシステムの中で特に、近年ビジネス上の役割をますます高めつつあるウェブシステムを念頭においたとき、システム監視技術は、以下の論点から整理することができる。
【０００９】
第一に、システムの状態を常時観測する観測値についてであるが、観測値をそのまま使う場合と、観測値を確率変数として扱う場合が考えられる。一般に観測量の時間変動の激しいウェブシステムでは、観測値をそのまま使用する手法は障害が発生していることを判断する閾値の決定が困難であるため適用が難しい。従って、観測値を確率変数として扱うことがウェブシステムの実状にあった異常検知が可能であると考えられる。
【００１０】
第二に、観測するデータの対象として、ＯＳＩ階層モデルにおけるＴＣＰ層以下の挙動を観測するか、アプリケーション層の挙動を観測するかが問題となる。たとえば、ＨＴＴＰサーバ、ウェブアプリケーションサーバ、データベース・サーバと３層構造になっているような規模の大きいウェブシステムを考えた場合、このようなウェブシステムでは各サーバが連動して動作する。
【００１１】
このようなシステムにおいては、ＨＴＴＰサーバのプログラムによりウェブアプリケーションサーバのプログラムが呼び出されるといったプログラムによるサーバ間相互の動作が行われるため、アプリケーション層上での各サーバの相互関係が状態の記述においては本質的である。従って、アプリケーション層を観測することでウェブシステムの各サーバの相互関係を監視できると考える。
【００１２】
第三に、観測値の相関について、各観測ポイントの相関をあらわに考慮し、多次元の観測値を扱う場合と、特に各観測ポイントの相関を考慮せず、各々のデータを独立に扱う場合が考えられる。上述のようにウェブシステムの３層構造により分散処理を実現している場合には、単一のサーバの情報を独立に監視しても有効ではない。他に各サーバの情報を独立に監視する方法としては、上述のＳＮＭＰによる手法が採られていた。
【００１３】
これらの論点からシステム監視技術に関わる先行技術の一部を説明する。
【００１４】
非特許文献１は、サーバ上のＯＳのカーネルモニタリングを用いて収集した情報を、混合正規分布でモデル化し、異常検知を試みている。ここで用いた観測量としては、ＳＮＭＰのエージェントが持つ情報であるＭＩＢ(Management Information Base)で規定されるところのarpStatsPktsなどの低レベルの量を測定しており、ＡＲＰパケット数などの個別の量について変化点検出が自動で可能である旨を報告している。従って、上述の第二の論点である、ウェブシステム等のアプリケーション層を含めた障害を検知する技術はここでは開示されていない。
【００１５】
特許文献１は、コンピュータネットワークにおいて、システム内に異常があると判断する閾値を予測して、その閾値を動的に更新することでシステムを監視する手法を開示している。しかしこれは、閾値の予測のため観測する単位の時間的スパンが、数時間から数日単位であり、実際のウェブシステム等のコンピュータシステム内の障害検知という観点からは実用にはほど遠い状況である。
【００１６】
さらなる課題として、これらのシステム監視における技術を実際のシステムへと実現するために、システムの監視対象となるメトリックとして、何を観測するかに十分な回答が得られていない。上述のように、ウェブシステムの障害検知では、アプリケーション層における複数のサーバの連携動作を記述することが本質的である。
【００１７】
特願２００３−４３２３３７号は、監視対象となるメトリックについて提案を行っている。ここでは、サーバシステムにおいて、実行時のアプリケーション同士の関連度を計算する手法として、サーバ間のパケットによりサービス関連度を計算する手法が報告されている。これらの手法を用いると、アプリケーション（例えば、ＨＴＴＰサーバ、データベース・サーバ等で動作するアプリケーション）同士の関連を、重み付き有向グラフとして求めることができる。これは、システムの関連度を表す行列が得られるということと同義である。
【００１８】
このシステムの関連度を表す行列を、一定の時間単位で生成し、その時間的な変化からシステムの異常検出をする有効な方法は現在のところ知られていない。本発明では、システムにおけるノード間の関連度情報に注目して、不要な自由度を捨象し、相互のやり取りが頻繁である「活動度」の高いノードを自動的に抽出する手法を与える。また、それを用いて障害自動検知システムを構築することを目的とする。
【特許文献１】特開２００３−６０７０４号公報
【非特許文献１】H. Hajji, “Baselining Network Traffic and Online Faults Detection”,IEEE International Conference on Communications 2003, Volume: 1,2003, 301-308
【発明の開示】
【発明が解決しようとする課題】
【００１９】
上述の従来技術における課題をまとめると、観測値ないし相関度の激しい時間変動に頑強な手法で、実行時環境において、複数の観測ポイントの相互依存を考慮した方法で、アプリケーション層におけるサービス停止を中心とした障害を自動で検知可能である方法またはシステムを提供することである。
【課題を解決するための手段】
【００２０】
これらの課題を解決するために、本発明の実施形態の一例として、複数のコンピュータによりネットワークを構成するコンピュータシステム内の各々のコンピュータに、サービスの処理であるトランザクションを、当該サービスに対応付けて記録するエージェント装置を設け、各エージェント装置はトランザクションをシステムに接続された異常監視サーバに送信し、異常監視サーバが、記録したトランザクションをエージェント装置から収集し、この収集したトランザクションからノード相関行列を出力し、このノード相関行列の固有方程式を解くことで活動度ベクトルを算出し、算出された活動度ベクトルからこの活動度ベクトルが発生する確率を推定する確率密度から活動度ベクトルの外れ値度を算出することで、前記複数のコンピュータの各々が相互に関連しつつ動作するプログラムの障害を自動検知する異常検出システム、異常検出方法、異常検出サーバ、異常検出プログラム及び記憶媒体を提供する。
【発明の効果】
【００２１】
本発明により、ウェブシステムに代表される複雑なコンピュータシステムの障害を、従来手法では難しかったアプリケーション層における障害を含めて、実行時環境において早期に自動検出することができる。
【発明を実施するための最良の形態】
【００２２】
以下、本発明に好適な実施形態の一例について、図を参照しながら説明する。尚、以下において説明する実施形態においては、本発明に係るコンピュータシステムに好適な実施形態の一例として、本発明をウェブシステムに適用した場合を示す。また、本発明の実施形態は、ウェブシステムに限られずに、クライアント・サーバシステム、ＬＡＮシステム等の複数のコンピュータにて構成されるシステムにおいて適用することが可能である。
【００２３】
図１は、本発明の好適な実施例であるウェブシステム１０のブロック図である。本発明を適用したウェブシステム１０は、クライアント装置４０からのネットワーク接続を経由するルータ４５と、冗長化されたウェブサーバ２０，２１と、データベース・サーバ５０と、冗長化されたウェブサーバ２０，２１のアクセス先を決定する負荷分散装置３０と、異常監視サーバ６０と公衆回線網８０からなる。ウェブサーバ２０，２１は、ＨＴＴＰサーバプログラム２０１，２１１とウェブアプリケーションサーバプログラム２０２，２１２が動作する。例えば、ウェブサーバ２０，２１は、クライアント装置４０からの入力を受けたデータをデータベース・サーバ５０に記憶してもよいし、データベース・サーバ５０から取得したデータをクライアント装置４０へ返信してもよい。公衆回線網８０を経由して、クライアント装置４０、ウェブサーバ２０，２１、データベース・サーバ５０等が接続されているが、公衆回線網８０を経由せずに接続されていてもよいし、公衆回線網８０がインターネットに代用されてもよい。
【００２４】
ここでのサーバ及びサーバで動作するプログラムの種類は一例を挙げたものであり、ここで挙げたサーバ及びプログラムに限定されるものではない。
【００２５】
図２は、クライアント装置４０、ウェブサーバ２０、データベース・サーバ５０から構成されるウェブシステムを表した概念図である。ここではウェブサーバ２０にてＨＴＴＰサーバプログラム２０１とウェブアプリケーションサーバプログラム２０２が実行される。クライアント装置４０及び各サーバのＩＰアドレスとポート番号を各ノードの下部に示している。このＩＰアドレス、ポート番号、ノード及びノード間の相関について、以下説明する。
【００２６】
コンピュータシステムにおける、ネットワークの頂点間の相関ないし関連度に着目し、実行時のシステムにおけるノード間関連度について考える。ここで、「ノード」とは、障害検知の対象とする単位であり、たとえば、あるＩＰアドレスで指定することができる。図２のように、１つのウェブサーバで２つのプログラムが動作している場合には、ノードとして（ＩＰアドレス、ポート番号）で指定されるアプリケーションを考えることができる。ここでは、例として「サービス」を取り上げる。「サービス」とは、サーバプログラムが他のサーバプログラムのために必要なデータ等を生成する処理をいう。つまり、ノード間の相互関係を、「サービス」すなわち（要求元ＩＰアドレス、要求先ＩＰアドレス、要求先ポート番号）の２項関係ととらえる。さらに、ある時間において、ｉがｊを引き起こした回数をサービスｉとサービスｊの間の重みとする。
【００２７】
たとえば図２では、(192.168.0.19,192.168.0.53,80)がサービスの例である。一般に、サービス相関は行列で表すことが可能である。これをサービス相関行列と呼び、形式的に式（１−１）のように記述する。
【００２８】
【数１】
2005216066.tif 000003
ここで、ＩはＩＰアドレスを意味し、要求元ＩＰアドレスがｉの要素であり、要求先ＩＰアドレスがｊの要素である。ｐは要求先ポート番号である。また、サービスとして要求元ＩＰアドレス、要求先ＩＰアドレス、要求先ポート番号に加えて、要求先トランザクションタイプを考慮することも可能である。この場合には、サービス相関行列は式（１−２）のように表され、ここでのｔは要求先トランザクションタイプを表す。
【００２９】
（１−１）の相関行列の要素を式（２）のように表す。
【００３０】
【数２】
2005216066.tif 000004
ここでＢ（ｔ）として、式（３）のように表す。
【００３１】
【数３】
2005216066.tif 000005
【００３２】
【数４】
2005216066.tif 000006
式（４）のような量を考えると、これは、サービスsijk=(Ii,Ij,pk)の出現頻度を表していると解釈される。ポート番号を縮約すれば、さらにこれから、ＩＰアドレス同士の通信関係を表す行列を抽出できる。すなわち、式（５）のように表される。
【００３３】
【数５】
2005216066.tif 000007
あるいは、サービス相関行列について、親サービスのＩＰアドレスを縮約して式（６）のように表すこともできる。
【００３４】
【数６】
2005216066.tif 000008
このように、アプリケーション(Ii,pk)と(Il,pm)の関連度を抽出することもできる。以下、サービスないしサービスを受けるホストを表す抽象的な概念として「ノード」という言葉を用い、ノードの相関行列（以下「ノード相関行列」）を表す記号はＢで代表する。
【００３５】
上述の説明においては、ノード間の相互関係をサービスとして（要求元ＩＰアドレス、要求先ＩＰアドレス、要求先ポート番号）の２項関係と捉えているが、要求元ポート番号を含めていてもよいし、その他の要素として、ＩＰアドレス、ポート番号に限定されることなく、ＭＡＣアドレスを利用してもよい。特定のポート番号におけるトランザクションタイプを含んでいてもよい。また、ＩＰアドレスとしては、ＩＰバージョン６であってもよい。
【００３６】
本発明においては、行列Ｂに何らかの前処理を行うことがしばしば有効である。特に、値域を制限する意味で、値域を制限する意味で、行列要素ｆｉｊを、単調な関数ｆにより、式（７）によって変換するのは有効である。
【００３７】
【数７】
2005216066.tif 000009
ウェブ系のシステムでは、関数ｆとして、対数変換がしばしば有用である。
【００３８】
【数８】
2005216066.tif 000010
ここでも、上式に従って行列要素を変換した。なお、その他の関数、例えば、双曲線正接ｔａｎｈや、その他の任意の関数も、行列の前処理に使うことができる。あるいは、ｆによる変換の代わりに、行和ないし列和を１とする規格化を用いることもできる。これらの選択により本発明の本質を失うことはない。
【００３９】
実行時において、システムに何らかの障害が起こった場合、ノード相関行列に変化が表れる。しかし、その変化は各要素を個別に見ていても障害を検知する事は困難である。なぜなら、呼出頻度のような示量性の観測量は時間的に大きく揺らぐものであり、仮に大きな変化があったとしても、障害なのか単なるトラフィックの変化なのか判断しがたいためである。
【００４０】
そこで、システム全体の変化を捉えるような量を抽出することを考える。ある時刻において与えられたノード相関行列は、その時間近傍でのノード間の関連度を表すものである。ここで「関連度」とは、あるノードから別のノードへの遷移強度ないし遷移速度に対応する意味を持っていると考えられる。そこでこの行列に対して、マルコフ過程の理論におけるコロモゴルフの方程式と同様の式（９）のような運動方程式を想定してみる。
【００４１】
【数９】
2005216066.tif 000011
ノード相関行列Ｂは観測を行う時間に依存するが、ある一つのタイムスロットでのダイナミクスを考えることにし、式（９）ではＢを定数と想定する。
ここでuは状態ベクトルであって式（１０）のように表される。
【００４２】
【数１０】
2005216066.tif 000012
式（９）の運動方程式にしたがって解釈すると、状態ベクトルの要素は、ある時刻にシステムを観察したとき、どのノードで処理が行われているかを表す重みであると解釈できる。
【００４３】
さらに、式（９）の運動方程式の定常状態が、ノード間の関連度込みで系の特徴を直接反映した状態になっていると考えることは自然である。ノード相関行列は非負行列と仮定でき、ペロン＝フロベニウスの定理によれば、絶対値最大の固有値は実数でなおかつ孤立している。また、固有ベクトルの要素は全て正である。すなわち、固有方程式の解をもってノード相関行列の特徴量と考えることができる。
【００４４】
【数１１】
2005216066.tif 000013
もしくは等価であるが、極値方程式の解をもってノード相関行列の特徴量と考えることができる。
【００４５】
【数１２】
2005216066.tif 000014
Ｂが非負行列であることに注意すれば、式（１０）における最大化は明らかに、行列要素の大きいところでｕ１の重みが大きければ達成される。すなわち、もしノードｉが非常に活発に他ノードを呼び出しているとすると、上記特徴量はノードｉにおいて強い重みを持つ。この意味で、上記特徴量を、活動度ベクトルと呼ぶことができる。
【００４６】
固有方程式を解く具体的な計算方法について、以下説明する。コンピュータシステムの関連度行列は、通常、比較的ゼロ要素が多いという特徴をもつ。これは活動度ベクトルにおいても例外ではない。また、システムが複雑になるにつれて行列サイズも増大する。場合によっては数百から千程度になる。このような大規模な疎行列の、最大固有ベクトルを求めるためには、べき乗法と呼ばれる計算手法が好適である。べき乗法とは、ある任意の（しばしばランダムな）要素をもつ初期ベクトルｗに、文字通り行列Ｂをかけていく方法である。今、Ｂの固有ベクトル{u1,u2,u3,・・}により、初期ベクトルｗが、ある実定数の組{c1,c2,c3,・・}を用いて、
【００４７】
【数１３】
2005216066.tif 000015
のように展開できるとしよう。このとき、Ｂのｋ乗をこれに作用させる。
【００４８】
【数１４】
2005216066.tif 000016
ここでλｉはｕｉに属する固有値である（λｌが最大固有値）。したがってｋが増大するにつれ、ベクトルＢｋｗの向きはｕ１に収束することがわかる。このことは、Ｂの最大固有値に縮退がなく、かつそれが実数である時のみに成り立つが、関連度行列は非負行列であるから、ペロン＝フロベニウスの定理により、最大固有値は実数でかつ孤立していることが保証されている。
【００４９】
べき乗法は極めて高速な計算手法であり、ここで主に興味あるコンピュータシステムのアプリケーション層のオンライン障害探知においては、実用上計算時間が問題になることはない。本発明では固有方程式を計算するにあたって、べき乗法を使用したが、この方法を採用することは、本発明において本質的ではなく、その他の方法であってよい。
【００５０】
式（１１）の固有方程式は、固有ベクトルに対して同次形になっている。従って、ノード相関行列の各要素はトラフィック量に応じて変動するが、適切な規格化条件を課せば、活動度ベクトルがそのトラフィック量自体に左右されない。したがって、活動度ベクトルを監視することで、ウェブシステムで問題となる観測量の極端な揺らぎから自由に、システムの本質的な秩序の変化を監視できる。
【００５１】
実際のウェブシステムにおいて、活動度ベクトルを算出する具体的な方法について以下説明する。
【００５２】
図３は、クライアント装置４０、ウェブサーバ２０及び２１、データベース・サーバ５０、負荷分散装置３０からなるウェブシステムの概念図である。ウェブサーバ２０，２１は同様にＨＴＴＰサーバプログラム２０１，２１１とウェブアプリケーションサーバプログラム２０２、２１２が実行される。ウェブサーバ２０と２１により、ウェブサーバは２重に冗長化されている。ウェブサーバ２０及び２１は、負荷分散装置３０を介してクライアント装置からのアクセスが行われる。
【００５３】
ウェブサーバ２０，２１が２重に冗長化されたシステムであることは、本発明において本質的なことではなく、さらに複数に冗長化されたサーバを含むシステムでもよく、またはサーバが全く冗長化されていないシステムでもよい。また、システムに負荷分散装置３０を備えていなくてもよい。
【００５４】
このようなウェブシステムにおいて、負荷分散装置３０の設定ファイルの間違いなどの原因で、ある時点からＨＴＴＰサーバの一方にリクエストが振られなかったと仮定する。この場合においても、全てのサーバプロセス自体は正常であり、ＴＣＰ層以下の層においてどこにも異常はなく、負荷が小さいうちは応答時間やスループットにも異常は表れない。しかし、負荷が大きくなると設計時に期待されたトラフィック容量よりもはるかに小さい容量でサーバが異常を発生する可能性があり、潜在的に危険な状態である。このような潜在的に危険なサーバの状態を検知することが、本発明の目的の一つであるため、図３のウェブシステムは、本発明の異常検出システムにおいて好適な実施例であると想定される。
【００５５】
図４は本発明の好適な実施例の一つである異常検出システムを図３のウェブシステムに適用した模式図である。異常検出システムは、ウェブシステム内の複数のコンピュータと、異常監視サーバ６０と、エージェント装置７２０，７２１，７４０，７５０からなる。各複数のコンピュータにはトランザクションを収集するエージェント装置７２０，７２１，７４０，７５０が備えられている。異常監視サーバ６０は、図１のようにウェブシステムのネットワークに接続されており、ネットワーク経由で、エージェント装置７２０，７２１，７４０，７５０が記録した各トランザクションを収集する（図４の矢印にて図示）。
【００５６】
エージェント装置７２０，７２１，７４０，７５０は、各コンピュータが行ったサービスの処理であるトランザクションを各々のサービスに対応付けて記録する装置であるが、これはソフトウェア的にトランザクションを記録する処理機構である場合を含む。即ち、各装置や各サーバであるコンピュータにソフトウェアで処理するエージェント部として備えられていてもよい。エージェント装置又はエージェント部７２０，７２１，７４０，７５０としては、各コンピュータ内に備えられていてもよいし、外付けであってもよい。図４のシステムでは、エージェント装置７５０のみ、外付け装置であり、エージェント装置７２０、７２１、７４０は各コンピュータに内蔵することで備えられている。一のコンピュータに対して、外付けかまたは内臓のエージェント装置７２０，７２１，７４０，７５０のどちらを用いるかは、本発明において本質的なことではなく、図４では一例を示したに過ぎない。
【００５７】
エージェント装置７２０，７２１，７４０が、例えばエージェント部として、各コンピュータにソフトウェアとして備えられる場合には、当該ソフトウェア及びプログラムを記憶した記憶媒体として、フレキシブルディスク、ＣＤ−ＲＯＭ等が使用され、これらの記憶媒体から各コンピュータへインストールされる。また、これらのソフトウェア及びプログラムが特定のサーバからネットワーク経由で読み出されインストールされてもよい。エージェント装置７５０にインストールされるソフトウェアにおいても、上述の記憶媒体やネットワークを介してインストールされてもよい。
【００５８】
エージェント装置が単体の装置として、各コンピュータとは別に外付けに設けられる場合には、エージェント装置のハードウェア構成としては、例えば以下のようになる。演算を行うＣＰＵと、データやプログラム等を記憶するＲＡＭと、システムをネットワークに接続するための通信I/Fと、これらのI/OをコントロールするI/Oコントローラと、これらのI/Oと処理の制御を行うホストコントローラと、ＲＯＭとで構成されている。また、エージェント装置がシステムを構成するコンピュータとは別の単体のコンピュータであってもよい。
【００５９】
各々のエージェント装置又はエージェント部７２０，７２１，７４０，７５０には、装置に関連付けられた各々のコンピュータ及びサーバのトランザクションが記録されており、これらの記録されたデータはリアルタイムにもしくは一定の時間間隔で異常監視サーバ６０のトランザクション収集部に送信される。一のエージェント装置又はエージェント部が記録するトランザクションは、一のコンピュータのトランザクションのみ記録するものであってもよいし、複数のコンピュータのトランザクションを記録してもよい。また、エージェント装置又はエージェント部が異常監視サーバ６０に内蔵されていてもよい。
【００６０】
また、図５のようにエージェント装置７６０，７６１，７６２は、ルータ、スイッチ、ハブ、ブリッジ等のネットワーク機器に内蔵されたものであってもよい。これらのネットワーク機器においても、サービスの処理であるトランザクションを記録する処理がソフトウェア的に実現される処理機構であって各ネットワーク機器にインストールされているものでもよい。いずれの場合においても、各々のエージェント装置から異常監視サーバ６０のトランザクション収集部にトランザクションのデータが送信される。ネットワーク機器に提供するソフトウェア及びプログラムは、フレキシブルディスク、ＣＤ−ＲＯＭ、その他の記録媒体からルータやスイッチ等のネットワーク機器にインストールされてもよいし、又は、ソフトウェア及びプログラムが、特定のサーバのハードディスクに記録されておりネットワーク経由でルータ等に提供されてもよい。また、ルータやスイッチ等とは独立に上述のようなハードウェア構成で、システムに接続されている外部装置であってもよい。
【００６１】
図６は、異常監視サーバ６０の論理的な構成を表した概念図である。異常監視サーバ６０は、トランザクション収集部６０１と相関行列算出部６０２と活動度ベクトル算出部６０３と、確率推定部６０４と、障害検知部６０５より構成される。図の矢印は、異常監視サーバ６０内での処理の流れを表している。
【００６２】
図７は、異常監視サーバ６０における、ハードウェア構成の一例を表したブロック図である。異常監視サーバ６０は、演算を行うＣＰＵ６００と、データやプログラム等を記憶するＲＡＭ６２０、ハードディスクドライブ６４０、ＣＤ−ＲＯＭドライブ６６０、ＦＤドライブ６５０と、システムをネットワークに接続するための通信I/F６３０と、画像の外部出力を行うグラフィックコントローラ６７５と、それを表示する表示装置６８０と音声を出力するための音声出力装置６８１とそれを制御する音声コントローラ６７６と、これらのI/OをコントロールするI/Oコントローラ６８４と、これらのI/Oと処理の制御を行うホストコントローラ６８２と、ＲＯＭ６１０で構成されている。
【００６３】
異常検知のためのプログラムは、フレキシブルディスク６９０、ＣＤ−ＲＯＭ６９５、又はＩＣカード等の記憶媒体に格納されて利用者によって提供される。プログラムは、記憶媒体からI/Oコントローラ６８４を介して、異常監視サーバ６０にインストールされる。これらの記憶媒体の種類は一例を示したものに過ぎず、その他の記憶媒体としてＤＶＤ、ＭＯ、ＩＣカード等からインストールしてもよい。また、プログラムが特定のサーバまたはコンピュータのハードディスクに記録され、そのコンピュータからネットワーク経由でインストールする場合であってもよい。
【００６４】
図８は、トランザクションの一例を示している。トランザクションとは、サーバプログラムが他のサーバプログラムから実際に呼び出されて行ったサービスの処理のことである。例えば、サービス番号１番は、ＩＰアドレス192.168.0.19から、192.168.0.53のポート番号８０番に向かう、/PlantsByWebSphere/servlet/ShoppingServletというトランザクション種を持つサービスを表している。サービス番号０は、誰からも呼び出しがなかったサービスについて、仮想的な呼び出し元サービスを表す。本発明では不要なものであるが、関連度行列を生成する時の都合で導入されたものである。ループバックパケットは落としてあるので、図３における点線のサービスは見えていない。
【００６５】
どのサービス、どのトランザクションを抽出し観測するかは、そのウェブシステムにて動作するプログラムに依存する。ウェブシステムにて行われる全てのサービスを抽出してもよいし、ウェルノウンポートなどのプログラムの根幹となるポート番号に係るサービスを抽出してもよい。
【００６６】
エージェント装置が各々のコンピュータからトランザクションを記録し、異常監視サーバ６０のトランザクション収集部６０１がそのトランザクションデータを収集する。このデータから、異常監視サーバ６０の相関行列算出部６０２はノード相関行列Ｂを算出する。算出方法としては、サーバ間のパケットによりサービス関連度を計算する特願２００３−４３２３３７号の手法を用いてもよい。
【００６７】
ここでトランザクションのデータはリアルタイムのデータであってもよいし、事前にキャプチャしたデータであってもよい。これらのデータは、システムを構成する各コンピュータやネットワーク機器等の通信記録としてのログデータを利用してもよい。また、トランザクションとしてＡＲＭ(Application Response Measurement)と呼ばれるＡＰＩによりサーバログを経由して厳密に評価されたデータを使い、ノード相関行列を算出することもできる。さらに、ノード相関行列Ｂには、式（５）のような低位の相関情報を併用することもできる。
【００６８】
図４のウェブシステムでは、冗長化のためにこのような一方のＷＡＳ（ウェブアプリケーションサーバー）のプロセスが停止しても、もう一方のＷＡＳのプロセスが動作しているので（ＷＡＳ２０２とＷＡＳ２１２の関係）そのリソース利用率が１００％に近づくまでは、応答時間にそれほどの影響はない。また、ＷＡＳのプロセスが停止しても、ネットワーク自体は正常である。
【００６９】
検出したい問題は以下のようなものである。すなわち、ある時刻において、稼動中の上記二つのアプリケーションの一方（Plants）を、冗長化されたウェブアプリケーションサーバ２０，２１の一方のみにおいて、アプリケーション・プログラムのバグにより機能不全にさせ、データベース・サーバ５０とのトランザクションを停止させる。各サーバのプロセス自身は正常なままにする。このシステムでは２種類のＷＡＳ２０２，２１２が稼動しているので、一方が機能不全に陥っても、他方が動いていればデータベース・サーバとの間に有限のＴＣＰトラフィックが観測されることになり、アプリケーション層より下の層では何ら障害とみなされない。また、ウェブアプリケーションサーバが冗長化されているので、トラフィックがそれほど高くないうちは、クライアントから見た応答時間にはさほどの変化はない。すなわち、この例は、アプリケーション層特有の障害を検知する例になっている。
【００７０】
図３のウェブシステムにおいて、上述の方法でノード相関行列Ｂを一定時間ごとに算出することを考える。ここで、Ｂを生成する時間間隔は、対象とするシステムのトラフフィックや、トランザクション収集部６０１とエージェント装置及びエージェント部７２０，７２１のハードウェア的性能、あるいは、検知したい障害の時間尺度に応じて管理者が自由に設定できてよい。一般には十秒から数百秒程度と想定されるが、ここでは２０秒とした。ここでノード相関行列Ｂは、各サービスの被呼び出し強度が１になるように規格化することも可能である。このＢを用いて、異常監視サーバ６０の活動度ベクトル算出部６０３が、式（１１）を解くことで、サービス活動度を算出する。
【００７１】
時系列に得られるサービス相関行列に、（７）記載の対数変換を行った後、活動度ベクトルを計算したものを図９に示す。この図は、１に規格化した活動度ベクトルを、横軸を時間軸にして並べたものである。横軸の単位は観測番号である。行列は２０秒おきに生成したので、例えば横軸の１５が５分に対応する。
【００７２】
図９から、横軸の１５と２２の範囲に明確な異常が見て取れる。この領域では、サービス番号２，６，１１の活動度が下がり、１０の活動度が上がっていることがわかる。これは、Ｐｌａｎｔｓに関するトランザクションでありサービス番号１１の、[11]192.168.0.54-->192.168.0.52/50000:DB2の数が急減したため、これを誘起する[6]192.168.0.53-->192.168.0.54/9081:/PlantsByWebSphere/servlet/ShoppingServletの活動度も下がったと解釈される。ループバックパケットは不可視なので、この６番の他、192.168.0.54-->192.168.0.54/9081:/PlantsByWebSphere/servlet/ShoppingServletの上流[2]192.168.0.19-->192.168.0.54/80:/PlantsByWebSphere/servlet/ShoppingServletの活動度が低下するはずであり、実際そうなっている。このように、活動度ベクトルから、機能不全に陥ったトランザクションと、それに影響を受けるトランザクションが、明示されていることがわかる。
【００７３】
従って、活動度ベクトルは、ウェブアプリケーションの機能不全という事象を適切に捉えることが可能であることがわかる。上述のように、複数あるうちの一方のアプリケーションの機能不全によっても、サーバが冗長化されていれば、クライアントが感じる応答時間には大きな変化がなく、また、ネットワークにおける異常も生じないため、このような障害を検知することは従来、困難であった。しかし、活動度ベクトルを算出することで、アプリケーション層でのウェブシステムの異常を検知することが上述のように可能である。
【００７４】
異常監視サーバ６０の活動度ベクトル算出部６０３が活動度ベクトルを算出した後に、障害検知部６０５がこの活動度ベクトルを異常監視サーバ６０の画面に表示するあるいは、音声で報知することで異常を検知することが可能である。図９では、算出した活動度ベクトルを、縦軸に３６次元のサービス番号とし、横軸に時間をとったグラフ図である。このように、視覚的に障害検知部が活動度ベクトルを表示し、通常とは異なる表示（時間５０から８４まで）になったときに、その画像的な差異から管理者に対して、視覚的にまたは音声的に異常監視サーバ６０の表示装置６８０又は音声出力装置６８１から異常を報知してもよい。また、活動度ベクトルを逐次、表示するものでなくて、異常時にだけ保守者に報知するものであってもよい。
【００７５】
しかしながら、異常による活動度ベクトルの変化を、過去の観測値から自動で検知できる手法があれば、なお望ましいと考えられる。
【００７６】
観測値が外れた値であることを判別する外れ値検出手法として、３シグマ法、回帰分析の方法が考えられる。これらは、標準偏差や残差から離れたデータの場合に、外れ値として認定するものである。また、時系列予測に基づく方法として、時系列データを自己回帰モデル等の時系列モデルでモデル化し、時刻ｔにおける時系列モデルから、次のｔ＋１における観測値の確率分布を求め、仮説検定やHellinger距離の方法を使用することにより、外れ値かどうか決める方法を採用してもよい。さらに、混合正規分布のような自己回帰性を仮定しないモデルをたて、そのパラメータを観測のたびに学習すること（オンラインＥＭ法）で、学習された分布から、仮説検定やHellinger距離の方法により外れ値を決定する方法も採用できる。
【００７７】
活動度ベクトルをこれらの外れ値検出手法にそのまま適用してもよいが、次のようなスカラー尺度に変換してから適用してもよい。サービス活動度の場合、活動度がほぼゼロであるサービスが多く、活動度ベクトルをそのまま外れ値検出手法に適用すると無駄が多い。そこで、時間的に変化する活動度ベクトルに対して、忘却率ｒつきで平均ベクトルを計算する。ここで忘却率は、その逆数が、考慮するデータ点を表すものとして定義される。例えば忘却率が０．０１であれば、過去１００個のデータを考慮して平均を計算することに対応している。忘却率の値は、ノード相関行列の生成間隔と、生成された行列の変動幅、それに検知したい障害の時間尺度に依存するが、一般に、０．０１から０．５程度（すなわち、過去１００個から数個程度の値を考慮する）までの値を採用できる。ここでは０．１とした。時刻ｔにおける活動度ベクトルをｕ（ｔ）として、以下を用いる。
【００７８】
【数１５】
2005216066.tif 000017
式（１５）によって、平均ベクトルｍ（ｔ）をオンラインで更新する。そうして、新たな確率変数を式（１６）で定義する。
【００７９】
【数１６】
2005216066.tif 000018
【００８０】
式（１６）は、現在得られた活動度ベクトルが厳密に過去の平均ベクトルと一致していればゼロ、直交していれば１であり、時系列的に得られる活動度ベクトルの、平均ベクトルに対する「相違度」を表すといえる。この量は、活動度ベクトルと平均ベクトルの間の角度のコサインと本質的に同等であり、「コサイン尺度」と呼ぶことができる。
【００８１】
図１０（ｃ）は、活動度ベクトルをコサイン尺度に変形しその値を縦軸にとり、横軸を時間としたグラフである。これより１５と２０の間に外れ値が検出される。図１０（ｂ）は、オンラインＥＭ法を利用した学習結果を示す（忘却率は０．１とし、初期値は乱数で与えてもよい）。この計算方法を以下に説明する。
【００８２】
混合正規分布に基づき、確率分布をオンラインＥＭ法で学習し、Hellingerスコアを求める方法について以下説明する。この場合には、活動度ベクトルの値そのままを入力データとしてもよいし、上述のようにコサイン尺度に基づく相違度というスカラー量を入力データとしてもよい。
【００８３】
一般に混合正規分布は式（１７）のように表される。
【００８４】
【数１７】
2005216066.tif 000019
ここで、Ｋは混合分布の数であり、Σとｍはそれぞれ共分散行列と平均ベクトルであり各分布の添え字ｌがついている。これらのパラメータは、観測量ｙを測るたびに逐次更新していくものとする。その手法はオンラインＥＭ法として知られている。Ｋ＝２の場合、２つの分布はそれぞれ、正常状態と異常状態を表していると解釈できる。
【００８５】
このモデルで確率分布を逐次計算し、確率分布の変化を、分布同士の距離の定義であるHellinger距離（式（１８））を計算できる。
【００８６】
【数１８】
2005216066.tif 000020
ここでｐｔは時刻ｔにおける確率分布を表す。また、対数損失として式（１９）によって評価することもできる。
【００８７】
【数１９】
2005216066.tif 000021
【００８８】
図１０（ａ）は、混合正規分布に基づき、確率分布をオンラインＥＭ法で学習し、Hellingerスコアを求めたグラフである。このパルス状のピーク時の時刻を参照すれば、システム内に異常が発生したことが判明する。この例では、ピーク時の１５から２０の間に、ウェブアプリケーションの一方が機能不全に陥ったことがわかる。図１０（ｃ）のコサイン尺度による相違度と比べて、値の揺らぎが小さく、複数あるうちのひとつのウェブアプリケーションの機能不全という微妙な障害が現象を的確に表現されていることがわかる。
【００８９】
また、Hellingerスコアのピーク時の時刻から、その時刻における活動度ベクトルやノード相関行列を利用することで、どのノード、どのサービスに問題が発生しているかを特定し管理者に報知することもまた容易に可能である。
【００９０】
本発明の本質的な部分は、以上のようなオンラインＥＭ学習に基づく混合正規分布を利用することに限られない。上述のように、外れ値度を求める手法として、３シグマ法や回帰分析の方法を用いてもよい。また、ノンパラメトリック手法（Singular-spectrum analysis等）を用いてもよい。
【００９１】
いずれにおいても、異常監視サーバ６０における確率推定部６０４は、データの標準偏差や残差等を算出する、あるいはオンラインＥＭ法により確率分布をオンライン学習する。これらの情報を障害検知部６０５に受け継ぎ、障害検知部６０５が外れ値であることを判断し、障害を通知する。
【００９２】
異常検出システムまたは異常検出方法のために提供するプログラムは、異常監視サーバとエージェント装置またはエージェント部に対してフレキシブルディスク、ＣＤ−ＲＯＭまたはＩＣカード等の記憶媒体に格納されて利用者に提供されてもよい。
【００９３】
これらのプログラムのための記憶媒体としては、ＤＶＤやＭＯ、ＰＤ等の光学記憶媒体、テープ媒体、半導体メモリ等が挙げられる。また、専用通信ネットワークやインターネットに接続されたサーバシステムに設けられたハードディスク又はＲＡＭ等の記憶装置を記憶媒体として使用し、ネットワークを介してプログラムを提供してもよい。
【００９４】
異常検出システム及び方法を実現する手段としては、複数のコンピュータの各々が他の何れかのコンピュータで動作するプログラムから呼び出されて行ったサービスの処理であるトランザクションを、当該サービスに対応付けて記録するトランザクション記録手段は、複数のコンピュータのエージェント部もしくはエージェント装置により実現されるものであり、エージェント部が記録したトランザクションを、複数のコンピュータの各々から収集するトランザクション収集手段と、複数のコンピュータの各々から収集したトランザクションより算出したノード相関行列を出力する相関行列算出手段と、ノード相関行列の固有方程式を解くことで活動度ベクトルを算出する活動度ベクトル算出手段と、活動度ベクトルが発生する確率を推定する確率推定手段と、確率推定部が推定する確率密度から活動度ベクトルの外れ値度を算出することで、複数のコンピュータの各々が相互に関連しつつ動作するプログラムの障害を自動検知する障害検知手段は、異常監視サーバが実現するものであってもよい。
【００９５】
異常検出システム及び方法を実現するステップとしては、複数のコンピュータの各々が他の何れかのコンピュータで動作するプログラムから呼び出されて行ったサービスの処理であるトランザクションを、当該サービスに対応付けて記録する記録ステップは、複数のコンピュータのエージェント部もしくはエージェント装置により実現されるものであり、エージェント部が記録したトランザクションを、複数のコンピュータの各々から収集するトランザクション収集ステップと、複数のコンピュータの各々から収集したトランザクションより算出したノード相関行列を出力する相関行列算出ステップと、ノード相関行列の固有方程式を解くことで活動度ベクトルを算出する活動度ベクトル算出ステップと、活動度ベクトルが発生する確率を推定する確率推定ステップと、確率推定部が推定する確率密度から活動度ベクトルの外れ値度を算出することで、前記複数のコンピュータが相互に関連しつつ動作するプログラムの障害を自動検知する障害検知ステップは、異常監視サーバが実現するものであってもよい。
【００９６】
また、異常検出プログラムは、複数のコンピュータの各々が他の何れかのコンピュータで動作するプログラムから呼び出されて行ったサービスの処理であるトランザクションを、当該サービスに対応付けて記録する記録ステップを実行するプログラムをエージェント装置またはエージェント部にインストールされ実行されるプログラムと、エージェント部が記録したトランザクションを、複数のコンピュータの各々から収集するトランザクション収集ステップと、複数のコンピュータの各々から収集したトランザクションより算出したノード相関行列を出力する相関行列算出ステップと、ノード相関行列の固有方程式を解くことで活動度ベクトルを算出する活動度ベクトル算出ステップと、活動度ベクトルが発生する確率を推定する確率推定ステップと、確率推定部が推定する確率密度から活動度ベクトルの外れ値度を算出することで、複数のコンピュータの各々が相互に関連しつつ動作するプログラムの障害を自動検知する障害検知ステップとを実行するプログラムを異常監視サーバにインストールされ実行されるプログラムを含む、異常検出プログラムであってもよい。
【００９７】
上述の異常監視サーバにて行われる手段およびステップは、単一のサーバ及びコンピュータにより実現されるものに限られずに、複数のサーバ及びコンピュータにより処理を分散することで異常検出システムとして機能するサーバ及びコンピュータであってもよい。
【００９８】
以上に示す実施例によると、以下の各項目に示す異常検出システム、異常検出方法、異常検出サーバ、異常検出プログラム、及び記憶媒体が実現される。
【００９９】
（１）  複数のコンピュータによりネットワークを構成するコンピュータシステム内の各々のコンピュータが相互に関連しつつ動作するプログラムの障害を確率モデルに基づいて監視し、障害を自動検知する異常検出システムであって、前記プログラムに関連づけられたサービスを提供する複数のコンピュータと、前記複数のコンピュータの各々が他の何れかのコンピュータで動作するプログラムから呼び出されて行ったサービスの処理であるトランザクションを、当該サービスに対応付けて記録するエージェント装置と、前記ネットワークに接続された異常監視サーバであって、前記エージェント装置が記録したトランザクションを、前記複数のコンピュータの各々から収集するトランザクション収集部と、前記複数のコンピュータの各々から収集したトランザクションより算出したノード相関行列を出力する相関行列算出部と、前記ノード相関行列の固有方程式を解くことで活動度ベクトルを算出する活動度ベクトル算出部と、前記活動度ベクトルが発生する確率を推定する確率推定部と、前記確率推定部が推定する確率密度から活動度ベクトルの外れ値度を算出することで、前記複数のコンピュータの各々が相互に関連しつつ動作するプログラムの障害を自動検知する障害検知部とを含む異常監視サーバと、を含む異常検出システム。
【０１００】
（２）  前記複数のコンピュータの各々が提供する前記プログラムに関連づけられたサービスは、ＩＰアドレス、ポート番号、トランザクションタイプ、からなる群から一以上選択して構成したサービスである（１）記載の異常検出システム。
【０１０１】
（３）  前記複数のコンピュータの各々が前記プログラムに関連づけられて提供するサービスが、要求元ＩＰアドレス、要求先ＩＰアドレス、要求先のポート番号、要求先のポートにおけるトランザクションタイプ、からなる群から一以上選択して構成したサービスを使用することで、前記プログラムのアプリケーション層における障害を検知する障害検知部を備えた（２）記載の異常検出システム。
【０１０２】
（４）  前記障害検知部は、前記活動度ベクトルをコサイン尺度に変形し、外れ値度を算出することで障害を自動検知する（１）記載の異常検出システム。
【０１０３】
（５）  前記確率推定部は、オンラインＥＭ法により確率分布をオンライン学習する確率推定部である（１）記載の異常検出システム。
【０１０４】
（６）  前記エージェント装置は、前記複数のコンピュータに備えられた（１）記載の異常検出システム。
【０１０５】
（７）  前記エージェント装置は、前記コンピュータシステム内のネットワーク機器に備えられた（１）記載の異常検出システム。
【０１０６】
（８）  前記ノード相関行列を算出するデータとして、事前にキャプチャした前記コンピュータの各々のトランザクションのデータを使用することで、異常の発生した時刻と異常が発生したサービスを決定する（１）記載の異常検出システム。
【０１０７】
（９）  複数のコンピュータによりネットワークを構成するコンピュータシステム内の各々のコンピュータが相互に関連しつつ動作するプログラムの障害を検知する異常検出システムであって、前記プログラムに関連づけられたサービスを提供する複数のコンピュータと、前記複数のコンピュータの各々が他の何れかのコンピュータで動作するプログラムから呼び出されて行ったサービスの処理であるトランザクションを、当該サービスに対応付けて記録するエージェント装置と、前記ネットワークに接続された異常監視サーバであって、前記エージェント装置が記録したトランザクションを、前記複数のコンピュータの各々から収集するトランザクション収集部と、前記複数のコンピュータの各々から収集したトランザクションより算出したノード相関行列を出力する相関行列算出部と、前記ノード相関行列の固有方程式を解くことで活動度ベクトルを算出する活動度ベクトル算出部と、前記活動度ベクトルから、前記複数のコンピュータの各々が相互に関連しつつ動作するプログラムの障害を報知する障害検知部とを含む異常監視サーバと、を含む異常検出システム。
【０１０８】
（１０）  前記複数のコンピュータの各々が提供する前記プログラムに関連づけられたサービスは、ＩＰアドレス、ポート番号、トランザクションタイプ、からなる群から一以上選択して構成したサービスである（９）記載の異常検出システム。
【０１０９】
（１１）  前記複数のコンピュータの各々が前記プログラムに関連づけられて提供するサービスが、要求元ＩＰアドレス、要求先ＩＰアドレス、要求先のポート番号、要求先のポートにおけるトランザクションタイプ、からなる群から一以上選択して構成したサービスを使用することで、前記プログラムのアプリケーション層における障害を検知する障害検知部を備えた（１０）記載の異常検出システム。
【０１１０】
（１２）  前記エージェント装置は、前記複数のコンピュータの各々に備えられた（９）記載の異常検出システム。
【０１１１】
（１３）  前記エージェント装置は、前記コンピュータシステム内のネットワーク機器に備えられた（９）記載の異常検出システム。
【０１１２】
（１４）  前記ノード相関行列を算出するデータとして、事前にキャプチャした前記コンピュータの各々のトランザクションのデータを使用することで、異常の発生した時刻と異常が発生したサービスを決定する（９）記載の異常検出システム。
【０１１３】
（１５）  複数のコンピュータによりネットワークを構成するコンピュータシステム内の各々のコンピュータが相互に関連しつつ動作するプログラムの障害を確率モデルに基づいて監視し、障害を自動検知する異常検出システムであって、前記複数のコンピュータの各々が他の何れかのコンピュータで動作するプログラムから呼び出されて行ったサービスの処理であるトランザクションを、当該サービスに対応付けて記録するトランザクション記録手段を有するエージェント部と、前記ネットワークに接続された異常監視サーバであって、前記エージェント部が記録したトランザクションを、前記複数のコンピュータの各々から収集するトランザクション収集手段と、前記複数のコンピュータの各々から収集したトランザクションより算出したノード相関行列を出力する相関行列算出手段と、前記ノード相関行列の固有方程式を解くことで活動度ベクトルを算出する活動度ベクトル算出手段と、前記活動度ベクトルが発生する確率を推定する確率推定手段と、前記確率推定部が推定する確率密度から活動度ベクトルの外れ値度を算出することで、前記複数のコンピュータの各々が相互に関連しつつ動作するプログラムの障害を自動検知する障害検知手段を有する異常監視サーバと、を含む異常検出システム。
【０１１４】
（１６）  前記複数のコンピュータの各々が前記プログラムに関連づけられて提供するサービスが、要求元ＩＰアドレス、要求先ＩＰアドレス、要求先のポート番号、要求先のポートにおけるトランザクションタイプ、からなる群から一以上選択して構成したサービスを使用することで、前記プログラムのアプリケーション層における障害を検知する障害検知手段を備えた（１５）記載の異常検出システム。
【０１１５】
（１７）  前記障害検知手段は、前記活動度ベクトルをコサイン尺度に変形し、外れ値度を算出することで障害を自動検知する手段である（１５）記載の異常検出システム。
【０１１６】
（１８）  前記確率推定手段は、オンラインＥＭ法により確率分布をオンライン学習する手段である（１５）記載の異常検出システム。
【０１１７】
（１９）  複数のコンピュータによりネットワークを構成するコンピュータシステム内の各々のコンピュータが相互に関連しつつ動作するプログラムの障害を確率モデルに基づいて監視し、障害を自動検知する異常検出方法であって、エージェント部が、前記複数のコンピュータの各々が他の何れかのコンピュータで動作するプログラムから呼び出されて行ったサービスの処理であるトランザクションを、当該サービスに対応付けて記録する記録ステップと、前記ネットワークに接続された異常監視サーバが、前記エージェント部が記録したトランザクションを、前記複数のコンピュータの各々から収集するトランザクション収集ステップと、前記複数のコンピュータの各々から収集したトランザクションより算出したノード相関行列を出力する相関行列算出ステップと、前記ノード相関行列の固有方程式を解くことで活動度ベクトルを算出する活動度ベクトル算出ステップと、前記活動度ベクトルが発生する確率を推定する確率推定ステップと、前記確率推定部が推定する確率密度から活動度ベクトルの外れ値度を算出することで、前記複数のコンピュータが相互に関連しつつ動作するプログラムの障害を自動検知する障害検知ステップと、を含むステップを実行する異常検出方法。
【０１１８】
（２０）  前記複数のコンピュータの各々が前記プログラムに関連づけられて提供するサービスが、要求元ＩＰアドレス、要求先ＩＰアドレス、要求先のポート番号、要求先のポートにおけるトランザクションタイプ、からなる群から一以上選択して構成したサービスを使用することで、前記プログラムのアプリケーション層における障害を検知する障害検知ステップを備えた（１９）記載の異常検出方法。
【０１１９】
（２１）  前記障害検知ステップは、前記活動度ベクトルをコサイン尺度に変形し、外れ値度を算出することで障害を自動検知するステップである（１９）記載の異常検出方法。
【０１２０】
（２２）  前記確率推定ステップは、オンラインＥＭ法により確率分布をオンライン学習するステップである（１９）記載の異常検出方法。
【０１２１】
（２３）  複数のコンピュータによりネットワークを構成するコンピュータシステム内の各々のコンピュータが相互に関連しつつ動作するプログラムの障害を確率モデルに基づいて監視し、障害を自動検知する異常検出プログラムであって、エージェント部が、前記複数のコンピュータの各々が他の何れかのコンピュータで動作するプログラムから呼び出されて行ったサービスの処理であるトランザクションを、当該サービスに対応付けて記録する記録ステップと、前記ネットワークに接続された異常監視サーバが、前記エージェント部が記録したトランザクションを、前記複数のコンピュータの各々から収集するトランザクション収集ステップと、前記複数のコンピュータの各々から収集したトランザクションより算出したノード相関行列を出力する相関行列算出ステップと、前記ノード相関行列の固有方程式を解くことで活動度ベクトルを算出する活動度ベクトル算出ステップと、前記活動度ベクトルが発生する確率を推定する確率推定ステップと、前記確率推定部が推定する確率密度から活動度ベクトルの外れ値度を算出することで、前記複数のコンピュータの各々が相互に関連しつつ動作するプログラムの障害を自動検知する障害検知ステップと、を含むステップを実行する異常検出プログラム。
【０１２２】
（２４）  前記複数のコンピュータで動作する前記プログラムに関連づけられて提供するサービスが、要求元ＩＰアドレス、要求先ＩＰアドレス、要求先のポート番号、要求先のポートにおけるトランザクションタイプ、からなる群から一以上選択して構成したサービスを使用することで、前記プログラムのアプリケーション層における障害を検知する障害検知ステップを備えた（２３）記載の異常検出プログラム。
【０１２３】
（２５）  前記障害検知ステップは、前記活動度ベクトルをコサイン尺度に変形し、外れ値度を算出することで障害を自動検知するステップである（２３）記載の異常検出プログラム。
【０１２４】
（２６）  前記確率推定ステップは、オンラインＥＭ法により確率分布をオンライン学習するステップである（２３）記載の異常検出プログラム。
【０１２５】
（２７）  請求項２３の異常検出プログラムを記憶した記憶媒体。
【０１２６】
（２８）  複数のコンピュータによりネットワークを構成するコンピュータシステム内の各々のコンピュータが相互に関連しつつ動作するプログラムの障害を確率モデルに基づいて監視し、障害を自動検知する異常監視サーバであって、前記複数のコンピュータの各々が他の何れかのコンピュータで動作するプログラムから呼び出されて行ったサービスの処理であるトランザクションを複数のコンピュータの各々から収集するトランザクション収集部と、前記複数のコンピュータの各々から収集したトランザクションより算出したノード相関行列を出力する相関行列算出部と、前記ノード相関行列の固有方程式を解くことで活動度ベクトルを算出する活動度ベクトル算出部と、前記活動度ベクトルが発生する確率を推定する確率推定部と、前記確率推定部が推定する確率密度から活動度ベクトルの外れ値度を算出することで、前記複数のコンピュータの各々が相互に関連しつつ動作するプログラムの障害を自動検知する障害検知部と、を含む異常監視サーバ。
【産業上の利用可能性】
【０１２７】
複数のコンピュータで構成されるネットワークシステムにおいて、あるコンピュータで動作するプログラムが、他の何れかのコンピュータのプログラムを呼び出すといったコンピュータ間の相互処理に異常が発生した際に、実行時の環境において、この異常を自動検知することが可能である。
【図面の簡単な説明】
【０１２８】
【図１】図１は、ウェブシステム１０のブロック図である。
【図２】図２は、クライアント装置４０と各サーバ及びプログラムの関係を示した概念図である。
【図３】図３は、冗長化されたウェブサーバ２０，２１を備えた各サーバ及びプログラムの関係を表す概念図である。
【図４】図４は、図３におけるウェブシステムに異常検出システムを適用した一例を示す図である。
【図５】図５は、エージェント装置またはエージェント部をネットワーク機器に適用した図である。
【図６】図６は、異常監視サーバ６０の処理フローを表した図である。
【図７】図７は、異常監視サーバ６０のハードウェア構成の一例を表した図である。
【図８】図８は、各サービスのトランザクションを表記した図である。
【図９】図９は、算出した活動度ベクトルをサービス番号と時間ごとに表したグラフ図である。
【図１０】図１０は、算出した外れ値を時間ごとに表したグラフ図である。
【符号の説明】
【０１２９】
１０    ウェブシステム
２０，２１    ウェブサーバ
３０    負荷分散装置
２０１，２１１    ＨＴＴＰサーバプログラム
２０２，２１２    ウェブアプリケーションサーバプログラム
４０    クライアント装置
５０    データベース・サーバ
６０    異常監視サーバ
７２０，７２１，７４０，７５０，７６０，７６１，７６２    エージェント装置
【図１】
2005216066.tif 000022
【図２】
2005216066.tif 000023
【図３】
2005216066.tif 000024
【図４】
2005216066.tif 000025
【図５】
2005216066.tif 000026
【図６】
2005216066.tif 000027
【図７】
2005216066.tif 000028
【図８】
2005216066.tif 000029
【図９】
2005216066.tif 000030
【図１０】
2005216066.tif 000031