JP2013050950A - 分散環境におけるトランザクション別に区別されたメトリックの効率的収集 - Google Patents

分散環境におけるトランザクション別に区別されたメトリックの効率的収集 Download PDF

Info

Publication number
JP2013050950A
JP2013050950A JP2012180251A JP2012180251A JP2013050950A JP 2013050950 A JP2013050950 A JP 2013050950A JP 2012180251 A JP2012180251 A JP 2012180251A JP 2012180251 A JP2012180251 A JP 2012180251A JP 2013050950 A JP2013050950 A JP 2013050950A
Authority
JP
Japan
Prior art keywords
transaction
branch
component
agent
node
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2012180251A
Other languages
English (en)
Other versions
JP5886712B2 (ja
JP2013050950A5 (ja
Inventor
Gagliardi Marco
ガグリアルディ,マルコ
Umansky Vladimir
ウマンスキー,ウラジミール
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
CA Inc
Original Assignee
CA Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by CA Inc filed Critical CA Inc
Publication of JP2013050950A publication Critical patent/JP2013050950A/ja
Publication of JP2013050950A5 publication Critical patent/JP2013050950A5/ja
Application granted granted Critical
Publication of JP5886712B2 publication Critical patent/JP5886712B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • G06F11/3419Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment by assessing time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • G06F11/3495Performance evaluation by tracing or monitoring for systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs
    • G06F11/3612Software analysis for verifying properties of programs by runtime analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/81Threshold
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/865Monitoring of software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/87Monitoring of transactions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/875Monitoring of systems including the internet

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Software Systems (AREA)
  • Debugging And Monitoring (AREA)

Abstract

【課題】分散環境において、トランザクション別のメトリックを効率的に収集して、ソフトウェアを監視する。
【解決手段】コンポーネントの開始及び停止ポイントなどによって、少なくとも1つのアプリケーションの呼び出されたコンポーネントのシーケンスを表すブランチを有する、マネージャのツリーデータ構造を保守し(1000)、動的データ及び一致するブランチの識別子の報告をエージェントから受信し(1002)、識別子に基づいて、呼び出されたコンポーネントのシーケンスを識別し(1004)、識別子に基づいて、トランザクションの呼び出されたコンポーネントに関連付けられた静的データを調べ(1006)、トランザクションの呼び出されたコンポーネントのシーケンスのトランザクショントレースを有するユーザインタフェースを提供し(1008)、静的及び/又は動的データに基づいてトランザクショントレースに注記を加える(1010)。
【選択図】図10A

Description

コンピューティング環境においてソフトウェアを監視する技術を提供する。
インターネットの存在が増長するにつれて、イントラネット、エクストラネットなどの他のコンピュータネットワークと同様に、電子商取引、教育、他の分野において多くの新しいアプリケーションをもたらした。組織は、ビジネスやその他目的を行うのにそのようなアプリケーションへの依存を深めており、期待通りの成果を確実に得るために相当の資源を投入している。このような状況のもと、様々なアプリケーションの管理技術が開発されている。
1つのアプローチとして、アプリケーションで呼び出される個々のソフトウェアコンポーネントに関するアプリケーションの実行データを集めることにより、アプリケーションの基礎構造を監視することが挙げられる。このアプローチでは、監視されるシステムに元来、存在するエージェントを用いることができる。例えば、ソフトウェアによる計測を用いることによって、呼び出される個々のコンポーネントを特定するためや、個々のコンポーネントの実行時間のような実行データを得るために、スレッド又はプロセスがトレースされ得る。コンピュータプログラムが実行するステップの詳細なレコード、又はトレースを得ることをトレーシングという。トレースのタイプの1つにスタックトレースがある。トレースはデバッグにおける補助の役目を果たし得る。
典型的には、静的及び動的なデータを含むトランザクショントレースデータは、エージェントからマネージャへと伝えられる。しかしながら、既存のアプローチは効率的ではなく、相当なオーバヘッドコストが嵩む。
本発明は、上記課題及び他の課題を解決するモニタリングソフトウエアの技術を提供する。
一実施形態において、少なくとも1つのアプリケーションを監視するための方法を実行するため少なくとも1つのプロセッサをプログラミングするために、コンピュータで読み取り可能なソフトウェアを有するプロセッサで読み取り可能な1以上の有体の記憶装置が具現化されて提供される。その方法は:(a)複数のブランチを有するツリーデータ構造を提供することを含み、その複数のブランチのそれぞれは、少なくとも1つのアプリケーションの複数のトランザクションのそれぞれを表すとともに、各トランザクションの複数のコンポーネントの開始と終了ポイントを表すノード群を有し、その複数のブランチのうちの1つのブランチは、複数のトランザクションのうちの1つのトランザクションを表し、第1収集部にリンクされて、1つのコンポーネントに対する少なくとも1つのノードを有し、その1つのブランチ内の1つのコンポーネントに対するその少なくとも1つのノードは、その1つのトランザクション内のその1つのコンポーネントの1つの呼び出しの開始及び終了の少なくとも1つを表す。
その方法は、さらに、(b)呼び出された1つのシーケンスを検知するために少なくとも1つのアプリケーションをトレースすること、そのトレースは、1つのトランザクション内の1つのコンポーネントの1つの呼び出しの開始と終了の少なくとも1つを検出することを含む、(c)トレースすることが1つのトランザクション内で、1つのコンポーネントの1つの呼び出しの開始及び終了の少なくとも1つを検出するとき、第1収集部のコンテキスト内の1つのコンポーネントの少なくとも1つのメトリックを収集するために第1収集部を使用すること、(d)呼び出されたコンポーネントの、1つのシーケンスが1つのブランチと一致していることを判定するために、トレースの結果をツリーデータ構造と比較すること、及び、(e)呼び出されたコンポーネントの、1つのシーケンスが1つのブランチと一致していることを判定することに応答して、マネージャに、第1収集部のコンテキスト内の1つのコンポーネントのための少なくとも1つのメトリックを報告すること、を含む。
別の実施形態において、少なくとも1つのアプリケーションを管理するための方法を実行するため少なくとも1つのプロセッサをプログラミングするために、コンピュータで読み取り可能なソフトウェアを有するプロセッサで読み取り可能な1以上の有体の記憶装置が具現化されて提供される。その方法は、1以上の報告が、複数のトランザクションの少なくとも1つのトランザクション及び関連付けられた第1収集部の識別のための、少なくとも1つのメトリック、並びに複数のトランザクションの少なくとも別のトランザクション及び第2収集部の関連付けられた識別のための、少なくとも1つのメトリックを含む場合、少なくとも1つのアプリケーションにおける複すのトランザクションをトレースする少なくとも1つのエージェントから1以上の報告を受信することを含み、第1収集部は、少なくとも1つのトランザクション内のコンポーネント呼び出しに応答した少なくとも1つのトランザクションのための少なくとも1つのメトリックを収集するために使用され、及び第2収集部は、少なくとも別のトランザクション内のコンポーネント呼び出しに応答した少なくとも別のトランザクションのための少なくとも1つのメトリックを収集するために使用される。
この方法は、1以上の報告に基づくユーザインタフェースを提供することをさらに含み、そのユーザインタフェースは、少なくとも1つのトランザクションを表す少なくとも第1辺部分及び少なくとも別のトランザクションを表す第2辺部分を有する辺を含む辺によって接続される頂点を有する有効グラフを有し、その第1辺部分は第2辺部分から視覚的に区別される。
別の実施形態において、少なくとも1つのアプリケーションを監視するための方法を実行するため少なくとも1つのプロセッサをプログラミングするために、コンピュータで読み取り可能なソフトウェアを有するプロセッサで読み取り可能な1以上の有体の記憶装置が具現化されて提供される。その方法は:(a)少なくとも1つのアプリケーションの複数のトランザクションをトレースすること、トレースすることは、少なくとも1つのトランザクション内のコンポーネントの1つのインスタンス及び少なくとも別のトランザクション内のコンポーネントの別のインスタンスを検出すること、(b)コンポーネントの1つのインスタンスは、少なくとも1つのトランザクションのコンテキスト内で検出され、それとは別に、コンポーネントの別のインスタンスは、少なくとも別のトランザクションのコンテキスト内で検出されたこと、を判定すること、(c)コンポーネントの1つのインスタンスが少なくとも1つのトランザクションのコンテキスト内で検出されたことを判定することに応答して、マネージャに、少なくとも1つのトランザクションのコンテキスト内のコンポーネントの1つのインスタンスの少なくとも1つのメトリックを報告すること、及び(d)1つのコンポーネントの別のインスタンスが少なくとも別のトランザクションのコンテキスト内で検出されたことを判定することに応答して、少なくとも1つのトランザクションのコンテキストが少なくとも別のトランザクションのコンテキストから区別される場合、マネージャに、少なくとも別のトランザクションのコンテキスト内のコンポーネントの別のインスタンスの少なくとも1つのメトリックを報告すること、を含む。
対応するプロセッサに実装された方法は、プロセッサで読み取り可能な1以上の有体の記憶装置のコンピュータに実装された手順を実行することを提供する。
対応するシステムは、プロセッサで読み取り可能な1以上の有体の記憶装置、及び、プロセッサで読み取り可能な1以上の有体の記憶装置を読み取るための1以上のプロセッサ、を含むものを提供する。
対応するコンピュータ又はプロセッサ読み取り可能な有体の記憶装置は、実行時に、本明細書で提供される方法手順を実行する命令がエンコードされたプロセッサで読み取り可能なものが提供される。
アプリケーションの複数のインスタンスが異なるサーバ上で実行し、サーバのエージェントがマネージャに報告するシステムの例を示す。 アプリケーションの複数のインスタンスが異なるサーバ上で実行し、サーバのエージェントが中間収集手段(intermediate collectors)を経由してマネージャに報告するシステムの例を示す。 トランザクショントレースを開始するためのプロセス[処理]の一実施形態を説明するフローチャートである。 トランザクショントレースを終了するためのプロセス[処理]の一実施形態を説明するフローチャートである。 図1A又は1Bのネットワークのコンピューティングデバイスを示す。 1以上のアプリケーションの操作を説明するのに使用される階層を示す。 図4の報告及び見積の業務トランザクション内で呼び出されるコンポーネントのシーケンスの例における依存関係を示す。 図5Aの依存関係の代わりとなる表示で、よりコンパクトなものを示す。 図6(A)〜図6(C)は、図5Aのトランザクション内で呼び出されたコンポーネントの異なるシーケンスに対するトランザクショントレースを示す。 図5Aのトランザクション内で呼び出されたコンポーネントの異なるシーケンスに対するトランザクショントレースを示す。 図5Aのトランザクション内で呼び出されたコンポーネントの異なるシーケンスに対するトランザクショントレースを示す。 図5Aのトランザクション内で呼び出されたコンポーネントの異なるシーケンスに対するトランザクショントレースを示す。 図5Aのトランザクション内で呼び出されたコンポーネントの異なるシーケンスに対するトランザクショントレースを示す。 図5Aのトランザクション内で呼び出されたコンポーネントの異なるシーケンスに対するトランザクショントレースを示す。 図5Aのトランザクション内で呼び出されたコンポーネントの異なるシーケンスに対するトランザクショントレースを示す。 図6Aから6Iのトランザクショントレースに基づき提供されるエージェント1及びエージェント2のツリーデータ構造の例を示す。 図7A1のツリーデータ構造の代替的及び等価的な表示を示す。 新しいブランチの形式をした図7A1のエージェント1のツリーデータ構造への更新を示す。 図7A1の、エージェント1及びエージェント2のツリーデータ構造を結合した、マネージャのツリーデータ構造を示す。 図7A1のエージェント1のツリーデータ構造における最終ノードと図7C1のマネージャのツリーデータ構造の最終ノードの間の対応を示す。 図7Bにおけるエージェント1のツリーデータ構造への更新と一致する、新しいブランチの形式をした図7C1のマネージャのツリーデータ構造への更新を示す。 図7A1のツリーデータ構造におけるサブシステム1のためのブランチ及びコンポーネント呼び出しのレコードを示す。 図7A1のツリーデータ構造におけるサブシステム2のためのブランチ及びコンポーネント呼び出しのレコードを示す。 図7A1のツリーデータ構造におけるマネージャのためのブランチ及びコンポーネント呼び出しのレコードを示す。 図7A1のツリーデータ構造におけるサブシステム1の異なるノード/コンポーネントのための静的データへの参照のレコードを示す。 図7A1のツリーデータ構造におけるサブシステム2の異なるノード/コンポーネントのための静的データへの参照のレコードを示す。 図7Bにおけるエージェント1−新しい−ブランチのための図8B1のレコードへの更新を示す。 図7C1のツリーデータ構造におけるマネージャの異なるノード/コンポーネントのための静的データへの参照のレコードを示す。 図7Dにおけるマネージャ−新しい−ブランチ7のための図8B4のレコードへの更新を示す。 図7A1のツリーデータ構造のサブシステム1の異なるノード/コンポーネントのためのトレース詳細からの動的データのレコードを示す。 様々なコンポーネントに関連付けられた静的データのレコードを示す。 少なくとも1つのアプリケーションのために図7A1にあるようなエージェントがツリーデータ構造を保守するプロセス[処理]の例を示す。 エージェントから受信するように、例えば図7A1にあるように、動的データの報告及びツリーデータ構造のブランチの識別子に基づいて、マネージャがユーザインタフェースを提供するプロセス[処理]の例を示す。 1以上のエージェントから受信した更新に基づいて、図7A1から7C1にあるように、マネージャがツリーデータ構造を更新するプロセス[処理]の例を示す。 図11(A)、(B)は、静的及び動的データを用いて注記を加えた、図6Aのトランザクショントレースを示す。 それぞれのトランザクションのそれぞれのブランチにおける1つのコンポーネントのためにノードにリンクされた収集部を有する図7A1のツリーデータ構造を示す。 異なるそれぞれのトランザクションの異なるそれぞれのブランチにおける同じコンポーネントの複数の発生のためにノードにリンクされた収集部を有する図7A1のツリーデータ構造を示す。 それぞれのトランザクションの、同じそれぞれのブランチにおける同じコンポーネントの複数の発生のためにノードにリンクされた収集部を有する図7A1のツリーデータ構造を示す。 図12Aのツリーデータ構造のための収集部1200及び1202への参照のレコードを示す。 図12Bのツリーデータ構造のための収集部1204への参照のレコードを示す。 図12Cのツリーデータ構造のための収集部1206への参照のレコードを示す。 図13Aのツリーデータ構造に基づくユーザインタフェースの例を示す。 図13Bのツリーデータ構造に基づくユーザインタフェースの例を示す。 図13Cのツリーデータ構造に基づくユーザインタフェースの例を示す。 図5B及び図14Aに一致するユーザインタフェースの例を示す。 図15Aに代わるユーザインタフェースの例を示す。 ユーザインタフェースの別の例を示す。 少なくとも1つのアプリケーションのために、エージェントがトランザクション別のメトリックを取得するプロセス[処理]の例を示す。 図16Aのプロセス[処理]に対応して、エージェントからのトランザクション別のメトリックの報告に基づいてマネージャがユーザインタフェースを提供するプロセス[処理]の例を示す。
本発明は、エージェントからマネージャへ、静的及び動的なデータを含むトランザクショントレースデータを効率的に伝える監視ソフトに関する技術を提供する。効率を改善してオーバーヘッドコストを削減するため、エージェント及びマネージャによって保守管理されるツリーデータ構造は、ソフトウェアの呼び出されたコンポーネントのシーケンスを記述する。各コンポーネントの開始と終了は、ツリーデータ構造のブランチ内のノードによって表される。トランザクションを識別するため、エージェントは、例えばブランチの最終ノードの識別子など、ブランチ固有の識別子を伝える。これにより、呼び出されたコンポーネントのシーケンスがエージェントからマネージャへより効率的に報告される。さらに、静的データは、1以上のノード又はコンポーネントにインデックス付けされ、及び、エージェント及び/又はマネージャによってアクセスされる。静的データは、通常、ソフトウェアに付与されたバージョンのために固定され、及び固定された、又は実行依存しないデータとしても考えられる。静的データは、例えば、コンポーネントに関連付けられたクラス名又はメソッド名、メソッド呼び出しのシーケンス、トレースされたクラスファイルが展開されたアーカイブファイル(JAVA(登録商標)アーカイブファイル又はJARファイル又はウェブアーカイブファイル又は.WARファイルなど)の名称、テキスト文字列、コンポーネントの型(例えば、サーブレット、EJB)、サーブレット又はソケットのためのポート番号、URL、ホスト名、及びローカル又はリモートインタフェース名を含んでよい。これらは、ソフトウェアのトレースから入手可能である全種類の情報である。静的データのインデックス付けは、エージェントからマネージャへ繰り返し伝える必要性、及びエージェント及び/又はマネージャが静的データを繰り返し取得する必要性を回避する。
動的データはトレースから取得される。動的データは、コンポーネントの開始及び終了時刻、及びパラメータ値が監視されたメソッドに渡された、又は監視されたメソッドによって渡されたパラメータ値などの他の動的データを含む。動的データは、また1以上のノード又はコンポーネントにインデックス付けられる。動的データは、コンポーネントの開始及び/又は終了ノードにインデックス付けられる。このインデックス付けを介して、動的データは、エージェントからマネージャに効率的に報告される。
トランザクションがトレースされると、エージェントは、ツリーデータ構造内のブランチに一致するものを特定する。もし一致するものがなければ、エージェントは、ツリーデータ構造を更新し、マネージャに更新を報告する。その結果、エージェント及びマネージャは、ツリーデータ構造の同期したバージョンを保守し得る。さらに、マネージャは、ツリーデータ構造の異なる部分が異なるエージェントに関連付けられている場合、複数のエージェントからの報告に基づいてツリーデータ構造を保守管理する。エージェントが同じソフトウェアの異なるインスタンスを監視するとき、マネージャは、また1つのエージェントから別のエージェントへ受信される更新情報を渡す。このように、エージェントのツリーデータ構造が同期されるように新しいトランザクションがエージェント間で迅速に伝達する。
図1Aは、アプリケーションの複数のインスタンスが異なるサーバ上で実行し、サーバのエージェントがマネージャに報告するシステム100の例を示す。例示の管理対象のコンピューティングデバイス103、105及び109は、アプリケーションサーバ又は必要な機能を実現するためのコードを実行するプロセッサを有するコンピューティングデバイスの他の種類を含む。管理対象のコンピューティングデバイスは、互いに離れて位置することができ、又は同じ場所に位置することもできる。管理対象のコンピューティングデバイスは、この例ではネットワーク107を介してマネージャコンピュータ111と通信する。マネージャコンピュータ111は、管理対象のコンピューティングデバイスにローカル、又は管理対象のコンピューティングデバイスからリモートである。管理対象のコンピューティングデバイス103及び105は、またネットワーク102を介して、例示のウェブブラウザ101などのクライアントのコンピューティングデバイスと通信する。ウェブブラウザ101は、例えば、インターネットサービスプロバイダを介してネットワーク102にアクセスする。さらに、一例として、管理対象のコンピューティングデバイス103は、ウェブブラウザからのリクエストに応答するために必要な情報を取得するため、例えばウェブサービス呼び出し側のEJBクライアントを経由して管理対象のコンピューティングデバイス109を呼び出す。管理対象のコンピューティングデバイス103は、ウェブブラウザからのリクエストに応答するために必要な情報を取得するため、例えばメインフレーム、データベース又は他の未計測のコンピューティングデバイスなどのバックエンドシステム108もまた呼び出す。性能メトリックの全範囲は、計測の使用により管理対象のコンピューティングデバイスから取得される一方で、限定された情報は、管理対象のコンピューティングデバイスから呼び出して使用されるメソッドから、未計測のサブシステムに着目して得られる。管理対象のコンピューティングデバイスは、フロントエンドのサブシステムであると考えられる。ネットワーク102及び107は、同じ、重複した、又は、異なるものであると考えられ、例えば、インターネット、他の広域ネットワーク及び/又はローカルエリアネットワークを含む。点線は、通信経路を示す。
例えば、ウェブベースの電子商取引アプリケーションなどの企業のアプリケーションを実行している会社は、負荷分散のために1つの場所で複数のアプリケーションサーバを使用する。例えば、ウェブブラウザ101からのようなユーザからのリクエストは、ネットワーク102を介して受信され、任意の管理対象のコンピューティングデバイス103及び105に送られる。管理対象のコンピューティングデバイス103、105及び109上で実行するエージェントソフトウェアは、エージェントA1(104)、エージェントA2(106)及びエージェントA3(110)によってそれぞれ表され、それぞれの管理対象のコンピューティングデバイス上で実行されている、アプリケーション、ミドルウェア又はその他のソフトウェアから、情報を収集する。例えば、そのような情報は、計測を用いることによって得ることができ、その一例はバイトコードの計測である。しかしながら、集められたデータは他の方法でも得ることができる。エージェントは、監視するコンピューティングデバイスに元来存在してデータの取得ポイントを提供する。エージェントは、マネージャ124と通信してデータをまとめ最適化する。1つの実施形態では、管理対象のコンピューティングデバイス103、105において同じアプリケーションの異なる複数のインスタンスが実行され、管理対象のコンピューティングデバイス109において別のアプリケーションが実行される。
マネージャ111は、エージェントから受信したデータに基づく情報を表示するため、例えばモニタなどのユーザインタフェース113と通信するワークステーションのような分離したコンピューティングデバイス上に提供され得る。マネージャは、またエージェントから受信したデータを格納するためデータベース112にアクセスする。例えば、大きな組織は、セントラルネットワークオペレーションセンタを運用する。そこでは、1以上のマネージャが、地理的に異なる場所に分散している複数のエージェントからデータを取得する。説明すると、ウェブベースの電子商取引企業では、顧客の注文を受ける地理的に異なる場所にあるサーバからエージェントのデータを取得することがある。支払いを処理するサーバ、倉庫で在庫を調べたり、受注を受けたりするサーバなどである。マネージャ111及びユーザインタフェースディスプレィ113は、企業の本社の場所で提供され得る。必ずしも、ウェブベース又は小売、若しくはその他の販売に関する必要はなく、他のアプリケーションにおいて同様にシステムを管理するためにエージェントとマネージャを利用する。例えば、銀行では、小切手の処理やクレジットの口座用にアプリケーションを使用することがある。また、上述した複数コンピュータのデバイスアレンジに加えて、1以上のエージェントによって単一のコンピュータデバイスが同様に監視されることがある。
監視を実行するソフトウェアを計測するのに、様々なアプローチが知られている。例えば、最初に述べたように、トレーシングはソフトウェアの実行を追跡するために用いることができる。トレーシングの例が、”Transaction Tracer”と題する米国特許第7,870,431号(2011年1月11日発行)に記載されている。その内容は参照により本明細書に組み込まれる。その中で述べられているアプローチにおいては、監視すべきアプリケーションのオブジェクトコード又はバイトコードが計測され、例えばプローブにより変更される。アプリケーションのジョブ又は他のロジックを変更することなくアプリケーションについての特定の情報をプローブが測定する。一旦、プローブがアプリケーションのバイトコードにインストールされると、管理されたアプリケーションと称され、また、そのアプリケーションが実行されるコンピューティングデバイスは、管理されたコンピューティングデバイスと称される。エージェントソフトウェアは、プローブからの情報を受信し、その情報を、例えばマネージャ111において、別のプロセスに伝達することがある。また、情報が異常状況を示すか否かを判定するなど、情報をローカルで処理する。エージェントは、このようにプローブから受信した情報を収集し要約する。指示ファイルによって定義されるように、プローブは、情報を収集する。例えば、プローブからの情報は、トランザクション又は他の実行フローの開始や停止の回数、又はトランザクション/実行フロー内の個々のコンポーネントの開始や停止の回数を示す場合がある。この情報は、それが範囲内にあるかどうかを判定するために予め決められた基準と比較される。もし情報が範囲内にない場合には、エージェントは適切なトラブルシューティングが実行できるようにこの事実をマネージャに報告する。エージェントは、関連付けられているローカルの管理対象のコンピューティングデバイス上でソフトウェアが実行中であることを通常認識している。
プローブは、CORBAメソッドタイマ、リモートメソッドインボケーション(RMI)メソッドタイマ、スレッドカウンタ、ネットワークバンド幅、JDBC更新及びクエリタイマ、サーブレットタイマ、Java(登録商標)サーバページズ(JSP)タイマ、システムログ、ファイルシステム入出力バンド幅メータ、使用可能及び使用済メモリ、並びにEBJ(エンタープライズJava(登録商標)ビーンズ)タイマを含むメトリックの標準セットを報告する。メトリックは、特定のアプリケーションのアクティビティの計測値である。
エージェントは、アプリケーションによってアクセスされるリソースを識別するトランザクションに関する情報を報告する。1つのアプローチでは、トランザクションについて報告する場合における「呼び出された」という語はリソースを指す。このリソースは、消費者が親のコンポーネントであるところのリソース(又はサブリソース)である。例えば、トランザクションで呼び出される最初のコンポーネントがサーブレットAであると仮定する。消費者のサーブレットA(下記参照)の下には、EJBと称されるサブリソースがある。消費者とリソースは、ツリーのような形でエージェントよって報告される。トランザクションのデータは、またツリーに従って格納される。例えば、もしサーブレット(例えばサーブレットA)が、ネットワークのソケット(例えば、ソケットC)の消費者であり、かつEJB(例えば、EJB B)の消費者でもあるとすれば、次にはJDBC(例えば、JDBC D)の消費者であり、ツリーは以下のように見える。
Servlet A (サーブレットA)
Data for Servlet A (サーブレットAのデータ)
Called EJB B (呼び出されたEJB B)
Data for EJB B (EJB Bのデータ)
Called JDBC D (呼び出されたJDBC D)
Data for JDBC D (JDBC Dのデータ)
Called Socket C (呼び出されたソケットC)
Data for Socket C (ソケットCのデータ)
一実施形態では、上記ツリーは、ブレイムスタックと称されるスタックにエージェントによって格納される。トランザクションが開始すると、トランザクションはスタックへプッシュされる。トランザクションが完了すると、トランザクションはスタックからポップされる。一実施形態では、スタック上の各トランザクションは、次に続く情報、トランザクションの型、トランザクションのためにシステムで使用される名称、パラメータのハッシュマップ又は辞書、トランザクションがスタックへプッシュされたときのタイムスタンプ及びサブエレメント、が格納されている。サブエレメントは、注目すべきトランザクション内から開始されている他のコンポーネント(例えば、メソッド、プロセス、プロシージャ、関数、スレッド、命令セットなど)のためのブレイムスタックのエントリである。上記の例のようにツリーを使用すると、サーブレットAのためのブレイムスタックのエントリは2つのサブエレメントを有する。第1サブエレメントは、EJB Bへのエントリで、第2サブエレメントは、ソケットスペースCへのエントリである。サブエレメントは特定のトランザクションのためのエントリの一部であるにもかかわらず、サブエレメントはまた独自のブレイムスタックのエントリを有する。トランザクション/ブランチへのエントリポイントの例は、URLである。上記のツリーに示されるように、EJB BはサーブレットAのサブエレメントであり、また独自のエントリを有する。トランザクションに対する一番上(最初)のエントリ(例えばサーブレットA)は、ルートコンポーネントと称される。スタック上の各エントリはオブジェクトである。
図1Bは、アプリケーションの複数のインスタンスが異なるサーバ上で実行し、サーバのエージェントが中間マネージャを経由してマネージャに報告するシステムの例を示す。この例では、付加的な管理対象のコンピューティングデバイス116及び118がエージェントA4 117及びエージェントA5 119と共にそれぞれ提供されている。さらに、中間、又は低レベルのマネージャコンピューティングデバイス120(マネージャA)及び121(マネージャB)は、エージェントA4及びエージェントA5からデータを受け取るものが、それぞれ提供される。中間マネージャは、次に、この場合、高レベルのマネージャがネットワーク122を介してデータをマネージャ111に報告する。ネットワーク102、107及び122は、同じ、重複又は異なるものであると考えられる。
図2Aは、トランザクショントレースを開始するための処理の一実施形態を説明するフローチャートである。ステップは適切なエージェントにより実行される。ステップ130ではトランザクションを開始する。一実施形態では、プロセス[処理]がメソッド(例えば、“loadTracer”メソッドの呼び出し)の開始によってトリガされる。ステップ132において、エージェントは所望のパラメータ情報を取得する。一実施形態では、ユーザは、どのパラメータ情報が構成ファイル又はUIを介して取得されるかを設定することができる。取得されたパラメータは、ブレイムスタックへプッシュされるオブジェクトの一部であり、ハッシュマップ又は辞書に格納されている。他の実施形態では、パラメータの識別は、予め設定されている。格納されるパラメータには様々なものがある。一実施形態では、使用されるパラメータの実際の一覧表は、監視されるアプリケーションに依存している。以下の表は、取得され得るいくつかのパラメータの例を示す。
Figure 2013050950
パラメータは、クエリ、クッキー、POST、URL及びセッションの型の名称/値の組を含む。
ステップ134では、システムは現在の時刻を示すタイムスタンプを取得する。ステップ136ではスタックエントリが作成される。ステップ138において、スタックエントリはブレイムスタックへプッシュされる。一実施形態では、タイムスタンプがステップ138の一部として付加される。トランザクションが開始されるときにプロセス[処理]が実行される。同様のプロセス[処理]が、トランザクションのサブコンポーネントが開始するときに実行される(例えば、EJB BはサーブレットAのサブコンポーネントである−上述したツリーを参照のこと)。
図2Bは、トランザクショントレースを終了するためのプロセス[処理]の一実施形態を説明するフローチャートである。トランザクションが終了するときにエージェントによりプロセス[処理]が実行される。ステップ140において、プロセス[処理]がトランザクション(例えばメソッド)の終了(例えば、“finishTrace”メソッドの呼び出し)によってトリガされる。ステップ142では、システムは現在の時刻を取得する。ステップ144では、スタックエントリが削除される。ステップ146において、トランザクションの実行時間は、ステップ142からのタイムスタンプをスタックエントリに格納されているタイムスタンプと比較することによって算出される。ステップ148では、トレースのためのフィルタが適用される。例えば、フィルタは1秒の閾値期間が入る。したがって、ステップ148は、ステップ146から算出された時間幅が1秒よりも大きいか否かを決定することを含む。閾値を超えない場合(ステップ150)、トランザクションのデータは破棄される。一実施形態では、スタックエントリの全体が破棄される。別の実施形態では、パラメータとタイムスタンプだけが破棄される。他の実施形態では、データの様々なサブセットが破棄される。いくつかの実施形態で、閾値の時間幅を超えていない場合には、エージェントにより、データは図1A又は1Bのシステム内の他のコンポーネントに送信されない。時間幅が閾値を超える場合(ステップ150)、ステップ160においてエージェントがコンポーネントデータを組み立てる。コンポーネントデータは、報告されるトランザクションに関するデータである。一実施形態では、コンポーネントデータは、トランザクションの名称、トランザクションの型、トランザクションの開始時刻、トランザクションの時間幅、パラメータのハッシュマップ、及びサブエレメント(エレメントの帰納的なリスト)のすべてを含む。その他の情報もまたコンポーネントデータの一部である。ステップ162において、エージェントは、マネージャ111にTCP/IPプロトコルによりコンポーネントデータを送信することによってコンポーネントデータを報告する。
図2Bは、トランザクションが終了すると何が起こるかを表している。しかしながら、サブコンポーネントが終了すると、実行されるステップは、タイムスタンプを取得すること、サブコンポーネントのためのスタックエントリを削除すること及び完了したサブエレメントを以前のスタックエントリに加えることを含む。一実施形態では、フィルタ及び判断ロジックは、特定のサブコンポーネントというよりも、トランザクションの開始及び終了に適用される。
一実施形態では、トランザクショントレーサがオフになっている場合、システムは依然としてブレイムスタックを使用するが、しかし、パラメータは格納されことなく、コンポーネントデータは作成されないことに注意されたい。いくつかの実施形態では、トレーシング技術をオフにすることによってシステムはトレーシングを開始しない。トレーシングは上述したように、ユーザがリクエストした後にだけ開始する。
図3は、図1A又は1Bのネットワークのコンピューティングデバイスを示す。コンピューティングデバイス300は、図1A又は1Bに関連して説明したように、ウェブブラウザ、アプリケーションサーバ、マネージャ及び/又はユーザインタフェースで使用されるシステムを簡略化して表したものである。コンピューティングデバイス300は、ハードディスク又はポータブルメディアのような記憶装置310、他のコンピューティングデバイスと通信するためのネットワークインタフェース320、ソフトウェアの命令を実行するためのプロセッサ330、例えば、記憶装置310からロードされた後にソフトウェアの命令を格納するためのRAMのような作業メモリ340、及び1以上のビデオモニタのようなユーザインタフェースディスプレィ350を含むものである。ユーザインタフェースは1以上のモニタを提供する。記憶装置310は、本明細書で説明した機能を提供するための方法を実行するのにプロセッサ330をプログラミングするために具現化されているプロセッサ読み取り可能なコードを有する、プロセッサ又はコンピュータで読み取り可能な有体であり一時的でない記憶装置と考えることができる。ユーザインタフェースディスプレィ350は、1以上のエージェントから受信したデータに基づいて、人間のオペレータに情報を提供する。ユーザインタフェースディスプレィ350は、グラフィカル又は表形式のような既知の任意の表示方式を使用する。画面上の表示に加えて、プリンタからのハードコピーなどの出力も提供する。
記憶装置310がアプリケーションサーバ、マネージャ及び/又はユーザインタフェースのようなコンピューティングデバイス300の一部である場合、データベースは記憶装置310に含まれる。記憶装置310は、1以上のエージェントから受信したデータを格納し、本明細書で説明したようにユーザインタフェースを提供するためにデータを取得するためにアクセスされる、1以上の記憶装置を表す。記憶装置310は、データストアを表す。
また、本明細書で説明する機能は、ハードウェア、ソフトウェア又はハードウェアとソフトウェアの両方の組み合わせを使用して実装されてもよい。ソフトウェアについては、1以上のプロセッサをプログラミングするために具現化されているプロセッサで読み取り可能なコードを有する、プロセッサで読み取り可能な1以上の一時的でない有体の記憶装置が使用される。プロセッサ読み取り可能な一時的でない有体の記憶装置は、揮発性及び不揮発性メディア、リムーバブル及び非リムーバブルメディアなどのコンピュータで読み取り可能な媒体を含む。例えば、コンピュータにより読み取り可能な一時的でない有体の媒体には、コンピュータにより読み取り可能な命令、データ構造やプログラムモジュール又は他のデータなどの情報を記憶するために、任意の方法や技術で実装された、揮発性、不揮発性、リムーバブルや非リムーバブルメディアが含まれ得る。コンピュータにより読み取り可能な一時的でない有体の媒体の例としては、RAM、ROM、EEPROM、フラッシュメモリ、又は他のメモリ技術、CD−ROM、ディジタルバーサタイルディスク(DVD)、又は他の光学ディスク記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置、他の磁気記憶装置、又は所望の情報を格納したり、コンピュータによってアクセスしたりすることに用いられる他の媒体などがある。他の実施形態においては、一部又はすべてのソフトウェアは、カスタムIC、ゲートアレイ、FPGA、PLDや特殊用途向けプロセッサなど、専用のハードウェアに置き換えることができる。一実施形態では、1以上の実施形態を実装するソフトウェア(記憶装置に格納されている)は、1以上のプロセッサをプログラムするために用いられる。1以上のプロセッサは、コンピュータにより読み取り可能な1以上の有体の媒体/記憶装置、周辺機器及び/又は通信インタフェースと通信することができる。
図4は、1以上のアプリケーションの操作を示す際に用いられる階層を示す。異なるレベルの階層が必要な組織構造に基づいて定義される。例えば、階層は、人間が理解し易い用語を含み、その用語は、クライアントの、監視されるアプリケーションとの相互関係の理解を容易にするものである。階層は、相互関係が営利目的の業務の領域にあるか否か、例えば、電子商取引のトランザクションか、教育組織又は政府組織のためにあるかなど、アプリケーションとの相互関係の類型を包含する。さらに、1以上の階層は、各ノードが記述名を持つ1以上の階層の異なるレベルにおけるノードを含む。階層は、人間のオペレータにいっそう理解され易い仕方でアプリケーションを実行するやり方についての情報を、体系化する方法を提供する抽象的な構成であると考えられる。
階層の最上位は、「ドメイン」と名付けられたドメインレベル400である。階層の次のレベルは、業務サービスレベル402である。業務サービスの例として、ウェブサイトを用いた株式の取引に関するものがある。このように、「取引」は、階層の業務サービスレベルにおけるノードの名称とすることができる。階層のその次のレベルは、業務トランザクションレベルである。業務サービスは、いくつかの業務トランザクションで構成されている。例えば、取引のために、業務トランザクションは、報告404(例えば、株式又は口座に関する報告を表示する)及び見積406(例えば、株価の見積を取得する)を含む。さらに、業務トランザクションは、1以上の業務トランザクションコンポーネントに関連付けられる。1つのアプローチでは、業務トランザクションは、唯一の識別コンポーネントを有する。業務トランザクションコンポーネントは、サーブレット又はEJBなどのサーバによって認識可能かつ測定可能なアプリケーションのコンポーネントの型になり得る。1つのアプローチでは、アプリケーションのコンポーネントの1つは、業務トランザクションのための識別トランザクションコンポーネントである、業務トランザクションコンポーネントとして設定される。
業務トランザクションコンポーネントは、業務トランザクションに対する識別トランザクションであるトランザクションのための識別トランザクションコンポーネントである。トランザクションは、クライアントに応答するレスポンスを提供するために、クライアントからのリクエストに応答して呼び出されるソフトウェアコンポーネントのシーケンスを表す。例えば、業務トランザクションコンポーネントは、エージェントによって報告されたコンポーネントデータが一連のルールに一致することをもって識別される。この定義は、例えば、特定のURLのホスト名称、URLのパラメータ、HTTPポストパラメータ、クッキー及び/又はセッションマネージャのパラメータなどを含む。加えて、又はその代わりに、この定義は、特定のURLのホスト名称で開始するトランザクションを必要とする場合がある。エージェント又はマネージャは、例えば、業務トランザクションコンポーネントが業務トランザクション内に存在していることを判定するために、コンポーネントデータを一連のルールと比較する。業務トランザクションコンポーネントが検出される場合、関連付けられた業務トランザクションは特定の型のものである。例えば、業務トランザクションコンポーネント408が検出される場合、関連付けられた業務トランザクションは、報告404である。業務トランザクションコンポーネント410が検出される場合、関連付けられた業務トランザクションは見積406である。
図5Aは、図4の報告及び見積の業務トランザクション内で呼び出されるコンポーネントの一例のシーケンスおける依存関係を示す。コンポーネントは、フロー経路内のブロックとして示される。同じコンポーネントが2回以上現れる。また、コンポーネントは異なるサブシステム内、即ちサブシステム1(点線の上方のコンポーネント)又はサブシステム2(点線の下方のコンポーネント)内で実行する。
コンポーネント指向のプログラミングモデルは、コンポーネントに関係する構成要素からアプリケーションや他のプログラムをプログラマに組ませるのに役に立つ。各コンポーネントは、ソフトウェアの全体的機能に適合するよう特定の機能を実行する。さらに、コンポーネントは、コンポーネントのシーケンスがプログラム内で呼び出されるように他のコンポーネントを呼び出し、同様に、再帰呼び出しでは自分自身を呼び出す。コンポーネント指向のプログラミングモデルの一例は、J2EEであるが、Java(登録商標)サーバページズ、エンタープライズJava(登録商標)ビーンズ(EJB)、サーブレット及びJava(登録商標)データベースコネクティビティ(JDBC)のコンポーネントといったコンポーネントを用いることができる。JDBCは、クライントがどのようにデータベースにアクセスするかを定義するJava(登録商標)プログラミング言語のためのアプリケーションプログラミングインタフェース(API)である。それは、データベース内のデータを照会や更新する方法を提供する。しかしながら、.NETのような他のコンポーネント指向のプログラミングモデルを使用することもできる。また、プログラミングモデルは、オブジェクト指向である必要はない。
この例では、前述の報告及び見積の業務トランザクションの詳細を提供する。1つの可能な実装では、業務トランザクションの各コンポーネントは、1以上のクラスメソッドの組を含む。例えば、サーブレットはJava(登録商標)クラスである。リクエストを受信して対応する応答を生成するのは、オブジェクトである。クラスメソッドの組は、class.methodの表記により表される。例えば、報告は、所望の報告に関するユーザの入力を受信するために、ユーザインタフェース(UI)上の報告画面を表示するコンポーネントC1(502)を含む。C1に対するクラスメソッドの組のフォーマットの例は、ServletA1.DisplayReportScreenである。C1は、ルート500の下にある。したがって、エージェントがC1の呼び出されたことを検出する度に、現在のトランザクションが報告の一部であり、そのコンポーネントデータが報告に関連付けられることになる。
C1は、リクエストされた報告に関係するC2(504)を呼び出す。C2は、リクエストされた報告のユーザ入力を処理するServletA2.RequestedReportなどのクラスメソッドの組を含む。この処理は、リクエストのフォーマットを調べることを含み、例えば、フォーマットが有効である場合、報告リクエストを受信する、サブシステム2内のコンポーネントC5(508)を呼び出すことを含む。例えば、この呼び出しは、クロスプロセス、クロススレッドトランザクション又はクロスサブシステム呼び出しである。フォーマットが無効である場合、制御フローは、例えば、C1に戻り、エラーメッセージを表示するためにC3、を呼び出す。
C5に対するクラスメソッドの組のフォーマットの例は、ServletA3.ReceiveReportRequestである。C5は、例えば、報告リクエストの種類に基づいて、データベース1にアクセスするためにC6(510)、及び/又は、データベース2にアクセスするためにC7(512)、を呼び出す。例えば、C6及びC7は、1以上のSQL文を呼び出すJDBCドライバをそれぞれ含む。制御フローは、次にC5に戻り、その次にC2に、そしてその次にC1に戻る。その後、C1は、データベースから検索されたデータに基づいてリクエストされた報告の表示などの表示を提供することに関連しているC3(506)を呼び出す。制御フローは、次にC1に戻る。
C1は、例えば、報告データを異なる形式(異なる期間に亘る、等々)で表示するためのユーザコマンド(例えば、再表示)に基づくなどして、表示を調整するためにC3をさらに何回か呼び出すことがある。
また、ルート500の下において、コンポーネントC4(514)は、所望の見積に関するユーザの入力を受信するためにユーザインタフェース(UI)上に見積画面を表示するものを提供する。C1は、リクエストされた報告に関するC2(504)を呼び出す。C2は、例えば、リクエストのフォーマットを調べることによってユーザ入力を処理し、フォーマットが有効である場合、例えば、サブシステム1にローカルであるデータソースから、リクエストされた見積を取得することを処理する。フォーマットが無効である場合、制御フローはC4に戻り、C4は、例えば、エラーメッセージを表示するために、C3を呼び出す。
制御フローは、次にC4に戻る。C4は、データソースから検索されたデータに基づいてリクエストされた見積の画面などの画面を提供することに関連するC3(518)を呼び出す。C4は、例えば、見積データを異なる形式(例えば、別の移動平均を伴い、異なる期間に亘る、等々)で表示するためのユーザコマンド(例えば、再表示)に基づくなどして、表示を調整するためにC3をさらに何回か呼び出すことがある。
コンポーネントは、非同期、マルチスレッド又はマルチプロセスのモードで実行を開始する別のコンポーネントを呼び出した後、実行を継続できることに注意されたい。又は、この呼び出されたコンポーネントが同期、シングルスレッド又はシングルプロセスのモードで実行を終了するまで、コンポーネントを一時的に休止できる。休止しているコンポーネントは、待機期間にあると考えられ、一方、実行されているコンポーネントは、アクティブで、実行モードであると考えられる。また、コンポーネントは、トランザクションの期間中、2回以上呼び出すことが可能である。
図5Bは、図5Aの依存関係の代わりとなる表示で、よりコンパクトなものを示す。ノード505はノード504及び516を結合し、そしてノード507はノード506及び518を結合する。
図6(A)から(C)、及び、図6Dから図6Iは、図5Aのトランザクション内で呼び出されたコンポーネントの異なるシーケンスに対するトランザクショントレースを示す。水平方向は時間を表し、一方、垂直方向は呼び出しスタックの深さや位置を表す。また、呼び出しスタックと称されるトランザクショントレースは、1以上のプログラム、プロセス又はスレッドの実行中に、呼び出される又は起動される計測されたコンポーネントを識別する。計測されたコンポーネントのトレースデータは、アプリケーションを理解したりデバッグしたりするために依存データとともに使用される。トランザクショントレースは、トレース又はトランザクションの全部若しくは一部とすることができ、それぞれのエージェントを有する1以上のコンピューティングデバイスに及ぶ。特に、異なる別々のトランザクショントレースは、別々のスレッドが別々のトランザクショントレースに分離されるように、各エージェントに対して提供される。トランザクショントレースは、ユーザインタフェース上のグラフ表示によって提供される。
図6(A)のトランザクショントレースは、図5Aのブロック502及び504に対応している。グラフ部分600はC1を表し、グラフ部分602はC2を表す。C1は、t0で実行を開始して、t7で終了又は停止する。C1によって呼び出されるC2は、t1で実行を開始してt6で終了する。
図6(B)のトランザクショントレースは、図6Aのトランザクショントレースと時間軸を合わせており、図5Aのブロック508及び510に対応している。グラフ部分610はC5を表し、グラフ部分612はC2を表す。C5は、t2で実行を開始してt5で終了する。C5によって呼び出されるC6は、t2で実行を開始してt4で終了する。
図6(C)のトランザクショントレースは、図6(A)のトランザクショントレースと時間軸を合わせており、図5Aのブロック508及び512に対応している。グラフ部分620はC5を表し、グラフ部分622はC7を表す。C5は、t2で実行を開始してt5で終了する。C5によって呼び出されるC7は、t2で実行を開始してt4で終了する。図6(C)のトランザクショントレースは、例えば、データベース2がデータベース1の代わりに呼び出された場合、図6(B)のトランザクショントレースに代えることができる。タイムポイントt2−t5は、図6(B)と必ずしも同じである必要はない。また、タイムポイントt0、t1、t2等々は、一般的に等分の時間増加分を表す必要はない。
図6Dのトランザクショントレースは、図5Aのブロック502及び504に対応している。グラフ部分630はC1を表し、グラフ部分632はC2を表す。C1は、t0で実行を開始してt3で終了する。C1によって呼び出されるC2は、t1で実行を開始してt2で終了する。このトランザクショントレースは、C1がC2を呼び出し、C2がユーザリクエストのフォーマットが無効であると判定したため制御フローがC1に直接戻るというと場合を表す。
図6Eのトランザクショントレースは、図5Aのブロック502及び506に対応している。グラフ部分640はC1を表し、グラフ部分642はC3を表す。C1は、t0で実行を開始してt3で終了する。C1によって呼び出されるC3は、t1で実行を開始してt2で終了する。このトランザクショントレースは、C1がC3を呼び出し、C3が報告を表示又は再表示する場合を表す。
図6Fのトランザクショントレースは、図5Aのブロック502及び506に対応している。グラフ部分650はC1を表し、グラフ部分652及び654はC3の別々の呼び出しを表す。C1は、t0で実行を開始してt5で実行を終了する。C3は、C1によって最初に呼び出されたとき、t1で実行を開始してt2で終了する。C3は、C1によって2回目に呼び出されたとき、t3で実行を開始してt4で終了する。このトランザクショントレースは、C1がC3を、報告を表示するために最初に呼び出す場合、及び報告を再表示するために2回目に呼び出す場合を表す。
図6Gのトランザクショントレースは、図5Aのブロック502、504及び506に対応している。グラフ部分660はC1を表し、グラフ部分662はC3を表し、及びグラフ部分664はC2を表す。C1は、t0で実行を開始してt5で終了する。C3は、C1によって呼び出されたとき、t1で実行を開始してt2で終了する。C2は、C1によって呼び出されたとき、t3で実行を開始してt4で終了する。このトランザクショントレースは、C1が報告を表示するためにC3を呼び出し、ユーザが報告に対する別のリクエストをするが、そのリクエストは無効のフォーマットであり、それゆえ、制御フローがC2からC1に直接戻る場合を表す。
図6Hのトランザクショントレースは、図5Aのブロック514及び516に対応している。グラフ部分670はC4を表し、グラフ部分672はC2を表す。C4は、t0で実行を開始してt3で終了する。C1によって呼び出されるC2は、t1で実行を開始してt2で終了する。このトランザクショントレースは、C4が見積に対するユーザリクエストでC2を呼び出す場合を表す。
図6Iのトランザクショントレースは、図5Aのブロック514及び518に応答している。グラフ部分680はC4を表し、グラフ部分682はC3を表す。C4は、t0で実行を開始してt3で終了する。C1によって呼び出されるC3は、t1で実行を開始してt2で終了する。このトランザクショントレースは、C4がC3を呼び出し、C3が見積を表示する場合を表す。
図7A1は、図6から6Iのトランザクショントレースに基づき提供されるエージェント1及びエージェント2のツリーデータ構造の例を示す。ツリーデータ構造は、有効グラフ、又は、ノード及び矢印若しくはノードを接続する辺を含む分散ツリーによって表される。ツリーを通じたそれぞれの異なる経路が、ツリーのブランチを表す。各個別のブランチは、少なくとも1つのアプリケーションの呼び出された複数のコンポーネントのそれぞれのトランザクション又はシーケンスを表す。また、各ノードは、コンポーネントの実行の開始又は終了を表す。各ノードは、また固有の識別子を含む。そして、ブランチの最終ノードの識別子は、そのブランチ固有の識別子(例えば、サブシステム/エージェント内で固有である)としての役割を果たす。即ち、ブランチ内の最終ノードの識別子が与えられると、ブランチ内の各先行ノードを最初のノードまで、即ち、そのブランチのルートノードまで遡ることができる。ツリーのブランチは、複数のサブシステムに亘って延長する、コンポーネントのシーケンス又はトランザクションもまた表し得る。例えば、点線よりも上方のブランチ部分は、サブシステム1で実行するコンポーネントのノードを含み、点線より下方のブランチ部分は、サブシステム2で実行するコンポーネントのノードを含む。複数のブランチは、少なくとも部分的に重複し、共通のノードを有する。通常、少なくともルートノードは、複数のブランチに共通である。
アプリケーション又は他のソフトウェアを監視するエージェントは、関連付けられたツリーデータ構造を保守する。例えば、サブシステム1のエージェント1(agt1)は、ルートノード700から始まるツリーデータ構造を保守し、サブシステム2のエージェント2(agt2)は、ルートノード742から始まるツリーデータ構造を保守する。マネージャは、1以上のエージェントのツリーデータ構造に基づくツリーデータ構造を保守管理する。例えば、マネージャは、エージェント1及びエージェント2のツリーデータ構造を結合する、図7C1のツリーデータ構造を保守管理する。
ルートノード700は、サブシステム1におけるすべてのブランチの開始ノードである。第1ブランチ(エージェント1−ブランチ1、トランザクションのエージェント1−T1を表す)は、ノード702、704、706及び708を含む。第2ブランチ(エージェント1−ブランチ2、トランザクションのエージェント1−T2を表す)は、ノード702、710、712及び714を含む。第3ブランチ(エージェント1−ブランチ3、トランザクションのエージェント1−T3を表す)は、ノード702、710、712、716、718及び720を含む。第4ブランチ(エージェント1−ブランチ4、トランザクションのエージェント1−T4を表す)は、ノード702、710、712、722、724及び726を含む。第5ブランチ(エージェント1−ブランチ5、トランザクションのエージェント1−T5を表す)は、ノード728、730、732及び734を含む。第6ブランチ(エージェント1−ブランチ6、トランザクションのエージェント1−T6を表す)は、ノード728、736、738及び740を含む。
ルートノード742は、サブシステム2におけるすべてのブランチの開始ノードである。第1ブランチ(エージェント2−ブランチ1、トランザクションのエージェント2−T1を表す)は、ノード744、746、748及び750を含む。第2ブランチ(エージェント2−ブランチ2、トランザクションのエージェント2−T2を表す)は、ノード744、752、754及び756を含む。
各ノードの識別子は、例えば識別子内の値の数に基づいて、ブランチ内におけるノードのシーケンスの位置を示す。例えば、ノード702は、識別子「0:0」を有する。この識別子は、ルートノード(識別子「0」を有する)の後の、ブランチの第2ノードであることを示す、コロンで区切られた2つの値を有する。第2、第3及び第4ブランチでは、ノード702、710及び712(第2、第3及び第4ノード)は共通である。第2ブランチでは、最終ノード714は、識別子0:0:1:0:0を有する。第3ブランチでは、最終ノード716は、識別子0:0:1:0:1を有する。第4ブランチでは、最終ノード722は、識別子0:0:1:0:2を有する。様々な他のノードの識別方式/コード言語が同様に使用されてもよい。
ノードの識別子は独立して割り当てられているため、異なるサブシステム内で潜在的に繰り返され得る。しかしながら、サブシステムの識別子(例えば、エージェントの識別子)とノードの識別子の組み合わせは固有のものである。
ツリーデータ構造は、様々な方法で提供され得る。1つのアプローチでは、サブシステムのエージェントは、付加的なトランザクションがトレースされるに従って時間の経過とともにツリーデータ構造を構築する。各トランザクショントレースは、例えば、呼び出されたコンポーネントのシーケンスは、ツリーのブランチと比較され、一致するものが存在するか否かが判定される。一致するものが存在する場合、そのトランザクションは、既にツリーによって表されている。しかしながら、一致するものが存在しない場合、トランザクションは、ツリーによって表されておらず、ツリーデータ構造は、新しいトランザクションを表すために更新される。更新は、部分的に、重複する又は重複しない新しいブランチを既存のブランチに付加することを含む。新しいブランチは、新しいトランザクションの呼び出されたコンポーネントの開始と終了を表す付加的なノードを付加することによって提供される。付加的なノードは、既にツリーデータ構造内に存在している呼び出されたコンポーネントの開始及び終了の別のインスタンスを表す。例えば、エージェント1−ブランチ3、ノード710及び712は、C3の1つのインスタンスの開始と終了を表し、ノード716及び718は、C3の別のインスタンスの開始と終了を表す。
複数のサブシステムに亘って伸びるツリーのブランチの例は、サブシステム1のエージェント1−ブランチ1とサブシステム2のエージェント2−ブランチ1又はエージェント2−ブランチ2とを結合して、図7C1に示されている。例えば、サブシステム2のブランチ1内のノード742は、サブシステム1のブランチ1内のノード704に続き、そしてブランチ1内のノード706に戻る。又は、サブシステム2のブランチ2内のノード742は、サブシステム1のブランチ1内のノード704に続き、そしてブランチ1内のノード706に戻る。いずれの場合も、少なくとも1つのコンポーネント、例えば、第1サブシステム内のC2は、少なくとも1つのコンポーネント、例えば、第2サブシステム内のC5を呼び出す。
サーバ及びマネージャの各エージェントは、互いに対応する独立したツリーデータ構造を保守する。理想的には、ツリーデータ構造は、それらが少なくとも1つのアプリケーション又は他のソフトウェアのトランザクションの同じセットを表すように、少なくとも部分的には同期がとられる。述べたように、エージェントが新しいトランザクションを検出すると、ツリーデータ構造を更新し、マネージャに更新を報告する。マネージャが次にツリーデータ構造を更新する。さらに、少なくとも1つのアプリケーションの他のインスタンスを監視する他のエージェントが存在し、そして、エージェントがそれらのそれぞれのツリーデータ構造を更新するために更新を受信することも同様に望ましい。1つのアプローチでは、新しいトランザクションを検出するエージェントが他のエージェントに直接にその更新を提供する。別のアプローチでは、エージェントはマネージャに更新を報告し、マネージャは他のエージェントに更新を中継する。このアプローチは、他のエージェントがマネージャに報告して、それらに更新が伝わるのをマネージャが知るため、効率的である。更新はどのようなフォーマットでも提供可能である。エージェントからマネージャに送られてくる更新は、動的データと共に、あるいは個別に伝えられる。
対応するツリーデータ構造をエージェント及びマネージャに保守管理させることによって、高い効率が得られる。例えば、トランザクション、及び、トランザクションのコンポーネントに関連付けられた静的データは、ツリーのノードにインデックス付けされ、それによって、単にツリー内のブランチを特定することでマネージャによるその使用が可能になる。静的データは、エージェントによってマネージャに繰り返し伝えられる必要はない。静的データは、一般的に、アプリケーション又は他の監視されたソフトウェアのバージョンに対するものであるため変化しない。したがって、与えられたトランザクション又はコンポーネントの複数の呼び出しに対して同じ静的データが関連付けられる。対照的に、コンポーネントの開始及び終了時刻のような動的データ、及びメソッドに渡されるパラメータ値のような他の動的データは、固定されず、それゆえ、与えられたコンポーネントの各呼び出し、及び、トレースされた各トランザクションごとに変化する。エージェントによって収集される動的データは、エージェントからマネージャへ報告される。しかし、効率は、動的データが適用される呼び出されたコンポーネントを容易に識別するために動的データをノードへインデックス付けすることによってもまだなお得られる。これらの効率を得るために使用される様々なデータ構造が図8A1から8Cに関連して説明される。
図7A2は、図7A1のツリーデータ構造の代替的かつ等価的な表示を示す。ここで、ノード711及び717は、ノード710と同じであり、ノード713及び719は、同じそれぞれのノードの識別子を有するノード712と同じである。この表示では、エージェント1−ブランチ2は、ノード710、712及び714を含み、エージェント1−ブランチ3は、ノード711、713、715、718及び720を含み、エージェント1−ブランチ4は、ノード717、719、721、724及び726を含む。この表示では、ノード714が、エージェント1−ブランチ3及びエージェント1−ブランチ4の一部ではないことを明確にしている。
図7Bは、新しいブランチの形式を有する、図7A1のエージェント1のツリーデータ構造の更新を示す。明確にするため、サブシステム2は示されてない。トランザクションの「エージェント1−T新しい」を表す、「エージェント1−新しい−ブランチ」は、図9のプロセス[処理]に関連して後述するように、エージェント1のツリーデータ構造の更新により付加された新しいブランチである。「エージェント1−新しい−ブランチ」は、識別子「0:0」を有する既存のノード702(開始C1)、識別子「0:0:2」を有するノード760(開始C8)、識別子「0:0:2:0」を有するノード762(終了C8)、及び、識別子「0:0:2:0:0」を有するノード764(終了C1)を含む。これは、エージェント1によって新たに検出された経路である。
図7C1は、図7A1の、エージェント1及びエージェント2のツリーデータ構造を結合した、マネージャのツリーデータ構造を示す。述べたように、マネージャのツリーデータ構造は、複数のエージェント及びアプリケーション又は他のソフトウェアに及ぶデータ構造を提供するために、異なるエージェントのツリーデータ構造を結合する。この場合、マネージャのツリーデータ構造の第1の部分は、第1エージェントのツリーデータ構造に対応しており、マネージャのツリーデータ構造の第2の部分は、第2エージェントのツリーデータ構造に対応している。破線のノード(ノード744、746、748、750、752、754及び756)は、エージェント2のツリーデータ構造からのノードに対応し、点線のノード(ノード790及び792)は、破線のノードに基づいて付加される。マネージャのツリーデータ構造の実線のノードは、エージェント1のツリーデータ構造に対応する。C2はC5を呼び出すことがわかっているため、ノード704はノード744を指し示す。C5はC2に戻ることがわかっているため、ノード750は、ノード744、746、748及び750のシーケンスが続いている場合には、ノード706を指し示し、そして、ノード744、752、754及び756のシーケンスが続いている場合には、ノード756がノード790を指し示すところに、付加的なノード790及び792が付加される。ノード790及び792は、エージェント1の観点から、それぞれノード706及び708と同じである。
このように、マネージャ(mgr)のツリーデータ構造は、これらのブランチ:マネージャ−ブランチ1、マネージャ−ブランチ2、マネージャ−ブランチ3(エージェント1−ブランチ2と同じ)、マネージャ−ブランチ4(エージェント1−ブランチ3と同じ)、マネージャ−ブランチ5(エージェント1−ブランチ4と同じ)、マネージャ−ブランチ6(エージェント1−ブランチ5と同じ)、及びマネージャ−ブランチ7(エージェント1−ブランチ6と同じ)、を含む。トランザクションが複数のサブシステムに関与するので、マネージャ−ブランチ1は、クロスサブシステムのトランザクション内で呼び出されたコンポーネントのシーケンスを表す。マネージャ1−ブランチ1は、トランザクションエージェント2−T1(ノード744、746、748及び750)によって続けられ、トランザクションエージェント1−T1の残り(ノード706及び708)によって続けられる、例えばトランザクションエージェント1−T1の一部(ノード702及び704)のような、複数のトランザクションを結合するトランザクションマネージャ−T1を表す。トランザクションエージェント1−T1は、サブシステム1からのもので、エージェント2−T1は、サブシステム2からのものであることを想起されたい。マネージャ−ブランチ2は、トランザクションマネージャ−T2を表し、それは、トランザクションエージェント1−T1の一部(ノード702及び704)を結合したものであり、その後にトランザクションエージェント2−T1(ノード744、752、754及び756)が続き、その後にトランザクションエージェント1−T1の残り(ノード790及び792)が続く。マネージャ−ブランチ3は、トランザクションのエージェント1−T2(ノード702、710、712及び714)と同じであるトランザクションマネージャ−T3を表す。マネージャ−ブランチ4は、トランザクションのエージェント1−T3(ノード702、710、712、716、718及び720)と同じであるトランザクションマネージャ−T4を表す。マネージャ−ブランチ5は、トランザクションのエージェント1−T4(ノード702、710、712、722、724及び726)と同じであるトランザクションマネージャ−T5を表す。マネージャ−ブランチ6は、トランザクションのエージェント1−T5(ノード728、730、732及び734)と同じであるトランザクションマネージャ−T6を表す。マネージャ−ブランチ7は、トランザクションのエージェント1−T6(ノード728、736、738及び740)と同じであるトランザクションマネージャ−T7を表す。
図7C1のノードの識別子は、ノード744(0:0:0:0)、ノード746(0:0:0:0:0)、ノード748(0:0:0:0:0:0)、ノード750(0:0:0:0:0:0:0)、ノード706(0:0:0:0:0:0:0:0)、ノード708(0:0:0:0:0:0:0:0:0)、ノード752(0:0:0:0:1)、ノード754(0:0:0:0:1:0)、ノード756(0:0:0:0:1:0:0)、ノード790(0:0:0:0:1:0:0:0)及びノード792(0:0:0:0:1:0:0:0:0)、を除いて、図7A1と同じである。これらはマネージャの識別子である。マネージャ−ブランチ1、マネージャ−ブランチ2、マネージャ−ブランチ3、マネージャ−ブランチ4、マネージャ−ブランチ5、マネージャ−ブランチ6及びマネージャ−ブランチ7の識別子は、エージェント1から見て、それぞれノード708、792、714、720、726、734及び740の識別子である。
マネージャのツリーデータ構造が、異なる複数のエージェントによる複数のツリーデータ構造を結合するとき、マネージャのトランザクションは、複数のエージェントの複数のトランザクションを結合する。マネージャトランザクションのエージェントトランザクションに対する一対多の対応の例として、マネージャ−T1は、エージェント1−T1及びエージェント2−T1を結合する。図8A1から8A3を参照されたい。この場合、マネージャのトランザクションのユーザインタフェースディスプレィは、複数のエージェントトランザクションに基づくものである。
或いは、マネージャのツリーデータ構造は、異なる複数のエージェントによる複数のツリーデータ構造を結合する必要はないが、マネージャは、本質的に各エージェントのツリーデータ構造の複製である、各エージェントに対する個別のツリーデータ構造を保守管理する。この場合、マネージャのトランザクションは、エージェントのトランザクションと同じである。マネージャトランザクションのエージェントトランザクションに対する一対一の対応の例として、マネージャ−T3は、エージェント1−T2と同じである。この場合、マネージャのトランザクションのユーザインタフェースディスプレィは、単一のエージェントトランザクションに基づくものである。
又は、マネージャは、異なる複数のエージェントの複数の個別のツリーデータ構造、及び、異なる複数のエージェントによる複数のツリーデータ構造を結合した1つのツリーデータ構造の双方を保守管理し得る。個別のツリーデータ構造は、図9のステップ904にあるように、ブランチの一照合のために使用され、一方、異なる複数のエージェントによる複数のツリーデータ構造を結合した1つのツリーデータ構造は、例えば、図10Aのステップ1008及び1010にあるようにユーザインタフェースを提供するために使用され得る。
図7C2は、図7A1のエージェント1のツリーデータ構造における最終ノードと図7C1のマネージャのツリーデータ構造の最終ノードの間の対応を示す。述べたように、ツリーデータ構造内のブランチの最終ノードの識別子は、ブランチを一意的に識別するために使用される。場合によっては、同一の最終ノードの識別子がエージェント及びマネージャのツリーデータ構造で使用される。他の場合、例えばマネージャが異なる複数のエージェントによる複数のツリーデータ構造を結合する場合、複数の異なる最終ノードの識別子がエージェント及びマネージャの夫々のツリーデータ構造で使用される。マネージャは、複数の最終ノードの識別子間の対応レコードを保守管理し得る。例えば、0:0:0:0:0の、エージェント1の最終ノードの識別子は、識別子0:0:0:0:0:0:0:0:0及び0:0:0:0:1:0:0:0:0を有する、マネージャの2つの最終ノード(ノード708及び792)に対応する。エージェント1の残りの最終ノードの識別子(図7A1のノード714、720、726、734及び740の識別子を参照)はマネージャのものと同じである。また、0:0:0:0:0の、エージェント2の最終ノードの識別子は、識別子0:0:0:0:0:0:0:及び0:0:0:0:1:0:0を有する、マネージャの2つの最終ノードに対応する。この例では、考慮すべきエージェント2の残りの最終ノードの識別子は存在しない。ノード番号は、理解の助けのために提供されているのであり、必ずしも対応レコードの一部であるわけではない。
したがって、マネージャが第1ノードのシーケンスのエージェント1からの最終ノードの識別子、及び、第2ノードのシーケンスのエージェント2からの最終ノードの識別子を受信するとき、マネージャは、1以上のこれらの最終ノードの識別子に基づいて、そのツリーデータ構造にアクセスすることができる。また、アクセスは、エージェント1及び/又はエージェント2の最終ノードの識別子、及び/又は、マネージャの対応する最終ノードの識別子に基づく。
図7Dは、図7Bにおけるエージェント1のツリーデータ構造の更新と整合する、新しいブランチの形式をした図7C1のマネージャのツリーデータ構造の更新を示す。更新は、ノード760、762及び764を含む新しいブランチ、「マネージャ−新しい−ブランチ」であり、それは、エージェント1のツリーデータ構造についての「エージェント1−新しい−ブランチ」の更新と整合する。
図8A1は、図7A1のツリーデータ構造におけるサブシステム1のためのブランチ及びコンポーネント呼び出しのレコードを示す。各ブランチは、最終ノードの識別子によって識別される。例えば、「0:0:0:0:0」は、図7A1のノード708を識別し、それゆえ、両方ともサブシステム1に存在する、エージェント1−ブランチ1、及び、これに対応するトランザクションのエージェント1−T1もまた識別する。このブランチに対応するコンポーネント呼び出しは、開始C1(ノード702)、開始C2(ノード704)、終了C2(ノード706)、及び終了C1(ノード708)である。
「0:0:1:0:0」は、図7A1のノード714を識別し、それゆえ、両方ともサブシステム1に存在する、エージェント1−ブランチ2及びトランザクションのエージェント1−T2もまた識別する。このブランチに対応するコンポーネント呼び出しは、開始C1(ノード702)、開始C3(ノード710)、終了C3(ノード712)、及び終了C1(ノード714)である。
「0:0:1:0:1:0:0」は、図7A1のノード720を識別し、それゆえ、両方ともサブシステム1に存在する、エージェント1−ブランチ3及びトランザクションのエージェント1−T3もまた識別する。このブランチに対応するコンポーネント呼び出しは、開始C1(ノード702)、開始C3(ノード710)、終了C3(ノード712)、開始C3(ノード716)、終了C3(ノード716)、及び終了C1(ノード720)である。
「0:0:1:0:2:0:0」は、図7A1のノード726を識別し、れゆえ、両方ともサブシステム1に存在する、エージェント1−ブランチ4及びトランザクションのエージェント1−T4もまた識別する。このブランチに対応するコンポーネント呼び出しは、開始C1(ノード702)、開始C3(ノード710)、終了C3(ノード712)、開始C2(ノード722)、終了C2(ノード724)、及び終了C1(ノード726)である。
「0:1:0:0:0」は、図7A1のノード734を識別し、それゆえ、両方ともサブシステム1に存在する、エージェント1−ブランチ5及びトランザクションのエージェント1−T5もまた識別する。このブランチに対応するコンポーネント呼び出しは、開始C4(ノード728)、開始C2(ノード730)、終了C2(ノード732)、及び終了C4(ノード734)である。
「0:1:1:0:0」は、図7A1のノード740を識別し、それゆえ、両方ともサブシステム1に存在する、エージェント1−ブランチ6及びトランザクションのエージェント1−T6もまた識別する。このブランチに対応するコンポーネント呼び出しは、開始C5(ノード744)、開始C7(ノード752)、終了C7(ノード754)、及び終了C5(ノード756)である。
図8A2は、図7A1のツリーデータ構造におけるサブシステム2のためのブランチ及びコンポーネント呼び出しのレコードを示す。
「0:0:0:0:0」は、図7A1のノード750を識別し、それゆえ、両方ともサブシステム2に存在する、エージェント2−ブランチ1及びトランザクションのエージェント2−T1もまた識別する。このブランチに対応するコンポーネント呼び出しは、開始C5(ノード744)、開始C6(ノード746)、終了C6(ノード748)、及び終了C5(ノード750)である。
「0:0:1:0:0」は、図7A1のノード756を識別し、それゆえ、両方ともサブシステム2に存在する、エージェント2−ブランチ2及びトランザクションのエージェント2−T2もまた識別する。このブランチに対応するコンポーネント呼び出しは、開始C5(ノード744)、開始C6(ノード746)、終了C6(ノード748)、及び終了C5(ノード750)である。
図8B1は、図7A1のツリーデータ構造におけるサブシステム1の異なるノード/コンポーネントのための静的データへの参照のレコードを示す。述べたように、静的データの様々な種類は、コンポーネントとそれに関連付けられたノードから参照され得る。例えば、ノード「0:0」は、コンポーネントC1に関連付けられ、static#data#C1(例えば、methodC1、classC1 及び JARC1など)に参照付けられる。参照される静的データの異なるレコードは、後述するように、図8Dに示される。クラス名は、1以上の、親又はスーパークラスの名称も含み得る。1つのアプローチでは、1以上のノードから静的データを参照し得る。別のアプローチでは、コンポーネントの開始を表すノード(ただし、コンポーネントの終了を表すノードではない)は、静的データを参照し得る。他のアプローチも可能である。目的は、例えば、トランザクショントレースのようなユーザインタフェースに注記を加えるために、与えられたコンポーネント又はノードに関連付けられた静的データにマネージャがアクセスできるようにすることである。図8A1及び8B1のレコードは、エージェントによって及び/又はエージェントが報告するマネージャによってツリーデータ構造の一部として提供されている。
レコードは、ブランチ又はブランチの一部を形成するノードをグループ化することができる。例えば、最初の5つのエントリ(「0:0」から「0:0:0:0:0」)は、エージェント1−ブランチ1に対するもので、最後のエントリ(「0:0:0:0:0」)は、ブランチの識別子である。エントリ0:0:1、0:0:1:0及び0:0:1:0:0は、エージェント1−ブランチ1にはないエージェント1−ブランチ2にあるノードに対するものである。
ノードは、静的データの1以上の種類に直接的に、又は静的データの1以上の種類を参照するための識別子を参照し得る。このように、静的データの識別子は、静的データの1以上の種類を繰り返すことなく、レコードにおいて効率的に繰り返される。
静的データは、静的データが参照される1以上のコンポーネントの計測を含む、ソフトウェアの計測から取得される。
トランザクションの静的データは、殆どが計測から取得される。しかしながら、原則として、それは他のソースから取得され、及びマッシュアップされ、又は必要に応じて他の静的データと結合される。例えば、与えられたコード部分が静的に常に与えられたアプリケーションに関連すること、又は静的に常に優先度が低くなることは、他のソースから検出される。この情報は、トレースの動作を決定するために使用される。
静的データは、ソフトウェアをトレースすることから入手可能なすべての種類の情報を含む。また、静的データは、ソフトウェアが構築される方法のために、特定のコンポーネントが、限定された数の1以上の親のコンポーネントによってのみ呼び出され得ること、及び/又は、特定のコンポーネントが、限定された数の1以上の子のコンポーネントのみを呼び出し得ること、を示すことができる。例えば、静的データは、C2がC1又はC4によってのみ呼び出され、及びC2がC5のみを呼び出すことを示す場合があってよい。静的データは、特定のコンポーネンントを呼び出した1以上の親コンポーネントに基づいて、その特定のコンポーネントが限られた数の1以上の子コンポーネントを呼び出し得ることを示すことができる。ツリーデータ構造の観点から言えば、例えば、特定のノードは、例えば特定のコンテキストにおいて、その特定のノードに到達した方法に基づいた1つの子のノードを有するのみである。この情報は、トランザクションのコンテキストに応じて、トランザクションデータを区別するのと同様に照合ステップ904において有益である。
別の例として、サーブレットは、SQL文を使用してデータベースの様々なメソッドを呼び出す。しかしながら、サーブレットは、常に任意にメソッドを呼び出すわけではない。サーブレットは、何かが前もって発生した場合にあるSQLを呼び出し、又は別の何かが前もって発生した場合に別のSQLを呼び出す。これは、業務ロジック(ビジネスロジック]に従って関連性のあるSQLのパーティションを提供する。例えば、ウェブサイト上で本を購入するためのトランザクションの場合、データベースロジックの特定の部分が使用され、一方、ウェブサイト上で帽子を購入するトランザクションの場合、データベースロジックの別の部分が使用される。どちらの場合も、サーブレットは、データベース呼び出しを行うために、同じソケットを使用する。しかし、ツリーデータ構造を使用すると、データが特定のトランザクションのコンテキスト内に集められる。このデータは、トランザクショントレース、及び、応答時間などを生じさせるメトリックを含むことができ、同様に、トランザクションのために取得された他のメトリックも含むことができる。
静的データは、ソフトウェア及び/又は計測から繰り返し検索される必要がないようにエージェントによってキャッシュされる。
図8B2は、図7A1のツリーデータ構造におけるサブシステム2の異なるノード/コンポーネントのための静的データへの参照のレコードを示す。これらのレコードは、サブシステム2のエージェントによってツリーデータ構造の一部として提供され、関連付けられたマネージャに報告される。これは、例えば、サブシステム1のエージェントが報告するのと同じマネージャである。複数のエージェントが1つの共通のマネージャに報告する。レコードにおける一例としては、ノード「0:0」は、コンポーネントC5に関連付けられており、static#data#C5を参照する。
図8B3は、図7Bにおける「エージェント1−新しい−ブランチ」のための図8B1のレコードの更新を示す。ノード760、762及び764は、識別子0:0:2、0:0:2:0及び0:0:2:0:0をそれぞれ有し、static#data#C8、static#data#C8及びstatic#data#C1に、それぞれインデックス付けされている。
図8B4は、図7C1のツリーデータ構造におけるマネージャの異なるノード/コンポーネントのための静的データへの参照のレコードを示す。述べたように、各ノードは静的データに関連付けられている。
図8B5は、図7Dにおける「マネージャ−新しい−ブランチ7」のための図8B4のレコードの更新を示す。ノード760、762及び764は、識別子0:0:2、0:0:2:0及び0:0:2:0:0をそれぞれ有し、static#data#C8、static#data#C8及びstatic#data#C1に、それぞれインデックス付けされている。更新は、この例では、共通のノードの識別子のため、図8B3と同じである。他の場合では、例えば、異なるノードの識別子のために、更新は異なる。
図8Cは、図7A1のツリーデータ構造のサブシステム1の異なるノード/コンポーネントのためのトレース詳細からの動的データのレコードを示す。レコードは、サブシステム1のエージェントによってツリーデータ構造の一部として提供され、関連付けられたマネージャに報告される。動的データは、少なくとも1つのアプリケーション又は他の監視されたソフトウェアのインスタンスをトレースすることによって、エージェントにより取得される。動的データは、コンポーネントの開始及び終了時刻を示すことができる。他の動的データは、コンポーネント間の呼び出しで渡されたパラメータを含んでよい。例えば、図5Aにおいて、C1は、報告の種類又は報告日の範囲に関連するリクエストされた報告に関連付けられた1以上のパラメータを有する、C2を呼び出す。制御フローがC1に戻るとき、C2は、1以上の関連するパラメータをC1に渡す。各サブシステムは、関連付けられたエージェントを介して動的データを取得してマネージャに報告する。レコードは、サブシステム1のエージェントによって、及び、エージェントが報告するマネージャによって、ツリーデータ構造の一部として提供される。
動的データは、C1に関連付けられた、C1のための開始時刻(t1)及び呼び出し中にC1に渡されるパラメータ1のような他の関連付けられた動的データ(dynamic#data#1)、を含むノード「0:0」に対するエントリを含む。ノード「0:0:0」に対するエントリは、C2に関連付けられており、C2のための開始時刻(t2)及び呼び出し中にC2に渡されるパラメータ2のような他の関連付けられた動的データ(dynamic#data#2)を含む。ノード「0:0:0:0」に対するエントリは、C2に関連付けられており、例えばC2によって呼び出されたコンポーネントからC2へのプログラムフローの戻りなどの、戻り中にC2に渡されるパラメータ3のような、C2のための終了時刻(t3)、及び他の関連付けられた動的データ(dynamic#data#3)を含む。ノード「0:0:0:0:0」に対するエントリは、C1に関連付けられており、例えばC1によって呼び出されたコンポーネントからC1へのプログラムフローの戻りのなどの、戻り中にC1に渡されるパラメータ4のような、C1のための終了時刻(t4)及び他の関連付けられた動的データ(dynamic#data#4)を含む。
図8Dは、様々なコンポーネントに関連付けられた静的データのレコードを示す。本明細書で説明したように各レコードは、静的データの様々な種類を含む。静的データのレコードは、static#data#C1、static#data#C2、static#data#C3、static#data#C4、static#data#C5、static#data#C6、static#data#C7、及びstatic#data#C8を含む。静的データのレコードは、エージェント及びマネージャによって保守管理される。
図9は、少なくとも1つのアプリケーションのために図7A1にあるようなエージェントがツリーデータ構造を保守管理するプロセス[処理]の例を示す。ステップ900は、コンポーネントの開始及び停止ポイントなどによって、少なくとも1つのアプリケーションの呼び出されたコンポーネントのシーケンスを表すブランチを有する、ツリーデータ構造を保守することを含む。ステップ902は、トランザクション、例えばトランザクションのインスタンスが複数のインスタンスに経時的に呼び出される期間中、少なくとも1つのアプリケーションの呼び出されたコンポーネントのシーケンスを識別することを含む。例えば、これはトランザクションをトレースすることを含む。着目している特定のトランザクションは、対象トランザクションと称される。
ステップ908は、トランザクションの期間中、例えば呼び出されたコンポーネントの開始及び終了時刻などの、呼び出されたコンポーネントのシーケンスのためのメトリックのような動的データを取得すること、を含む。この動的データは、トランザクショントレースから取得される。判断ステップ904において、ツリーデータ構造内のブランチに一致するブランチが存在するか否かについての判定が行われる。例えば、トランザクショントレースが以下の呼び出されたコンポーネントのシーケンス、開始C1、開始C2、終了C2、終了C1になると仮定する。このシーケンスは、例えば、一致するブランチが発見されるまで、図7A1のツリーデータ構造内の各ブランチと順々に比較される。1つのアプローチでは、比較は、最初のブランチから始めて一つのブランチごとに行われる。別のアプローチでは、トランザクショントレースの開始及び終了ポイントの数に対応するノード数を有する複数のブランチが最初に比較される。それ以外のアプローチもまた可能である。この例では、「エージェント1−ブランチ1」が一致するブランチである。ステップ906は、動的データ及び一致するブランチ(例えばエージェント1−ブランチ1、又はノード0:0:0:0:0)の識別子をマネージャに報告することを含む。動的データは、例えば、各時刻がブランチのいずれかのノードに対応し、報告された時刻の順番がブランチ内のノードの順番に対応する場合、呼び出されたコンポーネントの開始及び終了時刻のリストとして報告される。時刻は、例えば、エージェントの時計に基づいたタイムスタンプになる。
一致するブランチは、トランザクションの呼び出されたコンポーネントのシーケンスの開始及び終了ポイントの数と同じ数のノードを有するブランチであり、そのブランチ内のノードのシーケンスは、トランザクションの呼び出されたコンポーネントのシーケンスの開始及び終了ポイントと一致する。ツリーのルートノードは、この照合では考慮する必要はない。場合によって、ブランチが、トランザクションの呼び出されたコンポーネントのシーケンスの開始及び終了ポイントが一致するノードのシーケンスを有するが、付加的なノードも同様に有し得る。この場合、トランザクションの呼び出されたコンポーネントのシーケンスに対する開始及び終了ポイントの部分的な一致があり、判断ステップ904は、偽[ノー]になる。この場合、対象トランザクションのトレースは、ツリーデータ構造のブランチとして正確には表されておらず、ツリーデータ構造のブランチと共通の広がりを持つ呼び出されたコンポーネントのシーケンスの開始及び終了ポイントの新しいシーケンスを提供する。この判定に応答して、この判断ステップ910は、呼び出されたコンポーネントのシーケンスを表すとともに呼び出されたコンポーネントのシーケンスと共通の広がりを持つブランチを有するツリーデータ構造を更新することを含む。例えば、これは、図7Bの「エージェント1−新しい−ブランチ」である。共通の広がりを持つブランチは、シーケンスと同じ開始及び終了ポイントを有する。
ステップ912で、更新は、新しいブランチで、トランザクショントレースにおける1以上の呼び出されたコンポーネントの開始及び終了ポイントを表すノードを提供することを含む。例えば、図7Bでは、エージェント1−新しい−ブランチは、新たに付加されたノード760、762及び764を含む。新しいブランチは、1以上の既存のブランチと部分的に重複する。例えば、図7Bにおいて、ノード702は、「エージェント1−ブランチ1」、「エージェント1−ブランチ2」及び「エージェント1−新しい−ブランチ」で存在(重複)しており、「エージェント1−新しい−ブランチ」が、「エージェント1−ブランチ1」及び「エージェント1−ブランチ2」と重複している。
このように新しいトランザクションの呼び出されたコンポーネントのシーケンスは、既存のブランチ(例えば、「エージェント1−ブランチ1」及び「エージェント1−ブランチ2」)の少なくとも1つと重複する部分(ノード702)、及び、どの既存のブランチとも重複しない部分(ノード760、762及び764を含むブランチ部分)を有するブランチ(例えばエージェント−新しい−ブランチ)によって、ツリーデータ構造内で表される。新しいノード(ノード760、762及び764)は重複しない部分において現れるが、重複する部分では現れない。
図9において、ステップ914は、ツリーデータ構造の更新が1以上の呼び出されたコンポーネントに関連付けられた静的データをノードにインデックス付けすることを含むことを示している。コンポーネントの静的データは、コンポーネントの計測からエージェントによってアクセスされ、図8B3に関連して説明したようにインデックス付けされる。
ステップ916は、ツリーデータ構造の更新がエージェントからマネージャへ報告されることを含む。更新は、対象トランザクションのインスタンスの1以上の呼び出されたコンポーネントの開始及び終了ポイントを識別し、関連付けられた静的データにインデックス付けされる。この報告は、図8A1又は8A2で説明したようなブランチ定義、及び図8B1又は8B2で説明したような静的データへの参照という形式で提供される。
新トランザクションに基づいてツリーデータ構造を更新した後、判断ステップ904において、トランザクショントレースの呼び出されたコンポーネントのシーケンスが更新されたツリーデータ構造と再度比較され、真[イエス]になる。ステップ906は、動的データ及び一致するブランチの識別子をエージェントからマネージャに報告することを含む。この報告は、例えば、図8Cのレコードの形式で提供される。この報告を受信すると、マネージャは、エージェントのツリーデータ構造に同期するようにそのツリーデータ構造を更新する。したがって、データを通信経路に送信するために必要なバンド幅の量及び/又はそのようなデータを通信及び格納するために必要なメモリの量のようなオーバーヘッドコストを削減しながら、エージェントは、効率的にトランザクションをマネージャに報告することができる。
図10Aは、エージェントから受信するように、例えば図7A1にあるように、動的データのレコード及びツリーデータ構造のブランチの識別子に基づいて、マネージャがユーザインタフェースを提供するプロセス[処理]の例を示す。ステップ1000は、コンポーネントの開始及び停止ポイントなどによって、少なくとも1つのアプリケーションの呼び出されたコンポーネントのシーケンスを表すブランチを有する、マネージャのツリーデータ構造を保守することを含む。ステップ1002は、動的データ及び一致するブランチの識別子の報告をエージェントから受信することを含む。ステップ1004は、識別子に基づいて、呼び出されたコンポーネントのシーケンスを識別することを含む。これは、「エージェント1−ブランチ1」が、最終ノードの識別子が「0:0:0:0:0」であるブランチによって識別されることを判定し、図8A1にあるようにレコードにアクセスして、このブランチが、開始C1、開始2、終了2及び終了C1のコンポーネントシーケンスを含むことを判定することを伴う。
或いは、ステップ1004は、エージェント1の最終ノード0:0:0:0:0がマネージャの最終ノード0:0:0:0:0:0:0:0:0に対応することを判定するために図7C2にあるようにレコードにアクセスすること、並びに「マネージャ−ブランチ1」が、マネージャの最終ノード0:0:0:0:0:0:0:0:0によって識別され、図8A3

にあるようにレコードにアクセスして、このブランチが開始C1、開始C2、開始C5、開始C6、終了C6、終了C5、終了C2、及び終了C1のコンポーネントのシーケンスを含むことを判定することを含む。
ステップ1006は、識別子に基づいて、トランザクションの呼び出されたコンポーネントに関連付けられた静的データを調べることを含む。これは、例えば、ノード/ブランチの識別子「0:0:0:0:0」及びブランチの各ノードにインデックス付けされているstatic#data#C1を識別するために、図8B1にあるようなレコードにアクセスすることを伴う。或いは、これは、図8B4にあるようにレコードにアクセスして、例えば、ノード/ブランチの識別子「0:0:0:0:0:0:0:0:0」及びブランチの各ノードにインデックス付けされているstatic#data#C1を識別することを伴う。
ステップ1008は、トランザクションの呼び出されたコンポーネントのシーケンスのトランザクショントレースを有するユーザインタフェース(UI)を提供することを含む。ブランチがブランチの各コンポーネントの開始及び終了を識別するので、トランザクショントレースは識別されたブランチから直接、提供される。ユーザインタフェース上に提供されたトランザクショントレースの例が図6から6I、11A、及び、11Bに示されている。ステップ1010は、例えば、図11(A)及び(B)に示されるように、静的及び/又は動的データに基づいてトランザクショントレースに注記を加えることを含む。これは、静的及び/又は動的データをユーザインタフェース上に表示することを含む。別の例として、図14Aから14Cに関連して説明する、UIが提供される。
図10Bは、1以上のエージェントから受信した更新に基づいて、図7A1から7C1にあるように、マネージャがツリーデータ構造を更新するプロセスの例を示す。ステップ1020は、例えばコンポーネントの開始及び停止ポイントなどによって、少なくとも1つのアプリケーションの呼び出されたコンポーネントのシーケンスを表すブランチを有する、ツリーデータ構造を保守することを含む。ステップ1022は、例えば第1サブシステムの第1エージェント及び第2サブシステムの第2エージェントなどの1以上のエージェントからツリーデータ構造の更新を受信することを含む。ステップ1024は、1つのエージェントから別のエージェントに更新を伝えることを含む。エージェントが同じソフトウェアの異なる複数のインスタンスを監視する場合、マネージャは、1つのエージェントから別のエージェントに受信された更新を渡す又は中継する。このように、エージェントのツリーデータ構造が同期をとられるように新しいトランザクションがエージェント間で迅速に伝達する。ステップ1026は、更新から呼び出されたコンポーネントのシーケンスを表すブランチによってマネージャのツリーデータ構造を更新することを含む。例えば、これは、図7Dの「マネージャ−新しい−ブランチ」を付加することを含む。更新は、例えば、図8B3のレコードに基づいて、マネージャのツリーデータ構造のレコードを更新することを伴う。
ステップ1028では、更新は、トランザクションの1以上の呼び出されたコンポーネントの開始及び終了ポイントを表すノードを提供することを含む。例えば、これは、図7Dにおけるマネージャ−新しい−ブランチのノード760、762及び764を付加することを含む。ステップ1030では、例えば図8B5のレコードに関連して説明したように、更新は、トランザクションの呼び出されたコンポーネントに関連付けされた静的データを、ノードにインデックス付けすることを含む。マネージャのツリーデータ構造への更新は、図7Dの「マネージャ−新しい−ブランチ」の例においては、エージェントのツリーデータ構造(例えば、ノード760、762及び764)のノードのいくつかを含むが、エージェントのツリーデータ構造のノード(例えば、ノード702)の他のものは含まないことに注意されたい。
図11(A)は、静的及び動的データを用いて注記を加えた、図6(A)のトランザクショントレースを示す。トランザクショントレースは、トランザクション/実行フローの全体像を提供する。ここで、注記がC1のためのグラフ領域600において、及びC2のためのグラフ領域602において提供されている。注記「methodC1|classC1|JARC1|dynamic#data#1」は、動的データによって続けられる3種類の静的データを含み、データの各部分が垂直バーによって区切られている。しかしながら、他のフォーマットも可能である。例えば、注記は、マウスオーバー又はホバーボックス、ツールチップ、あるいは、情報にアクセスするための右クリックによる、ポップアップウィンドウ、別のウィンドウ又は表示画面など、トランザクショントレースのグラフ領域の外側、例えば上や横、に備えられる。動的データは、その外観、色、フォント、位置等々によって静的データとは別に区別される。
図11(B)は、静的及び動的データを用いて注記を加えた、図6(A)のトランザクショントレースを示す。注記は、C5のためのグラフ領域610において、及び、C6のためのグラフ領域612において提供される。図11(A)及び(B)のトランザクショントレースは、サブシステムに亘って延長するトランザクションの動作をユーザにより一層の理解をもたらすために、同じユーザインタフェース上に同時に表示される。C1及びC2は、サブシステム1に存在し、C5及びC6は、サブシステム2に存在することを想起されたい。複数のサブシステムのクロックが、適切に同期がとられている場合は、複数のサブシステムの複数のトランザクショントレースは、共通のタイムライン参照を用いて表示される。同期が保証されない場合は、複数のサブシステムの複数のトランザクショントレースは、別々のタイムライン参照を用いて表示される。マネージャは、C2がC5を呼び出すときに提供する相関識別子に基づいて、ユーザインタフェースにおいて2つのトランザクショントレースを関連付けることを決定することができる。トレースが関連付けられる必要があることを示すためにツリーデータ構造を用いてトランザクショントレースを報告するとき、エージェントはマネージャに相関識別子を提供する。詳細情報については、2007年6月21日公開の”Correlating Cross Process And Cross Thread Execution Flows In An Application Manager”と題する、US2007/0143323を参照のこと。その内容は参照により本明細書に組み込まれる。
例えば、C2が「エージェント1−T1」のトランザクションで呼び出される場合、C2がC5を呼び出すときにそれは「エージェント1−T1」の識別子を含む。エージェント1は、「エージェント1−T1」のトランザクションに関してマネージャに報告する場合、「エージェント1−T1」の識別子を含む。同様に、エージェント2は、「エージェント2−T1」のトランザクションに関してマネージャに報告するとき、「エージェント1−T1」の識別子、及び、「エージェント2−T1」の識別子を含む。マネージャは、その後、「エージェント1−T1」の識別子及び「エージェント2−T1」の識別子によるトランザクション/トランザクショントレースが関連付けられていることを知る。
別の例では、ユーザインタフェースは、例えば、ノード及びノード間の辺を表示することなどによって、図7A1から7Dのツリーデータ構造を、直接、提供する。ステータス及び動的データはノード内又はノードの横に表示される。
図12Aは、それぞれのトランザクションのそれぞれのブランチにおける1つのコンポーネントに対する1つのノードにリンクされた収集部を有する図7A1のツリーデータ構造を示す。1以上の収集部は、ツリーデータ構造のノードに関連付けられている。1以上の収集部は、1つのノードに関連付けられ、1以上のノードは1つの収集部に関連付けられている。1つの収集部に関連付けられている1以上のノードは、1以上のコンポーネントを表す。
1つのアプローチでは、収集部は、ノードによって表されるコンポーネントの1以上のメトリックを収集する、エージェントコードのソフトウェアプロセスである。エージェントは、管理されるアプリケーションでメソッドのような計測されたコンポーネントに接続される組<エージェント メトリック、収集部>の基本データ構造を使用することができる。メトリックは、例えば、コンポーネントが呼び出されて、コンポーネントの計測コードがトリガされるときに収集される。例えば、メトリックは、ノードによって表されるコンポーネントのインスタンスが呼び出される回数である呼び出し回数、ノードによって表されるコンポーネントのインスタンスの応答時間である応答時間、複数の呼び出しに亘る応答時間の平均、エラーメッセージがノードによって表されるコンポーネントに関連付けられているか否かを示すエラーメトリック、又は本明細書で説明されるものを含む他の任意のメトリックを含み得る。収集部をツリー内のノードにリンクすることにより、ノードによって表されるコンポーネント呼び出しは、収集部のコンテキストにリンクされる。同様に、収集部は、ブランチによって一意的に表される各トランザクション、及び、そのブランチのコンテキストに対して収集部の一対一のリンク設定がある場合には、そのノードにのみリンクされる。
エージェントの有用な業務目的は、トランザクションの種類(トランザクションの分離可能性)によって分けられる固有のメトリックを提供することである。例を挙げると、例えば「書籍購入」トランザクション及び「CD購入」トランザクションのような与えられた顧客アプリケーション上の識別された各トランザクションのために、与えられたバックエンドに対する(又はバックエンド上で呼び出された特定のSQL文に対する)応答時間を報告したいと、する。この目的に向けたワンステップは、「トランザクション」メトリックセット、即ち、例えば、メトリックの値が、顧客のアプリケーションで呼び出された特定のトランザクションによって区別されるメトリック、を効率的に提供する能力である。
ツリーデータ構造は、この目的のために使用される。述べたように、ツリーは、トランザクションのポイント又はノードの、分岐するシーケンスを介してトランザクションを説明する。シーケンスの辺は、トランザクションセグメントと称される。トランザクション構造は、それが検出されるコードの寿命と同等のライフサイクルを有する。トランザクション構造は、修正されたトレーサでアプリケーションを計測するエージェントによって最初に検出される。トランザクション構造は、次に他のエージェント及びマネージャと共有される。トランザクション構造は、またマネージャのデータベースに恒久的に格納される。
エージェントは、トランザクション構造における各着目ポイントを1以上の収集部のセットで修飾する。各収集部は可能なメトリックの複数のセットに関連付けられている。エージェントは、そのメトリックに対する「数値」を収集し、エージェントの構造上の理由により、可能な各トランザクション経路の1つに関連付けられている特定の値を判定することが可能である。収集部のある種のものは、2以上のトランザクション構造のエレメント又はノードに関連付けられる。例えば、同時呼び出しの収集部は、収集されるメトリックに関連しているすべてのトランザクション構造のエレメントに関連付けられている。
また、エージェントは、他のエージェントによって検出されたトランザクション構造に関するマネージャからの更新を受信する。これにより、例えば、クロスJVMトランザクションの場合に、効率的に報告するエージェントを有することが可能となる。
この例では、収集部1200は、「エージェント1−T1」のトランザクションのノード706にのみリンクされており、収集部1202は、「エージェント−T4」のトランザクションのノード724にのみリンクされている。ノード706及び724は、両方ともC2の呼び出しの終了、例えばC2の停止時間を表すが、「エージェント1−T1」(「エージェント1−ブランチ1」によって表される)及び「エージェント1−T4」(「エージェント1−ブランチ4」によって表される)の各トランザクションの異なる複数のコンテキストにおけるものである。監視されたアプリケーションの性能をより一層理解できるようにするために、1以上のトランザクションのコンテキストに従って与えられたコンポーネントに対してメトリックを区別することは有益である。これは、例えば、コンポーネントに関する性能[パフォーマンス]の問題は、特定のトランザクションのコンテキストにおいては発生するが、別のコンテキストでは発生しないことを示している。問題のある特定のコンテキストは、さらに調査される。収集部は、例えばオペレータの経験に基づき、例えば、問題のある、コンポーネント及び/又はトランザクションを検出する自動化された分析に基づいて、設定される。
収集部により、メトリックが取得され、ツリーにおける1以上の選択されたノードに基づいて選択的に報告される。コンポーネントが計測されることで、コンポーネントのすべての発生に関して、メトリックを取得し及び報告することが可能である。しかしながら、これは不必要なオーバーヘッドコストにつながる。必要に応じた場合にのみメトリックを収集し及び報告することが効率的である。トランザクション別(transaction-segregated)のメトリックを収集し報告することもまた有益である。例えば、ノード706で収集部1200によって取得されたメトリックは、「エージェント1−T1」のコンテキストでは呼び出しC2のためのものである。或いは、収集部がノード706、724及び732にリンクされた場合、取得されたメトリックは、C2が呼び出されるすべてのトランザクションよりも少ないサブセットに特定されるわけではない。収集部1200及び本明細書の収集部の他の表記は、1以上の種類のメトリックを収集する実体を表すものである。
述べたように、別のアプローチでは、1つの収集部は複数のトランザクションにリンクされ、収集部によって取得された少なくとも1つのメトリックが複数のトランザクションのコンポーネントに関連付けられる。一般的に、様々な以下のようなバリエーションが可能である。(1)収集部の少なくとも1つのメトリックは、1つのトランザクションにおけるコンポーネントのインスタンスに関連付けられる(例えば、収集部1200は、図12Aの「エージェント1−T1」におけるノード706のC2のインスタンスにリンクされる)。(2)収集部の少なくとも1つのメトリックは、1つのトランザクションにおける1つのコンポーネントの複数のインスタンスに関連付けられる(例えば、収集部1206は、図12Cの「エージェント1−T3」におけるノード712及び718のC3のインスタンスにリンクされる)。(3)収集部の少なくとも1つのメトリックは、1つのトランザクションにおいて、1つのコンポーネントの、1つのコンポーネントのインスタンス、及び他のコンポーネントの、1つのコンポーネントのインスタンスに関連付けられる(例えば、収集部1200は、図12Aの「エージェント1−T1」におけるノード706のC2のインスタンスにリンクされており、収集部1200によって修正されたものもまた「エージェント1−T1」におけるノード708のC1のインスタンスにリンクされる)。並びに、(4)収集部の少なくとも1つのメトリックは、1つのトランザクションにおいて1つのコンポーネントの、1つのコンポーネントのインスタンスに、及び他のトランザクションにおいて他のコンポーネントの、1つのコンポーネントのインスタンスに関連付けられる(例えば、収集部1200は、図12Aの「エージェント1−T1」におけるノード706のC2のインスタンスにリンクされており、収集部1200によって修正されたものもまた「エージェント1−T2」におけるノード714のC1のインスタンスにリンクされる)。(4)の場合、少なくとも1つのメトリックは、例えば1つのトランザクション及び別のトランザクションなど、複数のトランザクション対するものである。
図12Bは、収集部を伴う図7A1のツリーデータ構造を示すものであり、収集部は、異なる複数のトランザクションの異なる複数のブランチにおける同じコンポーネントの複数の実体のノード群にリンクされている。収集部1204は、ツリー内で一対多の関係でノード、即ち、異なる複数のトランザクションに存在するノード706及び724にリンクされている。この場合、収集部1204によって取得されるメトリックは、C2の異なる複数のインスタンス及び複数のトランザクションに亘って集約される。メトリックは、収集部1204のコンテキスト内で収集され、一つの特定のトランザクションのコンテキスト内では収集されない。メトリックは、「エージェント1−T1」及び「エージェント1−T4」を含む複数のトランザクションによる一つのグループのコンテキスト内で収集される。例えば、コンポーネントの1以上のインスタンスが複数のトランザクションを含む一つのグループ内で呼び出されたことを知ることが望ましいときには、有益であるが、各呼び出しを行ったトランザクションを区別する必要はない。
図12Cは、収集部を伴う図7A1のツリーデータ構造を示すものであり、ここでの収集部は、複数のトランザクションの、同じ一つのブランチにおける同じコンポーネントの複数の実体のノード群にリンクされている。ここで、収集部1206は、ツリー内で一対多の関係でノード群にリンクされている、即ち、収集部1206は、「エージェント1−T3」のトランザクションにおける、同一のトランザクション内に存在し、及び同じコンポーネントC3の異なるインスタンスを表す、ノード712及び718にリンクされている。この場合、収集部1206によって取得されるメトリックは、「エージェント1−T3」のトランザクションにおけるC3の異なる複数のインスタンスに亘って集約される。メトリックは、一つの固有のトランザクションのコンテキストにおいて収集される。これは、コンポーネントの1以上のインスタンスがトランザクション内で呼び出されたことを知ることが望ましいときには、有益であるが、異なる複数のインスタンスのメトリック群を区別する必要はない。
図7A1に関連して説明したように、「エージェント1−T2」は、ノード702、710、712及び714のシーケンスを含み、「エージェント1−T3」は、ノード702、710、712、716、718及び720のシーケンスを含み、「エージェント1−T4」は、ノード702、710、712、722、724及び726のシーケンスを含むことを想起されたい。1以上のメトリックが、ノード712に対応するコンポーネント呼び出しに対して取得されるとき、3つの異なるノードのシーケンスのいずれもがノード712に続くため、トランザクションは、まだ一意的に定義されないことに注意されたい。この場合、複数のメトリックが収集され、次いで、そのトランザクションが特定のものではない場合、そのメトリックは破棄されマネージャには報告しないということが決定される。これは、1つのアプローチでは、収集部1206がノード712にリンクされ、ノード712が、特定の一つのトランザクション、即ち、「エージェント1−T2」、「エージェント1−T3」又は「エージェント1−T4」の一部である場合にだけである。
対照的に、1以上のメトリックがノード718に対応するコンポーネント呼び出しのために取得されるとき、トランザクション(エージェント1−T3)は、唯一のノードのシーケンスがノード718に続くことから、一意的に定義される。この場合、複数のメトリックは収集され、それらのメトリックがマネージャに報告されるという決定がなされる。一例として、エージェントは、例えばメトリックのような情報をマネージャに定期的に、例えばほんの短い間、報告する。通常、トランザクションは、終了するか、又はそうでなければ、次の報告時間以前に、一意的に識別し得るポイントに進む。エージェントは、未特定のトランザクションのメトリックを収集すると、そのトランザクションが特定されて、
メトリックを破棄するか、マネージャに対して報告するか、あるいは、その他の行動をとるか、が判定されるときまでそのメトリックを保持する。
他のアプローチでは、メトリックを報告するか否かについての判定は、トランザクションが完了して識別された後に行われる。トランザクション別のメトリックが提供される、エージェント及びマネージャによる処理にそれぞれ関連している、図16A及び16Bを参照されたい。
図12Aから12Cに示されるように、異なる種類の収集部は、組み合わせて使用してもよい。
図13Aは、図12Aのツリーデータ構造における、収集部1200及び1202についての参照のレコードを示す。エージェント及びマネージャは、例えば、レコードを保持することができる。レコードの第1エントリは、収集部1200が、コンポーネントC2及び「エージェント1−T1」のトランザクションを表し、0:0:0:0の識別子を有するノードにリンクされていることを示す。レコードの第2エントリは、収集部1202が、コンポーネントC2及び「エージェント1−T4」のトランザクションを表し、0:0:1:0:2:0の識別子を有するノードにリンクされていることを示す。
図13Bは、図12Bのツリーデータ構造における、収集部1204についての参照のレコードを示す。このレコードの第1エントリは、収集部1204が、コンポーネントC2及び「エージェント1−T1」のトランザクションを表し、0:0:0:0の識別子を有するノードにリンクされていることを示す。レコードの第2エントリは、収集部1204が、コンポーネントC2及び「エージェント1−T4」のトランザクションを表し、0:0:1:0:2:0の識別子を有するノードにもまたリンクされていることを示す。
図13Cは、図12Cのツリーデータ構造における、収集部1206についての参照のレコードを示す。レコードの第1エントリは、収集部1206が、コンポーネントC3及び「エージェント1−T3」のトランザクションを表し、0:0:1:0の識別子を有するノードにリンクされていることを示す。レコードの第2エントリは、収集部1206が、コンポーネントC3及び「エージェント1−T3」のトランザクションを表し、0:0:1:0:1:0の識別子を有するノードにもまたリンクされていることを示す。
図14Aは、図13Aのツリーデータ構造に基づくユーザインタフェースの例を示す。様々な種類のユーザインタフェース(UI)の表示は、1以上のエージェントからマネージャによって受信される、メトリック、ブランチの識別子及び収集部の識別子を含んでいる情報に基づいて提供される。1つの可能なアプローチにおいて、UIの表示1400は、ツリーデータ構造及びそのノードを含む。線の色、パターン、幅又は塗りつぶし色若しくはパターンなどの視覚的特徴は、着目する1以上のトランザクションのノード群を識別し、着目していない1以上のトランザクションのノード群からこれらを区別するために使用される。同様に、視覚的な特徴は、着目しているコンポーネントを識別し、着目していないコンポーネントからこれらを区別するために使用される。
例えば、太長破線は、「エージェント1−T1」を識別するために、ノード702、704、706及び708に使用され、太短破線は、「エージェント1−T4」を識別するために、ノード702、710、712、722、724及び726に使用される。領域1402は、収集部1200によって収集されたデータに基づいて、ノード706によって表されたコンポーネントのインスタンスについてのメトリックの例を提供する。領域1404は、収集部1202によって収集されたデータに基づいて、ノード724によって表されたコンポーネントのインスタンスについてのメトリックの例を提供する。メトリックは、例えば、「エージェント1−T1」のトランザクションのコンテキストにおける、あるいは、それとは別に「エージェント1−T4」のコンテストにおける、エラー、平均応答時間、及び、呼び出し回数を含むことができる。
図14Bは、図13Bのツリーデータ構造に基づくユーザインタフェースの例を示す。UIの表示1410において、UIの表示1400にあるように、太長破線は、「エージェント1−T1」を識別するために、ノード702、704、706及び708に使用され、太短破線は、「エージェント1−T4」を識別するために、ノード702、710、712、722、724及び726に使用される。領域1412は、収集部1200によって収集されたデータに基づいて、ノード706及び724によって表されたコンポーネントのインスタンスについてのメトリックの例を提供する。メトリックは、例えば、「エージェント1−T1」及び「エージェント1−T4」を含むトランザクションのグループのコンテキストにおける、エラー、平均応答時間及び呼び出し回数を含むことができる。
図14Cは、図13Cのツリーデータ構造に基づくユーザインタフェースの例を示す。UIの表示1420において、太長破線は、「エージェント1−T3」を識別するために、ノード702、710、712、716、718及び720に使用される。領域1422は、収集部1206によって収集されたデータに基づいて、ノード712及び718によって表されたコンポーネントのインスタンスについてのメトリックを提供する。メトリックは、例えば、「エージェント1−T3」のトランザクションのコンテキストにおける、エラー、平均応答時間、及び、C3の複数の実体の呼び出し回数を含むことができる。
同じようなUIが他のサブシステムに提供される。UIは、また、図7C1及び7Dに関連して説明したように、複数のサブシステムからの複数のノードを結合することができる。
図15Aは、図5B及び14Aに対応するユーザインタフェースの例を示す。UI1500は、ノード/頂点、及びノードを接続する矢印/辺を有するツリーデータ構造を含む有効グラフである。各ノードは呼び出されているコンポーネントを表し、それは、1つのノードがコンポーネントの実行又は呼び出しの、開始又は終了を表す図14Aから14CのUIとは対照的である。各ノードは、1回以上開始及び停止するコンポーネントを表す。
ノードは、ルートノード1501、並びに1つの経路において、C1のノード1502、C2のノード1504、又はC3のノード1506、C3のノード1506、C5のノード1508、C6のノード1510及びC7のノード1512を含む。別の経路は、同様に、C2又はC3を呼び出すC4のノードを含む。矢印/辺1524は、ノード1502及び1504を接続しており、複数の辺部分を含む。1つの辺部分1520は、C2が「エージェント1−T1」のコンテキスにおいてC1によって呼び出されることを示しており、別の辺部分1522は、C2が「エージェント1−T4」のコンテキスにおいてC1によって呼び出されることを示している。さらに、辺部分1520及び1522は、それぞれの関連付けられたメトリックに基づいて、色、パターン又は太さなど様々な視覚的に異なる特徴を有する。各辺部分は、1以上の収集部に関連付けられることができ、その1以上の収集部によってメトリックが収集される。
提供された例では、辺部分1520及び1522は、例えば、1つのトランザクション(エージェント1−T4)に起因する同じコンポーネント(C2)の呼び出しの回数に対する、別のトランザクション(エージェント1−T4)に起因する同じコンポーネントの呼び出しの回数に基づいて、太さによって互いに視覚的に区別される。この場合、辺部分1520は、辺部分1522よりも太く、例えば幅広である。例えば、辺部分1522の2倍の太さである辺部分1520は、C1が「エージェント1−T4」においてよりも「エージェント1−T1」で2倍呼び出されたことを示している。
別の例では、辺部分1520及び1522の相対的な太さは、「エージェント1−T4」に起因するC2のエラーの数に対する、「エージェント1−T4」に起因するC2のエラーの数に基づくものである。さらに別の例では、辺部分1520及び1522の相対的な太さは、「エージェント1−T4」に起因するC2平均応答時間に対する、「エージェント1−T4」に起因するC2の平均応答時間に基づくものである。
別の例では、赤などの暖色は、比較的高い呼び出し回数を示すために使用される一方で、青などの寒色は、比較的低い呼び出し回数を示す。別のアプローチで、赤はエラーの比較的高い数又は比較的高い平均応答時間を示す一方で、青はエラーの比較的低い数又は比較的低い平均応答時間を示す。他の多くの選択が可能である。
さらに、表示領域1524及び1526は、それぞれ、辺部分1520及び1522に関連付けられているメトリックを提供する。各辺部分1520及び1522は、このように少なくとも1つのメトリックで修飾されている。表示領域1524は、「エージェント1−T1」の平均応答時間に対して設定された警告の「注意」状態を示す。平均応答時間が、例えば、閾値を超えるときにこの状態に設定される。一般的に、警告は、管理対象のコンピューティングデバイスの全体的な性能に対して、及び、管理対象のコンピューティングデバイスによる、例えば、別の管理対象のコンピューティングデバイス又は未計測のバックエンドデバイスの呼び出しに対して設定される。これらの警告は、ユーザによって作成されて設定されてもよい。警告は、また業務トランザクションに対して定義されてもよい。警告が定義される場合、それはいくつかの状態、例えば、正常(緑)、注意(黄色)又は危険(赤)のうちの1つによって表される。警告は、収集部によって取得されるトランザクション別のメトリックに対しても設定することができ、これによって、その警告は、1以上の特定のトランザクションに固有のものとなる。これは、ユーザがシステムを理解したり診断したりするのを助ける有益な情報を提供する。
UIは、表示領域1524又は1526内の複数のメトリックの1つのテキスト表記をユーザがクリックする、又は選択することを可能にし、選択されたメトリックのエッジ部分の幅又は他の視覚的特徴を変化させることができる。あるいは、プルダウンメニューなどの別のUIデバイスは、ユーザがUIを必要に応じて構成することを許容する。UIは、また、着目する期間内にないデータを除去するなど、1以上の特定の基準を満たしていないデータを除去することができる。UIは、ユーザの選択に応じて、1以上の報告されたエージェント/サブシステムに基づくデータを表示することができる。
UIにおける他のノード間の経路も同様に、使用可能なトランザクション別のメトリックに基づいて強調される。UIは、また、ユーザに図11A及び11Bにあるようなトランザクショントレースを表示することを可能にする。例えば、UIは、図15A又は15BのUIを提供するのに使われた個別の複数のトランザクションのリストを提供することができ、その複数のトランザクションのうちの一つを選択させて対応するトランザクショントレースを表示することができる。
コンポーネントの性能メトリックをトランザクション又はトランザクションのグループによって区別する能力により、オペレータは、アプリケーションの性能をもっと容易に理解したり、コンポーネントに関連して、問題を診断したりすることができる。例えば、トランザクション別のメトリックを使用しないアプローチは、コンポーネントC1が異常に高い平均応答時間を有することを示すにすぎない。これと対照的に、トランザクション別のメトリックに基づいて、UIは、「エージェント1−T1」及び「エージェント1−T4」の複数のトランザクションの夫々に対して平均応答時間を示すことができ、これによって、その複数のトランザクションのうちの特定の一つが、応答時間が遅いことの原因となっていることを判定することがおそらく可能となる。
別の例として、電子商取引のウェブサイトの管理対象のコンピューティングデバイスが、顧客が商品アイテムの買い物をすることを可能にすること、及び、顧客の支払いの処理を可能にすること、を含むトランザクションを実行すると仮定する。あるいは、管理対象のコンピューティングデバイスが、顧客に様々な時間帯に買い物をすることを可能にすることを含むトランザクションを実行すると仮定する。トランザクション別のメトリックを提供する能力は、これら2つのトランザクションが別々に分析されることを可能にする。本明細書で提供されるアプローチは、収集されるデータの種類及びそれを収集するための処理を最適化する。
図15Bは、図15Aに代わるユーザインタフェースの例を示す。UI1530は、この例では、「エージェント1−T1」(アイコン1532によって示される)及び「エージェント1−T4」(アイコン1534によって示される)の、着目するトランザクションに焦点を合わせている。C1のノード1536は、トランザクション内の第1コンポーネントを表し、いずれもがC1によって呼び出される、C3のノード1537又はC2のノード1538は、トランザクション内の第2コンポーネントを表す。辺1545は、図15Aに関連して説明したように、それらの相対的な幅などによって互いに視覚的に区別される、辺部分1542及び1544を含む。メトリック表示領域1540及び1546は、それぞれ、辺部分1542及び1544にリンクされる。
図15Cは、ユーザインタフェースの別の例である。このUI1560では、提供される詳細レベルは、デバイス上で実行するアプリケーションのソフトウェアコンポーネントのレベルというよりも、むしろ管理対象のコンピューティングデバイスのレベルである。管理対象のコンピューティングデバイスは、ノード1574及び1576によって示される、例えば、図1Aのサーバ103及び109に対応する、アプリケーションサーバである。UI1560は、この例では、トランザクション1(T1)(アイコン1562によって示される)及びトランザクション2(T2)(アイコン1564によって示される)と一般的に称される、着目するトランザクションに焦点を合わせている。アプリケーションサーバ1576は、辺1575の、辺部分1568及び1570によってそれぞれ示されているように、T1及びT2に関連して、アプリケーションサーバ1574に呼び出される。辺部分1568及び1570は、前述したように、それらの相対的な幅などによって互いに視覚的に区別される。メトリック表示領域1566及び1572は、それぞれ辺部分1568及び1570にリンクされている。もちろん、UIは、ノードの間に2以上の矢印、及び3以上のノードを表示する。実際には、複雑なUIは、数日間かかって取得されるメトリックに基づいて、数百又は数千ものノードを伴って得られる。そのようなUIは、ユーザが傾向を視覚的に見つけることを可能にする。例えば、UIが、比較的に応答の遅いトランザクションを示すのに赤などの暖色を使用する場合、ユーザは、赤い辺を見つけ、赤い辺を有するエリアを拡大するようにUIを調節して、問題をさらに調査することができる。同様に、UIは、呼び出し回数が相対的に高いエリアをユーザが見つけることを可能にする。
自動化された報告は、例えばリストの形式で提供される。そのリストは、問題が存在することをメトリックが示す、コンポーネント及び/又は管理対象のコンピューティングデバイスを、それらに関連付けられているトランザクションとともに識別し得る。
図16Aは、少なくとも1つのアプリケーションについて、エージェントがトランザクション別のメトリックを取得するプロセス[処理]の一例を示す。ステップ1600は、例えば、コンポーネントの開始及び停止ポイントなど、少なくとも1つのアプリケーションの、呼び出されたコンポーネントのシーケンスを表す複数のブランチを含むツリーデータ構造を保守するエージェントを含む。エージェントは、また、複数のブランチの1以上のノードにリンクされた1以上の収集部を保守する。ステップ1602は、トランザクションの期間中、少なくとも1つのアプリケーションの、呼び出されたコンポーネントのシーケンスを識別すること、及び、呼び出されたコンポーネントのメトリックを取得することを含む。例えば、これはトランザクションをトレースすることを含む。ステップ1604は、ツリーデータ構造内のブランチと一致するブランチを識別することを含む。ステップ1606は、1以上の収集部にリンクされている1以上のノードのトランザクション別のメトリックを識別することを含む。ステップ1608は、エージェントからマネージャに、トランザクション別のメトリック、一致したブランチの識別子、及び、1以上の収集部の識別子を報告することを含む。述べたように、メトリックは、例えば数分ごとに定期的に報告され、その中で、多くのトランザクションのメトリックが典型的に取得され報告される。ステップ1610では、エージェントは、ステップ1606でトランザクション別に識別されないメトリックを破棄してマネージャに報告しない、とすることができる。必要に応じて、エージェントは、トランザクション別でないメトリックを報告してもよい。1つのアプローチでは、トランザクション別ではないとき、メトリックの縮減されたセットが報告される。
図16Bは、図16Aのプロセス[処理]に対応しており、エージェントからのトランザクション別のメトリックの報告に基づいてマネージャがユーザインタフェースを提供するプロセス[処理]の一例を示す。ステップ1620は、少なくとも1つのアプリケーションの呼び出されたコンポーネントのシーケンスを表すブランチを有するマネージャのツリーデータ構造を保守することを含む。ステップ1622は、トランザクション別のメトリック、一致するブランチの識別子、及び、1以上の収集部の識別子、の1以上の報告を受信することを含む。ステップ1624は、一致するブランチの識別子に基づいて、トランザクションの呼び出されたコンポーネントのシーケンスを識別することを含む。ステップ1626は、1以上の収集部の識別子に基づいて、トランザクション別のメトリックにアクセスすることを含む。ステップ1628は、図14Aから15Bに示されるように、トランザクション及び関連付けられたトランザクション別のメトリックを示すユーザインタフェース(UI)を提供することを含む。例えば、トランザクション別のメトリックは、領域1402、1404、1412、1422、1524、1526、1540及び1546において提供される。UIは、またトランザクション別のメトリックに基づいた、辺部分(例えば、図15A及び15Bの1520、1522、1542及び1544)の視覚的特徴を設定する。
別の実施形態は、アプリケーションを監視するためにコンピュータに実装される方法を含む。その方法は、複数のブランチを有するツリーデータ構造を保守すること、各ブランチは、それぞれのトランザクションの期間中、アプリケーションにおいて呼び出されたコンポーネントの各シーケンスを表す;対象トランザクションの期間中、エージェントを用いて、そのアプリケーションにおいて呼び出されたコンポーネントのシーケンス、及び、その対象トランザクションの呼び出された複数のコンポーネントの夫々の開始及び終了ポイントの時刻を識別すること;その複数のブランチのうちの一つを、対象トランザクションの呼び出されたコンポーネントのシーケンスに対して一致するブランチとして識別すること; 識別することに対応して、開始及び終了ポイントの時刻と、一致するブランチの識別子をエージェントからマネージャに報告すること、を含む。
一例では、一致するブランチは、対象トランザクションの呼び出されたコンポーネントの開始及び終了ポイントを表すノードを有し;対象トランザクションの呼び出されたコンポーネントの終了ポイントを表すノードの1つが、一致するブランチの最終ノードである;及び、一致するブランチの識別子は、一致するブランチの最終ノードの識別子を有し、一致するブランチの最終ノードの識別子は、その一致するブランチを一意的に識別する。
一例では、一致するブランチは、対象トランザクションの呼び出されたコンポーネントの開始及び終了ポイントを表すノードを有する;及び、対象トランザクションの呼び出されたコンポーネントに関連付けられた静的データは、対象トランザクションの呼び出されたコンポーネントの開始及び終了ポイントを表すノードにインデックス付けされている。
いくつかの例では、静的データは、少なくとも1つのクラス及びメソッドの名称を有する;静的データは、トレースされたクラスが展開されるアーカイブファイルの名称を有する;又は、静的データは、少なくとも1つのテキスト文字列、コンポーネントの種類及びポート番号を有する。
一例では、対象トランザクションの期間中、エージェントは、開始及び終了ポイントの時刻以外の動的データを取得し、開始及び終了ポイントの時刻以外の動的データは、対象トランザクション以前に知られることはない;及び、報告は、開始及び終了ポイントの時刻以外の動的データをマネージャに報告することを含み、動的データは、対象トランザクションの呼び出されたコンポーネントの開始及び終了ポイントを表す一致ブランチ内のノードにインデックス付けされ、動的データはメソッドに渡されたパラメータの値を含む。
一例では、ツリーデータ構造は、それぞれのトランザクションの期間中、アプリケーションにおいて呼び出されたコンポーネントのそれぞれのシーケンスをトレースすることによって取得される。
一例では、別の対象トランザクションの期間中、アプリケーションにおいて呼び出されたコンポーネントの他のシーケンスを識別するためにエージェントを使用すること;呼び出されたコンポーネントの上記別のシーケンスがツリーデータ構造内に表されているか否かを判定すること;呼び出されたコンポーネントの上記別のシーケンスがツリーデータ構造内に表されていない場合に対象トランザクションの呼び出されたコンポーネントの上記別のシーケンスを表すようにツリーデータ構造を更新すること;更新することは:(i)別の対象トランザクションの1以上の呼び出されたコンポーネントの開始及び終了ポイントを表すノードを提供すること、及び、(ii)別の対象トランザクションの1以上の呼び出されたコンポーネントに関連付けられた静的データをノードにインデックス付けすること。
一例では、エージェントは、ツリーデータ構造の更新をマネージャに報告し、その報告に応答して、マネージャが対応するツリーデータ構造を更新する。
別の実施形態は、コンピュータシステムを含み、コンピュータシステムが:ソフトウェア命令を格納する記憶装置;ソフトウェア命令が記憶装置から作業メモリにロードされる、作業メモリ;及び、ソフトウェア命令を実行するためのプロセッサを有し、そのソフトウエア命令は、実行時に:複数のブランチを有するツリーデータ構造を保守し、各ブランチは、それぞれのトランザクションの期間中、アプリケーションにおいて呼び出されたコンポーネントのそれぞれのシーケンスを表す;対象トランザクションの期間中、エージェントを使って、アプリケーションにおいて呼び出されたコンポーネントのシーケンス、及び、対象トランザクションの呼び出された複数のコンポーネントの各々の開始と終了ポイントの時刻を識別する;複数のブランチのうちの1つを、対象トランザクションの呼び出されたコンポーネントのシーケンスに一致するブランチとして識別し;その識別に応答して、エージェントからマネージャへ、一致するブランチの識別子と開始及び終了ポイントの時刻を報告する。
別の実施形態は、アプリケーションを管理する方法であってコンピュータに実装される方法を含む。その方法は:マネージャのツリーデータ構造を保守すること、マネージャのツリーデータ構造は、複数のブランチを有し、各ブランチは、それぞれのトランザクションの期間中、アプリケーションにおいて呼び出されたコンポーネントのそれぞれのシーケンスを表し、呼び出されたコンポーネントの各それぞれのシーケンスは、各それぞれのブランチにおいて、呼び出されたコンポーネントのそれぞれのシーケンスの呼び出されたコンポーネントの開始及び終了ポイントを表すノードのそれぞれのシーケンスによって表される;マネージャにおいて、アプリケーションの1つのインスタンスの呼び出されたコンポーネントのそれぞれのシーケンスのうちの1つを検出するエージェントから受信すること:(i)それぞれのブランチの1つの識別子は、呼び出されたコンポーネントのそれぞれのシーケンスのうちの1つを表し、及び(ii)呼び出されたコンポーネントのそれぞれのシーケンスの1つの、動的データである、動的データは、呼び出されたコンポーネントのそれぞれのシーケンスの1つの、呼び出されたコンポーネントの開始及び終了ポイントの時刻を有する;識別に応答して、呼び出されたコンポーネントのそれぞれのシーケンスの1つに関連付けられた静的データを調べるためにマネージャのツリーデータ構造を使用すること;及び、トランザクショントレースを示すユーザインタフェースを提供すること、トランザクショントレースは、呼び出されたコンポーネントのそれぞれのシーケンスの1つの、呼び出されたコンポーネントの開始及び終了ポイントの時刻を示し、及びトランザクショントレースは、静的データに基づいて註を加えられる、を有する。
一例では、エージェントは、少なくとも部分的には、マネージャのツリーデータ構造に対応するツリーデータ構造を保守し;実行されるその方法は:エージェントから、エージェントのツリーデータ構造への更新についての情報を受信すること、エージェントのツリーデータ構造は、少なくとも部分的には、マネージャのツリーデータ構造に対応する;及び、更新についての情報に応答して、マネージャのツリーデータ構造を更新することをさらに含む。
一例では、少なくとも1つの他のエージェントは、アプリケーションの他のインスタンスのために呼び出されたコンポーネントのそれぞれのシーケンスを検出し;他のエージェントは、ツリーデータ構造を保守し、他のエージェントのツリーデータ構造は、少なくとも部分的には、エージェントのツリーデータ構造に応答する;及び、実行されるその方法は:ツリーデータ構造のさらなるインスタンスを更新するときに使用するために他のエージェントへの更新についての情報を通信すること、をさらに有する。
一例では、更新についての情報は、更新に関連付けられた1以上の呼び出されたコンポーネントの開始及び終了ポイントを表すノードを識別する。
一例では、更新は、静的データを更新に関連付けられた1以上の呼び出されたコンポーネントの開始及び終了ポイントを表すノードにインデックス付けすることを有する。
以上、本発明の具体例を詳細に説明したが、これらは例示に過ぎず、本発明の範囲を限定するものではない。上記した技術には、以上に例示した具体例を様々に変形、変更したものが含まれる。上記した実施形態は、本発明の原理をベストに説明するために選定されたものであり、その実用に際しては、本発明が最適にその有用性を発揮するように、その特定用途に適するように当業者が様々に変形し得る。発明の範囲は、ここに添付した特許請求の範囲によって定められることを意図している。

Claims (20)

  1. コンピュータに実装される、アプリケーションを監視するための方法であって、その方法は:
    複数のブランチ(エージェント1−ブランチ1からエージェント1−ブランチ6、エージェント2−ブランチ1、エージェント2−ブランチ2)を有するツリーデータ構造を提供すること;ここで、
    前記複数のブランチのそれぞれは、前記アプリケーションの複数のトランザクションのそれぞれを表すとともに、各トランザクションの複数のコンポ―ネントの開始と終了ポイントを表すノード群(702、704、706、708,710、712、714、716、718、720、722、724、726、728、730、732、734、736、738、740)を有し;
    前記複数のブランチのうちの1つのブランチ(エージェント1−ブランチ1)は、前記複数のトランザクションのうちの1つのトランザクションを表し、第1収集部(1200)にリンクされて、1つのコンポーネントに対するノード(706)を有し、前記1つのブランチ内の前記1つのコンポーネントに対する前記ノードは、前記1つのトランザクション内の前記1つのコンポーネントの1つの呼び出しの開始(704)と終了(706)のうちの少なくとも1つを表す;
    呼び出されたコンポーネントの1つのシーケンスを検出するためにアプリケーションをトレースすること;トレースすることは、前記1つのトランザクション内の前記1つのコンポーネントの前記1つの呼び出しの開始と終了のうちの少なくとも1つを検出することを含む;
    トレースすることが、前記1つのトランザクション内の前記1つのコンポーネントの前記1つの呼び出しの開始と終了のうちの少なくとも1つを検出した場合に、前記第1収集部のコンテキスト内の前記1つのコンポーネントのメトリックを収集するために前記第1収集部を使用すること;
    呼び出されたコンポーネントの前記1つのシーケンスが前記1つのブランチと一致していることを判定するためにトレースの結果を前記ツリーデータ構造と比較すること;及び
    呼び出されたコンポーネントの前記1つのシーケンスが前記1つのブランチと一致していることの前記判定に応答して、マネージャに、前記第1収集部の前記コンテキスト内の前記1つのコンポーネントの前記メトリックを報告すること;
    を有する。
  2. コンピュータに実装される請求項1の方法であり:
    前記ツリーデータ構造の前記複数のブランチのうちの別のブランチは、前記複数のトランザクションのうちの別のトランザクションを表すとともに、第2収集部にリンクされて、前記1つのコンポーネントに対するノードを有し、前記別のブランチ内の前記1つのコンポーネントに対する前記ノードは、前記別のトランザクション内の前記1つのコンポーネントの1つの呼び出しの開始と終了のうちの少なくとも1つを表す;及び
    その方法は、さらに:
    呼び出されたコンポーネントの別のシーケンスを検出するために前記アプリケーションをさらにトレースすること;前記別のトランザクション内の前記1つのコンポーネントの前記1つの呼び出しの開始と終了の少なくとも1つを検出することを含み;
    前記第2収集部のコンテキスト内の前記1つのコンポーネントのメトリックを収集するために、第1収集部ではなく、第2収集部を使用すること;
    呼び出されたコンポーネントの前記別のシーケンスが前記別のブランチと一致していることを判定するために、さらなるトレースの結果を前記ツリーデータ構造と比較すること;及び
    呼び出されたコンポーネントの前記別のシーケンスが前記別のブランチと一致していることの前記判定に応答して、前記マネージャに、前記第2収集部の前記コンテキスト内の前記1つのコンポーネントの前記メトリックを報告すること、
    を有する。
  3. コンピュータに実装される請求項2の方法であり:
    前記1つのブランチの前記ノードは、前記1つのトランザクション内の前記1つのコンポーネントに対する前記メトリックが前記第2収集部の前記コンテキストにリンクされないように、前記第2収集部にリンクされておらず;
    前記別のブランチの前記ノードは、前記別のトランザクション内の前記1つのコンポーネントに対する前記メトリックが前記第1収集部の前記コンテキストにリンクされないように、前記第1収集部にリンクされていない。
  4. コンピュータに実装される請求項1から3のいずれか一項の方法であり:
    前記メトリックは、前記1つのブランチの識別子とともに前記マネージャに報告され、それにより前記メトリックを前記1つのトランザクションにリンクする。
  5. コンピュータに実装される請求項1から4のいずれか一項の方法であり:
    呼び出されたコンポーネントの前記1つのシーケンスが前記1つのブランチと一致していることを判定することは、前記1つのブランチを、呼び出されたコンポーネントの前記シーケンスに一致するブランチとして識別することを含む。
  6. コンピュータに実装される請求項1から5のいずれか一項の方法であり:
    呼び出されたコンポーネントの前記1つのシーケンスが前記1つのブランチと一致していることを判定することは、前記1つの呼び出しが前記1つのブランチに関連付けられている特定のエントリポイントを介して行われたことを判定することを含む。
  7. コンピュータに実装される請求項1から6のいずれか一項の方法であり:
    前記第1収集部は、トレースすること、比較すること、使用すること、及び報告することを実行するエージェントの一部である。
  8. コンピュータに実装される請求項1から7のいずれか一項の方法であり:
    前記メトリックは:
    前記第1収集部の前記コンテキスト内の前記1つのコンポーネントのエラー回数、前記第1収集部の前記コンテキスト内の前記1つのコンポーネントの呼び出し回数、及び、前記第1収集部の前記コンテキスト内の前記1つのコンポーネントの呼び出しの平均応答時間、のうちの少なくとも1つを含む。
  9. コンピュータに実装される請求項1から8のいずれか一項の方法であり:
    前記ツリーデータ構造の前記複数のブランチのうちの別のブランチは、前記複数のトランザクションのうちの別のトランザクションを表すとともに、第1収集部にリンクされて、前記1つのコンポーネントに対するノードを有し、前記別のブランチ内の前記1つのコンポーネントに対する前記ノードは、前記別のトランザクション内の前記1つのコンポーネントの1つの呼び出しの開始と終了の少なくとも1つを表す;及び
    その方法は、さらに:
    呼び出されたコンポーネントの別のシーケンスを検出するために前記アプリケーションをさらにトレースすること;さらにトレースすることは、前記別のトランザクション内の前記1つのコンポーネントの前記1つの呼び出しの開始と終了の少なくとも1つを検出することを含み;
    前記トレースすることが前記別のトランザクション内の前記1つのコンポーネントの前記1つの呼び出しの開始と終了の少なくとも1つを検出するとき、前記第1収集部の前記コンテキスト内の前記1つのコンポーネントの前記メトリックを収集するために、前記第1収集部を使用すること;及び
    呼び出されたコンポーネントの前記別のシーケンスが前記別のブランチと一致していることを判定するために、さらなるトレースの結果を前記ツリーデータ構造と比較すること;前記報告することは、呼び出されたコンポーネントの前記別のシーケンスが前記別のブランチと一致していることを判定することに応答するものであり、前記メトリックは、前記1つのトランザクション内及び前記別のトランザクション内の前記1つのコンポーネントの同時呼び出しの回数を提供する;
    をさらに有する。
  10. コンピュータに実装される請求項1から9のいずれか一項の方法であり:
    前記1つのブランチ内の前記1つのコンポーネントに対するノードは、前記1つのトランザクション内の前記1つのコンポーネントの別の呼び出しの開始と終了の少なくとも1つを表し;
    前記トレースすることは、前記1つのトランザクション内の前記1つのコンポーネントの前記別の呼び出しの開始と終了の少なくとも1つを検出することを含み;
    前記トレースすることが前記1つのコンポーネントの前記別の呼び出しの開始と終了の少なくとも1つを検出するとき、前記使用することは、前記第1収集部の前記コンテキスト内の前記1つのコンポーネントの前記メトリックを収集するために前記第1収集部を使用することを含む。
  11. コンピュータシステムであり:
    ソフトウェア命令を格納する記憶装置;
    ソフトウェア命令が記憶装置からロードされる作業メモリ;及び
    ソフトウェア命令を実行するためのプロセッサを備えており;
    前記ソフトウェア命令は、実行時に:
    複数のブランチを有するツリーデータ構造を提供し;ここで、
    複数のブランチのそれぞれは、前記アプリケーションの複数のトランザクションのそれぞれを表すとともに、各トランザクションの複数のコンポ―ネントの開始及び終了ポイントを表すノード群を有し;
    前記複数のブランチのうちの1つのブランチは、前記複数のトランザクションのうちの1つのトランザクションを表し、第1収集部にリンクされて、1つのコンポーネントに対するノードを有し、前記1つのブランチ内の前記1つのコンポーネントに対する前記ノードは、前記1つのトランザクション内の前記1つのコンポーネントの1つの呼び出しの開始と終了の少なくとも1つを表す;
    呼び出されたコンポーネントの1つのシーケンスを検出するためにアプリケーションをトレースし;該トレースは、前記1つのトランザクション内の前記1つのコンポーネントの前記1つの呼び出しの開始と終了の少なくとも1つを検出する;
    トレースが、前記1つのトランザクション内の前記1つのコンポーネントの前記1つの呼び出しの開始と終了の少なくとも1つを検出した場合、前記第1収集部のコンテキスト内の前記1つのコンポーネントのメトリックを収集するために前記第1収集部を使用し、
    呼び出されたコンポーネントの前記1つのシーケンスが前記1つのブランチと一致していることの判定を行うためにトレースの結果を前記ツリーデータ構造と比較し;
    前記判定に応答して、前記第1収集部の前記コンテキスト内の前記1つのコンポーネントの前記メトリックをマネージャに報告する。
  12. 請求項11のコンピュータシステムであり:
    前記ツリーデータ構造の前記複数のブランチのうちの別のブランチは、前記複数のトランザクションのうちの別のトランザクションを表すとともに、第1収集部にリンクされて、前記1つのコンポーネントに対するノードを有し、前記別のブランチ内の前記1つのコンポーネントに対する前記ノードは、前記別のトランザクション内の前記1つのコンポーネントの1つの呼び出しの開始と終了の少なくとも1つを表し;
    ソフトウェア命令は、実行時に:
    呼び出されたコンポーネントの別のシーケンスを検出するために前記アプリケーションのさらなるトレースを実行し;前記さらなるトレースは、前記別のトランザクション内の前記1つのコンポーネントの前記1つの呼び出しの開始と終了の少なくとも1つの検出を含む;
    さらなるトレースが前記別のトランザクション内の前記1つのコンポーネントの前記1つの呼び出しの開始と終了の少なくとも1つを検出したとき、前記第1収集部の前記コンテキスト内の前記1つのコンポーネントのメトリックを収集するために前記第1収集部を使用し;
    呼び出されたコンポーネントの前記別のシーケンスが前記別のブランチと一致していることの判定を行うために、前記さらなるトレースの結果と前記ツリーデータ構造を比較する;前記報告は、呼び出されたコンポーネントの前記別のシーケンスが前記別のブランチと一致していることの判定に応答しており、前記メトリックは、前記1つのトランザクション内と前記別のトランザクション内の前記1つのコンポーネントの同時呼び出しの回数を提供する。
  13. 請求項11又は12のコンピュータシステムであり:
    前記メトリックは、前記1つのブランチの識別子とともにマネージャに報告され、それにより前記メトリックを前記1つのトランザクションにリンクする。
  14. 請求項11から13のいずれか一項のコンピュータシステムであり:
    呼び出されたコンポーネントの前記1つのシーケンスが前記1つのブランチと一致しているという判定は、前記1つのブランチを、呼び出されたコンポーネントの前記シーケンスに一致するブランチとしての識別を含む。
  15. 請求項11から14のいずれか一項のコンピュータシステムであり:
    呼び出されたコンポーネントの前記1つのシーケンスが前記1つのブランチと一致しているという判定は、前記1つの呼び出しが前記1つのブランチに関連付けられている特定のエントリポイントを介して行われたという判定を含む。
  16. コンピュータに実装される、アプリケーションを管理するための方法であって、その方法は:
    前記アプリケーション内の複数のトランザクションをトレースするエージェントから報告を受信すること;前記報告は、複数のトランザクションのうちの1つのトランザクションと第1収集部の関連付けられた識別に対するメトリック、及び、前記複数のトランザクションのうちの少なくとも別のトランザクションと第2収集部の関連付けられた識別に対するメトリックを有しており;第1収集部は、トランザクション内のコンポーネント呼び出しに応答して前記トランザクションのメトリックを収集するために使用され、第2収集部は、前記少なくとも別のトランザクション内のコンポーネント呼び出しに応答して前記少なくとも別のトランザクションのメトリックを収集するために使用されたものであり;
    報告に基づいて、ユーザインタフェースを提供すること;ユーザインタフェースは、トランザクションを表す少なくとも第1辺部分及び少なくとも別のトランザクションを表す第2辺部分を有する辺を有する、辺によって接続された頂点を有する有効グラフを有し、第1辺部分は、第2辺部分から視覚的に区別される;前記報告は、トランザクションの識別子及び少なくとも別のトランザクションの識別子を有する;トランザクションの識別子は、ツリーデータ構造における1つのブランチの識別子を有する;前記少なくとも別のトランザクションの識別子は、前記ツリーデータ構造における別のブランチの識別子を有する;前記ツリーデータ構造は、前記アプリケーション内の複数のトランザクションを表す前記複数のブランチを有する;前記有効グラフは、前記1つのブランチの前記識別子に基づく前記第1辺部分及び前記別のブランチの前記識別子に基づく前記第2辺部分を示す;
    を有する。
  17. コンピュータに実装される請求項16の方法であり:
    前記報告は、前記トランザクションの識別子、及び、前記少なくとも別のトランザクションの識別子を有する;前記トランザクションの識別子は、前記ツリーデータ構造における前記1つのブランチの識別子を有する;前記少なくとも別のトランザクションの識別子は、前記ツリーデータ構造における前記別のブランチの識別子を有する;前記ツリーデータ構造は、前記アプリケーション内の複数のトランザクションを表す複数のブランチを有する;前記有効グラフは、前記1つのブランチの識別子に基づく前記第1辺部分及び前記別のブランチの識別子に基づく前記第2辺部分を示す。
  18. コンピュータに実装される請求項17の方法であり:
    前記第1辺部分は、前記トランザクションの前記メトリックによって修飾され、前記第2辺部分は、前記少なくとも別のトランザクションの前記メトリックによって修飾される。
  19. コンピュータに実装される請求項16から18のいずれか一項の方法であり:
    前記トランザクション内のコンポーネント呼び出しと前記少なくとも別のトランザクション内のコンポーネント呼び出しは、同じコンポーネントの異なるインスタンスのためのものであり、前記トランザクションの前記メトリックは、前記トランザクションのためのトランザクション別メトリックを有し、前記少なくとも別のトランザクションのメトリックは、前記少なくとも別のトランザクションのためのトランザクション別メトリックを有する。
  20. コンピュータに実装される請求項16から19いずれか一項の方法であり:
    前記第1辺部分は、トランザクションに起因する同じコンポーネントの呼び出し回数に対する少なくとも別のトランザクションに起因する同じコンポーネントの呼び出し回数を示すために、前記第2辺部分から視覚的に区別される。
JP2012180251A 2011-08-16 2012-08-15 分散環境におけるトランザクション別に区別されたメトリックの効率的収集 Expired - Fee Related JP5886712B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/211,143 2011-08-16
US13/211,143 US8688729B2 (en) 2011-08-16 2011-08-16 Efficiently collecting transaction-separated metrics in a distributed enviroment

Publications (3)

Publication Number Publication Date
JP2013050950A true JP2013050950A (ja) 2013-03-14
JP2013050950A5 JP2013050950A5 (ja) 2015-10-01
JP5886712B2 JP5886712B2 (ja) 2016-03-16

Family

ID=46875660

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012180251A Expired - Fee Related JP5886712B2 (ja) 2011-08-16 2012-08-15 分散環境におけるトランザクション別に区別されたメトリックの効率的収集

Country Status (4)

Country Link
US (1) US8688729B2 (ja)
EP (1) EP2560099A1 (ja)
JP (1) JP5886712B2 (ja)
KR (1) KR101797185B1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2020505688A (ja) * 2017-01-13 2020-02-20 オラクル・インターナショナル・コーポレイション 分散トランザクションミドルウェア環境における条件付き呼び出しパスモニタリングのためのシステムおよび方法
WO2021166118A1 (ja) * 2020-02-19 2021-08-26 日本電信電話株式会社 サービスグラフ生成装置、サービスグラフ生成方法、およびプログラム

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8774530B1 (en) * 2010-12-22 2014-07-08 Emc Corporation Automated diagnostic analysis of image data
US8782614B2 (en) 2011-04-08 2014-07-15 Ca, Inc. Visualization of JVM and cross-JVM call stacks
FR3003664A1 (fr) * 2013-03-21 2014-09-26 France Telecom Qualite de service offert par un serveur web
US20130282545A1 (en) * 2013-04-20 2013-10-24 Concurix Corporation Marketplace for Monitoring Services
WO2016018210A1 (en) * 2014-07-28 2016-02-04 Hewlett-Packard Development Company, L.P. Detection of abnormal transaction loops
US9805051B2 (en) * 2014-09-10 2017-10-31 Salesforce.Com, Inc. Synchronization and strategic storage of multiple versions of a file
US9779004B2 (en) * 2015-03-23 2017-10-03 Netapp, Inc. Methods and systems for real-time activity tracing in a storage environment
US10503781B2 (en) * 2015-04-14 2019-12-10 Sap Se Extending graph traversals with application logic
US9996324B1 (en) * 2017-01-17 2018-06-12 International Business Machines Corporation Cooperative creation of dataflow models using sparse random instrumentation
CN107330034B (zh) * 2017-06-26 2020-08-07 百度在线网络技术(北京)有限公司 一种日志分析方法和装置、计算机设备、存储介质
US10713287B1 (en) * 2018-04-06 2020-07-14 Express Scripts Strategic Development, Inc. Computerized method and apparatus for automated distributed ingest and presentation of multi-domain metrics
US10846192B2 (en) * 2018-10-31 2020-11-24 Cisco Technology, Inc. Transaction-based event tracking mechanism

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001060163A (ja) * 1999-08-24 2001-03-06 Nec Corp トランザクションログ情報の処理装置
JP2005302057A (ja) * 2005-06-13 2005-10-27 Hitachi Ltd 分散処理システム及びその性能モニタリング方法
JP2006157313A (ja) * 2004-11-26 2006-06-15 Nec Corp 経路作成システム、経路作成装置及び経路作成プログラム
US7293259B1 (en) * 2003-09-02 2007-11-06 Sun Microsystems, Inc. Dynamically configuring selected methods for instrument-based profiling at application run-time
JP2010117757A (ja) * 2008-11-11 2010-05-27 Nomura Research Institute Ltd 性能監視システムおよび性能監視方法

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6823355B1 (en) 2000-05-31 2004-11-23 International Business Machines Corporation Synchronous replication of transactions in a distributed system
EP1410228B1 (en) 2001-06-22 2016-03-23 Wonderware Corporation Remotely monitoring / diagnosing distributed components of a supervisory process control and manufacturing information application from a central location
US20030174165A1 (en) 2002-03-18 2003-09-18 Barney Rock D. System and method for rendering a directed graph
US7246144B2 (en) 2002-03-25 2007-07-17 Data Quality Solutions Method and system for managing a plurality of enterprise business systems
US7870431B2 (en) * 2002-10-18 2011-01-11 Computer Associates Think, Inc. Transaction tracer
US20050222689A1 (en) 2004-03-30 2005-10-06 Tonic Solutions, Inc. Method of determining performance of an application server environment relating to a transaction
US8316354B2 (en) 2005-12-15 2012-11-20 Ca, Inc. Execution flow shape compression for aggregate data reporting in an application manager
US8341605B2 (en) 2005-12-15 2012-12-25 Ca, Inc. Use of execution flow shape to allow aggregate data reporting with full context in an application manager
US7949673B2 (en) 2005-12-15 2011-05-24 Computer Associates Think, Inc. Correlating cross process and cross thread execution flows in an application manager
US7805510B2 (en) * 2006-05-11 2010-09-28 Computer Associates Think, Inc. Hierarchy for characterizing interactions with an application
US7818418B2 (en) 2007-03-20 2010-10-19 Computer Associates Think, Inc. Automatic root cause analysis of performance problems using auto-baselining on aggregated performance metrics
US8327377B2 (en) 2009-04-30 2012-12-04 Ca, Inc. Detecting, logging and tracking component dependencies in web service transactions

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001060163A (ja) * 1999-08-24 2001-03-06 Nec Corp トランザクションログ情報の処理装置
US7293259B1 (en) * 2003-09-02 2007-11-06 Sun Microsystems, Inc. Dynamically configuring selected methods for instrument-based profiling at application run-time
JP2006157313A (ja) * 2004-11-26 2006-06-15 Nec Corp 経路作成システム、経路作成装置及び経路作成プログラム
JP2005302057A (ja) * 2005-06-13 2005-10-27 Hitachi Ltd 分散処理システム及びその性能モニタリング方法
JP2010117757A (ja) * 2008-11-11 2010-05-27 Nomura Research Institute Ltd 性能監視システムおよび性能監視方法

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2020505688A (ja) * 2017-01-13 2020-02-20 オラクル・インターナショナル・コーポレイション 分散トランザクションミドルウェア環境における条件付き呼び出しパスモニタリングのためのシステムおよび方法
WO2021166118A1 (ja) * 2020-02-19 2021-08-26 日本電信電話株式会社 サービスグラフ生成装置、サービスグラフ生成方法、およびプログラム
JPWO2021166118A1 (ja) * 2020-02-19 2021-08-26
US11748226B2 (en) 2020-02-19 2023-09-05 Nippon Telegraph And Telephone Corporation Service graph generator, service graph generation method, and program
JP7372572B2 (ja) 2020-02-19 2023-11-01 日本電信電話株式会社 サービスグラフ生成装置、サービスグラフ生成方法、およびプログラム

Also Published As

Publication number Publication date
EP2560099A1 (en) 2013-02-20
JP5886712B2 (ja) 2016-03-16
US20130046779A1 (en) 2013-02-21
US8688729B2 (en) 2014-04-01
KR101797185B1 (ko) 2017-12-12
KR20130019366A (ko) 2013-02-26

Similar Documents

Publication Publication Date Title
JP5886712B2 (ja) 分散環境におけるトランザクション別に区別されたメトリックの効率的収集
US10031815B2 (en) Tracking health status in software components
US8812434B2 (en) Data structure for efficiently identifying transactions
US8782614B2 (en) Visualization of JVM and cross-JVM call stacks
US8490055B2 (en) Generating dependency maps from dependency data
JP5909138B2 (ja) 論理的なサブシステムのマップを介してのフローによるトランザクショントレースの可視化
JP5909139B2 (ja) トランザクショントレースグラフと論理的サブシステムのマップとの関係の可視化
US9202185B2 (en) Transaction model with structural and behavioral description of complex transactions
US20130047169A1 (en) Efficient Data Structure To Gather And Distribute Transaction Events
US20090199160A1 (en) Centralized system for analyzing software performance metrics
US20090199047A1 (en) Executing software performance test jobs in a clustered system
US20220188283A1 (en) Automatic discovery of executed processes
US20160013989A1 (en) Service discovery and/or effort estimation in networked computing environments
WO2022269573A1 (en) System and method facilitating monitoring of data quality

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150814

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150814

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20150814

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20150825

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20151013

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20151111

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20160126

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160212

R150 Certificate of patent or registration of utility model

Ref document number: 5886712

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees