(57)【特許請求の範囲】
【請求項１】
トランザクションを識別するための規則を更新する方法であって、
クライアントと、トランザクションを処理するアプリケーションとの間の通信であって所定のパターンを含んでいる通信を監視すること（１０２）と、
どのトランザクションが前記アプリケーションによって処理されるかを識別するために規則を適用すること（１０４）と、
前記通信を解析すること（１０６）と、
前記通信の前記解析に基づいて前記規則を更新すること（１０８）と、
を含み、
前記規則は、一つのルートノードと複数のリーフノードを含むノード群を有する木のデータ構造に含まれており、少なくとも一つのノードは、他のノードへの分岐を有しており、前記少なくとも一つのノードには、前記通信に含まれ得るパターンが記述されており、
前記「規則を適用すること」は、監視した前記通信に含まれている特定のパターンが各ノードに記述されているパターンに一致するか否かに応じて前記分岐を選択しつつ前記ルートノードから前記複数のリーフノードの一つへ前記木を辿って前記トランザクションを識別することを含んでおり、
前記「通信を解析すること」は、前記監視した前記通信に出現する前記パターンの出現頻度を計数することを含んでおり、
前記「規則を更新すること」は、出現頻度の多いパターンを出現頻度の少ないパターンよりも前記ルートノードに近いノードに配置し直すことを含む、
方法。
【請求項２】
前記規則の１つまたは複数のセットが、前記木の前記複数のリーフノードのそれぞれに関連付けられている、請求項１に記載の方法。
【請求項３】
前記「規則を適用すること」は、前記ルートノードから前記複数のリーフノードの一つへ辿って到達したリーフノードに関連付けられている前記「規則の１つまたは複数のセット」の真偽を評価することを含む、請求項２に記載の方法。
【請求項４】
前記データ構造の前記更新が、前記トランザクションが識別される前記頻度に基づいて、前記木の各リーフノードに関連する前記規則のセットを順序付けることを含む、請求項２又は３に記載の方法。
【請求項５】
前記木の初期データ構造を作成すること、
前記アプリケーションを監視するエージェントに前記初期データ構造を配置すること、
をさらに備えており、
前記パターンは、前記トランザクションに関連付けられたパラメータであり、前記規則の１つまたは複数のセットが前記木の各リーフノードに関連付けられており、
前記初期データ構造におけるノード群は、監視される通信の中で前記トランザクションに関連付けられた各パラメータが存在する頻度の推定値に基づいて前記木の中に配置されており、
前記規則は、監視される通信の中で各トランザクションが存在する頻度の推定値に基づいて順序付けられている、請求項１から４のいずれかに記載の方法。
【請求項６】
前記パターンは、前記通信に現れる名前／値のペアのセットに基づいている、請求項１から５のいずれかに記載の方法。
【請求項７】
前記パターンは、前記通信に現れるパラメータに基づいている、請求項１から５のいずれかに記載の方法。
【請求項８】
前記パターンは、前記通信に現れるＨＴＴＰパラメータに基づいている、請求項１から５のいずれかに記載の方法。
【請求項９】
前記パターンは、前記通信に現れる任意のストリングに基づいている、請求項１から５のいずれかに記載の方法。
【請求項１０】
記憶されているコードを実行可能なプロセッサを備えている１つまたは複数の記憶装置（５５２、５５４）と、
前記１つまたは複数の記憶装置と通信する１つまたは複数のプロセッサ（５５０）であって、前記コードが前記１つまたは複数のプロセッサ上で実行される場合に、前記コードが、前記１つまたは複数のプロセッサに、
アプリケーションによって処理されるトランザクションとの通信であって所定のパターンを含む通信を監視させ、
どのトランザクションが前記アプリケーションによって処理されるかを識別するために、規則を適用させ、
監視した前記通信を解析させ、
前記通信の解析に基づいて前記規則を更新させる、ものであり、
前記規則は、一つのルートノードと複数のリーフノードを含むノード群を有する木のデータ構造に含まれており、少なくとも一つのノードは、他のノードへの分岐を有しており、前記少なくとも一つのノードには、前記通信に含まれ得るパターンが記述されており、
前記コードは、前記１つまたは複数のプロセッサに、規則を適用させる際に、監視した前記通信に含まれている特定のパターンが各ノードに記述されているパターンに一致するか否かに応じて前記分岐を選択しつつ前記ルートノードから前記複数のリーフノードの一つへ前記木を辿って前記トランザクションを識別させ、
前記コードは、前記１つまたは複数のプロセッサに、通信の解析を行わせる際に、前記監視した前記通信に出現する前記パターンの出現頻度を計数させ、
前記コードは、前記１つまたは複数のプロセッサに、規則の更新をさせる際に、出現頻度の多いパターンを出現頻度の少ないパターンよりも前記ルートノードに近いノードに配置し直させる、
トランザクションの監視システム。
【請求項１１】
前記規則の１つまたは複数のセットが、前記木の前記複数のリーフノードのそれぞれに関連付けられている、請求項１０に記載の監視システム。
【請求項１２】
前記コードは、前記１つまたは複数のプロセッサに、規則を適用させる際に、前記ルートノードから前記複数のリーフノードの一つへ辿って到達したリーフノードに関連付けられている前記「規則の１つまたは複数のセット」を評価させる、請求項１１に記載の監視システム。
【請求項１３】
前記コードは、前記１つまたは複数のプロセッサに、前記データ構造を更新させる際に、前記トランザクションが識別される前記頻度に基づいて、前記木の各リーフノードに関連する前記規則のセットを順序付けさせる、請求項１１又は１２に記載の監視システム。
【請求項１４】
前記コードは、前記１つまたは複数のプロセッサに、さらに、
前記木の初期データ構造を作成させ、
前記アプリケーションを監視するエージェントに前記初期データ構造を配置させ、
前記パターンは、前記トランザクションに関連付けられたパラメータであり、前記規則の１つまたは複数のセットが前記木の各リーフノードに関連付けられており、
前記初期データ構造におけるノード群は、監視される通信の中で前記トランザクションに関連付けられた各パラメータが存在する頻度の推定値に基づいて前記木の中に配置されており、
前記規則は、監視される通信の中で各トランザクションが存在する頻度の推定値に基づいて順序付けられている、
請求項１０から１３のいずれかに記載の監視システム。
【請求項１５】
前記パターンは、前記通信に現れる名前／値のペアのセットに基づいている、請求項１０から１４のいずれかに記載の監視システム。
【請求項１６】
前記パターンは、前記通信に現れるパラメータに基づいている、請求項１０から１４のいずれかに記載の監視システム。
【請求項１７】
前記パターンは、前記通信に現れるＨＴＴＰパラメータに基づいている、請求項１０から１４のいずれかに記載の監視システム。
【請求項１８】
前記パターンは、前記通信に現れる任意のストリングに基づいている、請求項１０から１４のいずれかに記載の監視システム。
【発明の詳細な説明】
【背景技術】
【０００１】
関連する技術の説明
インターネット、並びにイントラネットおよびエクストラネットなどの他のコンピュータネットワークの存在が成長したことから、電子商取引、教育および他の分野において、多くの新しいアプリケーションがもたらされた。組織は、そのビジネスまたは他の目的を実現するために、かかるアプリケーションにますます依拠し、アプリケーションが期待通りに動作することを保証するためにかなりの資源を充てている。この目的のために、様々なアプリケーション管理技術が開発されてきた。
【０００２】
一つのアプローチは、例えばサーバ上を走っているアプリケーションによって実行されるトランザクションを監視することを含む。これらのトランザクションは、クライアント装置からの要求に応じて実行されることがある。例えば、トランザクションは、ウェブサイトへのユーザログイン、ウェブサイトによって販売される製品を購入するユーザ要求、品物を販売するためにウェブサイトを用いるユーザ要求等である可能性がある。ウェブサイト管理者は、これらのトランザクションが、そのウェブサイト（および／または関連するウェブサイト）上でソフトウェアによって、どの程度に良好に実行されているかを知りたいであろう。そこで、各種のトランザクションを実行する時間などの性能計量（メトリックス）のために、トランザクションを監視することが可能である。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】米国特許第６，２６０，１８７号公報
【特許文献２】米国特許出願第０９／７９５，９０１号の明細書
【特許文献３】米国特許出願公開第２００４／００７５６９０号公報
【特許文献４】米国特許出願公開第２００７／０２６６１４９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ソフトウェアは、多くの異なるタイプのトランザクションを実行する可能性があるために、実行されているトランザクションのタイプを適切に識別する必要がある。クライアント要求のために実行されているトランザクションのタイプを決定するための技術が存在する。しかしながら、実行されているトランザクションのタイプを決定することは、必ずしも簡単な作業ではない。トランザクションタイプを決定するためのいくつかの技術は、かなりの時間および／または計算力を必要とする。
【図面の簡単な説明】
【０００５】
【図１Ａ】ネットワークサービスを監視するネットワーク監視システムの実施形態のブロック図である。
【図１Ｂ】トランザクションを識別するプロセスの実施形態の流れ図を示す。
【図２Ａ】トランザクションを識別するために使用可能な規則を有するデータ構造の例示を示す。
【図２Ｂ】トランザクションを識別するために図２Ａのデータ構造を適用する一実施形態の流れ図である。
【図３Ａ】ネットワークサービスを監視するためのシステムの実施形態のブロック図である。
【図３Ｂ】ネットワークサービスを監視する実施形態の流れ図を示す。
【図４】トランザクションを識別するための規則を最初に監視ノードに配置するプロセスの一実施形態の流れ図である。
【図５】トランザクションをマッチングするための規則を含むデータ構造を、頻度データに対する変更に基づいて更新するプロセスの一実施形態の流れ図である。
【図６】トランザクションをマッチングするための規則を含むデータ構造を作成または更新するプロセスの一実施形態の流れ図を示す。
【図７】トランザクションをマッチングするための規則を含むデータ構造を、ユーザからの入力に基づいて更新するプロセスの一実施形態の流れ図である。
【図８Ａ】トランザクションを識別するために使用可能なストリングに基づく規則を有するデータ構造の例示を示す。
【図８Ｂ】トランザクションを識別するために図８Ａのデータ構造を適用する一実施形態の流れ図である。
【図９】実施形態が実行される土台となるコンピュータシステム用のプラットホームの例示を示す。
【発明を実施するための形態】
【０００６】
サーバアプリケーションなどのソフトウェアアプリケーションによって処理されるトランザクションを効率的に識別するための方法、装置、およびシステムが提供される。トランザクションの識別のいくつかは、トランザクションを実行しているサーバ上で実行してもよい。しかしながら、トランザクションを効率的に識別することによって、サーバ性能が否定的な影響を受けることはない。
【０００７】
一実施形態では、クライアントとサーバとの間の通信に規則セットを適用して、あるパターンが通信に存在するかどうかを決定することによって、トランザクションが識別される。例えば、規則は、トランザクションにおいてパラメータのある組み合わせを探してもよい。特定の例として、ＨＴＴＰ要求内のパラメータを探す規則を用いてもよい。規則は、効率的な処理を可能にする方法で体系化される。例えば、規則は、トランザクションにおいてパラメータが出現すると予想される頻度、および各トランザクションが出現すると予想される頻度に基づいて体系化してもよい。規則は、より効率的な処理のために規則が体系化されるように、予想される頻度が実際の頻度から逸脱する場合には、更新してもよい。
【０００８】
ネットワークサービス監視
本明細書で開示する技術は、ウェブサービスなどのネットワークサービスを監視するネットワークサービス監視システムによって少なくとも部分的に実行可能である。本明細書で開示する技術は、他のネットワークサービスも同様に監視できる。一般的に、ネットワークサービスは、インターネット、イントラネット、エクストラネット、プライベートネットワーク、または他のネットワークを通じて提供することができ、ワールドワイドウェブを介して提供されるネットワークサービスに限定されない。以下でウェブサービスを参照していくつかの例を論じるが、本明細書で論じる技術は、一般に、ネットワークもしくは他の通信手段に接続されるかまたはそれらと通信する他のサービスに適用される。
【０００９】
図１Ａは、１つの例示的なネットワークサービス監視システムを示す。このシステムには、１つまたは複数のネットワークサーバ１４０、１つまたは複数のアプリケーションサーバ１５０、トラフィック監視システム１８０、およびアプリケーション監視システム１９０が含まれる。クライアント装置１１０は、ネットワーク１２０を通じてネットワークサーバ１４０にアクセスする。
【００１０】
ネットワークサービスは、ネットワークサーバ１４０およびアプリケーションサーバ１５０によって提供してもよい。実際には、任意の構成で接続される任意の数のサーバまたは他のコンピューティング装置を用いることができる。ネットワークサーバ１４０は、インターネットもしくは他のＷＡＮ、ＬＡＮ、イントラネット、エクストラネット、プライベートネットワーク、または他のネットワークなどのネットワーク１２０を通じて、クライアント装置１１０にトラフィックを送信し、かつクライアント装置１１０からトラフィックを受信する。実際には、多数のクライアント装置がネットワークサーバ１４０と通信することができる。
【００１１】
アプリケーションサーバ１５０は、ネットワークサーバ１４０と通信してもよい。特にネットワークサーバ１４０がクライアント装置１１０から要求を受信する場合には、ネットワークサーバ１４０は、処理するためにその要求をアプリケーションサーバ１５０に中継してもよい。クライアント装置１１０は、ラップトップ、ＰＣ、ワークステーション、携帯電話、ＰＤＡ、またはエンドユーザによって操作される他のコンピューティング装置とすることができる。または、クライアント装置は、サーバなどの自動コンピューティング装置とすることができる。アプリケーションサーバ１５０は、ネットワークサーバ１４０から受信した要求を処理し、ネットワークサーバ１４０を介して、対応する応答をクライアント装置１１０に送信する。
【００１２】
アプリケーション監視システム１９０は、ネットワークサービスの１つまたは複数のアプリケーション１５１の実行を監視してもよい。１つの可能なアプローチでは、アプリケーション監視システム１９０は、エージェント１５２などの１つまたは複数のエージェントを用いる。このエージェントは、アプリケーション監視システム１９０の一部と見なしてもよいが、図１Ａでは、エージェント１５２は、別個のブロックとして示されている。エージェント１５２およびアプリケーション監視システム１９０は、アプリケーションサーバ１５０における１つまたは複数のアプリケーション１５１の実行を監視し、要求に応じたアプリケーションコンポーネントの実行を表すアプリケーション実行時間データを作成し、かつ作成したアプリケーション実行時間データ１４３を処理してもよい。いくつかの実施形態では、アプリケーション監視システム１９０が、ネットワークサーバ１４０などの他のサーバにおけるアプリケーションまたは他のコードの実行を監視するために用いられてもよい。
【００１３】
例えば、アプリケーション監視システム１９０は、１つまたは複数のアプリケーション１５１の性能を監視してもよく、かつ例えば、アプリケーションのスレッドおよび／またはプロセスなどの１つまたは複数の実行経路において呼び出されるコンポーネントを識別する、対応するアプリケーション実行時間データ１４３を作成してもよい。例示的なコンポーネントには、サーブレット、Ｊａｖａ(登録商標)サーバページ、エンタープライズＪａｖａ(登録商標)ビーンズ、Ｊａｖａ(登録商標)データベース接続コンポーネントおよび／またはＭｉｃｒｏｓｏｆｔ．ＮＥＴコンポーネントを含むことができる。アプリケーション実行時間データ１４３は、例えば、コンポーネントが呼び出された期間を示すトランザクショントレースを提供することができる。
【００１４】
トラフィック監視システム１８０は、ネットワークサービスによって送信および受信されるネットワークトラフィックを監視してもよく、任意のタイプのネットワークプロトコルに従って提供されるトラフィックを監視してもよい。トラフィック監視システム１８０は、クライアント１１０とネットワークサーバ１４０の間のトラフィックを監視するように示されているが、トラフィック監視システム１８０は、他のところに配置してもよい。例えば、トラフィック監視システム１８０は、ネットワークサーバ１４０とアプリケーションサーバ１５０との間のトラフィックを監視してもよい。
【００１５】
本明細書で論じるように、ネットワークサービスによって処理されるトランザクションは、効率的に識別可能である。トランザクションは、機能を実行する一連の関連するネットワーク通信を指すことができる。例えば、ユーザがウェブサイトにログインする場合には、一連の関連するネットワーク通信が「ログイントランザクション」であり得る。ユーザが、電子商取引ウェブサイトで本を購入する場合には、これは「購入トランザクション」であり得る。トラフィック監視システム１８０もしくはエージェント１５２、または両方が、ネットワークサービスによって処理されるトランザクションを識別してもよい。アプリケーション監視システム１９０は、トラフィック監視システム１８０および／またはエージェント１５２に規則１４１を送信してもよい。規則１４１は、トランザクションを効率的に識別するために用いられる。トラフィック監視システム１８０および／またはエージェント１５２は、頻度データ１４２をアプリケーション監視システム１９０に送信してもよい。頻度データ１４２は、以下でより詳細に論じる。簡単に言えば、頻度データは、異なるトランザクションがどれくらいの頻度で処理されるか、またはトランザクションに関連する異なるパラメータがどれくらいの頻度でネットワークトラフィックに出現するかに基づいて決定してもよい。アプリケーション監視システム１９０は、規則１４１がエージェント１５２および／またはトラフィック監視システム１８０によってより効率的に実行され得るように、頻度データ１４２を用いて規則１４１を修正してもよい。
【００１６】
図１Ｂは、アプリケーション１５１によって処理されるトランザクションを識別するプロセスの実施形態の流れ図を示す。言及したように、トランザクションは、トラフィック監視システム１８０および／またはエージェント１５２によって識別してもよい。提示されるこの流れ図および他の流れ図において、図示のステップは、必ずしも図示の順序で１つずつ実行されるわけではなく、少なくとも部分的に同時に、かつ／または別の順序で行ってもよいことに留意されたい。
【００１７】
ステップ１０１において、トランザクションを識別するための規則１４１が、最初に監視ノードに配置される。監視ノードは、エージェント１５２および／またはトラフィック監視システム１８０とすることができる。規則１４１は、それらが効率的に適用されるのを支援するような方法で体系化してもよい。一実施形態において、規則１４１は、トランザクションおよびトランザクションを識別するための規則に関連するパラメータを含むデータ構造に含まれる。図２Ａは、トランザクションを識別するために用いられる規則を含む例示的なデータ構造を示す。データ構造は、規則を効率的に適用できるようにする方法で体系化される。図２Ａは、以下でより詳細に論じる。初期規則の配置のさらなる詳細もまた、以下で論じる。
【００１８】
ステップ１０２において、クライアント１１０とアプリケーション１５１との間の通信が監視される。一実施形態において、エージェント１５２が通信を監視する。いくつかの実施形態において、エージェント１５２は、アプリケーション１５１を監視することによって通信を監視する。エージェントの監視のさらなる詳細は、以下で論じる。一実施形態において、クライアント装置１１０とウェブサーバ１４０との間で送信されるネットワーク１２０を通じたトラフィックなど、アプリケーション１５１に送信されるトラフィックにおける通信は、トラフィック監視システム１８０によって監視される。監視には、例えば、クライアント１１０とアプリケーション１５１との間のある中間ポイントにおいて、タップまたはミラーポートを介してトラフィックを受動的にコピーすること、またはトラフィックを傍受し、傍受したトラフィックをコピーし、かつ傍受したトラフィックをその意図した宛先へ中継することを含むことができる。通信の監視には、クライアント１１０からネットワークサーバ１４０に送信された要求、および／またはネットワークサーバ１４０からクライアント１１０に返信された応答を監視することを含んでもよいことに留意されたい。
【００１９】
ステップ１０４において、規則１４１は、どのトランザクションがネットワークサービスによって処理されるかを識別するために適用される。例えば、規則１４１は、どのトランザクションがアプリケーション１５１によって処理されるかを識別するために適用される。言及したように、規則１４１は、ある体系を有してもよい。例えば、規則１４１は、トランザクションにおける予想されるパターンに基づいて体系化してもよい。したがって、規則１４１は、体系に基づいて適用してもよい。一実施形態において、規則１４１の適用は、図２Ａにおけるデータ構造などのデータ構造を用いることによって達成される。この場合には、体系は、データ構造に基づいている。一実施形態において、通信におけるパターンが、パターンをトランザクションとマッチングするために検出される。トランザクションは、通信において見出される名前／値ペアのセット、例えばパラメータの存在もしくは非存在またはそれらの組み合わせを特定するトランザクション定義に基づいて検出することができる。
【００２０】
ステップ１０６において、通信が解析される。一実施形態において、ステップ１０６には、トランザクションのそれぞれが識別される頻度、およびパターンのそれぞれがトランザクションに出現する頻度を決定することが含まれる。いくつかの実施形態において、パターンは、パラメータ（例えば、ＨＴＴＰパラメータ）に基づいている。いくつかの実施形態において、パターンは、ストリング（例えば、任意のデータストリング）に基づいている。これらの決定された頻度は、「頻度データ」と名付けてもよい。いくつかの実施形態において、頻度データ１４２は、エージェント１５２またはトラフィック監視システム１８０からアプリケーション監視システム１９０に送信される。一実施形態において、エージェント１５２が、通信を解析する。一実施形態において、トラフィック監視システム１８０が、通信を解析する。
【００２１】
ステップ１０８において、規則１４１は、通信の解析に基づいて更新される。規則１４１の更新には、規則の体系を修正することを含んでもよい。例えば、図２Ａのデータ構造の体系を変更してもよい。いくつかの実施形態において、規則１４１は、トランザクションのそれぞれが識別された頻度、および／またはパターンのそれぞれがトランザクションに出現した頻度に基づいて更新される。規則１４１の更新では、監視ノードにおいて規則をより効率的に処理できるような方法で、規則を体系化してもよい。
【００２２】
ステップ１１０において、更新された規則は監視ノードに提供される。例えば、アプリケーション監視システム１９０は、更新された規則を、エージェント１５２および／またはトラフィック監視システム１８０に提供する。次に、プロセスはステップ１０２に戻ってもよく、ステップ１０２において、更新された規則がトランザクションを識別するために用いられる。
【００２３】
図２Ａは、トランザクションを識別するために使用可能な規則１４１の例を示す。この例において、規則１４１は、規則を効率的に適用できるようにする方法で体系化されたデータ構造に含まれる。データ構造には、パラメータノード１３０ａ〜１３０ｅおよび規則ノード１３２ａ〜１３２ｃが含まれる。この実施形態において、データ構造には木が含まれる。説明のために、木は、パラメータノード１３０ａ〜１３０ｅを含む部分と見なされる。一般に、木は、ルートノード１３０ａから下方に辿られ、リーフパラメータノード１３０ｃ、１３０ｄ、１３０ｅの１つに到達してもよい。リーフパラメータノード１３０ｃ、１３０ｄ、１３０ｅのそれぞれは、規則ノード１３２ａ〜１３２ｃの１つを指し示す（または含む）。例示的なデータ構造が単純化されていること、および典型的なインプリメンテーションがさらに多くのノードを有するであろうことに留意されたい。例えば、さらに多くのパラメータノード１３０が存在可能であり、木は、より多くのレベルを有し得る。木は、より大きな頻度でトランザクションに出現すると予想されるパラメータがルートのより近くに配置されるように、構造化してもよい。パラメータがトランザクションで出現する頻度が変化した（または予想される値から逸脱した）場合には、木は、再体系化してもよい。例えば、パラメータノード１３０は、異なる場所に移動してもよく、かつ／またはパラメータノード１３０の内容は、変化してもよい。いくつかの実施形態において、より頻繁に出現すると予想されるパラメータは、ルートのより近くに移動される。木の再体系化は、規則１４１を再体系化する一方法であり、かつより高速に解析できる、より効率的なデータ構造を作成するのを支援することが可能である。
【００２４】
各規則は、あるトランザクションと関連付けてもよい。例えば、規則Ａが真である場合には、トランザクションＡが識別される。いくつかの実施形態において、各規則ノードにおける規則は、規則に関連するトランザクションが、出現すると予想されるかまたは実際に出現していると識別された頻度に基づいて、順序付けられる。例えば、規則ノード１３２ｂでは、規則Ａが５０パーセントの頻度を有し、規則Ｂが３０パーセントの頻度を有し、規則Ｃが２０パーセントの頻度を有する。時間と共に頻度が変化した場合には、規則は、再び順序付けてもよい。規則ノードにおける規則を再び順序付けることは、規則を再体系化する一方法であり、より効率的なデータ構造につながる可能性がある。いくつかの実施形態において、所与の規則ノードに出現する規則を変更して、規則を再体系化してもよい。木がどのように作成されるかのさらなる詳細は、以下で論じる。
【００２５】
図２Ｂは、データ構造を適用してトランザクションを識別する一実施形態の流れ図である。プロセスは、例えば、エージェント１５２および／またはトラフィック監視システム１８０によって実行してもよい。プロセスは、図１Ｂのステップ１０４の一実施形態である。以下でプロセスフローを論じるときに、図２Ａの例示的なデータ構造に言及する。
【００２６】
ステップ２０２において、通信におけるパラメータが識別される。いくつかの実施形態において、これには、ＨＴＴＰ要求を解析して、ＨＴＴＰパラメータの名前／値ペアを作成することを含んでもよい。下記の表１および表２は、名前／値ペアを決定するために解析できるＨＴＴＰ要求の一例を提供する。パラメータがＨＴＴＰ以外のプロトコルに由来してもよいことに留意されたい。
【００２７】
ステップ２０４において、データ構造は、識別されたパラメータに基づいて、ルートパラメータノード１３０ａからリーフパラメータノード１３０ｃ、１３０ｄ、１３０ｅの１つへと辿られる。一実施形態において、木は、識別されたパラメータを、パラメータノード１３０に含まれるパラメータと比較することによって辿られる。例えば、ルートパラメータノード１３０ａには、「Ｐａｒａｍ１」が含まれる。Ｐａｒａｍ１が通信に存在する場合には、パラメータノード１３０ｂへの「ｙｅｓ」ブランチが取られる。しかしながらＰａｒａｍ１が通信に存在しない場合には、パラメータノード１３０ｅへの「ｎｏ」ブランチが取られる。パラメータノード１３０ｅがリーフパラメータノードであり、したがって、木を辿ることが、その経路に対しては完結することに留意されたい。
【００２８】
ノード１３０ｂへの「ｙｅｓ」ブランチが取られた場合には、Ｐａｒａｍ１およびＰａｒａｍ２の両方が通信に存在するかどうかに関して決定がなされる。それらが両方とも存在する場合には、パラメータノード１３０ｃへの「ｙｅｓ」ブランチが取られる。１つが存在しない場合には、パラメータノード１３０ｄへの「ｎｏ」ブランチが取られる。このポイントにおいて、リーフパラメータノードの１つに到達する。
【００２９】
ステップ２０６において、リーフパラメータノードにリンクされた規則が、順番に適用される。規則が真と評価された場合には、規則の適用は停止してもよい。しかしながら、一規則が真と評価された場合に評価が停止することは要求されない。例えば、木を辿ってリーフパラメータノード１３０ｄに到達した場合に、規則セット１３２ｂにおける規則を順番に適用してもよい。規則が、それらの関連するトランザクションが出現すると予想される頻度に基づいて順序付けられることに留意されたい。したがって、第１の規則Ａが評価される。第１の規則Ａが真と評価された場合には、トランザクションＡが識別されたという決定で処理を停止してもよい。規則Ａが真と評価されない場合には、規則Ｂを評価してもよい。次に、規則Ｃを評価してもよい。規則セット１３２ｂにおける規則の少なくとも１つが真と評価されるようにデータ構造が体系化されていることに留意されたい。２以上の規則が真と評価された場合には、タイブレーク手順を用いてもよい。例示的なタイブレーク手順は、最も複雑な規則を選択することである。
【００３０】
トランザクションの識別のさらなる詳細を論じる前に、アプリケーションを監視するための実施形態の例示的なシステムおよび方法を論じる。言及したように、いくつかの実施形態では、トランザクションは、アプリケーションの監視のためのシステムにおいてエージェント１５２によって識別される。図３Ａは、アプリケーションを監視するためのシステムにおける実施形態のブロック図である。図１Ａに関連して上記したように、アプリケーション監視システム１９０を用いてアプリケーション１５１を監視し、かつアプリケーション実行時間データを作成してもよい。一実施形態において、図３Ａは、図１Ａのアプリケーションサーバ１５０およびアプリケーション監視システム１９０のさらなる詳細を提供する。システムには、アプリケーションサーバ１５０が含まれるが、アプリケーションサーバ１５０は、企業マネージャ（エンタプライズマネージャ）１５５と通信し、今度は企業マネージャ１５５が、例示的なワークステーション１９５およびデータベース４３０と通信する。アプリケーションサーバ１５０には、管理されたアプリケーション１５１が含まれ、このアプリケーション１５１には、エージェント１５２、ならびに例示的なプローブ１５３および１５４が含まれる。アプリケーション１５１は、Ｊａｖａ(登録商標)アプリケーションまたは異なるタイプのアプリケーションとすることができる。
【００３１】
アプリケーション１５１の動作は、アプリケーションのバイトコードもしくは中間言語（ＩＬ）コードをインストルメントすることによってか、アプリケーションもしくはネットワークサーバに組み込まれた出口に接続することによってか、または任意の他の監視技術によって監視することができる。例えば、アプリケーション１５１からの情報はまた、プローブ１５３および１５４を用いて取得することができる。実際には、多くのかかるプローブを用いて、アプリケーションの様々なコンポーネントに関する情報を取得することができる。
【００３２】
一実施形態において、プローブビルダ（ｐｒｏｂｅ  ｂｕｉｌｄｅｒ）（図示せず）が、アプリケーション１５１用のバイトコードをインストルメント（例えば、修正）して、プローブ１５３および１５４ならびに追加コードを追加する。別のアプローチでは、開発者が、アプリケーションソースコードにプローブを追加する。プローブは、アプリケーションのビジネス論理を変更せずに、アプリケーションに関する情報の特定の断片を測定してもよい。プローブビルダはまた、アプリケーション１５１と同じマシンまたは別個のマシンにインストール可能なエージェント１５２を追加してもよい。ひとたびプローブがアプリケーションにインストールされるか、さもなければ監視能力が提供されると、アプリケーションは、管理されたアプリケーションと呼ばれる。バイトコードをインストルメントすることに関するより多くの情報が、Ｌｅｗｉｓ  Ｋ．Ｃｉｒｎｅによる「Ｓｙｓｔｅｍ  Ｆｏｒ  Ｍｏｄｉｆｙｉｎｇ  Ｏｂｊｅｃｔ  Ｏｒｉｅｎｔｅｄ  Ｃｏｄｅ」なる名称の特許文献１、および２００１年２月２８日出願の「Ａｄｄｉｎｇ  Ｆｕｎｃｔｉｏｎａｌｉｔｙ  Ｔｏ  Ｅｘｉｓｔｉｎｇ  Ｃｏｄｅ  Ａｔ  Ｅｘｉｔｓ」なる名称の特許文献２に見つけることができ、これらの文献のそれぞれが、参照によりその全体において本明細書に援用されている。
【００３３】
管理されたアプリケーション１５１が走行するときに、プローブ１５３および１５４は、データをエージェント１５２に送信する。一実施形態において、プローブ１５３および１５４は、データを書き込むか、データを変更するか、さもなければアプリケーションサーバの状態を変化させるオブジェクトおよび他のコードにおいて実現してもよい。次に、エージェント１５２は、アプリケーション実行時間データと呼ばれるデータを収集し、要約し、企業マネージャ１５５に送信する。それに応じて、企業マネージャ１５５は、要求された計算を実行し、ワークステーション１９５にとって利用可能なアプリケーション実行時間データを作成し、オプションとして、後で解析するためにアプリケーション実行時間データをデータベース４３０に送信する。プローブを用いてアプリケーションを監視することに関するより多くの情報は、Ｌｅｗｉｓ  Ｋ．Ｃｉｒｎｅによる、２００４年４月２２日公開の「Ｕｓｅｒ  Ｉｎｔｅｒｆａｃｅ  Ｆｏｒ  Ｖｉｅｗｉｎｇ  Ｐｅｒｆｏｒｍａｎｃｅ  Ｉｎｆｏｒｍａｔｉｏｎ  Ａｂｏｕｔ  Ｔｒａｎｓａｃｔｉｏｎｓ」なる名称の特許文献３において見つけることができ、この文献は、参照により本明細書に援用されている。
【００３４】
ワークステーション１９５は、人間のオペレータが監視できるカスタムビューを作成することなどによって、アプリケーション実行時間データを閲覧するためのグラフィカルインタフェースを提供する。ワークステーションには、有意義な方法でデータを閲覧できるように、一組のカスタマイズ可能なビューを提供し、アプリケーション実行時間データをフィルタリングするアラートおよび計算機を示すウィンドウを含むことができる。アプリケーション実行時間データを体系化し、操作し、フィルタリングし、かつ表示するワークステーションの要素には、動作、アラート、計算機、ダッシュボード、永続的な収集、メトリックのグループ化、比較、スマートトリガ、およびＳＮＭＰ収集を含むことができる。いくつかの実施形態において、ワークステーション１９５は、トランザクションをマッチングするための規則をユーザが定義できるようにするために用いられる。
【００３５】
図３Ａのシステムの一実施形態において、１つまたは複数のコンポーネントが、異なるコンピューティング装置上を走行している。代替として、コンポーネントは、同じコンピューティング装置上を走行することができる。各コンポーネントが走行可能なコンピューティング装置は、図９に関連して以下でより詳細に論じる。
【００３６】
いくつかの実施形態において、エージェント１５２は、アプリケーション１５１を監視し、アプリケーション実行時間データをアプリケーション監視システム１９０に転送し、このアプリケーション監視システム１９０においてデータが解析されてユーザに報告される。図３Ｂは、アプリケーション１５１を監視するプロセスの実施形態の流れ図を示す。プロセスは、図３Ａの例示的なシステムにおいて実行してもよい。アプリケーション１５１は、ステップ１１２においてエージェント１５２によって監視される。監視には、エージェント１５２が、アプリケーションサーバ１５０のどのトランザクションが処理されるかということと、アプリケーションがクライアント要求を処理する場合にトランザクションが呼び出される期間と、を決定することを含んでもよい。
【００３７】
アプリケーションの監視に基づいたアプリケーション実行時間データ１４３は、ステップ１１４において作成される。作成されたアプリケーション実行時間データ１４３は、要求を処理する際に関係するアプリケーションコンポーネント、要求を処理する際に各コンポーネントが消費した期間、および他の情報を示すことができる。１つの可能なアプローチにおいて、アプリケーション実行時間データ１４３は、エージェント１５２によって作成することができ、その後、エージェント１５２は、作成されたアプリケーション実行時間データ１４３をアプリケーション監視システム１９０に転送してもよいが、アプリケーション監視システム１９０は、一実施形態において、アプリケーションサーバ１５０の外部に存在することができる。一般に、アプリケーション実行時間データ１４３には、平均メソッド実行時間と、秒ごとまたは期間ごとのメソッド呼び出し割合と、メソッド呼び出し数と、開始したがまだ終了していないメソッド呼び出し数を示す期間ごとの並行メトリックと、開始したメソッド呼び出しであって、そのメソッド呼び出し時間が特定の閾値を超えた期間ごとのメソッド呼び出し数を示すストールしたメトリック等の情報を含むことができる。さらに、アプリケーション実行時間データは、ガーベジコレクションのヒープサイズと、ファイルおよびソケットアクティビティを示す帯域幅メトリックと、スレッド数と、システムログと、例外と、メモリリークと、コンポーネントの対話と、を識別することができる。アプリケーション実行時間データを特定のトランザクションにリンクしてもよいことに留意されたい。
【００３８】
アプリケーション実行時間データ１４３は、データを集約し、データを記憶し、かつインタフェースまたは他の出力部１９５を通してオペレータにデータを提供することなどにより、ステップ１１６においてアプリケーション監視システム１９０によって処理および報告してもよい。
【００３９】
いくつかの実施形態において、トラフィック監視システム１８０およびアプリケーション監視システム１９０は、トランザクションおよびアプリケーション実行時間データの関連付けを可能にするために、互いに通信する。いくつかの実施形態において、トラフィック監視システム１８０およびアプリケーション監視システム１９０を一緒に用いて、例えば統合して、ウェブサービス、ネットワークシステム、または他のシステムの動作に関する診断、統計、および他のデータを提供してもよい。統合されたデータは、例えばシステムヘルス、性能または他の関係する問題を識別するために、オペレータまたは管理者によって解析されても、報告書で検査されても、処理されてもよい。トランザクションおよびアプリケーション実行時間データの関連付けを可能にするために互いに通信するトラフィック監視システム１８０およびアプリケーション監視システム１９０のさらなる詳細は、２００６年１２月４日出願の、「Ｉｎｔｅｇｒａｔｉｎｇ  Ｔｒａｆｆｉｃ  Ｍｏｎｉｔｏｒｉｎｇ  ａｎｄ  Ａｐｐｌｉｃａｔｉｏｎ  Ｒｕｎｔｉｍｅ  Ｄａｔａ」なる名称の特許文献４において論じられており、その出願は、全ての目的で参照によりその全体において本明細書に援用されている。
【００４０】
今や例示的なシステムを論じたので、トランザクションの識別のさらなる詳細を論じる。図１Ａのシステムおよび図３Ａのより詳細なシステムを参照する。しかしながら、トランザクションの識別が、これらの例示的なシステムに限定されないことが理解されよう。図４は、トランザクションを識別するための規則を最初に監視ノードに配置する、プロセス４００における一実施形態の流れ図である。プロセス４００は、図１Ｂのステップ１０１の一実施形態である。ステップ４０２において、ユーザが、トランザクションを識別するための規則の初期セットを定義する。ユーザは、ワークステーション１９５を介して規則を入力してもよい。いくつかの実施形態において、規則は、クライアント１１０とアプリケーションサーバ１５０との間の通信においてパターンをマッチングするために用いられる。
【００４１】
一実施形態において、各規則には、名前によって識別されるパラメータセットが含まれる。各パラメータ名は、一致値を有してもよく、一致値は、通信における（例えば、クライアントからの着信要求における）パラメータ値と比較してもよい。例として、一致値は、リテラル値または正規表現パターンとすることが可能である。一実施形態において、トランザクションが規則によって一致されるために、トランザクション要求における全ての要素が、規則における全てのパラメータと一致すべきか、または規則には存在しないようにすべきである。２以上の規則がトランザクションと一致する場合には、タイブレーク戦略を用いてもよい。１つの例示的なタイブレーカは、最も複雑な規則をトランザクションと一致する規則と見なすことである。単純なワイルドカードパターンマッチングからより複雑な正規表現パターンマッチングまで、任意の形態のパターンマッチングを用いてもよい。
【００４２】
例えば、ＵＲＬパラメータには、第１の「？」文字の前のＨＴＴＰ要求行、またはＨｏｓｔ：要求ヘッダなどの特定の要求ヘッダに出現する名前／値ペアが含まれる。例えば、ユーザがウェブサイトにログインできるようにする１つまたは複数のウェブページを含むログインプロセスの監視にユーザが興味を持っていると仮定する。教育されたオペレータは、かかるウェブページをそれらのＵＲＬによって認識することができる。したがって、ユーザは、ＵＲＬに基づいた規則を割り当てることができる。Ｃｏｏｋｉｅパラメータには、Ｃｏｏｋｉｅ：要求ヘッダに出現する名前／値ペアを含んでもよい。Ｐｏｓｔパラメータには、ＨＴＴＰ  ＰＯＳＴ要求本体に出現する名前／値ペアを含んでもよい。Ｑｕｅｒｙパラメータには、第１の「？」文字の後のＨＴＴＰ要求行に出現する名前／値ペアを含んでもよい。セッションパラメータは、かかる符号化または暗号化された値に出現する名前／値ペアを含んでもよい。名前および値の細目は、正確なマッチング用の正確な値、またはパターンマッチング用のパターンを指定してもよい。
【００４３】
ステップ４０４において、ＥＭ（エンタプライズマネージャ）１５５は、規則セット用の初期データ構造を作成する。図２Ａにおけるデータ構造は、データ構造の１つの単純な例として提供されている。データ構造の作成のさらなる詳細は、図６に関連して以下で説明する。
【００４４】
ステップ４０６において、データ構造は、監視ノードに提供される。いくつかの実施形態において、エージェント１５２には、初期データ構造が付与される。いくつかの実施形態において、トラフィック監視システム１８０には、初期データ構造が付与される。
【００４５】
図５は、トランザクションをマッチングするための規則を含むデータ構造を、頻度データの変化に基づいて更新するプロセス５００の一実施形態の流れ図である。プロセス５００は、クライアントとアプリケーションとの間の通信の解析に基づいて規則が更新される図１Ｂのステップ１０８の一実施形態である。プロセス５００は、通信が図１Ｂのステップ１０６で解析された後に開始してもよい。通信の解析には、パラメータの実際の出現がパラメータの予想される出現から逸脱するかどうかの決定を含んでもよいことを思い出していただきたい。また、通信の解析には、トランザクションの実際の出現がトランザクションの予想される出現から逸脱するかどうかの決定を含んでもよいことを思い出していただきたい。
【００４６】
ステップ５０２において、監視ノードは、パターンまたはトランザクションの実際の頻度が、予想される頻度から、所定量を超えて逸脱していることを検出する。例えば、パターンに関して、監視ノードは、ＨＴＴＰパラメータの頻度が、予想される出現から逸脱していることを決定してもよい。所定量は、任意の値であってもよく、増加側または減少側であってよい。例えば、購入トランザクションが、時間の５０パーセントに出現すると予想してもよい。しかしながら、ある監視ノードが、購入トランザクションが実際には時間の４０パーセントに出現したと決定する可能性がある。この逸脱がかなりである（例えば、所定量を超えている）と見なされる場合には、監視ノードは、この逸脱を報告すべきと決定する。別の例として、あるパラメータが、時間の１２パーセントに出現すると予想され得るが、しかしながら、実際には時間の１５パーセントに出現することが分かる。この逸脱がかなりである（例えば、所定量を超えている）と見なされる場合には、監視ノードは、この逸脱を報告すべきと決定する。監視ノードが、逸脱が出現しているかどうかをいつでも決定してもよいことに留意されたい。例えば、監視ノードは、予想される頻度を実際の頻度と定期的に比較することが可能である。また、各監視ノードが、ステップ５０２をそれ自体で実行してもよいことに留意されたい。
【００４７】
ステップ５０４において、監視ノードは、頻度データ１４２をＥＭ１５５に送信する。一つのトランザクションの逸脱を報告する場合に、監視ノードは、全ての他のトランザクションまたは任意のトランザクションセット用の現在のデータを報告してもよい。一つのパターン（例えばパラメータ）の逸脱を報告する場合に、監視ノードは、全ての他のパラメータまたは任意のパラメータセット用の現在のデータを報告してもよい。また、所与のパラメータの逸脱を報告する場合に、そのためのパラメータを規則が含む全てのトランザクションか、そのためのパラメータを規則が含むトランザクションのあるセットか、全てのトランザクションの現在のデータを監視ノードが報告してもよいことに留意されたい。あるいは逸脱が見つからない限りはトランザクションの現在のデータを報告しなくてもよいことに留意されたい。同様に、予想される出現からの逸脱がトランザクションにあると決定した場合に、監視ノードは、トランザクションに関連する規則に含まれる全てのパラメータか、それらのパラメータのあるセットか、全てのパラメータの現在のデータを報告してもよいことに留意されたい。あるいは逸脱が見つからない限りはパラメータの現在のデータを報告しなくてもよいことに留意されたい。
【００４８】
ステップ５０６において、ＥＭ１５５は、頻度データの変化に基づいて、規則１４１（例えば、データ構造）を更新すべきかどうかを決定する。２以上の監視ノードがあり得るため、ＥＭ１５５は、監視ノードからの頻度データを集約し、集約データがデータ構造を更新すべきことを示唆しているかどうかを決定するようにしてもよい。言及したように、データ構造の更新は、監視ノードにおけるより効率的な処理につながる可能性がある。しかしながら、更新を行う際にわずかなコストがかかる可能性がある。したがって、更新は、変化がコストを相殺するほど著しくなるまで遅らせてもよい。データ構造に対する実際の更新をＥＭ１５５が実行するため、アプリケーションサーバ１５０が、更新によって影響されないことに留意されたい。しかしながら、更新を監視ノードに送信するために、ある量のネットワークトラフィックが存在するであろう。更新を行う場合には、ネットワークトラフィックの実質的な追加を避けることが望ましいであろう。
【００４９】
ＥＭ１５５が、データ構造を更新すべきことを決定した場合には、データ構造は、ステップ５０８で更新される。ステップ５０８においてデータ構造の体系を修正してもよいことに留意されたい。例えば、規則が、ルートを有する木を含むデータ構造に存在する場合には、規則の更新には、より大きな頻度で通信に出現するパラメータを木のルートにより近く配置することを含んでもよい。いくつかの実施形態において、木の最も下の各ノードには１つまたは複数の規則のセットが存在する。この場合には、規則の更新には、トランザクションが受信される頻度に基づいて、木の最も下のノードのそれぞれにおいて規則を順序付けることを含んでもよい。データ構造がどのように作成および更新されるかのさらなる詳細は、図７に関連して以下で論じる。データ構造の更新がまだ正当化されないことをＥＭ１５５が決定した場合には、変更はなされない。しかしながら、いずれにしても、頻度データは、追加的な頻度データが受信された場合には更新を行うことができるように維持してもよい。
【００５０】
ステップ５１０において、規則１４１に対する更新は、ＥＭ１５５から監視ノードに送信される。いくつかの実施形態において、ネットワークトラフィックの実質的な追加を避けるために、増分の更新だけが送信される。例として、増分の更新だけを送信することによって、データ構造に対する変更だけが送信される。
【００５１】
図６は、トランザクションをマッチングするための規則を含むデータ構造を作成または更新するプロセス６００の一実施形態の流れ図を示す。プロセス６００を用いて、図２Ａに示す例などのデータ構造を作成または更新してもよい。プロセス６００は、規則を更新する、図１Ｂのステップ１０８の一実施形態である。プロセス６００は、規則を有する初期データ構造を定義する、図４のステップ４０４の一実施形態である。プロセス６００は、規則を有するデータ構造の規則を更新する図５のステップ５０８の一実施形態である。プロセス６００は、ＥＭ１５５によって実行してもよい。ステップ６０２において、規則セットがアクセスされる。一実施形態において、例えば、規則セットは、図４のステップ４０２に説明するようにユーザによって提供される。プロセス６００が、データ構造を更新するために用いられている場合には、規則セットには、記憶装置からアクセスしてもよい。例えば、データベース４３０は、ユーザによって前に提供された規則セットを記憶するために用いてもよい。
【００５２】
ステップ６０４において、規則セットにおいて用いられるパラメータが識別される。言及したように、各規則は、１つまたは複数のパラメータと関連付けてもよい。例えば、規則は、様々なＨＴＴＰパラメータを指してもよい。
【００５３】
ステップ６０６において、頻度が各パラメータに割り当てられる。パラメータの実際の頻度に関して情報がまだ提供されていない場合には、初期頻度が推定値であってもよい。推定値は、任意の値をパラメータに割り当てること、ユーザ入力に基づいて値を割り当てることなどの多くの方法で作成してもよい。パラメータの実際の頻度に関して頻度データ１４２が提供されている場合には、パラメータ頻度は、頻度データ１４２に基づいてもよい。この後者の場合に、頻度データ１４２を用いて、パラメータ用の以前の頻度値を変更してもよいことに留意されたい。
【００５４】
ステップ６０８において、パラメータ、パラメータ頻度、および規則に基づいて、木が作成される。例として、木が図２Ａに示されている。具体的には、パラメータノード１３０が、木を形成する。いくつかの実施形態において、木は、２分木（各ノードにおいて２本の枝に分岐している木）である。例えば、リーフノードではない各パラメータノード１３０は、２つの子を有してもよい。一実施形態において、パラメータノード１３０には、１つまたは複数のパラメータが含まれる。一実施形態において、各パラメータノード１３０は、規則のどのサブセットが、マッチング用にまだ適用可能な候補であるかを決定するアルゴリズム決定に対応する。例えば、図２Ａにおける木は、規則Ａ〜Ｆの場合向けである。パラメータノード１３０ａにおけるアルゴリズム決定が「ｎｏ」である場合には、規則ＥおよびＦが可能な一致として残る。パラメータノード１３０ａにおけるアルゴリズム決定が「ｙｅｓ」である場合には、規則Ａ、Ｂ、ＣおよびＤが可能な一致として残る。
【００５５】
一実施形態において、所与のパラメータノード１３０用の２つの子ノードが、所与のパラメータノード１３０におけるパラメータが存在するかどうかに基づいて到達される。例えば、「ｙｅｓ」および「ｎｏ」ブランチが、図２Ａの木に出現する。一実施形態において、各パラメータノード１３０は、他の可能なパラメータを備えた子孫（例えば、子、孫等）ノードを有する。例えば、パラメータノード１３０ａは、パラメータＰａｒａｍ５（ノード１０３ｅにおける）、ならびに他の経路におけるＰａｒａｍ２、Ｐａｒａｍ３およびＰａｒａｍ４を備えた子孫ノードを有する。
【００５６】
一般に、より頻繁に出現すると予想されるパラメータは、木のルートにより近く出現してもよい。例えば、Ｐａｒａｍ１は、図２Ａにおける木のルートに出現する。これは、Ｐａｒａｍ１が他のパラメータより頻繁に出現すると予想されるからであり得る。同様に、Ｐａｒａｍ２は、Ｐａｒａｍ３またはＰａｒａｍ４より頻繁に出現すると予想され得る。
【００５７】
いくつかの実施形態において、木は、より効率的な構造を作成するために、少なくともある程度までバランスが保たれる。木が完全にバランスを保つことは要求されないことに留意されたい。例えば、図２Ａにおける木は、完全にはバランスを保たれていない。なぜなら、リーフパラメータノード１３０ｅが、他のリーフパラメータノード１３０ｃ、１３０ｄよりルートパラメータノード１３０ａに近いからである。
【００５８】
ステップ６１０において、各リーフパラメータノード１３０用の規則が識別される。これには、リーフパラメータノードからルートパラメータノードへの経路において、パラメータの１つまたは複数を含む規則を識別することを含んでもよい。例えば、リーフパラメータノード１３０ｄにとって、経路上のパラメータには、Ｐａｒａｍ１、Ｐａｒａｍ２、およびＰａｒａｍ４が含まれる。規則は、パラメータの１つまたは複数を含んでもよい。したがって、規則は、これらのパラメータの全てを含むことは要求されない。こうして各リーフパラメータノード１３０の規則セットが識別される。これが必ずしも図２Ａに示す最終セットではないことに留意されたい。
【００５９】
ステップ６１２において、共通パラメータを共有する規則が、木を短縮するために識別される。しかしながら、規則は同一のパラメータを有する必要がないことに留意されたい。例えば、図２Ａにおける木を参照すると、規則ＣおよびＤは、共通パラメータＰａｒａｍ１、Ｐａｒａｍ２、およびＰａｒａｍ３を共有してもよい。しかしながら、規則Ｃは、Ｐａｒａｍ６、Ｐａｒａｍ７、およびＰａｒａｍ８（図２Ａの木には示さず）などの追加パラメータを有してもよい。この場合には、木は、Ｐａｒａｍ６、Ｐａｒａｍ７、およびＰａｒａｍ８用の追加パラメータノードを有するようには要求されない。もっと正確に言えば、木は、リーフパラメータノード１３０ｃで停止することができる。これは、木を短縮し、したがってトランザクションを識別するために木を用いる場合に、より効率的な処理につながる可能性がある。
【００６０】
ステップ６１４において、正規表現の共通サブセットを共有する規則が、互いに関連付けられる。例えば、次の正規表現を有する規則を検討する。
【００６１】
ｗｗｗ．ｇｏｏｇｌｅ．ｃｏｍ
【００６２】
ｗｗｗ．ｇｏｏｇｌｅ．１．ｃｏｍ
【００６３】
ｍａｐｓ．ｇｏｏｇｌｅ．ｃｏｍ
【００６４】
規則は、正規表現*．ｇｏｏｇｌｅ．*を共有する。この正規表現が、データトラフィックに見つからない場合には、規則のどれも一致しないであろう。したがって、規則は、比較数を最小化するために互いに関連付けてもよい。例えば、規則ＢとＣがこの方法で関連付けられる表記法を木に追加してもよい。したがって、監視ノードが、データトラフィックにおいて正規表現の共通サブセットを探したときに、正規表現の共通サブセットが見つからない場合には、監視ノードは、規則ＢおよびＣ用の処理を停止してもよい。
【００６５】
ステップ６１６において、頻度が各規則に割り当てられる。この頻度は、規則が、一致すると予想されるかまたは実際に一致する予想または実際の頻度であってもよい。規則がトランザクションに対応してもよいので、頻度は、トランザクションが一致すると予想されるかまたは実際に一致する予想頻度または実際の頻度であってもよい。図２Ａのデータ構造は、規則に割り当てられた例示的な頻度を示す。頻度用の値は、多くの方法で決定してもよい。例えば、頻度データ１４２が存在しない場合には、頻度値は、任意に割り当てることが可能である。監視ノードからの実際の頻度データ１４２を用いて、それらの値を洗練してもよい。したがって、監視ノードが、実際の頻度データ１４２を送信する場合には、そのデータを用いて、頻度値を更新してもよい。ある場合において、頻度値は、ユーザ入力に基づいてもよい。例えば、ユーザは、購入トランザクション用の予想される頻度を入力することが可能である。
【００６６】
ステップ６１８において、規則は、規則の頻度に基づいて順序付けられる。例えば、図２Ａを参照すると、リーフパラメータノードに関連する各サブセットにおける規則は、高から低へ順序付けられる。したがって、規則処理は、監視ノードにおいて効率的に実行することが可能である。データ構造が作成または更新された後で、次にデータ構造を監視ノードに提供してもよい。全データ構造を提供することが要求されないことに留意されたい。例えば、図１Ｂのステップ１１０を実行する場合には、更新を提供するために必要な部分だけを提供する必要がある。
【００６７】
時には、ユーザは、トランザクションを識別するための規則を変更すべきであることを決定してもよい。図７は、ユーザからの入力に基づいてデータ構造を更新するプロセス７００の一実施形態の流れ図である。ステップ７０２において、ユーザは、規則セットを修正する。例えば、ユーザは、ワークステーション１９５にアクセスし、データベース４３０に記憶された規則セットの前のバージョンにアクセスし、それを修正する。ユーザは、新しい規則を追加するか、または前の規則を削除してもよい。既存の規則に対して、ユーザは、パラメータを追加または削除してもよい。ユーザはまた、規則が真と評価される際に基礎とする条件を変更してもよい。
【００６８】
ステップ７０４において、ＥＭ１５５は、規則の体系を更新する。図６のプロセスが、新しい規則セットに基づいて規則を更新するために適用してもよい。ステップ７０６において、更新された規則が、監視ノードに提供される。例えば、エージェント１５２および／またはトラフィック監視システム１８０に、規則の体系と同様に、新しい規則、または規則の少なくとも更新された部分が提供される。
【００６９】
図１Ｂのステップ１０２で論じたように、監視ノードは、クライアント１１０とアプリケーション１５１との間の通信を監視してもよい。いくつかの実施形態において、これには、ＨＴＴＰ要求を解析してＨＴＴＰパラメータの名前／値ペアを作成することを含んでもよい。例えば、解析できる典型的なＨＴＴＰのＰＯＳＴ要求を表１に示す。
【００７０】
【表１】
0005937787.tif 000002
【００７１】
上記の要求の解析に由来するＨＴＴＰパラメータリストの例を表２に示す。各パラメータには、タイプおよび名前／値ペアが含まれる。
【００７２】
【表２】
0005937787.tif 000003
【００７３】
パラメータリストデータは、表１におけるＨＴＴＰ要求から検索してもよい。特に、パラメータリストクエリーデータは、要求の要求行から検索することができ、クッキーデータは、要求ヘッダから検索することができ、ポストデータは、要求本体から検索することができ、ＵＲＬデータは、要求ヘッダおよび要求行から検索することができる。ＨＴＴＰパラメータ用の名前／値ペアを決定した後で、監視ノードは、それらに規則をそれらに適用してトランザクションを識別してもよい。
【００７４】
パラメータがＨＴＴＰパラメータであることは要求されないことに留意されたい。さらに、規則がデータトラフィックにおけるパラメータに基づくということが絶対的な要件ではないことに留意されたい。一実施形態において、データトラフィック（例えば通信）は、データの「チャンク」に分割される。例えば、ＨＴＴＰ標準などのある標準に従って、データトラフィックのある位置における特定のパラメータを探すのではなく、データトラフィックは、標準におけるあるパラメータに必ずしも対応しないチャンクに切断することが可能である。規則は、やはり、チャンクにおけるパターンと一致するように割り当てることができる。例えば、規則は、チャンク１におけるあるストリング、チャンク２おける別のストリング等を探すことになり得る。この場合には、パラメータおよびパラメータ頻度を監視ノードに提供する代わりに、ストリングおよびストリング頻度を提供することが可能である。ストリングが、どんな特定のパラメータにも必ずしも対応しないので、ストリングは、「任意のストリング」と呼んでもよい。
【００７５】
一例として、図２Ａの木構造は、パラメータをストリングと取り替えることによって修正することが可能である。図８Ａは、パラメータノード１３０の代わりに、ストリングノード８３０を有する木の一実施形態を示す。この例において、より高い頻度で出現すると予想されるストリングは、木のより上部で出現することが可能である。したがって、規則は、ストリングに基づいて体系化してもよい。木の体系は、ストリングがデータトラフィックに出現する実際の頻度、および／またはトランザクションが識別される実際の頻度に基づいて修正することが可能である。
【００７６】
図８Ｂは、データ構造を適用してトランザクションを識別する一実施形態の流れ図である。プロセスは、例えば、エージェント１５２および／またはトラフィック監視システム１８０によって実行してもよい。プロセスは、図１Ｂのステップ１０４の一実施形態である。プロセスフローを論じるときに、図８Ａの例示的なデータ構造に言及する。
【００７７】
ステップ８０２において、通信はチャンクに分割される。例えば、トラフィックにおけるある基準ポイント（例えば、パケットのヘッダ）から開始して、データトラフィックは、ある所定サイズのチャンクに分割される。チャンクは、互いに異なるサイズであってもよい。
【００７８】
ステップ８０４において、図８Ａのデータ構造は、データトラフィックがチャンクにされたときに、ストリングがデータトラフィックに存在するかどうかに基づいて、ルートストリングノード８３０ａからリーフストリングノード８３０ｃ、８３０ｄ、８３０ｅの１つへと辿られる。一実施形態において、木は、チャンクを、所与のストリングノード８３０におけるストリングの１つと比較することによって辿られる。
【００７９】
ステップ８０６において、リーフストリングノードにリンクされた規則が、順番に適用される。これは、規則がパラメータに基づく場合と同様であってもよい。
【００８０】
図９は、現在の技術で用いるためのコンピューティングシステムにおける実施形態のブロック図である。コンピューティングシステムは、クライアント装置１１０、ネットワークサーバ１４０、アプリケーションサーバ１５０、企業マネージャ１５５、トラフィック監視システム１８０、アプリケーション監視システム１９０、ワークステーション１９５、データベース４３０等のプラットホームとして用いてもよい。
【００８１】
コンピュータシステムには、１つまたは複数のプロセッサ５５０と、プロセッサユニット５５０による実行のための命令およびデータを部分的に記憶するメインメモリ５５２とが含まれる。本発明のシステムが、ソフトウェアにおいて全体的または部分的に実行される場合には、メインメモリ５５２は、動作中に実行可能コードを記憶することができる。また、大容量記憶装置５５４、周辺装置５５６、ユーザ入力装置５６０、出力装置５５８、携帯記憶媒体ドライブ５６２、グラフィックスサブシステム５６４、および出力ディスプレイ５６６が設けられる。簡単にするために、コンポーネントは、単一バス５６８を介して接続されているように示されている。しかしながら、コンポーネントは、１つまたは複数のデータ伝送手段を介して接続してもよい。例えば、プロセッサユニット５５０およびメインメモリ５５２は、ローカルマイクロプロセッサバスを介して接続してもよく、大容量記憶装置５５４、周辺装置５５６、携帯記憶媒体ドライブ５６２、およびグラフィックスサブシステム５６４は、１つまたは複数の入力／出力（Ｉ／Ｏ）バスを介して接続してもよい。大容量記憶装置５５４は、磁気ディスクドライブまたは光ディスクドライブで実現してもよいが、プロセッサユニット５５０が使用するためのデータおよび命令を記憶するための不揮発性記憶装置である。一実施形態において、大容量記憶装置５５４は、メインメモリ５５２にロードする目的で、本発明を実施するためのシステムソフトウェアを記憶する。
【００８２】
携帯記憶媒体ドライブ５６２は、フロッピー（登録商標）ディスクなどの携帯不揮発性記憶媒体を用いて動作し、コンピュータシステムに対してデータおよびコードを入力および出力する。一実施形態において、本発明を実施するためのシステムソフトウェアは、かかる携帯媒体上に記憶され、携帯記憶媒体ドライブ５６２を介してコンピュータシステムに入力される。周辺装置５５６には、入力／出力（Ｉ／Ｏ）インタフェースなど任意のタイプのコンピュータ支援装置を含んで、追加機能をコンピュータシステムに追加してもよい。例えば、周辺装置５５６には、コンピュータシステムをネットワーク、モデム、ルータ等に接続するためのネットワークインタフェースを含んでもよい。
【００８３】
ユーザ入力装置５６０は、ユーザインタフェースの一部を提供する。ユーザ入力装置５６０には、文字数字および他の情報を入力するための文字数字キーパッド、またはマウス、トラックボール、スタイラスもしくはカーソル方向キーなどのポインティングデバイスを含んでもよい。テキストおよびグラフィカル情報を表示するために、コンピュータシステムには、グラフィックスサブシステム５６４および出力ディスプレイ５６６が含まれる。出力ディスプレイ５６６には、陰極線管（ＣＲＴ）ディスプレイ、液晶ディスプレイ（ＬＣＤ）または他の適切な表示装置を含んでもよい。グラフィックスサブシステム５６４は、テキストおよびグラフィカル情報を受信し、出力ディスプレイ５６６への出力用にこの情報を処理する。さらに、コンピュータシステムには、出力装置５５８が含まれる。適切な出力装置の例には、スピーカ、プリンタ、ネットワークインタフェース、モニタ等が含まれる。
【００８４】
コンピュータシステムに含まれるコンポーネントは、本発明で用いるのに適したコンピュータシステムにおいて典型的に見つかるコンポーネントであり、当該技術分野において周知のコンピュータコンポーネントの広い範疇を表すように意図されている。したがって、コンピュータシステムは、パーソナルコンピュータ、ハンドヘルドコンピューティング装置、電話機、モバイルコンピューティング装置、ワークステーション、サーバ、ミニコンピュータ、メインフレームコンピュータ、または他の任意のコンピューティング装置とすることができる。コンピュータシステムにはまた、異なるバス構成、ネットワーク化されたプラットホーム、マルチプロセッサプラットホーム等を含むことができる。Ｕｎｉｘ(登録商標)、Ｌｉｎｕｘ、Ｗｉｎｄｏｗｓ(登録商標)、Ｍａｃｈｉｔｏｓｈ  ＯＳ、Ｐａｌｍ  ＯＳおよび他の適切なオペレーティングシステムを含む様々なオペレーティングシステムを用いることができる。
【００８５】
本明細書で開示する一実施形態には、トランザクションを識別するための規則を更新する方法が含まれる。方法には、次のものを含んでもよい。クライアントと、トランザクションを処理するアプリケーションとの間の通信が、監視される。どのトランザクションがアプリケーションによって処理されるかを識別する規則が、適用される。規則は、規則がどのように体系化されるかに基づいて適用される。通信が解析される。規則の体系は、通信の解析に基づいて更新される。
【００８６】
本明細書で開示する一実施形態には、方法を実行する少なくとも１つのプロセッサをプログラムするために、プロセッサ可読コードを自身上に具体化する少なくとも１つのプロセッサ可読記憶装置が含まれる。方法には、クライアントと、パターンを有するトランザクションを処理するアプリケーションとの間の通信を監視することと、どのトランザクションがアプリケーションによって処理されるかを識別するために規則を適用することであって、規則が、トランザクションにおける予想されるパターンに基づいて体系化されることと、規則の適用が、体系に基づいていることと、通信を解析することと、通信の解析に基づいて規則の体系を更新することと、が含まれる。
【００８７】
本明細書で開示する一実施形態には、プロセッサ実行可能コードを自身上に記憶した１つまたは複数の記憶装置と、１つまたは複数の記憶装置と通信する１つまたは複数のプロセッサと、を含む監視システムが含まれる。コードは、１つまたは複数のプロセッサ上で実行された場合に、１つまたは複数のプロセッサに、アプリケーションによって処理されるトランザクションを監視させる。トランザクションには、パターンが含まれる。コードは、どのトランザクションがアプリケーションによって処理されるかを識別するために、１つまたは複数のプロセッサに規則を適用させる。規則は、パターンがトランザクションに出現すると予想される頻度に基づき、かつトランザクションのそれぞれがアプリケーションによって処理されると予想される頻度に基づいて体系化される。コードは、１つまたは複数のプロセッサに、規則の体系化に基づいて規則を適用させる。コードは、トランザクションにおけるパターンの実際の頻度がパラメータの予想される頻度から逸脱した場合、またはトランザクションのいくつかにおける実際の頻度がトランザクションのいくつかにおける予想される頻度から逸脱した場合を、１つまたは複数のプロセッサに決定させる。コードは、１つまたは複数のプロセッサに、パターンの実際の頻度またはトランザクションの実際の頻度に基づいて規則の体系を更新させる。
【００８８】
本明細書で開示する一実施形態には、トランザクションを識別するためのデータ構造を更新する方法が含まれ、この方法には、次のものが含まれる。データ構造の第１のバージョンが、トランザクションを処理するアプリケーションを監視する複数のエージェントに提供される。トランザクションは、複数のパラメータのうちの１つまたは複数のパラメータを有する。データ構造は、複数のパラメータに基づいて体系化され、かつ複数のパラメータに基づいてトランザクションを識別するための規則を含む。アプリケーションによって処理されるトランザクションは、データ構造の体系に基づいて識別される。頻度データが、エージェントによって収集される。頻度データは、トランザクションのそれぞれが識別される頻度、およびパラメータのそれぞれがトランザクションに出現する頻度を示す。頻度データは、マネージャノードに提供される。データ構造の体系は、頻度データに基づいて更新される。更新されたデータ構造は、複数のエージェントに提供される。
【００８９】
本発明の前述の詳細な説明は、例示および説明のために提示された。それは、網羅的であるようにも、開示された形態に本発明を厳密に限定するようにも意図されていない。上記の教示に照らして多くの修正および変更が可能である。説明した実施形態は、本発明の原理およびその実際的な適用を最も良く説明するために選択され、それによって、他の当業者が、様々な実施形態において、考えられる特定の使用法に適した様々な修正と共に本発明を最も良く利用できるようにする。本発明の範囲は、本明細書に添付された特許請求の範囲によって定義されることが意図されている。
【符号の説明】
【００９０】
１１０  クライアント装置
１２０  ネットワーク
１３０ａ  ルートパラメータノード
１３０ｂ  パラメータノード
１３０ｃ  リーフパラメータノード
１３０ｄ  リーフパラメータノード
１３０ｅ  リーフパラメータノード
１３２ａ  規則ノード
１３２ｂ  規則ノード
１３２ｃ  規則ノード
１４０  ネットワークサーバ
１４１  規則
１４２  頻度データ
１４３  アプリケーション実行時間データ
１５０  アプリケーションサーバ
１５１  アプリケーション
１５２  エージェント
１５３  プローブ
１５４  プローブ
１５５  企業マネージャ
１８０  トラフィック監視システム
１９０  アプリケーション監視システム
１９５  ワークステーション
４３０  データベース
５５０  プロセッサ
５５２  メインメモリ
５５４  大容量記憶装置
５５６  周辺装置
５５８  出力装置
５６０  入力装置
５６２  携帯記憶媒体ドライブ
５６４  グラフィックスサブシステム
５６６  出力ディスプレイ
５６８  単一バス
８３０ａ  ルートストリングノード
８３０ｃ  リーフストリングノード
８３０ｄ  リーフストリングノード
８３０ｅ  リーフストリングノード
【図１Ａ】
0005937787.tif 000004
【図１Ｂ】
0005937787.tif 000005
【図２Ａ】
0005937787.tif 000006
【図２Ｂ】
0005937787.tif 000007
【図３Ａ】
0005937787.tif 000008
【図３Ｂ】
0005937787.tif 000009
【図４】
0005937787.tif 000010
【図５】
0005937787.tif 000011
【図６】
0005937787.tif 000012
【図７】
0005937787.tif 000013
【図８Ａ】
0005937787.tif 000014
【図８Ｂ】
0005937787.tif 000015
【図９】
0005937787.tif 000016