説明

効率的なトランザクションパターンマッチングのための規則体系

【課題】効率的なトランザクションパターンマッチング用の規則体系を提供する。
【解決手段】トランザクションは、クライアントとサーバとの間の通信に規則セットを適用して、あるパターンが通信に存在するかどうかを決定することによって識別される。例えば、規則は、パラメータのある組み合わせをトランザクションにおいて探してもよい。特定の例として、規則を用いて、HTTP要求においてパラメータを探してもよい。規則は、効率的な処理を可能にするような方法で体系化される。例えば、規則は、パラメータがトランザクションに出現すると予想される頻度、および各トランザクションが出現すると予想される頻度に基づいて体系化してもよい。規則は、より効率的な処理のために規則を体系化できるように、予想される頻度が、実際の頻度から逸脱する場合には更新してもよい。

【発明の詳細な説明】
【背景技術】
【0001】
関連する技術の説明
インターネット、並びにイントラネットおよびエクストラネットなどの他のコンピュータネットワークの存在が成長したことから、電子商取引、教育および他の分野において、多くの新しいアプリケーションがもたらされた。組織は、そのビジネスまたは他の目的を実現するために、かかるアプリケーションにますます依拠し、アプリケーションが期待通りに動作することを保証するためにかなりの資源を充てている。この目的のために、様々なアプリケーション管理技術が開発されてきた。
【0002】
一つのアプローチは、例えばサーバ上を走っているアプリケーションによって実行されるトランザクションを監視することを含む。これらのトランザクションは、クライアント装置からの要求に応じて実行されることがある。例えば、トランザクションは、ウェブサイトへのユーザログイン、ウェブサイトによって販売される製品を購入するユーザ要求、品物を販売するためにウェブサイトを用いるユーザ要求等である可能性がある。ウェブサイト管理者は、これらのトランザクションが、そのウェブサイト(および/または関連するウェブサイト)上でソフトウェアによって、どの程度に良好に実行されているかを知りたいであろう。そこで、各種のトランザクションを実行する時間などの性能計量(メトリックス)のために、トランザクションを監視することが可能である。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】米国特許第6,260,187号公報
【特許文献2】米国特許出願第09/795,901号の明細書
【特許文献3】米国特許出願公開第2004/0075690号公報
【特許文献4】米国特許出願公開第2007/0266149号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
ソフトウェアは、多くの異なるタイプのトランザクションを実行する可能性があるために、実行されているトランザクションのタイプを適切に識別する必要がある。クライアント要求のために実行されているトランザクションのタイプを決定するための技術が存在する。しかしながら、実行されているトランザクションのタイプを決定することは、必ずしも簡単な作業ではない。トランザクションタイプを決定するためのいくつかの技術は、かなりの時間および/または計算力を必要とする。
【図面の簡単な説明】
【0005】
【図1A】ネットワークサービスを監視するネットワーク監視システムの実施形態のブロック図である。
【図1B】トランザクションを識別するプロセスの実施形態の流れ図を示す。
【図2A】トランザクションを識別するために使用可能な規則を有するデータ構造の例示を示す。
【図2B】トランザクションを識別するために図2Aのデータ構造を適用する一実施形態の流れ図である。
【図3A】ネットワークサービスを監視するためのシステムの実施形態のブロック図である。
【図3B】ネットワークサービスを監視する実施形態の流れ図を示す。
【図4】トランザクションを識別するための規則を最初に監視ノードに配置するプロセスの一実施形態の流れ図である。
【図5】トランザクションをマッチングするための規則を含むデータ構造を、頻度データに対する変更に基づいて更新するプロセスの一実施形態の流れ図である。
【図6】トランザクションをマッチングするための規則を含むデータ構造を作成または更新するプロセスの一実施形態の流れ図を示す。
【図7】トランザクションをマッチングするための規則を含むデータ構造を、ユーザからの入力に基づいて更新するプロセスの一実施形態の流れ図である。
【図8A】トランザクションを識別するために使用可能なストリングに基づく規則を有するデータ構造の例示を示す。
【図8B】トランザクションを識別するために図8Aのデータ構造を適用する一実施形態の流れ図である。
【図9】実施形態が実行される土台となるコンピュータシステム用のプラットホームの例示を示す。
【発明を実施するための形態】
【0006】
サーバアプリケーションなどのソフトウェアアプリケーションによって処理されるトランザクションを効率的に識別するための方法、装置、およびシステムが提供される。トランザクションの識別のいくつかは、トランザクションを実行しているサーバ上で実行してもよい。しかしながら、トランザクションを効率的に識別することによって、サーバ性能が否定的な影響を受けることはない。
【0007】
一実施形態では、クライアントとサーバとの間の通信に規則セットを適用して、あるパターンが通信に存在するかどうかを決定することによって、トランザクションが識別される。例えば、規則は、トランザクションにおいてパラメータのある組み合わせを探してもよい。特定の例として、HTTP要求内のパラメータを探す規則を用いてもよい。規則は、効率的な処理を可能にする方法で体系化される。例えば、規則は、トランザクションにおいてパラメータが出現すると予想される頻度、および各トランザクションが出現すると予想される頻度に基づいて体系化してもよい。規則は、より効率的な処理のために規則が体系化されるように、予想される頻度が実際の頻度から逸脱する場合には、更新してもよい。
【0008】
ネットワークサービス監視
本明細書で開示する技術は、ウェブサービスなどのネットワークサービスを監視するネットワークサービス監視システムによって少なくとも部分的に実行可能である。本明細書で開示する技術は、他のネットワークサービスも同様に監視できる。一般的に、ネットワークサービスは、インターネット、イントラネット、エクストラネット、プライベートネットワーク、または他のネットワークを通じて提供することができ、ワールドワイドウェブを介して提供されるネットワークサービスに限定されない。以下でウェブサービスを参照していくつかの例を論じるが、本明細書で論じる技術は、一般に、ネットワークもしくは他の通信手段に接続されるかまたはそれらと通信する他のサービスに適用される。
【0009】
図1Aは、1つの例示的なネットワークサービス監視システムを示す。このシステムには、1つまたは複数のネットワークサーバ140、1つまたは複数のアプリケーションサーバ150、トラフィック監視システム180、およびアプリケーション監視システム190が含まれる。クライアント装置110は、ネットワーク120を通じてネットワークサーバ140にアクセスする。
【0010】
ネットワークサービスは、ネットワークサーバ140およびアプリケーションサーバ150によって提供してもよい。実際には、任意の構成で接続される任意の数のサーバまたは他のコンピューティング装置を用いることができる。ネットワークサーバ140は、インターネットもしくは他のWAN、LAN、イントラネット、エクストラネット、プライベートネットワーク、または他のネットワークなどのネットワーク120を通じて、クライアント装置110にトラフィックを送信し、かつクライアント装置110からトラフィックを受信する。実際には、多数のクライアント装置がネットワークサーバ140と通信することができる。
【0011】
アプリケーションサーバ150は、ネットワークサーバ140と通信してもよい。特にネットワークサーバ140がクライアント装置110から要求を受信する場合には、ネットワークサーバ140は、処理するためにその要求をアプリケーションサーバ150に中継してもよい。クライアント装置110は、ラップトップ、PC、ワークステーション、携帯電話、PDA、またはエンドユーザによって操作される他のコンピューティング装置とすることができる。または、クライアント装置は、サーバなどの自動コンピューティング装置とすることができる。アプリケーションサーバ150は、ネットワークサーバ140から受信した要求を処理し、ネットワークサーバ140を介して、対応する応答をクライアント装置110に送信する。
【0012】
アプリケーション監視システム190は、ネットワークサービスの1つまたは複数のアプリケーション151の実行を監視してもよい。1つの可能なアプローチでは、アプリケーション監視システム190は、エージェント152などの1つまたは複数のエージェントを用いる。このエージェントは、アプリケーション監視システム190の一部と見なしてもよいが、図1Aでは、エージェント152は、別個のブロックとして示されている。エージェント152およびアプリケーション監視システム190は、アプリケーションサーバ150における1つまたは複数のアプリケーション151の実行を監視し、要求に応じたアプリケーションコンポーネントの実行を表すアプリケーション実行時間データを作成し、かつ作成したアプリケーション実行時間データ143を処理してもよい。いくつかの実施形態では、アプリケーション監視システム190が、ネットワークサーバ140などの他のサーバにおけるアプリケーションまたは他のコードの実行を監視するために用いられてもよい。
【0013】
例えば、アプリケーション監視システム190は、1つまたは複数のアプリケーション151の性能を監視してもよく、かつ例えば、アプリケーションのスレッドおよび/またはプロセスなどの1つまたは複数の実行経路において呼び出されるコンポーネントを識別する、対応するアプリケーション実行時間データ143を作成してもよい。例示的なコンポーネントには、サーブレット、Java(登録商標)サーバページ、エンタープライズJava(登録商標)ビーンズ、Java(登録商標)データベース接続コンポーネントおよび/またはMicrosoft.NETコンポーネントを含むことができる。アプリケーション実行時間データ143は、例えば、コンポーネントが呼び出された期間を示すトランザクショントレースを提供することができる。
【0014】
トラフィック監視システム180は、ネットワークサービスによって送信および受信されるネットワークトラフィックを監視してもよく、任意のタイプのネットワークプロトコルに従って提供されるトラフィックを監視してもよい。トラフィック監視システム180は、クライアント110とネットワークサーバ140の間のトラフィックを監視するように示されているが、トラフィック監視システム180は、他のところに配置してもよい。例えば、トラフィック監視システム180は、ネットワークサーバ140とアプリケーションサーバ150との間のトラフィックを監視してもよい。
【0015】
本明細書で論じるように、ネットワークサービスによって処理されるトランザクションは、効率的に識別可能である。トランザクションは、機能を実行する一連の関連するネットワーク通信を指すことができる。例えば、ユーザがウェブサイトにログインする場合には、一連の関連するネットワーク通信が「ログイントランザクション」であり得る。ユーザが、電子商取引ウェブサイトで本を購入する場合には、これは「購入トランザクション」であり得る。トラフィック監視システム180もしくはエージェント152、または両方が、ネットワークサービスによって処理されるトランザクションを識別してもよい。アプリケーション監視システム190は、トラフィック監視システム180および/またはエージェント152に規則141を送信してもよい。規則141は、トランザクションを効率的に識別するために用いられる。トラフィック監視システム180および/またはエージェント152は、頻度データ142をアプリケーション監視システム190に送信してもよい。頻度データ142は、以下でより詳細に論じる。簡単に言えば、頻度データは、異なるトランザクションがどれくらいの頻度で処理されるか、またはトランザクションに関連する異なるパラメータがどれくらいの頻度でネットワークトラフィックに出現するかに基づいて決定してもよい。アプリケーション監視システム190は、規則141がエージェント152および/またはトラフィック監視システム180によってより効率的に実行され得るように、頻度データ142を用いて規則141を修正してもよい。
【0016】
図1Bは、アプリケーション151によって処理されるトランザクションを識別するプロセスの実施形態の流れ図を示す。言及したように、トランザクションは、トラフィック監視システム180および/またはエージェント152によって識別してもよい。提示されるこの流れ図および他の流れ図において、図示のステップは、必ずしも図示の順序で1つずつ実行されるわけではなく、少なくとも部分的に同時に、かつ/または別の順序で行ってもよいことに留意されたい。
【0017】
ステップ101において、トランザクションを識別するための規則141が、最初に監視ノードに配置される。監視ノードは、エージェント152および/またはトラフィック監視システム180とすることができる。規則141は、それらが効率的に適用されるのを支援するような方法で体系化してもよい。一実施形態において、規則141は、トランザクションおよびトランザクションを識別するための規則に関連するパラメータを含むデータ構造に含まれる。図2Aは、トランザクションを識別するために用いられる規則を含む例示的なデータ構造を示す。データ構造は、規則を効率的に適用できるようにする方法で体系化される。図2Aは、以下でより詳細に論じる。初期規則の配置のさらなる詳細もまた、以下で論じる。
【0018】
ステップ102において、クライアント110とアプリケーション151との間の通信が監視される。一実施形態において、エージェント152が通信を監視する。いくつかの実施形態において、エージェント152は、アプリケーション151を監視することによって通信を監視する。エージェントの監視のさらなる詳細は、以下で論じる。一実施形態において、クライアント装置110とウェブサーバ140との間で送信されるネットワーク120を通じたトラフィックなど、アプリケーション151に送信されるトラフィックにおける通信は、トラフィック監視システム180によって監視される。監視には、例えば、クライアント110とアプリケーション151との間のある中間ポイントにおいて、タップまたはミラーポートを介してトラフィックを受動的にコピーすること、またはトラフィックを傍受し、傍受したトラフィックをコピーし、かつ傍受したトラフィックをその意図した宛先へ中継することを含むことができる。通信の監視には、クライアント110からネットワークサーバ140に送信された要求、および/またはネットワークサーバ140からクライアント110に返信された応答を監視することを含んでもよいことに留意されたい。
【0019】
ステップ104において、規則141は、どのトランザクションがネットワークサービスによって処理されるかを識別するために適用される。例えば、規則141は、どのトランザクションがアプリケーション151によって処理されるかを識別するために適用される。言及したように、規則141は、ある体系を有してもよい。例えば、規則141は、トランザクションにおける予想されるパターンに基づいて体系化してもよい。したがって、規則141は、体系に基づいて適用してもよい。一実施形態において、規則141の適用は、図2Aにおけるデータ構造などのデータ構造を用いることによって達成される。この場合には、体系は、データ構造に基づいている。一実施形態において、通信におけるパターンが、パターンをトランザクションとマッチングするために検出される。トランザクションは、通信において見出される名前/値ペアのセット、例えばパラメータの存在もしくは非存在またはそれらの組み合わせを特定するトランザクション定義に基づいて検出することができる。
【0020】
ステップ106において、通信が解析される。一実施形態において、ステップ106には、トランザクションのそれぞれが識別される頻度、およびパターンのそれぞれがトランザクションに出現する頻度を決定することが含まれる。いくつかの実施形態において、パターンは、パラメータ(例えば、HTTPパラメータ)に基づいている。いくつかの実施形態において、パターンは、ストリング(例えば、任意のデータストリング)に基づいている。これらの決定された頻度は、「頻度データ」と名付けてもよい。いくつかの実施形態において、頻度データ142は、エージェント152またはトラフィック監視システム180からアプリケーション監視システム190に送信される。一実施形態において、エージェント152が、通信を解析する。一実施形態において、トラフィック監視システム180が、通信を解析する。
【0021】
ステップ108において、規則141は、通信の解析に基づいて更新される。規則141の更新には、規則の体系を修正することを含んでもよい。例えば、図2Aのデータ構造の体系を変更してもよい。いくつかの実施形態において、規則141は、トランザクションのそれぞれが識別された頻度、および/またはパターンのそれぞれがトランザクションに出現した頻度に基づいて更新される。規則141の更新では、監視ノードにおいて規則をより効率的に処理できるような方法で、規則を体系化してもよい。
【0022】
ステップ110において、更新された規則は監視ノードに提供される。例えば、アプリケーション監視システム190は、更新された規則を、エージェント152および/またはトラフィック監視システム180に提供する。次に、プロセスはステップ102に戻ってもよく、ステップ102において、更新された規則がトランザクションを識別するために用いられる。
【0023】
図2Aは、トランザクションを識別するために使用可能な規則141の例を示す。この例において、規則141には、規則を効率的に適用できるようにする方法で体系化されたデータ構造が含まれる。データ構造には、パラメータノード130a〜130eおよび規則ノード132a〜132cが含まれる。この実施形態において、データ構造には木が含まれる。説明のために、木は、パラメータノード130a〜130eを含む部分と見なされる。一般に、木は、ルートノード130aから下方に辿られ、リーフパラメータノード130c、130d、130eの1つに到達してもよい。リーフパラメータノード130c、130d、130eのそれぞれは、規則ノード132a〜132cの1つを指し示す(または含む)。例示的なデータ構造が単純化されていること、および典型的なインプリメンテーションがさらに多くのノードを有するであろうことに留意されたい。例えば、さらに多くのパラメータノード130が存在可能であり、木は、より多くのレベルを有し得る。木は、より大きな頻度でトランザクションに出現すると予想されるパラメータがルートのより近くに配置されるように、構造化してもよい。パラメータがトランザクションで出現する頻度が変化した(または予想される値から逸脱した)場合には、木は、再体系化してもよい。例えば、パラメータノード130は、異なる場所に移動してもよく、かつ/またはパラメータノード130の内容は、変化してもよい。いくつかの実施形態において、より頻繁に出現すると予想されるパラメータは、ルートのより近くに移動される。木の再体系化は、規則141を再体系化する一方法であり、かつより高速に解析できる、より効率的なデータ構造を作成するのを支援することが可能である。
【0024】
各規則は、あるトランザクションと関連付けてもよい。例えば、規則Aが真である場合には、トランザクションAが識別される。いくつかの実施形態において、各規則ノードにおける規則は、規則に関連するトランザクションが、出現すると予想されるかまたは実際に出現していると識別された頻度に基づいて、順序付けられる。例えば、規則ノード132bでは、規則Aが50パーセントの頻度を有し、規則Bが30パーセントの頻度を有し、規則Cが20パーセントの頻度を有する。時間と共に頻度が変化した場合には、規則は、再び順序付けてもよい。規則ノードにおける規則を再び順序付けることは、規則を再体系化する一方法であり、より効率的なデータ構造につながる可能性がある。いくつかの実施形態において、所与の規則ノードに出現する規則を変更して、規則を再体系化してもよい。木がどのように作成されるかのさらなる詳細は、以下で論じる。
【0025】
図2Bは、データ構造を適用してトランザクションを識別する一実施形態の流れ図である。プロセスは、例えば、エージェント152および/またはトラフィック監視システム180によって実行してもよい。プロセスは、図1Bのステップ104の一実施形態である。以下でプロセスフローを論じるときに、図2Aの例示的なデータ構造に言及する。
【0026】
ステップ202において、通信におけるパラメータが識別される。いくつかの実施形態において、これには、HTTP要求を解析して、HTTPパラメータの名前/値ペアを作成することを含んでもよい。下記の表1および表2は、名前/値ペアを決定するために解析できるHTTP要求の一例を提供する。パラメータがHTTP以外のプロトコルに由来してもよいことに留意されたい。
【0027】
ステップ204において、データ構造は、識別されたパラメータに基づいて、ルートパラメータノード130aからリーフパラメータノード130c、130d、130eの1つへと辿られる。一実施形態において、木は、識別されたパラメータを、パラメータノード130に含まれるパラメータと比較することによって辿られる。例えば、ルートパラメータノード130aには、「Param1」が含まれる。Param1が通信に存在する場合には、パラメータノード130bへの「yes」ブランチが取られる。しかしながらParam1が通信に存在しない場合には、パラメータノード130eへの「no」ブランチが取られる。パラメータノード130eがリーフパラメータノードであり、したがって、木を辿ることが、その経路に対しては完結することに留意されたい。
【0028】
ノード130bへの「yes」ブランチが取られた場合には、Param1およびParam2の両方が通信に存在するかどうかに関して決定がなされる。それらが両方とも存在する場合には、パラメータノード130cへの「yes」ブランチが取られる。1つが存在しない場合には、パラメータノード130dへの「no」ブランチが取られる。このポイントにおいて、リーフパラメータノードの1つに到達する。
【0029】
ステップ206において、リーフパラメータノードにリンクされた規則が、順番に適用される。規則が真と評価された場合には、規則の適用は停止してもよい。しかしながら、一規則が真と評価された場合に評価が停止することは要求されない。例えば、木を辿ってリーフパラメータノード130dに到達した場合に、規則セット132bにおける規則を順番に適用してもよい。規則が、それらの関連するトランザクションが出現すると予想される頻度に基づいて順序付けられることに留意されたい。したがって、第1の規則Aが評価される。第1の規則Aが真と評価された場合には、トランザクションAが識別されたという決定で処理を停止してもよい。規則Aが真と評価されない場合には、規則Bを評価してもよい。次に、規則Cを評価してもよい。規則セット132bにおける規則の少なくとも1つが真と評価されるようにデータ構造が体系化されていることに留意されたい。2以上の規則が真と評価された場合には、タイブレーク手順を用いてもよい。例示的なタイブレーク手順は、最も複雑な規則を選択することである。
【0030】
トランザクションの識別のさらなる詳細を論じる前に、アプリケーションを監視するための実施形態の例示的なシステムおよび方法を論じる。言及したように、いくつかの実施形態では、トランザクションは、アプリケーションの監視のためのシステムにおいてエージェント152によって識別される。図3Aは、アプリケーションを監視するためのシステムにおける実施形態のブロック図である。図1Aに関連して上記したように、アプリケーション監視システム190を用いてアプリケーション151を監視し、かつアプリケーション実行時間データを作成してもよい。一実施形態において、図3Aは、図1Aのアプリケーションサーバ150およびアプリケーション監視システム190のさらなる詳細を提供する。システムには、アプリケーションサーバ150が含まれるが、アプリケーションサーバ150は、企業マネージャ(エンタプライズマネージャ)155と通信し、今度は企業マネージャ155が、例示的なワークステーション195およびデータベース430と通信する。アプリケーションサーバ150には、管理されたアプリケーション151が含まれ、このアプリケーション151には、エージェント152、ならびに例示的なプローブ153および154が含まれる。アプリケーション151は、Java(登録商標)アプリケーションまたは異なるタイプのアプリケーションとすることができる。
【0031】
アプリケーション151の動作は、アプリケーションのバイトコードもしくは中間言語(IL)コードをインストルメントすることによってか、アプリケーションもしくはネットワークサーバに組み込まれた出口に接続することによってか、または任意の他の監視技術によって監視することができる。例えば、アプリケーション151からの情報はまた、プローブ153および154を用いて取得することができる。実際には、多くのかかるプローブを用いて、アプリケーションの様々なコンポーネントに関する情報を取得することができる。
【0032】
一実施形態において、プローブビルダ(probe builder)(図示せず)が、アプリケーション151用のバイトコードをインストルメント(例えば、修正)して、プローブ153および154ならびに追加コードを追加する。別のアプローチでは、開発者が、アプリケーションソースコードにプローブを追加する。プローブは、アプリケーションのビジネス論理を変更せずに、アプリケーションに関する情報の特定の断片を測定してもよい。プローブビルダはまた、アプリケーション151と同じマシンまたは別個のマシンにインストール可能なエージェント152を追加してもよい。ひとたびプローブがアプリケーションにインストールされるか、さもなければ監視能力が提供されると、アプリケーションは、管理されたアプリケーションと呼ばれる。バイトコードをインストルメントすることに関するより多くの情報が、Lewis K.Cirneによる「System For Modifying Object Oriented Code」なる名称の特許文献1、および2001年2月28日出願の「Adding Functionality To Existing Code At Exits」なる名称の特許文献2に見つけることができ、これらの文献のそれぞれが、参照によりその全体において本明細書に援用されている。
【0033】
管理されたアプリケーション151が走行するときに、プローブ153および154は、データをエージェント152に送信する。一実施形態において、プローブ153および154は、データを書き込むか、データを変更するか、さもなければアプリケーションサーバの状態を変化させるオブジェクトおよび他のコードにおいて実現してもよい。次に、エージェント152は、アプリケーション実行時間データと呼ばれるデータを収集し、要約し、企業マネージャ155に送信する。それに応じて、企業マネージャ155は、要求された計算を実行し、ワークステーション195にとって利用可能なアプリケーション実行時間データを作成し、オプションとして、後で解析するためにアプリケーション実行時間データをデータベース430に送信する。プローブを用いてアプリケーションを監視することに関するより多くの情報は、Lewis K.Cirneによる、2004年4月22日公開の「User Interface For Viewing Performance Information About Transactions」なる名称の特許文献3において見つけることができ、この文献は、参照により本明細書に援用されている。
【0034】
ワークステーション195は、人間のオペレータが監視できるカスタムビューを作成することなどによって、アプリケーション実行時間データを閲覧するためのグラフィカルインタフェースを提供する。ワークステーションには、有意義な方法でデータを閲覧できるように、一組のカスタマイズ可能なビューを提供し、アプリケーション実行時間データをフィルタリングするアラートおよび計算機を示すウィンドウを含むことができる。アプリケーション実行時間データを体系化し、操作し、フィルタリングし、かつ表示するワークステーションの要素には、動作、アラート、計算機、ダッシュボード、永続的な収集、メトリックのグループ化、比較、スマートトリガ、およびSNMP収集を含むことができる。いくつかの実施形態において、ワークステーション195は、トランザクションをマッチングするための規則をユーザが定義できるようにするために用いられる。
【0035】
図3Aのシステムの一実施形態において、1つまたは複数のコンポーネントが、異なるコンピューティング装置上を走行している。代替として、コンポーネントは、同じコンピューティング装置上を走行することができる。各コンポーネントが走行可能なコンピューティング装置は、図9に関連して以下でより詳細に論じる。
【0036】
いくつかの実施形態において、エージェント152は、アプリケーション151を監視し、アプリケーション実行時間データをアプリケーション監視システム190に転送し、このアプリケーション監視システム190においてデータが解析されてユーザに報告される。図3Bは、アプリケーション151を監視するプロセスの実施形態の流れ図を示す。プロセスは、図3Aの例示的なシステムにおいて実行してもよい。アプリケーション151は、ステップ112においてエージェント152によって監視される。監視には、エージェント152が、アプリケーションサーバ150のどのトランザクションが処理されるかということと、アプリケーションがクライアント要求を処理する場合にトランザクションが呼び出される期間と、を決定することを含んでもよい。
【0037】
アプリケーションの監視に基づいたアプリケーション実行時間データ143は、ステップ114において作成される。作成されたアプリケーション実行時間データ143は、要求を処理する際に関係するアプリケーションコンポーネント、要求を処理する際に各コンポーネントが消費した期間、および他の情報を示すことができる。1つの可能なアプローチにおいて、アプリケーション実行時間データ143は、エージェント152によって作成することができ、その後、エージェント152は、作成されたアプリケーション実行時間データ143をアプリケーション監視システム190に転送してもよいが、アプリケーション監視システム190は、一実施形態において、アプリケーションサーバ150の外部に存在することができる。一般に、アプリケーション実行時間データ143には、平均メソッド実行時間と、秒ごとまたは期間ごとのメソッド呼び出し割合と、メソッド呼び出し数と、開始したがまだ終了していないメソッド呼び出し数を示す期間ごとの並行メトリックと、開始したメソッド呼び出しであって、そのメソッド呼び出し時間が特定の閾値を超えた期間ごとのメソッド呼び出し数を示すストールしたメトリック等の情報を含むことができる。さらに、アプリケーション実行時間データは、ガーベジコレクションのヒープサイズと、ファイルおよびソケットアクティビティを示す帯域幅メトリックと、スレッド数と、システムログと、例外と、メモリリークと、コンポーネントの対話と、を識別することができる。アプリケーション実行時間データを特定のトランザクションにリンクしてもよいことに留意されたい。
【0038】
アプリケーション実行時間データ143は、データを集約し、データを記憶し、かつインタフェースまたは他の出力部195を通してオペレータにデータを提供することなどにより、ステップ116においてアプリケーション監視システム190によって処理および報告してもよい。
【0039】
いくつかの実施形態において、トラフィック監視システム180およびアプリケーション監視システム190は、トランザクションおよびアプリケーション実行時間データの関連付けを可能にするために、互いに通信する。いくつかの実施形態において、トラフィック監視システム180およびアプリケーション監視システム190を一緒に用いて、例えば統合して、ウェブサービス、ネットワークシステム、または他のシステムの動作に関する診断、統計、および他のデータを提供してもよい。統合されたデータは、例えばシステムヘルス、性能または他の関係する問題を識別するために、オペレータまたは管理者によって解析されても、報告書で検査されても、処理されてもよい。トランザクションおよびアプリケーション実行時間データの関連付けを可能にするために互いに通信するトラフィック監視システム180およびアプリケーション監視システム190のさらなる詳細は、2006年12月4日出願の、「Integrating Traffic Monitoring and Application Runtime Data」なる名称の特許文献4において論じられており、その出願は、全ての目的で参照によりその全体において本明細書に援用されている。
【0040】
今や例示的なシステムを論じたので、トランザクションの識別のさらなる詳細を論じる。図1Aのシステムおよび図3Aのより詳細なシステムを参照する。しかしながら、トランザクションの識別が、これらの例示的なシステムに限定されないことが理解されよう。図4は、トランザクションを識別するための規則を最初に監視ノードに配置する、プロセス400における一実施形態の流れ図である。プロセス400は、図1Bのステップ101の一実施形態である。ステップ402において、ユーザが、トランザクションを識別するための規則の初期セットを定義する。ユーザは、ワークステーション195を介して規則を入力してもよい。いくつかの実施形態において、規則は、クライアント110とアプリケーションサーバ150との間の通信においてパターンをマッチングするために用いられる。
【0041】
一実施形態において、各規則には、名前によって識別されるパラメータセットが含まれる。各パラメータ名は、一致値を有してもよく、一致値は、通信における(例えば、クライアントからの着信要求における)パラメータ値と比較してもよい。例として、一致値は、リテラル値または正規表現パターンとすることが可能である。一実施形態において、トランザクションが規則によって一致されるために、トランザクション要求における全ての要素が、規則における全てのパラメータと一致すべきか、または規則には存在しないようにすべきである。2以上の規則がトランザクションと一致する場合には、タイブレーク戦略を用いてもよい。1つの例示的なタイブレーカは、最も複雑な規則をトランザクションと一致する規則と見なすことである。単純なワイルドカードパターンマッチングからより複雑な正規表現パターンマッチングまで、任意の形態のパターンマッチングを用いてもよい。
【0042】
例えば、URLパラメータには、第1の「?」文字の前のHTTP要求行、またはHost:要求ヘッダなどの特定の要求ヘッダに出現する名前/値ペアが含まれる。例えば、ユーザがウェブサイトにログインできるようにする1つまたは複数のウェブページを含むログインプロセスの監視にユーザが興味を持っていると仮定する。教育されたオペレータは、かかるウェブページをそれらのURLによって認識することができる。したがって、ユーザは、URLに基づいた規則を割り当てることができる。Cookieパラメータには、Cookie:要求ヘッダに出現する名前/値ペアを含んでもよい。Postパラメータには、HTTP POST要求本体に出現する名前/値ペアを含んでもよい。Queryパラメータには、第1の「?」文字の後のHTTP要求行に出現する名前/値ペアを含んでもよい。セッションパラメータは、かかる符号化または暗号化された値に出現する名前/値ペアを含んでもよい。名前および値の細目は、正確なマッチング用の正確な値、またはパターンマッチング用のパターンを指定してもよい。
【0043】
ステップ404において、EM(エンタプライズマネージャ)155は、規則セット用の初期データ構造を作成する。図2Aにおけるデータ構造は、データ構造の1つの単純な例として提供されている。データ構造の作成のさらなる詳細は、図6に関連して以下で説明する。
【0044】
ステップ406において、データ構造は、監視ノードに提供される。いくつかの実施形態において、エージェント152には、初期データ構造が付与される。いくつかの実施形態において、トラフィック監視システム180には、初期データ構造が付与される。
【0045】
図5は、トランザクションをマッチングするための規則を含むデータ構造を、頻度データの変化に基づいて更新するプロセス500の一実施形態の流れ図である。プロセス500は、クライアントとアプリケーションとの間の通信の解析に基づいて規則が更新される図1Bのステップ108の一実施形態である。プロセス500は、通信が図1Bのステップ106で解析された後に開始してもよい。通信の解析には、パラメータの実際の出現がパラメータの予想される出現から逸脱するかどうかの決定を含んでもよいことを思い出していただきたい。また、通信の解析には、トランザクションの実際の出現がトランザクションの予想される出現から逸脱するかどうかの決定を含んでもよいことを思い出していただきたい。
【0046】
ステップ502において、監視ノードは、パターンまたはトランザクションの実際の頻度が、予想される頻度から、所定量を超えて逸脱していることを検出する。例えば、パターンに関して、監視ノードは、HTTPパラメータの頻度が、予想される出現から逸脱していることを決定してもよい。所定量は、任意の値であってもよく、増加側または減少側であってよい。例えば、購入トランザクションが、時間の50パーセントに出現すると予想してもよい。しかしながら、ある監視ノードが、購入トランザクションが実際には時間の40パーセントに出現したと決定する可能性がある。この逸脱がかなりである(例えば、所定量を超えている)と見なされる場合には、監視ノードは、この逸脱を報告すべきと決定する。別の例として、あるパラメータが、時間の12パーセントに出現すると予想され得るが、しかしながら、実際には時間の15パーセントに出現することが分かる。この逸脱がかなりである(例えば、所定量を超えている)と見なされる場合には、監視ノードは、この逸脱を報告すべきと決定する。監視ノードが、逸脱が出現しているかどうかをいつでも決定してもよいことに留意されたい。例えば、監視ノードは、予想される頻度を実際の頻度と定期的に比較することが可能である。また、各監視ノードが、ステップ502をそれ自体で実行してもよいことに留意されたい。
【0047】
ステップ504において、監視ノードは、頻度データ142をEM155に送信する。一つのトランザクションの逸脱を報告する場合に、監視ノードは、全ての他のトランザクションまたは任意のトランザクションセット用の現在のデータを報告してもよい。一つのパターン(例えばパラメータ)の逸脱を報告する場合に、監視ノードは、全ての他のパラメータまたは任意のパラメータセット用の現在のデータを報告してもよい。また、所与のパラメータの逸脱を報告する場合に、そのためのパラメータを規則が含む全てのトランザクションか、そのためのパラメータを規則が含むトランザクションのあるセットか、全てのトランザクションの現在のデータを監視ノードが報告してもよいことに留意されたい。あるいは逸脱が見つからない限りはトランザクションの現在のデータを報告しなくてもよいことに留意されたい。同様に、予想される出現からの逸脱がトランザクションにあると決定した場合に、監視ノードは、トランザクションに関連する規則に含まれる全てのパラメータか、それらのパラメータのあるセットか、全てのパラメータの現在のデータを報告してもよいことに留意されたい。あるいは逸脱が見つからない限りはパラメータの現在のデータを報告しなくてもよいことに留意されたい。
【0048】
ステップ506において、EM155は、頻度データの変化に基づいて、規則141(例えば、データ構造)を更新すべきかどうかを決定する。2以上の監視ノードがあり得るため、EM155は、監視ノードからの頻度データを集約し、集約データがデータ構造を更新すべきことを示唆しているかどうかを決定するようにしてもよい。言及したように、データ構造の更新は、監視ノードにおけるより効率的な処理につながる可能性がある。しかしながら、更新を行う際にわずかなコストがかかる可能性がある。したがって、更新は、変化がコストを相殺するほど著しくなるまで遅らせてもよい。データ構造に対する実際の更新をEM155が実行するため、アプリケーションサーバ150が、更新によって影響されないことに留意されたい。しかしながら、更新を監視ノードに送信するために、ある量のネットワークトラフィックが存在するであろう。更新を行う場合には、ネットワークトラフィックの実質的な追加を避けることが望ましいであろう。
【0049】
EM155が、データ構造を更新すべきことを決定した場合には、データ構造は、ステップ508で更新される。ステップ508においてデータ構造の体系を修正してもよいことに留意されたい。例えば、規則が、ルートを有する木を含むデータ構造に存在する場合には、規則の更新には、より大きな頻度で通信に出現するパラメータを木のルートにより近く配置することを含んでもよい。いくつかの実施形態において、木の最も下の各ノードには1つまたは複数の規則のセットが存在する。この場合には、規則の更新には、トランザクションが受信される頻度に基づいて、木の最も下のノードのそれぞれにおいて規則を順序付けることを含んでもよい。データ構造がどのように作成および更新されるかのさらなる詳細は、図7に関連して以下で論じる。データ構造の更新がまだ正当化されないことをEM155が決定した場合には、変更はなされない。しかしながら、いずれにしても、頻度データは、追加的な頻度データが受信された場合には更新を行うことができるように維持してもよい。
【0050】
ステップ510において、規則141に対する更新は、EM155から監視ノードに送信される。いくつかの実施形態において、ネットワークトラフィックの実質的な追加を避けるために、増分の更新だけが送信される。例として、増分の更新だけを送信することによって、データ構造に対する変更だけが送信される。
【0051】
図6は、トランザクションをマッチングするための規則を含むデータ構造を作成または更新するプロセス600の一実施形態の流れ図を示す。プロセス600を用いて、図2Aに示す例などのデータ構造を作成または更新してもよい。プロセス600は、規則を更新する、図1Bのステップ108の一実施形態である。プロセス600は、規則を有する初期データ構造を定義する、図4のステップ404の一実施形態である。プロセス600は、規則を有するデータ構造の規則を更新する図5のステップ508の一実施形態である。プロセス600は、EM155によって実行してもよい。ステップ602において、規則セットがアクセスされる。一実施形態において、例えば、規則セットは、図4のステップ402に説明するようにユーザによって提供される。プロセス600が、データ構造を更新するために用いられている場合には、規則セットには、記憶装置からアクセスしてもよい。例えば、データベース430は、ユーザによって前に提供された規則セットを記憶するために用いてもよい。
【0052】
ステップ604において、規則セットにおいて用いられるパラメータが識別される。言及したように、各規則は、1つまたは複数のパラメータと関連付けてもよい。例えば、規則は、様々なHTTPパラメータを指してもよい。
【0053】
ステップ606において、頻度が各パラメータに割り当てられる。パラメータの実際の頻度に関して情報がまだ提供されていない場合には、初期頻度が推定値であってもよい。推定値は、任意の値をパラメータに割り当てること、ユーザ入力に基づいて値を割り当てることなどの多くの方法で作成してもよい。パラメータの実際の頻度に関して頻度データ142が提供されている場合には、パラメータ頻度は、頻度データ142に基づいてもよい。この後者の場合に、頻度データ142を用いて、パラメータ用の以前の頻度値を変更してもよいことに留意されたい。
【0054】
ステップ608において、パラメータ、パラメータ頻度、および規則に基づいて、木が作成される。例として、木が図2Aに示されている。具体的には、パラメータノード130が、木を形成する。いくつかの実施形態において、木は、2分木(各ノードにおいて2本の枝に分岐している木)である。例えば、リーフノードではない各パラメータノード130は、2つの子を有してもよい。一実施形態において、パラメータノード130には、1つまたは複数のパラメータが含まれる。一実施形態において、各パラメータノード130は、規則のどのサブセットが、マッチング用にまだ適用可能な候補であるかを決定するアルゴリズム決定に対応する。例えば、図2Aにおける木は、規則A〜Fの場合向けである。パラメータノード130aにおけるアルゴリズム決定が「no」である場合には、規則EおよびFが可能な一致として残る。パラメータノード130aにおけるアルゴリズム決定が「yes」である場合には、規則A、B、CおよびDが可能な一致として残る。
【0055】
一実施形態において、所与のパラメータノード130用の2つの子ノードが、所与のパラメータノード130におけるパラメータが存在するかどうかに基づいて到達される。例えば、「yes」および「no」ブランチが、図2Aの木に出現する。一実施形態において、各パラメータノード130は、他の可能なパラメータを備えた子孫(例えば、子、孫等)ノードを有する。例えば、パラメータノード130aは、パラメータParam5(ノード103eにおける)、ならびに他の経路におけるParam2、Param3およびParam4を備えた子孫ノードを有する。
【0056】
一般に、より頻繁に出現すると予想されるパラメータは、木のルートにより近く出現してもよい。例えば、Param1は、図2Aにおける木のルートに出現する。これは、Param1が他のパラメータより頻繁に出現すると予想されるからであり得る。同様に、Param2は、Param3またはParam4より頻繁に出現すると予想され得る。
【0057】
いくつかの実施形態において、木は、より効率的な構造を作成するために、少なくともある程度までバランスが保たれる。木が完全にバランスを保つことは要求されないことに留意されたい。例えば、図2Aにおける木は、完全にはバランスを保たれていない。なぜなら、リーフパラメータノード130eが、他のリーフパラメータノード130c、130dよりルートパラメータノード130aに近いからである。
【0058】
ステップ610において、各リーフパラメータノード130用の規則が識別される。これには、リーフパラメータノードからルートパラメータノードへの経路において、パラメータの1つまたは複数を含む規則を識別することを含んでもよい。例えば、リーフパラメータノード130dにとって、経路上のパラメータには、Param1、Param2、およびParam4が含まれる。規則は、パラメータの1つまたは複数を含んでもよい。したがって、規則は、これらのパラメータの全てを含むことは要求されない。こうして各リーフパラメータノード130の規則セットが識別される。これが必ずしも図2Aに示す最終セットではないことに留意されたい。
【0059】
ステップ612において、共通パラメータを共有する規則が、木を短縮するために識別される。しかしながら、規則は同一のパラメータを有する必要がないことに留意されたい。例えば、図2Aにおける木を参照すると、規則CおよびDは、共通パラメータParam1、Param2、およびParam3を共有してもよい。しかしながら、規則Cは、Param6、Param7、およびParam8(図2Aの木には示さず)などの追加パラメータを有してもよい。この場合には、木は、Param6、Param7、およびParam8用の追加パラメータノードを有するようには要求されない。もっと正確に言えば、木は、リーフパラメータノード130cで停止することができる。これは、木を短縮し、したがってトランザクションを識別するために木を用いる場合に、より効率的な処理につながる可能性がある。
【0060】
ステップ614において、正規表現の共通サブセットを共有する規則が、互いに関連付けられる。例えば、次の正規表現を有する規則を検討する。
【0061】
www.google.com
【0062】
www.google.1.com
【0063】
maps.google.com
【0064】
規則は、正規表現*.google.*を共有する。この正規表現が、データトラフィックに見つからない場合には、規則のどれも一致しないであろう。したがって、規則は、比較数を最小化するために互いに関連付けてもよい。例えば、規則BとCがこの方法で関連付けられる表記法を木に追加してもよい。したがって、監視ノードが、データトラフィックにおいて正規表現の共通サブセットを探したときに、正規表現の共通サブセットが見つからない場合には、監視ノードは、規則BおよびC用の処理を停止してもよい。
【0065】
ステップ616において、頻度が各規則に割り当てられる。この頻度は、規則が、一致すると予想されるかまたは実際に一致する予想または実際の頻度であってもよい。規則がトランザクションに対応してもよいので、頻度は、トランザクションが一致すると予想されるかまたは実際に一致する予想頻度または実際の頻度であってもよい。図2Aのデータ構造は、規則に割り当てられた例示的な頻度を示す。頻度用の値は、多くの方法で決定してもよい。例えば、頻度データ142が存在しない場合には、頻度値は、任意に割り当てることが可能である。監視ノードからの実際の頻度データ142を用いて、それらの値を洗練してもよい。したがって、監視ノードが、実際の頻度データ142を送信する場合には、そのデータを用いて、頻度値を更新してもよい。ある場合において、頻度値は、ユーザ入力に基づいてもよい。例えば、ユーザは、購入トランザクション用の予想される頻度を入力することが可能である。
【0066】
ステップ618において、規則は、規則の頻度に基づいて順序付けられる。例えば、図2Aを参照すると、リーフパラメータノードに関連する各サブセットにおける規則は、高から低へ順序付けられる。したがって、規則処理は、監視ノードにおいて効率的に実行することが可能である。データ構造が作成または更新された後で、次にデータ構造を監視ノードに提供してもよい。全データ構造を提供することが要求されないことに留意されたい。例えば、図1Bのステップ110を実行する場合には、更新を提供するために必要な部分だけを提供する必要がある。
【0067】
時には、ユーザは、トランザクションを識別するための規則を変更すべきであることを決定してもよい。図7は、ユーザからの入力に基づいてデータ構造を更新するプロセス700の一実施形態の流れ図である。ステップ702において、ユーザは、規則セットを修正する。例えば、ユーザは、ワークステーション195にアクセスし、データベース430に記憶された規則セットの前のバージョンにアクセスし、それを修正する。ユーザは、新しい規則を追加するか、または前の規則を削除してもよい。既存の規則に対して、ユーザは、パラメータを追加または削除してもよい。ユーザはまた、規則が真と評価される際に基礎とする条件を変更してもよい。
【0068】
ステップ704において、EM155は、規則の体系を更新する。図6のプロセスが、新しい規則セットに基づいて規則を更新するために適用してもよい。ステップ706において、更新された規則が、監視ノードに提供される。例えば、エージェント152および/またはトラフィック監視システム180に、規則の体系と同様に、新しい規則、または規則の少なくとも更新された部分が提供される。
【0069】
図1Bのステップ102で論じたように、監視ノードは、クライアント110とアプリケーション151との間の通信を監視してもよい。いくつかの実施形態において、これには、HTTP要求を解析してHTTPパラメータの名前/値ペアを作成することを含んでもよい。例えば、解析できる典型的なHTTPのPOST要求を表1に示す。
【0070】
【表1】

【0071】
上記の要求の解析に由来するHTTPパラメータリストの例を表2に示す。各パラメータには、タイプおよび名前/値ペアが含まれる。
【0072】
【表2】

【0073】
パラメータリストデータは、表1におけるHTTP要求から検索してもよい。特に、パラメータリストクエリーデータは、要求の要求行から検索することができ、クッキーデータは、要求ヘッダから検索することができ、ポストデータは、要求本体から検索することができ、URLデータは、要求ヘッダおよび要求行から検索することができる。HTTPパラメータ用の名前/値ペアを決定した後で、監視ノードは、それらに規則をそれらに適用してトランザクションを識別してもよい。
【0074】
パラメータがHTTPパラメータであることは要求されないことに留意されたい。さらに、規則がデータトラフィックにおけるパラメータに基づくということが絶対的な要件ではないことに留意されたい。一実施形態において、データトラフィック(例えば通信)は、データの「チャンク」に分割される。例えば、HTTP標準などのある標準に従って、データトラフィックのある位置における特定のパラメータを探すのではなく、データトラフィックは、標準におけるあるパラメータに必ずしも対応しないチャンクに切断することが可能である。規則は、やはり、チャンクにおけるパターンと一致するように割り当てることができる。例えば、規則は、チャンク1におけるあるストリング、チャンク2おける別のストリング等を探すことになり得る。この場合には、パラメータおよびパラメータ頻度を監視ノードに提供する代わりに、ストリングおよびストリング頻度を提供することが可能である。ストリングが、どんな特定のパラメータにも必ずしも対応しないので、ストリングは、「任意のストリング」と呼んでもよい。
【0075】
一例として、図2Aの木構造は、パラメータをストリングと取り替えることによって修正することが可能である。図8Aは、パラメータノード130の代わりに、ストリングノード830を有する木の一実施形態を示す。この例において、より高い頻度で出現すると予想されるストリングは、木のより上部で出現することが可能である。したがって、規則は、ストリングに基づいて体系化してもよい。木の体系は、ストリングがデータトラフィックに出現する実際の頻度、および/またはトランザクションが識別される実際の頻度に基づいて修正することが可能である。
【0076】
図8Bは、データ構造を適用してトランザクションを識別する一実施形態の流れ図である。プロセスは、例えば、エージェント152および/またはトラフィック監視システム180によって実行してもよい。プロセスは、図1Bのステップ104の一実施形態である。プロセスフローを論じるときに、図8Aの例示的なデータ構造に言及する。
【0077】
ステップ802において、通信はチャンクに分割される。例えば、トラフィックにおけるある基準ポイント(例えば、パケットのヘッダ)から開始して、データトラフィックは、ある所定サイズのチャンクに分割される。チャンクは、互いに異なるサイズであってもよい。
【0078】
ステップ804において、図8Aのデータ構造は、データトラフィックがチャンクにされたときに、ストリングがデータトラフィックに存在するかどうかに基づいて、ルートストリングノード830aからリーフストリングノード830c、830d、830eの1つへと辿られる。一実施形態において、木は、チャンクを、所与のストリングノード830におけるストリングの1つと比較することによって辿られる。
【0079】
ステップ806において、リーフストリングノードにリンクされた規則が、順番に適用される。これは、規則がパラメータに基づく場合と同様であってもよい。
【0080】
図9は、現在の技術で用いるためのコンピューティングシステムにおける実施形態のブロック図である。コンピューティングシステムは、クライアント装置110、ネットワークサーバ140、アプリケーションサーバ150、企業マネージャ155、トラフィック監視システム180、アプリケーション監視システム190、ワークステーション195、データベース430等のプラットホームとして用いてもよい。
【0081】
コンピュータシステムには、1つまたは複数のプロセッサ550と、プロセッサユニット550による実行のための命令およびデータを部分的に記憶するメインメモリ552とが含まれる。本発明のシステムが、ソフトウェアにおいて全体的または部分的に実行される場合には、メインメモリ552は、動作中に実行可能コードを記憶することができる。また、大容量記憶装置554、周辺装置556、ユーザ入力装置560、出力装置558、携帯記憶媒体ドライブ562、グラフィックスサブシステム564、および出力ディスプレイ566が設けられる。簡単にするために、コンポーネントは、単一バス568を介して接続されているように示されている。しかしながら、コンポーネントは、1つまたは複数のデータ伝送手段を介して接続してもよい。例えば、プロセッサユニット550およびメインメモリ552は、ローカルマイクロプロセッサバスを介して接続してもよく、大容量記憶装置554、周辺装置556、携帯記憶媒体ドライブ562、およびグラフィックスサブシステム564は、1つまたは複数の入力/出力(I/O)バスを介して接続してもよい。大容量記憶装置554は、磁気ディスクドライブまたは光ディスクドライブで実現してもよいが、プロセッサユニット550が使用するためのデータおよび命令を記憶するための不揮発性記憶装置である。一実施形態において、大容量記憶装置554は、メインメモリ552にロードする目的で、本発明を実施するためのシステムソフトウェアを記憶する。
【0082】
携帯記憶媒体ドライブ562は、フロッピー(登録商標)ディスクなどの携帯不揮発性記憶媒体を用いて動作し、コンピュータシステムに対してデータおよびコードを入力および出力する。一実施形態において、本発明を実施するためのシステムソフトウェアは、かかる携帯媒体上に記憶され、携帯記憶媒体ドライブ562を介してコンピュータシステムに入力される。周辺装置556には、入力/出力(I/O)インタフェースなど任意のタイプのコンピュータ支援装置を含んで、追加機能をコンピュータシステムに追加してもよい。例えば、周辺装置556には、コンピュータシステムをネットワーク、モデム、ルータ等に接続するためのネットワークインタフェースを含んでもよい。
【0083】
ユーザ入力装置560は、ユーザインタフェースの一部を提供する。ユーザ入力装置560には、文字数字および他の情報を入力するための文字数字キーパッド、またはマウス、トラックボール、スタイラスもしくはカーソル方向キーなどのポインティングデバイスを含んでもよい。テキストおよびグラフィカル情報を表示するために、コンピュータシステムには、グラフィックスサブシステム564および出力ディスプレイ566が含まれる。出力ディスプレイ566には、陰極線管(CRT)ディスプレイ、液晶ディスプレイ(LCD)または他の適切な表示装置を含んでもよい。グラフィックスサブシステム564は、テキストおよびグラフィカル情報を受信し、出力ディスプレイ566への出力用にこの情報を処理する。さらに、コンピュータシステムには、出力装置558が含まれる。適切な出力装置の例には、スピーカ、プリンタ、ネットワークインタフェース、モニタ等が含まれる。
【0084】
コンピュータシステムに含まれるコンポーネントは、本発明で用いるのに適したコンピュータシステムにおいて典型的に見つかるコンポーネントであり、当該技術分野において周知のコンピュータコンポーネントの広い範疇を表すように意図されている。したがって、コンピュータシステムは、パーソナルコンピュータ、ハンドヘルドコンピューティング装置、電話機、モバイルコンピューティング装置、ワークステーション、サーバ、ミニコンピュータ、メインフレームコンピュータ、または他の任意のコンピューティング装置とすることができる。コンピュータシステムにはまた、異なるバス構成、ネットワーク化されたプラットホーム、マルチプロセッサプラットホーム等を含むことができる。Unix(登録商標)、Linux、Windows(登録商標)、Machitosh OS、Palm OSおよび他の適切なオペレーティングシステムを含む様々なオペレーティングシステムを用いることができる。
【0085】
本明細書で開示する一実施形態には、トランザクションを識別するための規則を更新する方法が含まれる。方法には、次のものを含んでもよい。クライアントと、トランザクションを処理するアプリケーションとの間の通信が、監視される。どのトランザクションがアプリケーションによって処理されるかを識別する規則が、適用される。規則は、規則がどのように体系化されるかに基づいて適用される。通信が解析される。規則の体系は、通信の解析に基づいて更新される。
【0086】
本明細書で開示する一実施形態には、方法を実行する少なくとも1つのプロセッサをプログラムするために、プロセッサ可読コードを自身上に具体化する少なくとも1つのプロセッサ可読記憶装置が含まれる。方法には、クライアントと、パターンを有するトランザクションを処理するアプリケーションとの間の通信を監視することと、どのトランザクションがアプリケーションによって処理されるかを識別するために規則を適用することであって、規則が、トランザクションにおける予想されるパターンに基づいて体系化されることと、規則の適用が、体系に基づいていることと、通信を解析することと、通信の解析に基づいて規則の体系を更新することと、が含まれる。
【0087】
本明細書で開示する一実施形態には、プロセッサ実行可能コードを自身上に記憶した1つまたは複数の記憶装置と、1つまたは複数の記憶装置と通信する1つまたは複数のプロセッサと、を含む監視システムが含まれる。コードは、1つまたは複数のプロセッサ上で実行された場合に、1つまたは複数のプロセッサに、アプリケーションによって処理されるトランザクションを監視させる。トランザクションには、パターンが含まれる。コードは、どのトランザクションがアプリケーションによって処理されるかを識別するために、1つまたは複数のプロセッサに規則を適用させる。規則は、パターンがトランザクションに出現すると予想される頻度に基づき、かつトランザクションのそれぞれがアプリケーションによって処理されると予想される頻度に基づいて体系化される。コードは、1つまたは複数のプロセッサに、規則の体系化に基づいて規則を適用させる。コードは、トランザクションにおけるパターンの実際の頻度がパラメータの予想される頻度から逸脱した場合、またはトランザクションのいくつかにおける実際の頻度がトランザクションのいくつかにおける予想される頻度から逸脱した場合を、1つまたは複数のプロセッサに決定させる。コードは、1つまたは複数のプロセッサに、パターンの実際の頻度またはトランザクションの実際の頻度に基づいて規則の体系を更新させる。
【0088】
本明細書で開示する一実施形態には、トランザクションを識別するためのデータ構造を更新する方法が含まれ、この方法には、次のものが含まれる。データ構造の第1のバージョンが、トランザクションを処理するアプリケーションを監視する複数のエージェントに提供される。トランザクションは、複数のパラメータのうちの1つまたは複数のパラメータを有する。データ構造は、複数のパラメータに基づいて体系化され、かつ複数のパラメータに基づいてトランザクションを識別するための規則を含む。アプリケーションによって処理されるトランザクションは、データ構造の体系に基づいて識別される。頻度データが、エージェントによって収集される。頻度データは、トランザクションのそれぞれが識別される頻度、およびパラメータのそれぞれがトランザクションに出現する頻度を示す。頻度データは、マネージャノードに提供される。データ構造の体系は、頻度データに基づいて更新される。更新されたデータ構造は、複数のエージェントに提供される。
【0089】
本発明の前述の詳細な説明は、例示および説明のために提示された。それは、網羅的であるようにも、開示された形態に本発明を厳密に限定するようにも意図されていない。上記の教示に照らして多くの修正および変更が可能である。説明した実施形態は、本発明の原理およびその実際的な適用を最も良く説明するために選択され、それによって、他の当業者が、様々な実施形態において、考えられる特定の使用法に適した様々な修正と共に本発明を最も良く利用できるようにする。本発明の範囲は、本明細書に添付された特許請求の範囲によって定義されることが意図されている。
【符号の説明】
【0090】
110 クライアント装置
120 ネットワーク
130a ルートパラメータノード
130b パラメータノード
130c リーフパラメータノード
130d リーフパラメータノード
130e リーフパラメータノード
132a 規則ノード
132b 規則ノード
132c 規則ノード
140 ネットワークサーバ
141 規則
142 頻度データ
143 アプリケーション実行時間データ
150 アプリケーションサーバ
151 アプリケーション
152 エージェント
153 プローブ
154 プローブ
155 企業マネージャ
180 トラフィック監視システム
190 アプリケーション監視システム
195 ワークステーション
430 データベース
550 プロセッサ
552 メインメモリ
554 大容量記憶装置
556 周辺装置
558 出力装置
560 入力装置
562 携帯記憶媒体ドライブ
564 グラフィックスサブシステム
566 出力ディスプレイ
568 単一バス
830a ルートストリングノード
830c リーフストリングノード
830d リーフストリングノード
830e リーフストリングノード

【特許請求の範囲】
【請求項1】
トランザクションを識別するための規則を更新する方法であって、
クライアントと、トランザクションを処理するアプリケーションとの間の通信を監視すること(102)と、
どのトランザクションが前記アプリケーションによって処理されるかを識別するために規則を適用することであって、前記規則が体系を有し、前記規則の適用が前記体系に基づいていること(104)と、
前記通信を解析すること(106)と、
前記通信の前記解析に基づいて前記規則の前記体系を更新すること(108)と、
を含む方法。
【請求項2】
どのトランザクションが処理されるかを識別するための規則の前記適用が、前記トランザクションに関連するパラメータに基づいて体系化されているデータ構造を辿ることを含む、請求項1に記載の方法。
【請求項3】
前記通信の前記解析が、トランザクションのそれぞれが識別される頻度および前記パラメータのそれぞれが前記トランザクションに出現する頻度を含む頻度データを決定することを含み、前記規則の前記体系の前記更新が、前記トランザクションのそれぞれが識別される前記頻度および前記パラメータのそれぞれが前記トランザクションに出現する前記頻度に基づいて前記データ構造を更新することを含む、請求項2に記載の方法。
【請求項4】
前記データ構造がルートを有する木を含み、前記データ構造の前記更新が、他のパラメータより大きな頻度を有するパラメータを前記木の前記ルートにより近く配置することを含み、前記規則の1つまたは複数からのセットが、前記木の各リーフノードに関連付けられる、請求項3に記載の方法。
【請求項5】
前記データ構造の前記更新が、前記トランザクションが識別される前記頻度に基づいて、前記木の各リーフノードに関連する前記規則のセットを順序付けることを含む、請求項4に記載の方法。
【請求項6】
前記トランザクションに関連するパラメータに基づいて体系化されている初期データ構造を作成することであって、前記初期データ構造が前記規則を含み、前記初期データ構造が、前記パラメータのそれぞれの予想される頻度および前記トランザクションのそれぞれの予想される頻度を含む初期頻度データを含むことと、
前記アプリケーションを監視するエージェントに前記初期データ構造を配置することと、
をさらに含む、請求項1〜5のいずれか一項に記載の方法。
【請求項7】
前記エージェントが、前記トランザクションにおける前記パラメータの実際の頻度が前記パラメータのそれぞれの前記初期頻度から逸脱するかどうかを決定し、かつ前記パラメータの前記実際の頻度が前記初期頻度から逸脱する場合にはマネージャノードに通知する、請求項6に記載の方法。
【請求項8】
前記エージェントが、前記トランザクションのいくつかにおける実際の頻度が前記トランザクションのいくつかにおける予想される頻度から逸脱するかどうかを決定し、かつ前記トランザクションのいずれかにおける前記実際の頻度が前記予想される頻度から逸脱する場合にはマネージャノードに通知する、請求項6または7に記載の方法。
【請求項9】
どのトランザクションが処理されるかを識別するための規則の前記適用が、
前記通信をチャンクに分割することであって、前記規則がストリングに基づいて体系化されることと、
前記トランザクションを識別するために、前記ストリングを前記チャンクと比較することと、
を含む、請求項1〜8のいずれか一項に記載の方法。
【請求項10】
記憶されているコードを実行可能なプロセッサを備えている1つまたは複数の記憶装置(552、554)と、
前記1つまたは複数の記憶装置と通信する1つまたは複数のプロセッサ(550)であって、前記コードが前記1つまたは複数のプロセッサ上で実行される場合に、前記1つまたは複数のプロセッサに、アプリケーションによって処理されるトランザクションを監視させ、前記トランザクションがパターンを含み、前記コードが、どのトランザクションが前記アプリケーションによって処理されるかを識別するために、前記1つまたは複数のプロセッサに規則を適用させ、前記規則が、前記パターンが前記トランザクションに出現すると予想される頻度に基づいて、かつ前記トランザクションのそれぞれが前記アプリケーションによって処理されると予想される頻度に基づいて体系化されており、前記コードが、前記1つまたは複数のプロセッサに、前記規則の前記体系に基づいて前記規則を適用させ、前記コードが、前記トランザクションにおける前記パターンの実際の頻度が前記パターンの前記予想される頻度から逸脱した場合、または前記トランザクションのいくつかにおける実際の頻度が前記トランザクションのいくつかにおける前記予想される頻度から逸脱した場合を、前記1つまたは複数のプロセッサに決定させ、前記コードが、前記パラメータの前記実際の頻度または前記トランザクションの前記実際の頻度に基づいて、前記1つまたは複数のプロセッサに前記規則の前記体系を更新させる、1つまたは複数のプロセッサ(550)と、
を含む監視システム。
【請求項11】
前記規則が、前記パターンが前記トランザクションに出現すると予想される頻度に基づいて体系化されている木構造を含み、より大きな頻度を有すると予想されるパターンが、前記木のルートにより近く出現し、より低い頻度を有すると予想されるパラメータが、前記木のリーフにより近く出現する、請求項10に記載の監視システム。
【請求項12】
前記規則が、複数の規則セットに分割され、前記規則のそれぞれが、前記木の前記リーフの1つに関連付けられる、請求項11に記載の監視システム。
【請求項13】
どのトランザクションが前記アプリケーションによって処理されるかを識別するために、前記1つまたは複数のプロセッサに前記規則を適用させる命令が、前記1つまたは複数のプロセッサに、前記トランザクションの第1のトランザクションにおいて1つまたは複数のパラメータを識別させ、かつ前記識別されたトランザクションに基づいて前記ルートから前記リーフの1つまで前記データ構造を辿らせる前記命令を含む、請求項12に記載の監視システム。
【請求項14】
前記パターンがHTTPパラメータに基づいている、請求項10〜13のいずれか一項に記載の監視システム。
【請求項15】
前記パターンが任意のストリングに基づいている、請求項10〜13のいずれか一項に記載の監視システム。

【図1A】
image rotate

【図1B】
image rotate

【図2A】
image rotate

【図2B】
image rotate

【図3A】
image rotate

【図3B】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8A】
image rotate

【図8B】
image rotate

【図9】
image rotate


【公開番号】特開2011−243192(P2011−243192A)
【公開日】平成23年12月1日(2011.12.1)
【国際特許分類】
【外国語出願】
【出願番号】特願2011−90308(P2011−90308)
【出願日】平成23年4月14日(2011.4.14)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.Linux
【出願人】(501216023)コンピューター アソシエイツ シンク インク (11)
【氏名又は名称原語表記】Computer Associates Think, Inc.
【Fターム(参考)】