(57)【要約】アプリケーションのコンポーネントへの要求およびコンポーネントからの要求を監視することによって、アプリケーション分析エンジンは、アプリケーションのさまざまなコンポーネントがどのように接続されているかを特定するアプリケーションのコンポーネント間グラフを作成する。性能問題がアプリケーションに関連して検出されると、トラバースモジュールは、コンポーネント間グラフをトラバースして、検出された問題の原因とされている可能性のある実行経路を判定する。トラバースモジュールは、実行経路の異なるコンポーネントのメトリック時系列を検出された問題と比較する要求を相関モジュールに送信する。相関モジュールは、メトリック時系列を問題メトリックと比較して実行パターン間の相関を特定する。相関の結果は、検出された問題の根本原因を視覚的に特定するレポートで提示され得る。
2019507454.tif 000002
【特許請求の範囲】
【請求項１】
ソフトウェアアプリケーションに関係する実行問題の根本原因を特定するための方法であって、
ソフトウェアアプリケーションの実行中に所与の時間期間の性能メトリックの劣化を特定し、アプリケーションスタックに関連付けられた前記ソフトウェアアプリケーションは、各々が１つまたは複数のコンポーネントを含む複数の階層的に組織化された層を有することと、
前記ソフトウェアアプリケーションに対応するコンポーネント間グラフをトラバースして、前記実行中にインスタンス化されたコンポーネントの階層を特定し、前記コンポーネント間グラフは、前記ソフトウェアアプリケーションの異なるコンポーネント間の接続を表し、コンポーネントの前記階層は、前記アプリケーションスタックの第１の層の第１のコンポーネントと第２のコンポーネントを含むことと、
前記性能メトリックの前記劣化を、前記第１のコンポーネントと前記第２のコンポーネントのそれぞれに関連付けられた前記メトリック時系列に相関させ、前記メトリック時系列の各々は、所与のメトリックに対し、前記時間期間中に前記関連したコンポーネントに対する前記メトリックの１つまたは複数の値を指定することと、
前記性能メトリックの前記劣化と前記メトリック時系列との間の前記相関に基づいて、前記第１のコンポーネントを前記性能メトリックの前記劣化の原因として選択することと、
前記第１のコンポーネントを前記性能メトリックの前記劣化の前記原因として報告することと
を備える方法。
【請求項２】
前記劣化は、前記ソフトウェアアプリケーションのランタイム中に発生する実行問題を示す、請求項１に記載の方法。
【請求項３】
前記ソフトウェアアプリケーションの前記異なるコンポーネントから生じる要求を監視して、前記コンポーネント間グラフを構築することをさらに備える、請求項１に記載の方法。
【請求項４】
前記性能メトリックの前記劣化は実行時系列として表され、前記性能メトリックの前記劣化を前記メトリック時系列に相関させることは、前記実行時系列の値と前記メトリック時系列の値を比較することを備える、請求項１に記載の方法。
【請求項５】
前記第１のコンポーネントに対応するコンポーネント内グラフをトラバースして、前記実行中にインスタンス化されたサブコンポーネントの階層を特定し、前記コンポーネント内グラフは、前記第１のコンポーネントの異なるサブコンポーネント間の接続を表し、コンポーネントの前記階層は、前記第１のコンポーネントの第１のサブコンポーネントと第２のサブコンポーネントを含むことをさらに備える、請求項１に記載の方法。
【請求項６】
前記性能メトリックの前記劣化を、前記第１のサブコンポーネントと前記第２のサブコンポーネントのそれぞれに関連付けられた前記下位のメトリック時系列に相関させ、前記下位のメトリック時系列の各々は、所与の下位のメトリックに対し、前記時間期間中に前記関連したサブコンポーネントに対する前記下位のメトリックの１つまたは複数の値を指定することと、
前記性能メトリックの前記劣化と前記下位のメトリック時系列との間の前記相関に基づいて、前記第１のサブコンポーネントを前記性能メトリックの前記劣化の根本原因として選択することをさらに備える、請求項５に記載の方法。
【請求項７】
コンポーネントの前記階層は、各々が前記第１のコンポーネントに接続されている前記アプリケーションスタックの第２の層の第３のコンポーネントと第４のコンポーネントを含む、請求項１に記載の方法。
【請求項８】
前記性能メトリックの前記劣化を、前記第３のコンポーネントと前記第４のコンポーネントのそれぞれに関連付けられた前記メトリック時系列に相関させ、前記メトリック時系列の各々は、所与のメトリックに対し、前記時間期間中に前記関連したコンポーネントの前記メトリックの１つまたは複数の値を指定し、前記性能メトリックの前記劣化と、前記第３のコンポーネントと前記第４のコンポーネントのそれぞれに関連付けられた前記メトリック時系列との間の前記相関に基づいて、前記第３のコンポーネントを前記性能メトリックの前記劣化の下位の原因として選択することをさらに備える、請求項７に記載の方法。
【請求項９】
前記アプリケーションスタックの前記第１の層は、前記アプリケーションスタックのユーザインタフェース層であり、前記アプリケーションスタックの前記第２の層は、アプリケーションプログラミングインタフェースである、請求項７に記載の方法。
【請求項１０】
前記第１のコンポーネントを報告することは、前記性能メトリックの前記劣化を表すグラフと、前記第１のコンポーネントに関連付けられた前記メトリック時系列を示す第２のグラフを備えることを特徴とする請求項１に記載の方法。
【請求項１１】
プロセッサによって実行されると、
ソフトウェアアプリケーションの実行中に所与の時間期間の性能メトリックの劣化を特定し、アプリケーションスタックに関連付けられた前記ソフトウェアアプリケーションは、各々が１つまたは複数のコンポーネントを含む複数の階層的に組織化された層を有することと、
前記ソフトウェアアプリケーションに対応するコンポーネント間グラフをトラバースして、前記実行中にインスタンス化されたコンポーネントの階層を特定し、前記コンポーネント間グラフは、前記ソフトウェアアプリケーションの異なるコンポーネント間の接続を表し、コンポーネントの前記階層は、前記アプリケーションスタックの第１の層の第１のコンポーネントと第２のコンポーネントを含むことと、
前記性能メトリックの前記劣化を、前記第１のコンポーネントと前記第２のコンポーネントのそれぞれに関連付けられた前記メトリック時系列に相関させ、前記メトリック時系列の各々は、所与のメトリックに対し、前記時間期間中に前記関連したコンポーネントに対する前記メトリックの１つまたは複数の値を指定することと、
前記性能メトリックの前記劣化と前記メトリック時系列との間の前記相関に基づいて、前記第１のコンポーネントを前記性能メトリックの前記劣化の原因として選択することと、
前記第１のコンポーネントを前記性能メトリックの前記劣化の前記原因として報告すること
を前記プロセッサにさせるソフトウェアアプリケーションに関係する実行問題の根本原因を特定する命令を格納するためのコンピュータプログラム製品。
【請求項１２】
前記劣化は、前記ソフトウェアアプリケーションのランタイム中に発生する実行問題を示す、請求項１１に記載のコンピュータプログラム製品。
【請求項１３】
前記ソフトウェアアプリケーションの前記異なるコンポーネントから生じる要求を監視して、前記コンポーネント間グラフを構築することをさらに備えた、請求項１１に記載のコンピュータプログラム製品。
【請求項１４】
前記性能メトリックの前記劣化は実行時系列として表され、前記性能メトリックの前記劣化を前記メトリック時系列に相関させることは、前記実行時系列の値と前記メトリック時系列の値を比較することを備えた、請求項１１に記載のコンピュータプログラム製品。
【請求項１５】
前記第１のコンポーネントに対応するコンポーネント内グラフをトラバースして、前記実行中にインスタンス化されたサブコンポーネントの階層を特定し、前記コンポーネント内グラフは、前記第１のコンポーネントの異なるサブコンポーネント間の接続を表し、コンポーネントの前記階層は、前記第１のコンポーネントの第１のサブコンポーネントと第２のサブコンポーネントを含むことをさらに備えた、請求項１１に記載のコンピュータプログラム製品。
【請求項１６】
前記性能メトリックの前記劣化を、前記第１のサブコンポーネントと前記第２のサブコンポーネントのそれぞれに関連付けられた前記下位のメトリック時系列に相関させ、前記下位のメトリック時系列の各々は、所与の下位のメトリックに対し、前記時間期間中に前記関連付けられたサブコンポーネントに対する前記下位のメトリックの１つまたは複数の値を指定することと、
前記性能メトリックの前記劣化と前記下位のメトリック時系列との間の前記相関に基づいて、前記第１のサブコンポーネントを前記性能メトリックの前記劣化の根本原因として選択することをさらに備えた、請求項１５に記載のコンピュータプログラム製品。
【請求項１７】
コンポーネントの前記階層は、各々が前記第１のコンポーネントに接続されている前記アプリケーションスタックの第２の層の第３のコンポーネントと第４のコンポーネントを含む、請求項１１に記載のコンピュータプログラム製品。
【請求項１８】
前記性能メトリックの前記劣化を、前記第３のコンポーネントと前記第４のコンポーネントのそれぞれに関連付けられた前記メトリック時系列に相関させ、前記メトリック時系列の各々は、所与のメトリックに対し、前記時間期間中に前記関連付けられたコンポーネントの前記メトリックの１つまたは複数の値を指定し、前記性能メトリックの前記劣化と、前記第３のコンポーネントと前記第４のコンポーネントのそれぞれに関連付けられた前記メトリック時系列との間の前記相関に基づいて、前記第３のコンポーネントを前記性能メトリックの前記劣化の下位の原因として選択することをさらに備えた、請求項１７に記載のコンピュータプログラム製品。
【請求項１９】
前記アプリケーションスタックの前記第１の層は、前記アプリケーションスタックのユーザインタフェース層であり、前記アプリケーションスタックの前記第２の層は、アプリケーションプログラミングインタフェースである、請求項１７に記載のコンピュータプログラム製品。
【請求項２０】
命令を格納するメモリと、
ソフトウェアアプリケーションの実行中に所与の時間期間の性能メトリックの劣化を特定し、アプリケーションスタックに関連付けられた前記ソフトウェアアプリケーションは、各々が１つまたは複数のコンポーネントを含む複数の階層的に組織化された層を有することと、
前記ソフトウェアアプリケーションに対応するコンポーネント間グラフをトラバースして、前記実行中にインスタンス化されたコンポーネントの階層を特定し、前記コンポーネント間グラフは、前記ソフトウェアアプリケーションの異なるコンポーネント間の接続を表し、コンポーネントの前記階層は、前記アプリケーションスタックの第１の層の第１のコンポーネントと第２のコンポーネントを含むことと、
前記性能メトリックの前記劣化を、前記第１のコンポーネントと前記第２のコンポーネントのそれぞれに関連付けられた前記メトリック時系列に相関させ、前記メトリック時系列の各々は、所与のメトリックに対し、前記時間期間中に前記関連付けられたコンポーネントに対する前記メトリックの１つまたは複数の値を指定することと、
前記性能メトリックの前記劣化と前記メトリック時系列との間の前記相関に基づいて、前記第１のコンポーネントを前記性能メトリックの前記劣化の原因として選択することと、
前記第１のコンポーネントを前記性能メトリックの前記劣化の前記原因として報告すること
を行う前記命令を実行するように構成されたプロセッサを備えた、コンピュータシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、アプリケーションの実行中に観察される問題の根本原因を特定する方法に関する。
【背景技術】
【０００２】
本開示は、一般には、アプリケーションを監視することに関し、より詳細には、アプリケーションの実行中に観察される問題の根本原因を特定することに関する。
【０００３】
今日の複雑なソフトウェアの相互依存のサービス環境において、アプリケーションのエンドユーザに影響を及ぼす問題の根本原因を見つけることは、困難で時間がかかることが多い。典型的には、アプリケーションを監視する時、そのアプリケーションに対し、大量の性能データが収集される。問題の正確な原因を見つけるために圧倒的な量のデータを選り分けるには、コンポーネントでは問題が表面化した場所から多数の層が除去される場合もあり、時間のかかる、大変な手動作業であることが多い。
【発明の概要】
【課題を解決するための手段】
【０００４】
アプリケーションのコンポーネントへの要求およびコンポーネントからの要求を監視することによって、アプリケーション分析エンジンは、アプリケーションのさまざまなコンポーネントがどのように接続されているかを特定するアプリケーションのコンポーネント間グラフを作成する。性能問題がアプリケーションに関連して検出されると、トラバースモジュールは、コンポーネント間グラフをトラバースして、検出された問題の原因とされている可能性のある実行経路を判定する。トラバースモジュールは、実行経路の異なるコンポーネントのメトリック時系列を検出された問題と比較する要求を相関モジュールに送信する。特に、相関モジュールは、メトリック時系列を問題メトリックと比較して実行パターン間の相関を特定する。相関の結果は、検出された問題の根本原因を視覚的に特定するレポートで提示され得る。レポートは、問題が検出されたレベルから根本原因までの実行経路を特定することができる。
【図面の簡単な説明】
【０００５】
【図１】一実施形態に従って、アプリケーションを監視するためのシステム環境を示す図である。
【図２】一実施形態に従って、監視サーバのさまざまなコンポーネントを示すブロック図である。
【図３】一実施形態に従って、アプリケーション分析エンジンによって作成される例示的なコンポーネント間グラフを示す図である。
【図４】一実施形態に従って、図３の単一のコンポーネントＱの例示的なコンポーネント内階層を示す図である。
【図５】一実施形態に従って、実行するアプリケーションに関連して検出される問題の根本原因を判定するための方法ステップのフローチャートである。
【図６Ａ】一実施形態に従って、コンポーネント間グラフとコンポーネント内階層のトラバースモジュールによる例示的なトラバースを示す図である。
【図６Ｂ】一実施形態に従って、コンポーネント間グラフとコンポーネント内階層のトラバースモジュールによる例示的なトラバースを示す図である。
【図７Ａ】一実施形態に従って、アプリケーションの異なるコンポーネントのメトリック時系列の例示的な可視化とメトリック時系列が検出された問題とどのように相関されるかを示す図である。
【図７Ｂ】一実施形態に従って、アプリケーションの異なるコンポーネントのメトリック時系列の例示的な可視化とメトリック時系列が検出された問題とどのように相関されるかを示す図である。
【０００６】
図面は、本開示のさまざまな実施形態を単に例証を目的として示す。本明細書で示される構造と方法の代替実施形態が本明細書で説明される開示の原則から逸脱しない範囲で用いられ得ることが以下の考察から当業者には容易に認識されよう。
【発明を実施するための形態】
【０００７】
図１は、一実施形態に従って、アプリケーションを監視するためのシステム環境を示す。一実施形態において、環境は、ネットワーク１５０を通じて通信する、アプリケーションランタイム１１０、クライアントデバイス１３０、および監視サーバ１４０を含む。
【０００８】
クライアントデバイス１３０は、ユーザ入力を受信するならびにネットワーク１５０経由でデータを送信するおよび／または受信する能力がある１つまたは複数のコンピューティングデバイスを含む。一実施形態において、クライアントデバイス１３０は、デスクトップまたはラップトップコンピュータなど、従来のコンピュータシステムである。あるいは、クライアントデバイス１３０は、携帯情報端末（ＰＤＡ）、携帯電話、スマートフォンまたは別の適したデバイスなど、コンピュータの機能性を有するデバイスになり得る。クライアントデバイス１３０は、ネットワーク１５０経由で通信するように構成される。一実施形態において、クライアントデバイス１３０は、クライアントデバイス１３０のユーザにアプリケーションランタイム１１０と対話するようにさせるアプリケーションを実行する。例えば、クライアントデバイス１３０は、ネットワーク１５０経由でクライアントデバイス１３０とアプリケーションランタイム１１０との間の対話を可能にするブラウザアプリケーションを実行する。別の実施形態において、クライアントデバイス１３０は、ＩＯＳ（登録商標）またはＡＮＤＲＯＩＤ（商標）など、クライアントデバイス１３０のネイティブオペレーティングシステムで稼働するアプリケーションプログラミングインタフェース（ＡＰＩ）を介してアプリケーションランタイム１１０と対話する。図１では単一のクライアントデバイス１３０が示されているが、任意の数のクライアントデバイス１３０がネットワーク１５０経由でアプリケーションランタイム１１０と対話することができる。
【０００９】
クライアントデバイス１３０は、有線および／または無線通信システムの両方を使用して、ローカルエリアおよび／またはワイドエリアネットワークの任意の組み合わせを備えることができる、ネットワーク１５０経由でアプリケーションランタイム１１０と通信するように構成される。一実施形態において、ネットワーク１５０は、標準の通信技術および／またはプロトコルを使用する。例えば、ネットワーク１５０は、イーサネット、８０２．１１、ＷｉＭＡＸ(worldwide interoperability for microwave access)、３Ｇ、４Ｇ、ＣＤＭＡ（符号分割多元接続）、ＤＳＬ（デジタル加入者線）その他などの技術を使用する通信リンクを含む。ネットワーク１５０経由の通信に使用されるネットワーキングプロトコルの例は、マルチプロトコルラベルスイッチング（ＭＰＬＳ）、伝送制御プロトコル／インターネットプロトコル（ＴＣＰ／ＩＰ）、ハイパーテキスト転送プロトコル（ＨＴＴＰ）、簡易メール転送プロトコル（ＳＭＴＰ）、およびファイル転送プロトコル（ＦＴＰ）を含む。ネットワーク１５０を通じて交換されるデータは、ハイパーテキストマークアップ言語（ＨＴＭＬ）または拡張可能マークアップ言語（ＸＭＬ）など、任意の適したフォーマットを使用して表現され得る。いくつかの実施形態において、ネットワーク１５０の通信リンクのすべてまたは一部は、任意の適した１つまたは複数の技術を使用して暗号化され得る。
【００１０】
アプリケーションランタイム１１０は、アプリケーション１１５とエージェント１２０を動作する。アプリケーション１１５は、モバイルアプリケーションまたはウェブアプリケーションのさまざまなタイプのいずれかにすることができ、クライアントサーバアプリケーションの動作のサブセットを表すことができる。アプリケーションランタイム１１０によって動作されるアプリケーション１１５は、データベースコンテンツを読み出して格納し、クライアントデバイス１３０においてレンダリングするユーザインタフェースを作成し、クライアントデバイス１３０において要求される機能を行い、コンテンツをクライアントデバイス１３０に（例えば、ネットワーク１５０を通じて）伝達するなど、クライアントサーバアプリケーションのサーバ側のいくつかのプロセスを含む一方、アプリケーションのクライアント側プロセスは、コンテンツをユーザに表示して要求をアプリケーションランタイム１１０に伝達するなどのプロセスを含む。例えば、アプリケーションランタイム１１０は、ユーザに表示するウェブページをクライアントデバイス１３０にサーブする。図１では単一のアプリケーションランタイム１１０が示されているが、アプリケーションランタイム１１０は、アプリケーション１１５の機能を実行する１つまたは複数のコンピューティングデバイスを備えることができ、その環境は、任意の数のアプリケーション１１５を動作する任意の数のウェブサーバを含むことができる。
【００１１】
一実施形態において、アプリケーション１１５の機能性は、１つまたは複数のトランザクションに量子化される。各トランザクションは、クライアントデバイス１３０から受信された要求に応答してアプリケーションランタイム１１０によって実行される一連のアプリケーションコンポーネントである。一実施形態において、トランザクションの開始は、アプリケーションランタイム１１０がクライアントデバイス１３０から要求（例えば、クライアントデバイス１３０で表示されるウェブページの一部を送る要求）を受信する時間として定義される一方、トランザクションの終了は、アプリケーションランタイム１１０が要求（例えば、ウェブページをクライアントデバイス１３０に送る）の応答を返す時間として定義される。トランザクションの終了は、アプリケーションランタイム１１０が応答の送信を始める時間、アプリケーションランタイム１１０が応答の送信を終える時間となり、あるいは応答に対して定義される。別の実施形態において、トランザクションの開始と終了は、アプリケーション１１５内の指定されたポイントであり、必ずしも要求と応答に対して定義されない。
【００１２】
トランザクションの各コンポーネントは、アプリケーションランタイム１１０によって維持される実行スレッド内で実行される。各コンポーネント内で、アプリケーションランタイム１１０は、１つまたは複数の方法を実行する。トランザクション方法は、一群のソフトウェアステートメントまたはコマンドを表し、共にアプリケーション１１５の個別の動作を表す。例えば、アプリケーション１１５の１つのトランザクション方法は、データベースクエリになり得る一方、別のトランザクション方法は、データベースから読み出されるデータを使用して計算を行う。
【００１３】
アプリケーションランタイム１１０は、複数の方法が同時にまたは時間期間が重なる間に実行されるように、コンポーネントを非同期的に実行することができる。一部の方法はまた、トランザクションの他の方法によって呼び出すまたは呼び出されることもできる。トランザクションの第２の方法を呼び出す第１の方法は、第２の方法の「親」といわれる一方、第２の方法は、第１の方法の「子」といわれる。第１の方法の子として、第２の方法は、たとえ第１の方法が第２の方法とは異なるスレッド内で実行されるとしても、（例えば、第１の方法が完了した後）第１の方法が第２の方法を呼び出すまで実行されない。いくつかの方法は、ブロッキング方法が実行される間、コンポーネントの実行が中断されるように、トランザクションのコンポーネントをブロックすることもできる。例えば、第１のトランザクションコンポーネントは、第１と第３の方法を含み、第２のトランザクションコンポーネントは、第２の方法を含み、そこで第１の方法は、第２の方法を呼び出して第２の方法は、第３の方法を呼び出す。第２の方法が実行されている間、第１のコンポーネントがブロックされ、第２の方法が実行されている間、どの方法も第１のスレッドで実行されない。第２の実行が完了すると、第３の方法は、第１のスレッドで実行される。
【００１４】
エージェント１２０は、アプリケーションランタイム１１０で稼働するプロセス、アプリケーション１１５の応答時間、アプリケーション１１５のトランザクション、ユーザデバイスにおけるアプリケーション１１５の性能に対するバックエンドプロセスの効果、および／または他の情報を含む、アプリケーション１１５の性能を監視する。エージェント１２０は、アプリケーションランタイム１１０によってアプリケーション１１５と共に実行されるソフトウェアモジュールのセットであり、コードをアプリケーション１１５に注入することによってアプリケーション１１５を監視する。注入されたコードは、アプリケーション１１５の選択された方法が実行される時にアプリケーションランタイム１１０によって実行される。エージェント１２０によって監視される方法は、アプリケーション１１５の開発者またはアプリケーション１１５の管理者によって手動で選択され得るか、またはエージェント１２０によって自動的に選択され得る。例えば、エージェント１２０は、アプリケーション１１５のあらゆる方法を監視することができる。実行されると、注入されたコードは、各々監視される方法を指定するメトリック：方法の識別子、方法の実行の期間、方法の子および／または親、および方法がその他のアプリケーションコンポーネントの実行をブロックするかどうかを指定するメトリックを作成する。
【００１５】
監視サーバ１４０は、アプリケーションランタイム１１０の性能を監視する。監視サーバ１４０は、アプリケーション監視サービスプロバイダによってホストされることができ、任意の数のアプリケーション（ａｐｐ）サーバの性能を監視することができる。一実施形態において、監視サーバ１４０は、Ｎｅｗ  Ｒｅｌｉｃ（登録商標）社によってホストされ、ＮＥＷ  ＲＥＬＩＣ（登録商標）ＡＰＭを実行する。アプリケーションランタイム１１０を監視するために、監視サーバ１４０は、エージェント１２０にアプリケーションランタイム１１０を提供して、エージェント１２０からデータを受信する。監視サーバ１４０は、エージェント１２０からレポートを受信して、アプリケーションランタイム１１０の管理者によって分析されるレポートにデータをフォーマットして、管理者がアプリケーション１１５のどの性能問題にも取り組むことができるようにする。例えば、監視サーバ１４０は、トランザクションのクリティカルパスでの方法の実行時間を示すプロットを作成する。クリティカルパスでの方法の実行時間を報告することによって、管理者が実行時間の長い方法を特定して、トランザクション時間の削減を目的とする方法を判定することが可能になる。
【００１６】
図２は、一実施形態に従って、監視サーバ１４０のさまざまなコンポーネントを示すブロック図である。図のように、監視サーバ１４０は、アプリケーション分析エンジン２１０、コンポーネント間グラフストア２２０、コンポーネント内階層ストア２４０、メトリックストア２５０、および根本原因検出エンジン２６０を含む。
【００１７】
グラフストア２２０、階層ストア２４０、およびメトリックストア２５０は各々、１つまたは複数のテーブル、１つまたは複数の関係データベース、および／または１つまたは複数の多次元データキューブであるか、またはこれらを含むことができる。さらに、単一のコンポーネントとして示されているが、グラフストア２２０、階層ストア２４０、およびメトリックストア２５０は各々、単一のコンピューティングデバイスに実装され得るまたは多数のコンピューティングデバイスまたはメモリコンポーネント間で分散され得る、データベースクラスタなど、複数のデータベースになり得る。さらに、監視サーバ１４０に含まれるさまざまなモジュールおよびデータストアは、１つのコンピューティングシステム内に物理的にコロケートされ得るか、あるいは複数のコンピューティングシステムに異なって配置され得る。
【００１８】
アプリケーション分析エンジン２１０は、監視サーバ１４０によって監視される異なるアプリケーションのコンポーネント間グラフを作成し、かつそれを行う１つの手段である。動作において、アプリケーション１１５などのアプリケーションは、連動するいくつかのコンポーネントを有することができる。アプリケーション分析エンジン２１０は、さまざまなコンポーネントがどのように接続されているかを特定するアプリケーションのコンポーネント間グラフを作成するためにこれらのコンポーネントのそれぞれのアウトバウンド要求とインバウンド要求をトレースする。
【００１９】
一実施形態において、エージェント１２０は、一意のヘッダのセットを、ブラウザおよびバックエンドサービスなど、アプリケーション１１５のコンポーネントからのアウトバウンドハイパーテキスト転送プロトコル（ＨＴＴＰ）要求に付加する。エージェント１２０は、これらの一意のヘッダの他のコンポーネントのインバウンド要求を監視する。コンポーネントＡからのアウトバウンド要求に付加される一意のヘッダのうちの１つがコンポーネントＢへのインバウンド要求で特定されると、エージェント１２０は、コンポーネントＡが下流コンポーネントＢに接続されていることを示す通知をアプリケーション分析エンジン２１０に送信する。アプリケーション分析エンジン２１０は、アプリケーションのコンポーネント間のさまざまな接続および関連した接続性の方向を示すこうした通知を処理してアプリケーション１１５のコンポーネント間グラフを構築する。コンポーネント間グラフは、ブラウザまたはユーザインタフェースなど、ユーザ向けコンポーネントから、支払い処理など、バックエンドサービスコンポーネントまでに拡張し、最終的には、キャッシングおよびデータベースなど、バックエンドストレージ層までに拡張する。アプリケーション分析エンジン２１０は、コンポーネント間グラフをコンポーネント間グラフストア２２０（本明細書では「グラフストア２２０」ともいわれる）に格納する。
【００２０】
図３は、一実施形態に従って、アプリケーション分析エンジン２１０によって作成される例示的なコンポーネント間グラフを示す。コンポーネント間グラフにおいて、「Ｗ」と記されたコンポーネントは、ウェブインタフェースコンポーネントである。「Ｐ」および「Ｑ」と記されたコンポーネントは、「バックエンドＡ」、「バックエンドＢ」、「バックエンドＣ」と記されたデータベースから生データをサーブし、そしてデータベースにデータを格納する、「Ｗ」コンポーネントによって呼び出されるアプリケーションプログラミングインタフェースにサービスする。一実施形態において、Ｐは、ユーザ情報コンポーネントであり、Ｑは、ショッピングカタログコンポーネントである。コンポーネントＰおよびＱなど、各ＡＰＩコンポーネントは、それ自身のデータストアを有することが多い。スタックの最上の層１は、人間が消費するデータ、サービス、インタフェースなどを表し、スタックの中間の層２は、機械消耗品（またはＡＰＩ）を表し、スタックの最下の層３は、ストレージおよび他のバックエンドサービスを表す。
【００２１】
再度図２について、メトリック収集エンジン２３０は、粒度のさまざまなレベルのエージェント１２０によって収集されるメトリックを集合し、かつそれを行う１つの手段である。エージェント１２０は、アプリケーション１１５の各コンポーネントのメトリック、さらにそれらのコンポーネント内の各方法または動作ユニットのメトリックを受信する。これらのメトリックは、時間単位で測定される実行期間と実行中に遭遇するエラーを含む。メトリック収集エンジン２３０は、コンポーネントのどの方法がトランザクション中に呼び出されるか、各方法が呼び出された回数、実行される時の各方法の全時間期間を判定するメトリックを集合する。エージェント１２０はまた、１つまたは複数の子を有する各方法の排他実行時間も判定することができ、排他実行時間は、子方法の実行時間を考慮に入れずに実行される親方法の時間量または子方法が実行されていた間に親方法がブロックされた時間量を表す。
【００２２】
メトリック収集エンジン２３０は、アプリケーション１５０の各コンポーネントおよびサブコンポーネントのメトリック時系列を作成するために受信されたメトリックを集合する。メトリック時系列は、所与のメトリックに対し、所定の時間間隔で関連したコンポーネント／サブコンポーネントのメトリックの値を指定する。メトリック収集エンジン２３０は、メトリック時系列をメトリックストア２５０に格納する。メトリック収集エンジン２３０はまた、アプリケーション１１５の各コンポーネントのコンポーネント内階層も作成する。特に、コンポーネントのコンポーネント内階層は、コンポーネントのさまざまな動作ユニット、例えば、方法、データストレージサービスなどがどのように接続されているかを特定する。メトリック収集エンジン２３０は、コンポーネント内階層をコンポーネント内階層ストア２４０に格納する。
【００２３】
図４は、一実施形態に従って、図３の単一のコンポーネントＱの例示的なコンポーネント内階層を示す。コンポーネント内階層において、コンポーネントＱは、「外部サービス」、「データストアサービス」、および「ＨＴＴＰディスパッチャ」を含む、多数の最上位の動作ユニット４０２を含む。最上位の動作ユニット４０２は、さらにメトリック収集エンジン２３０によって特定される下位の動作ユニットを有することが多い。図において、例えば、「外部サービス」はさらに、「カタログサービス」、「ユーザサービス」、「アカウントサービス」、および「ユーザデータストア」にコンポーネント化される。コンポーネント内階層は、最上位の動作ユニット４０２と下位の動作ユニット４０４の間の関係をキャプチャする。
【００２４】
再度図２について、根本原因検出エンジン２６０は、アプリケーション１１５の実行中に発生する問題を検出し、それらの問題の根本原因を確率的に判定し、かつそれを行う１つの手段である。根本原因検出エンジン２６０は、問題検出モジュール２６２、トラバースモジュール２６４、相関モジュール２６６、およびレポーティングモジュール２６８を含む。
【００２５】
問題検出モジュール２６２は、メトリックストア２５０に格納されたメトリックを監視してアプリケーション１１５の実行の潜在的問題を特定し、かつそれを行う１つの手段である。問題は、メトリックが問題検出モジュール２６２で定義される閾値を超える時に検出される。閾値は、アプリケーションおよび／またはアプリケーションのコンポーネントの履歴性能に基づいて判定される構成可能な閾値にすることができる。一実施形態において、問題検出モジュール２６２は、アプリケーションまたはアプリケーションのコンポーネントの実行時間が閾値を超える時に問題を検出する。別の実施形態において、問題検出モジュール２６２は、アプリケーションまたはアプリケーションのコンポーネントの所与の実行期間内で発生したエラー数が閾値を超える時に問題を検出する。問題検出モジュール２６２が問題を検出すると、問題検出モジュール２６２は、トラバースモジュール２６４にアラートを発する。アラートは、問題が検出されたアプリケーションおよび／またはアプリケーションのコンポーネントを特定する。
【００２６】
トラバースモジュール２６４は、アプリケーションに関連付けられたコンポーネント間グラフおよびコンポーネント内階層をトラバースして、問題検出モジュール２６２によって検出される問題の根本原因を特定し、かつそれを行う１つの手段である。動作において、トラバースモジュール２６４は、問題検出モジュール２６２によって発せられたアラートをリッスンする。アラートが発せられると、トラバースモジュール２６４は、問題が検出されたアプリケーションを特定して、そのアプリケーションに関連付けられたコンポーネント間グラフをグラフストア２２０から読み出し、およびコンポーネント内階層を階層ストア２４０から読み出す。所与の問題の場合、トラバースモジュール２６４は、コンポーネント間グラフとコンポーネント内階層をトラバースして、検出された問題の原因であるとされている可能性のある実行経路を判定する。トラバースモジュール２６４は、実行経路の異なるコンポーネントのメトリック時系列を検出された問題と比較する要求を相関モジュール２６６に送信する。一実施形態において、トラバースモジュール２６４は、相関モジュール２６６による比較の結果に基づいて実行経路で特定されたコンポーネントとサブコンポーネントのメトリック時系列を反復的にフェッチする。
【００２７】
相関モジュール２６６は、メトリック時系列を問題メトリックと比較して実行パターン間の相関を特定し、かつそれを行う１つの手段である。一実施形態において、ピアソンの積率相関係数を使用してこれらの２つの時系列を比較する。問題応答期間の時系列は、ｎ値を包含するデータセット｛ｘ｜,…,ｘｎ｝であり、可能なサブコンポーネント期間のメトリック時系列は、これもｎ値を包含するデータセット｛ｙ｜,…,ｙｎ｝であると仮定する。相関係数ｒの式は、次の通りである。
【００２８】
【数１】
2019507454.tif 000003
【００２９】
ここで
【００３０】
【数２】
2019507454.tif 000004
【００３１】
と
【００３２】
【数３】
2019507454.tif 000005
【００３３】
は、それぞれの標本平均値である。１．０のｒ値は、完全相関を表し、０．０は、無相関を表し、−１．０は、完全負相関を表す。同じ等式は、期間メトリック時系列を時間単位ごとに観察される誤り数に置き換えることによって誤り率メトリックに適用される。サブコンポーネントが問題メトリックに高い相関を与えると、サブコンポーネントの子と問題メトリックとの相関を計算するアルゴリズムが繰り返される。
【００３４】
レポーティングモジュール２６８は、検出された問題の根本原因を視覚的に特定するレポートをアプリケーション１１５の管理者に作成し、かつそれを行う１つの手段である。これらのレポートは、問題が検出されたレベルから根本原因までの実行経路を特定することができる。レポートはまた、特定された根本原因の信頼レベルを問題の根本原因であるファクトによって指定することもできる。
【００３５】
図５は、一実施形態に従って、実行するアプリケーションに関連して検出された問題の根本原因を判定するための方法ステップのフローチャートである。他の実施形態は、図５に示されたプロセスのステップを異なる順序で行うことができ、異なる、追加のおよび／またはより少ないステップを含むことができる。プロセスは、根本原因検出エンジン２６０など、適した任意のエンティティによって行われ得る。
【００３６】
根本原因検出エンジン２６０は、５０２において、問題がランタイム中にアプリケーションに関連して検出されたことを判定する。一実施形態において、問題は、アプリケーションの性能に関係するメトリックが根本原因検出エンジン２６０で定義された閾値を超える時に検出される。閾値は、アプリケーションおよび／またはアプリケーションのコンポーネントの履歴性能に基づいて判定される構成可能な閾値にすることができる。
【００３７】
根本原因検出エンジン２６０は、５０４において、問題が検出されたアプリケーションに関連付けられたメトリック時系列（「アプリケーションメトリック時系列」といわれる）をメトリックストア２５０からフェッチする。アプリケーションメトリック時系列は、時間のさまざまなポイントにおける所与のメトリックの値を示す。例えば、応答時間メトリック時系列は、時間のさまざまなポイントにおけるアプリケーション応答時間を示す。一実施形態において、検出された問題は、典型的には、アプリケーションに関連付けられたメトリック時系列の異常として現れる。
【００３８】
根本原因検出エンジン２６０は、問題が検出されたアプリケーションのコンポーネントに関連付けられた最上位のメトリック時系列を読み出す。特に、根本原因検出エンジン２６０は、アプリケーションに関連付けられたコンポーネント間グラフを分析して、問題に起因すると考えられるアプリケーションの最上位のコンポーネントを判定する。上記で論じたように、アプリケーションのコンポーネント間グラフは、アプリケーションのさまざまなコンポーネントがどのように接続されているかを特定する。
【００３９】
根本原因検出エンジン２６０は、５０８において、アプリケーションのアプリケーションメトリック時系列を、アプリケーションのコンポーネントに関連付けられた最上位のメトリック時系列と相関させる。根本原因検出エンジン２６０は、５１０において、アプリケーションメトリック時系列との最高の相関を有する最高位のメトリック時系列を有するコンポーネントを選択する。
【００４０】
根本原因検出エンジン２６０は、５１２において、選択されたコンポーネントに関連付けられた下位のメトリック時系列をメトリックストア２５０からフェッチする。特に、根本原因検出エンジン２６０は、選択されたコンポーネントに関連付けられたコンポーネント内階層を分析して、問題に起因すると考えられるアプリケーションの動作ユニットを判定する。上記で論じたように、コンポーネントのコンポーネント内階層は、コンポーネントのさまざまな動作ユニット、例えば、方法、データストレージサービスなどがどのように接続されているかを特定する。
【００４１】
根本原因検出エンジン２６０は、５１４において、アプリケーションのアプリケーションメトリック時系列を、選択されたコンポーネントの動作ユニットに関連付けられた下位のメトリック時系列と相関させる。根本原因検出エンジン２６０は、５１６において、アプリケーションメトリック時系列との最高の相関を有する下位のメトリック時系列を有する動作ユニットを根本原因として特定する。
【００４２】
一実施形態において、コンポーネントの動作ユニットは、それ自身のコンポーネント間グラフとコンポーネント内階層に関連付けられたアプリケーションにすることができる。このような実施形態において、根本原因検出エンジン２６０は、根本原因が特定されるまでステップ５０６−５１４を反復的に行う。さらに、最上位または下位のメトリック時系列がアプリケーションメトリック時系列と相関できなければ、根本原因検出エンジン２６０は、ウェブトランザクション、データストア、または他の動作コンポーネントおよびアプリケーションの依存性に関連付けられたメトリック時系列の間の相関を探索する。
【００４３】
図６Ａと図６Ｂは、一実施形態に従って、コンポーネント間グラフとコンポーネント内階層のトラバースモジュール２６４による例示的なトラバースを示す。具体的には、図６Ａと図６Ｂに示されたトラバースは、「Ｗ」と記されたコンポーネント６０２において検出される問題を引き起こし得る異なる実行経路を示す。トラバースモジュール２６４は、アプリケーション分析エンジン２１０によって作成されるコンポーネント間グラフを反復的にトラバースして、コンポーネント６０２に接続されているアプリケーションスタックの下位層のコンポーネントのセットを特定する。コンポーネントのセットは、アプリケーションスタックの層２の３つの「Ｑ」コンポーネントとスタックの層３のバックエンド「Ｃ」コンポーネントを含む。根本原因検出エンジン２６０は、コンポーネントのセットのコンポーネントに関連付けられた最上位のメトリック時系列を読み出す。図示された例において、根本原因検出エンジン２６０は、コンポーネント６０２のメトリック時系列を、セットのコンポーネントに関連付けられた最上位のメトリック時系列と相関させて、メトリック時系列との最高の相関を有する最高位のメトリック時系列を有するものとしてコンポーネント６０４を選択する。
【００４４】
図６Ｂに示すように、コンポーネントＱは、「拡張サービス」、「データストアサービス」、および「ＨＴＴＰディスパッチャ」を含む、多数の最上位の動作ユニットを含む。根本原因検出エンジン２６０は、コンポーネントの動作ユニットに関連付けられた下位のメトリック時系列を反復的に読み出す。根本原因検出エンジン２６０は、コンポーネント６０４のメトリック時系列を、動作ユニットに関連付けられた下位のメトリック時系列と相関させて、メトリック時系列との最高の相関を有する最高位のメトリック時系列を有する動作ユニットを問題の根本原因として選択する。図示された例において、根本原因検出エンジン２６０は、ユーザデータストア６０２が問題の根本原因であることを判定する。
【００４５】
図７Ａと図７Ｂは、一実施形態に従って、アプリケーション１１５の異なるコンポーネントのメトリック時系列の例示的な可視化とメトリック時系列が問題メトリックとどのように相関されるかを示す。アプリケーション時系列の可視化７０１は、１０：３０ａｍにおけるメトリックの値の異常を示す。このような異常は、アプリケーションの性能の問題７０２に起因する。可視化７０４−７１２は、アプリケーション１１５のコンポーネントおよびサブコンポーネントに関連付けられたさまざまなメトリック時系列を表す。可視化７０８に示すように、検出された問題７０２をデータベース性能と相関させることができる。根本原因検出エンジン２６０は、データベースのサブコンポーネントに関連付けられた時系列を評価して、時系列７１２によって問題７０２の根本原因であると表されるトランザクションＡを特定する。
【００４６】
本開示の実施形態の前述の説明は、例証の目的で提示されており、網羅的または本開示を開示されたとおりの形態に限定することを意図しない。当業者は、上記の開示に照らして多くの変更および変形形態が可能であることを認識できる。
【００４７】
本説明のいくつの部分は、情報の動作のアルゴリズムおよび記号表現の観点から開示の実施形態を説明している。これらのアルゴリズム的記述および表現は、データ処理技術の当業者によって、彼らの研究の本質を他の当業者に効果的に伝えるために広く用いられている。これらの動作は、機能的に、計算的に、または論理的に説明されているが、コンピュータプログラムまたは等価の電気回路、マイクロコードその他によって実装されることが理解される。さらに、一般性を失わずに、動作のこのような配置をモジュールということが時には便利なことも証明されている。説明された動作およびそれらに関連したモジュールは、ソフトウェア、ファームウェア、ハードウェアまたはそれらの任意の組み合わせにおいて具体化され得る。
【００４８】
本明細書で説明されるステップ、動作、またはプロセスのいずれも行われ得るまたは１つまたは複数のハードウェアまたはソフトウェアモジュールに単独または他のデバイスとの組み合わせにおいて実装され得る。一実施形態において、ソフトウェアモジュールは、説明されたステップ、動作、またはプロセスの一部またはすべてを行うコンピュータプロセッサによって実行できる、コンピュータプログラムコードを包含するコンピュータ可読媒体を備えるコンピュータプログラム製品に実装される。
【００４９】
本開示の実施形態は、本明細書の動作を行う装置に関係することもできる。この装置は、必要な目的のために特別に構築されてもよく、および／またはコンピュータに格納されたコンピュータプログラムによって選択的にアクティブ化されるまたは再構成される汎用コンピューティングデバイスを備えてもよい。このようなコンピュータプログラムは、有形コンピュータ可読ストレージ媒体または電子命令を格納するのに適した任意のタイプの媒体に格納され、そしてコンピュータシステムバスに結合され得る。さらに、明細書において言及される任意のコンピューティングシステムは、単一のプロセッサを含んでよい、または計算能力が増大されるように複数のプロセッサ設計を用いるアーキテクチャであってもよい。
【００５０】
本開示の実施形態は、コンピュータデータ信号が本明細書で説明されるコンピュータプログラム製品または他のデータの組み合わせの任意の実施形態を含む、搬送波において具体化されるコンピュータデータ信号に関係することもできる。コンピュータデータ信号は、有形媒体または搬送波で提示されるおよび変更されるか、あるいは有形である搬送波に符号化され、そして任意に適した送信方法に従って送信される。
【００５１】
最後に、明細書で使用される言語は、主に読みやすさまたは教授目的で選択されており、発明の主題を叙述または制限するために選択されていない場合もある。従って、本開示の範囲は、この詳細な説明によるのではなく、本明細書に基づくアプリケーションに関するいずれかの特許請求の範囲によって制限されることを意図する。従って、本開示の実施形態の開示は、例証することを意図し、発明の範囲を制限するものではない。
【図１】
2019507454.tif 000006
【図２】
2019507454.tif 000007
【図３】
2019507454.tif 000008
【図４】
2019507454.tif 000009
【図５】
2019507454.tif 000010
【図６Ａ】
2019507454.tif 000011
【図６Ｂ】
2019507454.tif 000012
【図７Ａ】
2019507454.tif 000013
【図７Ｂ】
2019507454.tif 000014
【国際調査報告】
2019507454.tif 000015
2019507454.tif 000016