(57)【特許請求の範囲】
【請求項１】
計測手段が組み込まれたソフトウェアによって生成されるデータを処理する方法であって、
分析システムによって、データストリームのセットを識別する情報を受信するステップであって、各データストリームは、外部システム上で実行する計測手段が組み込まれたソフトウェアのインスタンスによって生成される、ステップと、
式の指定を受信するステップであって、前記式は前記データストリームのセットのデータ値を処理し、前記データ値の各々は前記式を評価するための複数の時間間隔のうちの時間間隔に関連付けられる、ステップと、
前記式を評価するための前記複数の時間間隔のそれぞれに対して
前記データストリームのセットの各データストリームに対して、前記データストリームに対する最大予想遅延を決定するステップであって、前記最大予想遅延は、計測手段が組み込まれたソフトウェアの対応するインスタンスから前記分析システムへの前記データストリームのデータ値に対する前記時間間隔内の到着遅延に対する限界を表し、前記最大予想遅延は、前記時間間隔の長さより小さい、ステップと、
前記時間間隔に対するデータ値の到着について、前記データストリームのセットを監視するステップと、
前記データストリームの前記データ値が、前記データストリームに対する前記最大予想遅延以内に到着しなかった場合、データストリームを除外することによって、前記時間間隔に対する前記データストリームのセットを変更するステップと、
前記時間間隔に対する前記変更されたデータストリームのセットの前記到着したデータ値を用いて、前記式を評価するステップと、
提示のために、前記評価された式の値を送信するステップと
を含むことを特徴とする方法。
【請求項２】
前記式は、前記データストリームのセットの前記データ値を総計し、前記データ値は時間間隔に関連付けられることを特徴とする請求項１に記載の方法。
【請求項３】
前記最大予想遅延は、前記データストリームのデータ値の履歴上の到着遅延に基づいて決定されることを特徴とする請求項１に記載の方法。
【請求項４】
時間間隔に対する前記最大予想遅延は、以前の時間間隔に対する前記データストリームの前記データ値の前記到着遅延に基づいて決定されることを特徴とする請求項１に記載の方法。
【請求項５】
前記最大予想遅延は、前記データストリームの少なくとも３つの過去のデータ値の到着遅延に基づく移動総計値となるように決定されることを特徴とする請求項１に記載の方法。
【請求項６】
前記最大予想遅延は、ある率だけ増加された前記移動総計値となるように決定されることを特徴とする請求項５に記載の方法。
【請求項７】
前記最大予想遅延の後に到着するデータストリームのデータ値を、永続的データストアに記憶するステップ
をさらに含むことを特徴とする請求項１に記載の方法。
【請求項８】
前記データストリームのセット内のデータストリームは、１つの時間間隔から後続の時間間隔に動的に変化することを特徴とする請求項１に記載の方法。
【請求項９】
データストリームに対する不成功閾値を決定するステップと、
前記データストリームのデータ値が前記不成功閾値の前に到着しなかった場合、前記データストリームを不活性としてマークするステップと
をさらに含むことを特徴とする請求項１に記載の方法。
【請求項１０】
不活性とマークされたデータストリームを、１つまたは複数の後続の時間間隔に対してデータ値の到着について監視されるデータストリームの前記セットから除外するステップ
をさらに含むことを特徴とする請求項９に記載の方法。
【請求項１１】
前記データストリームに対するデータ値がその後に受信された場合、前記データストリームを活性とマークするステップと、
前記データストリームを、１つまたは複数の後続の時間間隔に対してデータ値の到着について監視されるデータストリームの前記セットに含めるステップと
をさらに含むことを特徴とする請求項９に記載の方法。
【請求項１２】
前記式の評価の結果を、時間間隔ごとに更新されるリアルタイムチャートによる提示のために構成するステップ
をさらに含むことを特徴とする請求項１に記載の方法。
【請求項１３】
計測手段が組み込まれたソフトウェアによって生成されるデータを処理するための命令を記憶したコンピュータ可読非一時的記憶媒体であって、前記命令はプロセッサによって実行されたときに、前記プロセッサに、
分析システムによって、データストリームのセットを識別する情報を受信するステップであって、各データストリームは、外部システム上で実行する計測手段が組み込まれたソフトウェアのインスタンスによって生成される、ステップと、
式の指定を受信するステップであって、前記式は前記データストリームのセットのデータ値を処理し、前記データ値の各々は前記式を評価するための複数の時間間隔のうちの時間間隔に関連付けられる、ステップと、
前記式を評価するための前記複数の時間間隔のそれぞれに対して
前記データストリームのセットの各データストリームに対して、前記データストリームに対する最大予想遅延を決定するステップであって、前記最大予想遅延は、計測手段が組み込まれたソフトウェアの対応するインスタンスから前記分析システムへの前記データストリームのデータ値に対する前記時間間隔内の到着遅延に対する限界を表し、前記最大予想遅延は、前記時間間隔の長さより小さい、ステップと、
前記時間間隔に対するデータ値の到着について、前記データストリームのセットを監視するステップと、
前記データストリームの前記データ値が、前記データストリームに対する前記最大予想遅延以内に到着しなかった場合、データストリームを除外することによって、前記時間間隔に対する前記データストリームのセットを変更するステップと、
前記時間間隔に対する前記変更されたデータストリームのセットの前記到着したデータ値を用いて、前記式を評価するステップと、
提示のために、前記評価された式の値を送信するステップと
を行わせることを特徴とするコンピュータ可読非一時的記憶媒体。
【請求項１４】
前記式は、前記データストリームのセットの前記データ値を総計し、前記データ値は時間間隔に関連付けられることを特徴とする請求項１３に記載のコンピュータ可読非一時的記憶媒体。
【請求項１５】
前記最大予想遅延は、前記データストリームのデータ値の履歴上の到着遅延に基づいて決定されることを特徴とする請求項１３に記載のコンピュータ可読非一時的記憶媒体。
【請求項１６】
前記最大予想遅延は、前記データストリームの少なくとも３つの過去のデータ値の到着遅延に基づく移動総計値となるように決定されることを特徴とする請求項１３に記載のコンピュータ可読非一時的記憶媒体。
【請求項１７】
前記命令は前記プロセッサに、
データストリームに対する不成功閾値を決定するステップと、
前記データストリームのデータ値が前記不成功閾値の前に到着しなかった場合、前記データストリームを不活性としてマークするステップと
をさらに行わせることを特徴とする請求項１３に記載のコンピュータ可読非一時的記憶媒体。
【請求項１８】
前記命令は前記プロセッサに、
不活性とマークされたデータストリームを、１つまたは複数の後続の時間間隔に対してデータ値の到着について監視されるデータストリームの前記セットから除外するステップ
をさらに行わせることを特徴とする請求項１７に記載のコンピュータ可読非一時的記憶媒体。
【請求項１９】
前記命令は前記プロセッサに、
前記データストリームに対するデータ値がその後に受信された場合、前記データストリームを活性とマークするステップと、
前記データストリームを、１つまたは複数の後続の時間間隔に対してデータ値の到着について監視されるデータストリームの前記セットに含めるステップと
をさらに行わせることを特徴とする請求項１７に記載のコンピュータ可読非一時的記憶媒体。
【請求項２０】
計測手段が組み込まれたソフトウェアによって生成されるデータを処理するためのコンピュータによって実施されるシステムであって、
コンピュータプロセッサと、
命令をその上に記憶したコンピュータ可読非一時的記憶媒体と
を備え、
前記命令はプロセッサによって実行されたときに、前記プロセッサに、
分析システムによってデータストリームのセットを識別する情報を受信するステップであって、各データストリームは、外部システム上で実行する計測手段が組み込まれたソフトウェアのインスタンスによって生成される、ステップと、
式の指定を受信するステップであって、前記式は前記データストリームのセットのデータ値を処理し、前記データ値の各々は前記式を評価するための複数の時間間隔のうちの時間間隔に関連付けられる、ステップと、
前記式を評価するための前記複数の時間間隔のそれぞれに対して
前記データストリームのセットの各データストリームに対して、前記データストリームに対する最大予想遅延を決定するステップであって、前記最大予想遅延は、計測手段が組み込まれたソフトウェアの対応するインスタンスから前記分析システムへの前記データストリームのデータ値に対する前記時間間隔内の到着遅延に対する限界を表し、前記最大予想遅延は、前記時間間隔の長さより小さい、ステップと、
前記時間間隔に対するデータ値の到着について、前記データストリームのセットを監視するステップと、
前記データストリームの前記データ値が、前記データストリームに対する前記最大予想遅延以内に到着しなかった場合、データストリームを除外することによって、前記時間間隔に対する前記データストリームのセットを変更するステップと、
前記時間間隔に対する前記変更されたデータストリームのセットの前記到着したデータ値を用いて、前記式を評価するステップと、
提示のために、前記評価された式の値を送信するステップと
を行わせることを特徴とするシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は一般に、計測手段が組み込まれたソフトウェアの分析に関し、より詳細には、計測手段が組み込まれたソフトウェアから受信されるデータストリームのリアルタイム処理に関する。
【背景技術】
【０００２】
関連出願の相互参照
本出願は、参照によりその全体が組み込まれている、２０１５年１月２９日に出願した米国特許仮出願第６２／１０９，３０８号明細書の利益を主張するものである。
【０００３】
ソフトウェア開発者は、コードに計測手段を組み込むことによって、開発するソフトウェアの種々の側面を監視する。これらは、ソフトウェアの性能、ソフトウェアの実行時に遭遇するエラー、ソフトウェアの実行時に遭遇する重要なイベント、実行されているコードの部分および実行されていない部分などを含む。コードに計測手段を組み込むための従来の技法は、ファイルをロギングするための情報をロギングする、または画面に情報をプリントするコード内の命令文を含む。このタイプの計測は簡単なアプリケーション、例えば単一のマシン上の簡単な実行のフローを有するアプリケーションに適している。しかしソフトウェアに計測手段を組み込むためのこれらの技法は、複雑な実行のフローを有する複雑なアプリケーション、例えば複数のシステムにわたって分散され、各システムが複数のプロセス、または実行のスレッドを実行するアプリケーションには不十分である。
【０００４】
分散システムの計測手段が組み込まれたソフトウェアによって生成されるデータを処理することは、分析のためにデータを同化することを必要とする。分散システム上で実行される計測手段が組み込まれたソフトウェアから送信されるデータを同化し処理することは、同時に異なるシステムから送信されるデータ値は異なるネットワーク遅延に遭遇する場合があり、従ってデータを一様に同化するシステムに到達するのに異なる大きさの時間がかかり得るという事実によって複雑になる。さらに、計測手段が組み込まれたソフトウェアを実行する１つまたは複数のシステムは、故障する場合がある。結果として、データを同化するシステムは、データ値がネットワーク遅延により遅くなる、またはデータソースの故障により到着する可能性がないかどうかを、決定する必要がある。これらの決定を行うことは結果として、データ値の処理に遅延を生じ、および／または提示される結果に不正確さを生じる。それに従って、ソフトウェアの計測に基づいて報告を生成するための従来のシステムはしばしば、計測手段が組み込まれたソフトウェアを稼働させる高度に分散されたシステムを分析するためには不十分である。
【発明の概要】
【０００５】
説明される実施形態は、計測手段が組み込まれたソフトウェアによって生成されるデータを処理する。ソフトウェア開発者はしばしば、開発されるソフトウェア内に、コードに計測手段を組み込むためのコードスニペットを含める。分析システムは、外部システム上で実行される計測手段が組み込まれたソフトウェアによって生成されるデータストリームを受信する。分析システムは、受信されたデータストリームの分析を行う。分析システムは、複数の時間間隔にわたるデータストリームのデータ値を用いて、式を評価する。例えば分析システムは、各時間間隔に対するデータストリームのデータ値を総計し、リアルタイムに更新されるチャートによる提示のためにその結果を送信することができる。
【０００６】
分析システムは、時間間隔の間のデータ値の到着時間に基づいて、データストリームが時間間隔における式の評価のために考慮されるか否かを決定する。分析システムは、それに対するデータ値が時間間隔の間に遅く到着する、データストリームを除外する。分析システムは、処理される各データストリームに対する最大予想遅延値を決定する。分析システムは、時間間隔の間にそれらの最大予想遅延値の前に到着しなかったデータ値を除外する。それに従って、分析システムは、これらのデータストリームを考慮せずに、その時間間隔に対して式を評価する。分析システムは、提示のために各時間間隔に対する式の評価の結果を送信する。
【０００７】
いくつかの実施形態において分析システムは、データストリームの過去のデータ値の遅延に基づいて最大予想遅延値を決定する。例えば分析システムは、データストリームのいくつかのデータ値の移動平均に基づいて、データストリームに対する最大予想遅延値を決定することができる。分析システムは、最大予想遅延値を定期的に、例えば各時間間隔に対して更新する。
【０００８】
いくつかの実施形態において分析システムはさらに、データストリームに対する不成功閾値を決定する。データストリームのデータ値がデータストリームの不成功閾値の前に到着しなかった場合、分析システムは、データストリームを不活性としてマークする。それに従って、分析システムはデータストリームを、後続の時間間隔に対する式の評価のために考慮しない。分析システムは、データストリームの次のデータ値が受信されたとき、データストリームを活性としてマークする。分析システムは、データストリームが活性とマークされた後、式の評価のためにデータストリームを考慮することを開始する。
【０００９】
本明細書で説明される特徴および利点は、すべてを包含するものではなく、特に、図面、明細書、および「特許請求の範囲」に鑑みて、当業者にはさらなる特徴および利点が明らかとなるであろう。さらに本明細書で用いられる述語は、主として読みやすさおよび教育的目的のために選択されており、開示される主題を詳細に叙述するまたは制限するために選択されていない場合があることが留意されるべきである。
【図面の簡単な説明】
【００１０】
開示される実施形態は、他の利点および特徴を有し、それらは詳細な説明、添付の「特許請求の範囲」、および添付の図（または図面）から、より容易に明らかになるであろう。以下は図の簡単な序論である。
【図１】実施形態による、計測手段が組み込まれたソフトウェアから受信されたデータストリームに基づいてリアルタイム報告を生成するための全体のシステム環境を示す図である。
【図２】実施形態による、計測手段が組み込まれたソフトウェアから受信されたデータストリームに基づいてリアルタイム報告を生成するためのシステムのアーキテクチャを示す図である。
【図３】実施形態による、計測分析システムによって受信されたデータストリームのデータに基づいて、リアルタイムに更新されるチャートを表示するユーザインターフェースのスクリーンショットを示す図である。
【図４】実施形態による、データセンタによってグループ化されたデータストリームの合計を決定する式を示す、リアルタイムに更新されるチャートを表示するユーザインターフェースのスクリーンショットを示す図である。
【図５】実施形態による、計測分析システムによるデータストリームの処理に対する、データ値の到着遅延の影響を示す図である。
【図６】実施形態による、計測分析システムによってデータストリームを処理するための全体のプロセスを示す図である。
【図７】実施形態による、計測分析システムによって受信されたデータストリームのデータ値に基づいて、式の値を決定するための全体のプロセスを示す図である。
【図８】実施形態による、データストリームを送信するデータソースの故障を識別するプロセスを示す図である。
【発明を実施するための形態】
【００１１】
次にいくつかの実施形態が詳しく参照され、その例は添付の図に示される。図において可能な限り、同様なまたは類似の参照番号が用いられ、同様なまたは類似の機能を示し得ることが留意される。図は、説明の目的のためのみに、開示されるシステム（または方法）の実施形態を示す。当業者は以下の説明から、本明細書で説明される原理から逸脱せずに、本明細書に示される構造および方法の代替的実施形態が用いられ得ることを容易に認識するであろう。
【００１２】
全体のシステム環境
図１は実施形態による、計測手段が組み込まれたソフトウェアから受信されたデータストリームに基づいてリアルタイム報告を生成するための全体のシステム環境を示す。全体のシステム環境は、計測分析システム１００、１つまたは複数の開発システム１２０、管理システム１６０、および報告システム１５０を含む。他の実施形態では、図１に示されるものより多いまたは少ない構成要素が用いられ得る。例えば開発システム１２０、管理システム１６０、および報告システム１５０は、ネットワーク（図１に示されない）を経由して計測分析システム１００と対話することができる。さらに図１に示される各システムの例より多くまたは少なく存在することができ、例えば複数の報告システム１５０が存在し得る。
【００１３】
図１および他の図は、類似の要素を識別するために類似の参照番号を用いる。「１３０ａ」など、参照番号の後の文字は、文が、その特定の参照番号を有する要素を具体的に指していることを示す。「１３０」など、続く文字のない文中の参照番号は、その参照番号を有する図内の要素のいずれかまたはすべてを指す（例えば文中の「１３０」は、図内の参照番号「１３０ａ」および／または「１３０ｂ」を指す）。
【００１４】
計測分析システム１００は、外部システム、例えば開発システム１２０から送信されたメトリックの値を備えたデータを受信する（計測分析システム１００は、本明細書では分析システムまたはデータ分析システムとも呼ばれ得る）。開発システム１２０は、計測手段が組み込まれたソフトウェア、例えばアプリケーション１３０を実行する。図１ではアプリケーション１３０は計測手段が組み込まれたソフトウェアの例として示されるが、本明細書で開示される技法は、アプリケーションソフトウェアに限定されず、他の種類のソフトウェア、例えばサーバソフトウェア、クライアントデバイス上で実行されるソフトウェア、ウェブサイトなどに応用可能である。
【００１５】
開発システム１２０上で実行されるソフトウェアは、ソフトウェアに計測手段を組み込んだ結果として生成される情報を計測分析システム１００に送信するように構成される。例えばアプリケーション１３０は、計測分析システム１００にデータを定期的に送信することができる。種々のアプリケーション１３０は、同じメトリックまたは異なるメトリックを異なるレートにおいて送信することができる。同じアプリケーションは、異なるメトリックを異なるレートにおいて送信することができる。アプリケーション１３０は、計測分析システム１００によってサポートされたアプリケーションプログラミングインターフェース（ＡＰＩ）を呼び出すことによって、計測分析システム１００にデータを送信する。
【００１６】
アプリケーション１３０（または任意の他のソフトウェア）は、アプリケーションにカウンタまたはゲージを追加するように計測手段が組み込まれ得る。カウンタは、ソフトウェアにおいて特定のイベントが発生するとすぐにインクリメントされる値を記憶する命令を備える。カウンタは、コードの特定の部分、例えば関数またはメソッド、条件コードの特定のブランチ、例外、ループなどが実行された回数を決定するために用いられ得る。アプリケーション１３０は、データストリームのデータソースの例である。
【００１７】
通常、カウンタ値は単調に変化し、すなわちカウンタ値は単調に増加／減少することができる。カウンタの値は、２つの異なる時点において、特定のカウンタ値における変化を決定するために比較され得る。例えば、ｔ１とｔ２の間の時間間隔内で、特定のイベントが発生した回数は、ｔ１からｔ２への対応するカウンタ値における変化を計算することによって決定され得る。計測分析システム１００のＡＰＩは、カウンタの現在値を計測分析システム１００に送信するために、アプリケーション１３０によって呼び出され得る。
【００１８】
以下は、アプリケーション１３０の計測手段が組み込まれたコードの例である。計測手段が組み込まれたコードに含まれた以下の命令は、アクションまたはエンティティのカウントを追跡するためのカウンタオブジェクトを作成する。
ｃｏｕｎｔｅｒ１＝ｃｒｅａｔｅＣｏｕｎｔｅｒ（ｓｏｕｒｃｅ＝”ｗｅｂ１”，ｍｅｔｒｉｃ＝”ｍｅｔｒｉｃ１”）；
【００１９】
上記の命令は、カウンタオブジェクトを作成し、それを変数ｃｏｕｎｔｅｒ１に割り当てる。カウンタオブジェクトは、ソース「ｗｅｂ１」、およびメトリック「ｍｅｔｒｉｃ１」に関連付けられる。実施形態においてソースおよびメトリック値は、カウンタ（またはゲージ）に関連付けられたデータストリームを一意に識別する。他の実施形態では、データストリームを一意に識別するために、より多いまたはより少ないキー値ペアが用いられ得る。
【００２０】
カウンタに対応するデータが、計測手段が組み込まれたコードから計測分析システム１００に送信されるとき、カウンタの作成時に指定された値の１つまたは複数が受信される。例えば通常、ソースおよびメトリック値は、報告されるデータ値と共にデータストリームにおいて受信された値の各タプルにより受信される。任意選択で値のタプルは、タイムスタンプ、例えば報告されるデータ値が、計測手段が組み込まれたソフトウェアによって捕捉されたときのタイムスタンプを含むことができる。
【００２１】
アプリケーション１３０の計測手段が組み込まれたコードは、コード内の様々な場所でカウンタ値を更新するための命令を含むことができる。例えばカウンタｃｏｕｎｔｅｒ１は、命令”ｃｏｕｎｔｅｒ１．ｉｎｃｒｅｍｅｎｔ（）”を実行することによってインクリメントされ得る。カウンタは、コードに関連付けられた様々なアクションまたはエンティティを追跡するためにインクリメントされ得る。例えば、カウンタは特定の関数またはメソッドが呼ばれるたびにインクリメントされることができ、カウンタは条件式の特定のブランチが実行されるたびにインクリメントされることができ、カウンタは例えばオブジェクトのコンストラクタ内のカウンタをインクリメントすることによって、特定のタイプのオブジェクトが作成されるたびにインクリメントされることができる。カウンタのインクリメント命令は、例えば関数が特定のパラメータの組み合わせにより呼び出された場合、条件付きで呼ばれ得る。アプリケーション１３０は、計測分析システム１００のＡＰＩを呼び出すことによって、計測分析システム１００にカウンタ値を通信する。
【００２２】
計測手段が組み込まれたコードにおいて定義されたカウンタは、定期的にそれ自体をリセットすることができる。例えばカウンタは、構成可能な特定の時間間隔の後にリセットされ得る。この場合、値は間隔の終わりにおいてリセットされ得るので、受信されたカウンタ値は、単調に増加（または減少）し得ない。カウンタは、累積的とすることができ、すなわちカウンタは、それをリセットするために明示的な命令が与えられない限りリセットしない。この状態においては、累積カウンタの値は単調に変化し、すなわちユーザによって明示的にリセットされない限り単調に増加（または減少）する。
【００２３】
ゲージは、アプリケーション１３０のいくつかのランタイム特性を測定するための命令を備え、例えばヒープサイズ、キャッシュミスまたはヒットの数、用いられるアクティブなメモリ、ＣＰＵ（中央処理装置）利用率、要求に応答するためにかかった総時間、サービスに接続するためにかかった時間などである。ゲージはまた、いくつかのアプリケーション固有のパラメータまたはビジネスに関連した値、例えばトランザクションの数、ユーザの数などを追跡するために用いられ得る。ゲージは、構成可能な時間間隔で定期的に呼び出され得る。ゲージの値は、計測分析システム１００に定期的に送信される。
【００２４】
管理システム１６０は特権ユーザ、例えばシステム管理者が、データストリームをメタデータに関連付けることを可能にする。管理システム１６０は、システム管理者がメタデータを指定するためのユーザインターフェースを与える、管理アプリケーション１７０を備える。メタデータはプロパティ、例えば名前−値ペア（プロパティは、本明細書ではメタデータタグまたはタグとも呼ばれる）を備える。計測分析システム１００は、データストリームを記述したメタデータを受信し、メタデータを記憶する。各データストリームから受信されたデータとは独立にデータストリームを記述したメタデータを指定する能力は、データストリームに基づいた報告の生成においていくつかの利点を与える。
【００２５】
例として計測分析システム１００は、アプリケーション１３０の計測手段が組み込まれたソフトウェアへの変更を必要とせずに、各データストリームを記述したメタデータへの変更を受信することができる。結果として計測分析システム１００は、新しい報告の指定および既存の報告への変更を受信し、開発者がアプリケーション１３０を変更することを必要とせずに、新しい／変更された報告に基づいて結果を生成する。
【００２６】
計測分析システム１００は、報告の結果を生成し、計測分析システム１００が計測手段が組み込まれたソフトウェアからデータストリームを受信するのに従ったリアルタイムでの提示のためにそれらを送信する。計測分析システム１００は、アプリケーション１３０の計測手段が組み込まれたコードへの変更を必要とせずに、既存の報告への変更を可能にする。さらに、前に受信されたデータストリームに対して、新しいメタデータが定義され得る。それに従って、データストリームとして受信されているデータ、ならびに前に記憶されたデータ（データストリームに関連付けられたメタデータの前に）に基づいて、新しい報告が生成され得る。例えば大きな時間間隔にわたる移動平均を与える報告が生成されることができ、現在受信されているデータ、ならびに前に受信されたデータ（報告に用いられるメタデータが、データに関連付けられたのより前に）に基づいて、移動平均を計算するようになる。さらにこれらの新しい報告は、計測手段が組み込まれたソフトウェアを変更すること（ソフトウェアに再び計測手段を組み込むことによって）、または計測手段が組み込まれたソフトウェアを再配備することを、必要とせずに定義され得る。
【００２７】
さらに計測分析システム１００は、データストリームを記述したメタデータの、データストリームのデータからの分離を提供する。それに従って、開発システム１２０から、計測分析システム１００に送信される必要があるデータ量が低減される。各アプリケーション１３０は、メトリックのデータ値、およびメトリックを識別する情報のみを送信する。メタデータ情報は、データストリームのデータソースとは独立したソースから別個に受信される。それに従って、各データストリームのデータ量を増加せずに、任意の量のメタデータが導入され得る。
【００２８】
報告システム１５０は、クライアントデバイスとすることができる。報告システム１５０は、ユーザが計測分析システム１００と対話することを可能にするクライアントアプリケーション１４０を含む。実施形態ではクライアントアプリケーション１４０は、インターネットブラウザであり、これは計測分析システム１００にアクセスするためのクライアント側コード（例えばＪａｖａ  Ｓｃｒｉｐｔ（登録商標））を含むことができる。他の実施形態においてクライアントアプリケーション１４０は、計測分析システム１００と対話するように開発された独自開発のアプリケーションである。
【００２９】
報告システム１５０は、従来のコンピュータシステム（例えばデスクトップまたはラップトップコンピュータ）、タブレット、または携帯情報端末（ＰＤＡ）、携帯電話、スマートフォンなどのコンピュータ機能を有するデバイス、または他の適切なデバイスとすることができる。報告システム１５０は、ネットワークを経由して計測分析システム１００と対話する。ネットワークは、有線および／または無線通信システムの両方を用いた、ローカルエリアおよび／または広域ネットワークの任意の組み合わせを備えることができる。一実施形態においてネットワークは、標準の通信技術および／またはプロトコルを用いる。
【００３０】
計測分析システム１００は、１つまたは複数のプロセッサ、メモリ、二次記憶装置、および入力／出力コントローラを含むコンピューティングシステムにおいてホストされ得る。計測分析システム１００をホストするために用いられるコンピューティングシステムは通常、例えば報告システム１５０として用いられる通常のコンピューティングシステムと比べて、強力なプロセッサ、大きなメモリ、および高速な入力／出力システムを用いるサーバクラスシステムである。
【００３１】
実施形態において、いくつかの開発システム１２０からのデータは、例えばサーバによって統合されることができ、組み合わされたデータは計測分析システム１００に送信される。例えば企業は、異なる開発システム１２０から内部的にデータストリームを受信し、組み合わされたデータをバッチの形で計測分析システム１００に定期的に送信する、サーバを設置することができる。これは、企業からの外部通信の効率性を可能にする。しかしこの構成は結果として、計測分析システム１００への情報の通信における遅延、および報告システム１５０によるデータの報告における対応する遅延を生じ得る。
【００３２】
計測分析システムのシステムアーキテクチャ
図２は実施形態による、計測手段が組み込まれたソフトウェアから受信されたデータストリームに基づいてリアルタイム報告を生成するためのシステムのアーキテクチャを示す。計測分析システム１００は、インターフェースモジュール２１０、データストリームプロセッサ２８０、量子化モジュール２４０、メタデータモジュール２２０、メタデータストア２３０、データポイント経路指定モジュール２５０、アナリティクスエンジン２７０、ユーザインターフェースマネージャ２９０、および時系列データストア２６０を含む。他の実施形態において計測分析システム１００は、本明細書で説明されない他のモジュールを含むことができる。特定のモジュールによって提供されるように示される機能は、代わりに他のモジュールによって実施され得る。
【００３３】
インターフェースモジュール２１０は、外部システム、例えば計測分析システム１００にデータストリームを送信する開発システム１２０から要求を受信する。インターフェースモジュール２１０は、外部システムが呼び出すことができる様々なアプリケーションプログラミングインターフェース（ＡＰＩ）をサポートする。インターフェースモジュール２１０は、アプリケーション１３０によって提供されるデータを受信し、処理する。インターフェースモジュール２１０は、データがインターフェースモジュール２１０によってサポートされるＡＰＩによって指定されたフォーマットに適合する限り、異なるベンダによって提供される機能を用いて計測手段が組み込まれたアプリケーション１３０によって提供されるデータを受信し、処理することができる。
【００３４】
インターフェースモジュール２１０は、開発システム１２０などの外部システムから、データストリームの形でデータを受信する。実施形態においてインターフェースモジュール２１０は、データをタプルとして表す。インターフェースモジュールによって受信されるデータのタプルは、メトリック識別子、およびメトリックの値を含む様々な要素を備える。メトリック識別子は、メトリックの名前とすることができる。データのタプルは他の要素、例えばデータがデータソース（例えばデータを送信するアプリケーション１３０）によって生成された時間に対応するタイムスタンプ、およびデータに関連付けられたプロパティを備えることができる。実施形態において、タプルに関連付けられたタイムスタンプは、データ値が計測分析システム１００によって受信された時間を表す。データに関連付けられたプロパティは、名前−値ペアの形で与えられることができる。これらのプロパティは、受信されたデータを記述する追加の情報、例えばホスト名、サーバ名、デバイス名などのデータのソースを記述する情報、またはソースに関連付けられたサービス名、データに関連付けられたメソッドまたは関数名、アプリケーションインスタンス識別子などを与えることができる。
【００３５】
実施形態においてインターフェースモジュール２１０は、インターフェースモジュール２１０によって受信された記録に対する識別子を生成し、割り当てる。識別子は、本明細書では時系列識別子と呼ばれる（本明細書ではｔｓｉｄとも呼ばれる）。メトリック名と一致するすべてのタプル、およびタプルにより受信されたプロパティのセットには、一意の時系列識別子が割り当てられる。それに従ってタプル（メトリック名、プロパティ、メトリック値、タイムスタンプ）は、タプル（ｔｓｉｄ、メトリック値、タイムスタンプ）にマッピングされる。例えばタプルが、メトリック名ｍ１およびホスト名ｈ１を与える場合、メトリック名ｍ１およびホスト名ｈ１を有するすべてのタプルには、同じ時系列識別子が割り当てられる。それに従ってｔｓｉｄは、計測分析システム１００によって受信されるデータストリームのすべてのタプルを一意に識別する。インターフェースモジュール２１０は、さらなる処理のためにデータストリームのデータ値を、データストリームプロセッサ２８０に提供する。
【００３６】
データストリームプロセッサ２８０は、異なるデータストリームのデータを処理して、アナリティクスエンジン２７０による分析のためにデータを準備する。データストリームプロセッサ２８０は、ある時間間隔に対して処理されるデータ値、およびアナリティクスエンジンによってその時間間隔の間、リアルタイム報告から無視されるデータ値を決定する。データストリームプロセッサ２８０は、時間間隔の間、データ値が到着した（または到着しなかった）時間に基づいて、データ値が処理されるか無視されるかを決定する。一般にデータストリームプロセッサ２８０は、時間間隔内で早く到着するデータ値を処理し、時間間隔の間に遅く到着するデータ値を無視する。
【００３７】
データストリームプロセッサ２８０は、データストリームに対する最大予想遅延を決定し、データ値の到着時間を最大予想遅延値と比較して、データ値が時間間隔に対して考慮されるかどうかを決定する。考慮されるデータ値は、リアルタイム報告の式、例えばデータストリームのデータ値を総計する式への入力として提供される。
【００３８】
データストリームプロセッサ２８０はまた、データストリームに対する不成功閾値を決定する。データストリームプロセッサ２８０は、不成功閾値を超えて、データストリームからデータ値が受信されない場合、データストリームを不活性としてマークする。データストリームプロセッサ２８０は、各データストリームのステータスをメタデータストア２３０に記憶する。データストリームプロセッサ２８０は、後続の時間間隔に対して、不活性のデータストリームを考慮することを停止する。言い換えればデータストリームプロセッサ２８０は、不活性のデータストリームの最大予想遅延値の間、待機しない。データストリームプロセッサ２８０は、データストリームからデータ値が受信された場合は、データストリームを再び活性とマークする。データストリームが活性とマークされた後、データストリームプロセッサ２８０は、後続の時間間隔に対して、再びデータストリームを考慮することを再開する。
【００３９】
データストリームプロセッサ２８０は、各データストリームに対する過去のデータ値をメモリに記憶し、過去のデータ値に基づく総計値を用いて、最大予想遅延の値を決定する。例えばデータストリームに対する最大予想遅延は、Ｎ個（例えばＮ＝５、またはＮ＝４）のデータ値の移動平均に基づいて取得され得る。データストリームプロセッサ２８０は、遅延値における変動を考慮に入れるように１５０％などの率を、移動平均値に乗算することができる。
【００４０】
実施形態においてデータストリームプロセッサ２８０は、各時間間隔の始まりで、または前の時間間隔の終わりにおいて、最大予想遅延値を再計算する。他の実施形態ではデータストリームプロセッサ２８０は、アナリティクスエンジン２７０が式を評価する時間間隔より大きな時間間隔で、定期的に最大予想遅延値を再計算する。例えばデータストリームプロセッサ２８０は、アナリティクスエンジン２７０が式を評価する時間間隔の５つごとに、最大予想遅延値を再計算することができる。実施形態においてデータストリームプロセッサ２８０は、最大予想遅延値または不成功閾値として、データストリームに対する、ユーザが構成可能な固定値を受信する。データストリームプロセッサ２８０は、この時間間隔に対して考慮されるべきデータ値を識別し、それらをさらなる処理のために量子化モジュール２４０に提供する。
【００４１】
量子化モジュール２４０は、データがその中で任意の時間間隔において利用可能な、データの入力時系列を、データがその中で規則的な時間間隔において利用可能な時系列に変換するように、受信されたデータ値を処理する。例えば入力時系列において受信されたデータ値は不規則な間隔で発生し得るが、量子化モジュール２４０は、時系列のデータを処理して、１秒ごと、または５秒ごと、または１５秒ごとなどに、データが定期的に発生する時系列を生成する。本明細書ではこのプロセスは、時系列の量子化と呼ばれる。実施形態においてインターフェースモジュール２１０は、複数のスレッドまたはプロセスを作成し、各スレッドまたはプロセスは、データストリームに対応するデータを受信するように構成される。各スレッドまたはプロセスは、量子化モジュール２４０を呼び出して、各時間間隔に対して各データストリームに対して受信されたデータの量子化を行う。
【００４２】
メタデータモジュール２２０は、開発システム１２０から受信された様々なデータストリームを記述したメタデータ情報を受信し、記憶する。実施形態において、メタデータモジュール２２０に記憶されるメタデータはユーザ、例えばシステム管理者から受信される。メタデータは、名前−値ペアとして表され得る。実施形態においてメタデータは、メタデータオブジェクトとして表され、各オブジェクトは、名前−値ペアとして表され得るプロパティのセットを定義する。データストリームのセットは、メタデータオブジェクトに関連付けられ得る。それに従って、メタデータオブジェクトによって表されるすべてのプロパティは、メタデータオブジェクトに関連付けられた各データストリームに関連付けられる。
【００４３】
メタデータデータストア２３０は、メタデータオブジェクト、およびそれらのデータストリームへの関連付けを記憶する。メタデータデータストア２３０は、各メタデータオブジェクトに対する識別子（ＩＤ）、およびメタデータオブジェクトによって表されるプロパティを記憶する。実施形態において各データストリームは、データストリームを一意に識別する時系列識別子に関連付けられる。メタデータデータストア２３０は、各メタデータオブジェクトを、時系列識別子値のセットにマッピングするインデックスを記憶する。メタデータデータストア２３０は、様々なプロパティ（または名前−値ペア、もしくはタグ）を、時系列識別子値のセットにマッピングするインデックスを記憶する。
【００４４】
メタデータストア２３０は、受信された命令に基づいて、メタデータオブジェクトを変更する。例えばメタデータストア２３０は、メタデータオブジェクトによって表されるいくつかのプロパティを変更、追加、または削除することができる。あるいはメタデータストア２３０は、メタデータオブジェクトからデータストリームへのマッピングを、受信された命令に基づいて変更することができる。例えばメタデータストア２３０は、データストリームをメタデータオブジェクトに関連付ける、またはメタデータオブジェクトとデータストリームとの間の関連付けを削除することができる。
【００４５】
実施形態においてメタデータストア２３０は、リレーショナルデータベースとして表されるが、任意の他のタイプのデータベースまたはデータストアとして表され得る。メタデータストア２３０は、メタデータオブジェクトＩＤを、データストリームを識別する時系列ＩＤにマッピングするテーブルを記憶した、リレーショナルデータベースとすることができる。他のデータベーステーブルは、メタデータオブジェクトＩＤから、名前−値ペアとして表される各プロパティへのマッピングとして、各メタデータオブジェクトに関連付けられたプロパティを記憶することができる。
【００４６】
アナリティクスエンジン２７０は、メタデータに基づいて式を指定する報告を評価する。式は様々な演算、例えば総計および変換に基づくことができる。式は、様々な方法で総計および変換を含む様々な関数を構成することによって、および他の前に定義された式を構成することによって得られ得る。実施形態においてアナリティクスエンジン２７０は、式を構文解析し、プログラムの実行可能な表現を生成し、生成された表現を実行する。
【００４７】
時系列データストア２６０は、様々なソース、例えば開発システム１２０から受信されたデータを記憶する。実施形態において時系列データストア２６０はまた、データが量子化された後、時系列データを記憶する。時系列データストア２６０はまた、各時系列に対するロールアップデータを記憶することができる。時系列データストア２６０はまた、様々なアナリティクス要求の結果、例えばユーザによって要求された様々な報告の結果を記憶する。アナリティクスエンジン２７０は、いくつかの報告に対する結果、例えば時系列データストア２６０に記憶されたデータを様々なソースからのデータストリームとして得られる新しいデータと組み合わせることによって時間の間隔にわたる移動平均を、計算する。
【００４８】
ユーザインターフェースマネージャ２９０は、ユーザインターフェース、例えば報告システム１５０のクライアントアプリケーション１４０のユーザインターフェースを通じて、ユーザによって要求される報告をレンダリングする。実施形態においてクライアントアプリケーション１４０は、インターネットブラウザアプリケーションであり、ユーザインターフェースマネージャ２９０は、クライアントアプリケーション１４０を用いて表示のためのウェブページを生成する。他の実施形態ではクライアントアプリケーション１４０は、独自開発のプロトコルを用いて、ユーザインターフェースマネージャ２９０と通信する。ユーザインターフェースマネージャは報告データを、例えばチャートとしての提示のために、クライアントアプリケーション１４０に提供する。
【００４９】
実施形態においてユーザインターフェースマネージャ２９０は、計測分析システム１００に到着するデータストリームのデータに基づいて、クライアントアプリケーション１４０によって表示される報告に対応するチャートを絶えず更新する。計測分析システム１００は、データストリームのデータに基づいて報告のためのデータを生成するように、管理システム１６０を通じてシステム管理者によって構成される。計測分析システムは、表示された報告を特定のレートで更新する。
【００５０】
計測分析システム１００はまた、報告システム１５０によって表示される必要がある報告の定義を受信する。報告定義は、表示されることになる報告に対応する式を指定する。例えば式は、特定のメタデータ属性によってグループ化された、すべてのデータストリームの総計値が、Ｔ秒（例えば、Ｔ＝１秒）ごとに表示され、更新される必要があることを指定することができる。計測分析システム１００は、報告システムによってリアルタイムチャートを提示する。リアルタイムチャートとは、データストリームのデータ値が受信されるのに従って更新されるチャートを指す。これと対照的に従来の報告は、データベースの永続的記憶装置に記憶されたデータに対して実行されるクエリに基づいて生成される。実際には、リアルタイムチャートは、開発システムから計測分析システム１００にネットワークを経由して生成されたデータの送信における遅延、データの処理における遅延などのため、データが生成されるとすぐ直ちには更新されない。しかし、計測分析システムの実施形態は、データソース（すなわち外部システム上で実行される計測手段が組み込まれたソフトウェア）によってデータ値が生成される時点と、生成されたデータ値に基づいた式の評価の結果が報告システム１５０のユーザインターフェース上に提示される時点との間の遅延を最小にする。
【００５１】
計測手段が組み込まれたソフトウェアに基づくリアルタイム報告
計測分析システム１００のユーザインターフェースマネージャ２９０は、ユーザインターフェースを通じて、リアルタイムでの報告によって生成されたデータを提示する。計測手段が組み込まれたソフトウェアを実行する開発システム１２０は、ネットワークを経由してデータ値を与える。ネットワークはデータ値を、データ値が外部システムによって生成され送信された後、ある遅延の後に、計測分析システム１００に到着させる。図３および４は、計測分析システム１００によってユーザインターフェース上に提示される報告の例を示す。
【００５２】
図３は実施形態による、計測分析システムによって受信されたデータストリームのデータに基づいて、リアルタイムに更新されるチャートを表示するユーザインターフェースのスクリーンショットを示す。スクリーンショットは、メトリック３２０ｓｅｒｖｉｃｅ．ｃａｃｈｅ．ｈｉｔを表す、データストリームを表示するいくつかのチャート３１０を示す。メトリックは、開発システム１２０上で実行される計測手段が組み込まれたソフトウェアから受信されたキャッシュヒット値を表す。値は、１秒の時間間隔にロールアップされる。それに従って、１秒の各時間間隔において受信されるキャッシュヒット値は、一緒に加算される。メトリックｓｅｒｖｉｃｅ．ｃａｃｈｅ．ｈｉｔを報告する多数のサービスが存在することができ、それに従って多数のチャート３１０が表示される。図３は、ユーザがアクションをとること、例えばユーザインターフェースによって報告されるメトリックを選択すること、ロールアップを行うことを可能にする、様々なウィジェットを示す。
【００５３】
大きな企業は、非常に多数の開発システム１２０を有し得る。各開発システム１２０は、複数のサービスを実行することができ、各サービスはメトリックを報告する。結果として図３に表示されるチャートの数は、非常に大きくなり得る。ユーザは、図４に示されるようにデータストリームをグループ化することによって、データストリームによって報告されるデータに対するより良い洞察を得ることができる。
【００５４】
図４は実施形態による、データセンタによってグループ化されたデータストリームの合計を決定する式を示す、リアルタイムに更新されるチャートを表示するユーザインターフェースのスクリーンショットを示す。図４は、データストリームがそれによってグループ化される属性の指定、および各グループに対して行われる総計演算を可能にするウィジェット４２０を示す。図４に示されるようにチャート４１０は、データセンタによってグループ化され、各グループに対して合計されたデータストリームを示す。２つのデータセンタだけが存在すると仮定すると、チャートの数は２つに低減される。各チャート４１０は、特定のデータセンタから受信されたデータストリームのデータ値の合計を示す。
【００５５】
計測分析システム１００は、様々なデータストリームのデータ値を収集し、報告としての表示のために式の値を計算する。例えば計測分析システム１００は、データストリームに基づいてデータ値のグループを決定し、各データセンタに対してデータ値の合計を計算して、図４に示されるチャートを提示する。計測分析システム１００は、後続の時間間隔に対して上記の計算を行う。それに従って、各時間間隔に対して計測分析システム１００は、データストリームのデータ値が到着するのを待つ。計測分析システム１００が時間間隔に対するすべての予想されるデータ値が到着したと決定した後、計測分析システム１００は必要な計算を行い、表示のために結果を送信する。
【００５６】
しかし、異なるデータソースから様々なデータ値が、時間間隔以内の異なる時点で到着し得る。さらにはいくつかのデータ値は、時間間隔以内に到着しない場合がある（例えばそれらは次の時間間隔において、さらにはより後に到着する場合がある）。さらにいくつかのデータソースは故障する場合があり（例えばシステムクラッシュにより）、さらにはデータソースが再開するまで、その時間間隔に対する、またはいくつかの後続の時間間隔に対するデータ値を送信しない場合がある。ネットワーク遅延、結果の計算における遅延、およびシステム故障により、計測分析システム１００は、データがデータソースによって生成されてから一定の遅延の後にのみ、表示のための結果値を与えることが可能になる。しかし、計測分析システム１００が結果を提示できるのが、時間間隔以内で早いほど、報告はリアルタイム報告により近くなる。本発明の実施形態は、結果の正確さを最大にしながら、計測分析システムが各時間間隔内で早く、データストリームに基づいた式の評価の結果を提示することを可能にする。
【００５７】
図５は実施形態による、計測分析システムによるデータストリームの処理に対する、データ値の到着遅延の影響を示す。図５は、計測分析システム１００にそれぞれデータストリームｄ１、ｄ２、ｄ３、およびｄ４を送信する４つのデータソース、アプリケーション１３０ａ、１３０ｂ、１３０ｃ、および１３０ｄを示す。データストリームｄｘのデータ値は、ｄｘｌ、ｄｘ２、ｄｘ３、等々であり、それぞれ特定の時間間隔の間に送信される。例えばデータストリームｄ１のデータ値は、ｄ１１、ｄ１２、等々である。すべてのデータ値は、それらのデータソースによって時間間隔の始まりにおいて生成されると想定される。それに従って、図５で時間間隔の始まりと比較して、時間間隔に沿ってデータ値が示される時点の間の差は、その後にデータ値が、データソースによって生成された後に計測分析システム１００に到達する遅延を表す。
【００５８】
図５に示されるタイムラインは、２つの時間間隔Ｉ１（時間ｔ０からｔ２まで）およびＩ２（時間ｔ２からｔ４まで）、等々を示す。計測分析システム１００は、データストリームｄ１から時間間隔Ｉ１の間にデータ値ｄ１１、時間間隔Ｉ２の間にｄ１２；データストリームｄ２から時間間隔Ｉ１の間にデータ値ｄ２１、時間間隔Ｉ２の間にｄ２２；データストリームｄ３から時間間隔Ｉ１の間にデータ値ｄ３１、時間間隔Ｉ２の間にｄ３２：データストリームｄ４から時間間隔Ｉ１の間にデータ値ｄ４１、時間間隔Ｉ２の間にｄ４２を受信する。
【００５９】
図５に示されるようにすべてのデータ値ｄ１１、ｄ１２、ｄ１３、およびｄ１４は、間隔Ｉ１内の時間ｔ１までに到着する。時点ｔ１は時間間隔Ｉ１内で比較的早く、例えば４つすべてのデータ値は、時間間隔Ｉ１の半分未満が完了する前に到着する。それに従って計測分析システム１００は、時間ｔ１の後にできるだけ早く、必要な式を計算し、それらを表示することができる。これと対照的に間隔Ｉ２の間では、データ値ｄ１２、ｄ２２、およびｄ３２が時間間隔Ｉ２の間に早く到着していても、データ値ｄ４２は時間間隔Ｉ２のほとんど終わりであるｔ３に到着する。それに従って計測分析システム１００は、時間間隔Ｉ２のほとんど終わりである時間ｔ３の後にのみ、必要な式を計算して、結果を提示することができる。
【００６０】
結果として、時間間隔に対するデータ値の受信における長い遅延は、結果として望ましくないユーザ経験を生じる。結果は、データ値がデータソースによって生成された時点よりずっと後に提示される。さらに、時間間隔Ｉ１の結果は時間間隔以内で早く提示され、時間間隔Ｉ２の結果は時間間隔の間で遅く提示されるので、その間にユーザにデータが提示されないリアルタイムチャートにおけるギャップ、すなわち時間間隔Ｉ１に対する結果が提示される時点と、時間間隔Ｉ２に対する結果が提示される時点との間のギャップが存在する。このギャップは、結果が提示される時間の間の通常のギャップより長くなる。リアルタイムに更新されることが期待されるチャートにおいて、データがその間提示されない長いギャップを有することは、望ましくない使用経験を与える。本発明の実施形態は計測分析システム１００が、時間間隔の間に早く結果をユーザに提示することを可能にし、２つの連続した時間間隔の間での、結果の提示の間のギャップを低減する。
【００６１】
全体のプロセス
図６、７、および８は、計測手段が組み込まれたソフトウェアから受信されたデータを処理するための計測分析システムによって実行される様々なプロセスを示す。各図に示されるフローチャートで示されるステップは、図に示されるものとは異なる順序で実行され得る。例えばいくつかのステップは、他のステップと並行して実行され得る。さらにいくつかのモジュールによって実行されるように示されるステップは、他のモジュールによって実行され得る。
【００６２】
図６は実施形態による、計測分析システムによってデータストリームを処理するための全体のプロセスを示す。実施形態において計測分析システム１００は、複数の時間間隔にわたって式の値を決定する。例えば式は、データストリームの一部として時間間隔の間に受信されたデータ値を総計することができる。これらの実施形態において図６に示されるプロセスは、データ値が、時間間隔に対して式を評価するための入力として用いられるべきかどうかを決定するために、計測分析システム１００によって実行される。
【００６３】
計測分析システム１００が、データストリームのデータ値は時間間隔の間で早く到着したと決定した場合、計測分析システム１００はデータ値を、時間間隔に対する式の値を決定するための入力として用いる。計測分析システム１００が、データストリームからのデータ値は遅く到着するまたは時間間隔の間で到着しそうにないと決定した場合は、計測分析システム１００は、遅く到着するデータ値を考慮せずに、時間間隔に対して式を評価する。言い換えれば計測分析システム１００は、遅く到着するデータ値を、その時間間隔に対して式を評価するために用いられる入力から除外する。
【００６４】
６１０でインターフェースモジュール２１０は、１つまたは複数の外部システムから、複数のデータストリームを記述した情報を受信する。データストリームを記述した情報は、計測分析システムのＡＰＩを呼び出すことにより、外部システムによって提供され得る。例えば外部システムは、データストリームを記述した情報を提供することによって外部システムがデータストリームを計測分析システム１００に登録することを可能にする、計測分析システムのＡＰＩを呼び出すことができる。データストリームを記述した情報は、データストリームに関連付けられたメトリック（例えばキャッシュヒット、キャッシュミス、ＣＰＵ負荷、メモリ使用量など）、データソースを記述する属性（例えばサービス名）などを含む。
【００６５】
データストリームプロセッサ２８０は、後続の時間間隔に対して複数のデータストリームから受信されたデータ値を処理する。データストリームプロセッサ２８０は、各時間間隔に対しておよび各データストリームに対して、以下のステップ（６２０、６３０、および６４０）を行う。
【００６６】
データストリームプロセッサ２８０は、各データストリームに対する最大予想遅延を決定する。データストリームプロセッサ２８０は、最大予想遅延としてデータストリームに関連付けられた固定の閾値を用いることができる。例えば計測分析システム１００は、システム管理者から、データストリームに対する構成パラメータとして最大予想遅延を受信することができる。いくつかの実施形態においてデータストリームプロセッサ２８０は、そのデータストリームに対して受信された前のデータ値に基づいて、データストリームに対する最大予想遅延を決定する。例えばデータストリームプロセッサ２８０は、受信された値のセット（例えば固定の数の過去の値、または移動時間ウィンドウ内で受信されたすべての過去の値）に基づく移動総計値に基づいて、データストリームに対する最大予想遅延を決定することができる。他の例としてデータストリームプロセッサ２８０は、そのデータストリームから受信された最後のデータ値に基づいて、データストリームに対する最大予想遅延を決定することができる。
【００６７】
実施形態においてデータストリームプロセッサ２８０は、ある率だけ、例えば固定のパーセント値または固定のオフセットだけ、過去のデータ値に基づく総計値を増加させることによって、最大予想遅延値を決定する。例えばデータストリームプロセッサ２８０は、１５０％だけスケーリングされた、過去の４つのデータ値の平均として、データストリームに対する最大予想遅延値を決定することができる。他の例としてデータストリームプロセッサ２８０は、固定値、例えば５だけ増加された、最後のデータ値として、データストリームに対する最大予想遅延値を決定することができる（固定値の選択は、データストリームにおいて受信されるデータのタイプに依存する）。
【００６８】
６３０でデータストリームプロセッサ２８０は、データストリームから受信されたデータ値を、さらにデータ値を処理するため、例えばリアルタイムチャートとしてユーザインターフェースを通じて提示するために、計測分析システム１００のソフトウェアモジュールに提供する。例えば実施形態において、６３０でデータストリームプロセッサ２８０は、データ値を用いた量子化を行うために、データ値を量子化モジュール２４０に提供する。他の実施形態では、６３０でデータストリームプロセッサ２８０は、データ値を用いて式、例えば時間間隔の間に受信されたデータ値を用いて総計値を決定する式を評価するために、データ値をアナリティクスエンジン２７０に提供する。
【００６９】
６３０でデータストリームプロセッサ２８０は、データストリームのデータ値が計測分析システム１００に、最大予想遅延の前に到着した場合、さらなる処理のためにデータストリームのデータ値を量子化モジュール（または任意の他のモジュール）に提供する。データストリームのデータ値が計測分析システム１００に、最大予想遅延の前に到着しなかった場合は、６３０でデータストリームプロセッサ２８０は、データ値が到着しなかったことを示す情報を提供する。実施形態において、６３０でデータストリームプロセッサ２８０は、特別なデータ値（例えばヌルデータ値）を後続の処理を行うモジュールに提供することによって、データ値が到着しなかったことを示す情報を提供する。
【００７０】
６４０でデータストリームプロセッサ２８０は、データストリームのデータ値が到着したのが最大予想遅延の前であろうと、最大予想遅延の後であろうと、データストリームのデータ値を永続的ストア（例えば時系列データストア２６０）に記憶する。言い換えれば、６４０でデータストリームプロセッサ２８０は、いつデータ値が計測分析システム１００に到着したかに関わりなく、データ値を記憶する。データストリームプロセッサ２８０は、最大予想遅延の後に到着したデータストリームのデータ値を、データのリアルタイム処理を行うため、例えばリアルタイムチャートを提示するために、量子化モジュール２４０またはアナリティクスエンジン２７０に提供しない。これは、データストリームプロセッサ２８０は、遅く到着するデータ値のためにリアルタイムチャートでのデータの提示を減速させないように設計されるからである。しかし、６４０でデータストリームプロセッサ２８０は、データ値を、たとえそれらが最大予想遅延の後に到着したとしても時系列データストア２６０に記憶し、それによりその時間間隔に対するデータストリームのデータを処理する後続のクエリは、データ値がいつ到着したかに関係なくデータ値を使用する。
【００７１】
図７は実施形態による、計測分析システムによって受信されたデータストリームのデータ値に基づいて、式の値を決定するための全体のプロセスを示す。図７に示されるプロセスは、図６に示されものと同様のステップを示すが、式を評価すること、およびデータをリアルタイムチャートとして提示することの関連におけるものである。
【００７２】
図６のステップ６１０と同様に、７１０でインターフェースモジュール２１０は、１つまたは複数の外部システムから複数のデータストリームを記述した情報を受信する。７２０でアナリティクスエンジン２７０は、時間間隔に対するデータストリームのデータに基づいた式を受信する。計測分析システム１００は、例えば１秒ごと、２秒ごと、または５秒ごとに、複数の時間間隔のそれぞれに対する式の値を計算する。式は、時間間隔に関連付けられたデータ値に基づいて、総計値を計算することができる。時間間隔に関連付けられたデータ値は、時間間隔の間に処理のために外部システム（すなわちデータストリームのデータソース）から送信されるデータ値に対応する。データ値は計測分析システム１００に、外部システムからデータ値が送信されたのと、同じ時間間隔以内に到着しても、しなくてもよい。例として式は、カウント、合計、平均、中央値、パーセント値、または時間間隔に関連付けられたすべてのデータ値にわたる任意の他の総計値を計算することができる。他の例として式は、特定の属性によってグループ化されたデータ値にわたって上記の総計を計算することができる。例えば式は、データセンタ属性によってグループ化されたデータ値の合計を計算することができ、それによって各データセンタから到着したデータ値の合計を決定する。
【００７３】
図６のステップ６２０と同様に、７３０でデータストリームプロセッサ２８０は、式を評価するために考慮される各データストリームに対する最大予想遅延値を決定する。式の評価のために関連のあるデータストリームのセットは、データストリームを記述したメタデータを用いて、式の一部として指定され得る。式は、データストリームを記述した１つまたは複数のメタデータ属性の値を指定することによって、データストリームのセットを識別することができる。例えば式は、データセンタ属性の特定の値によって識別される特定のデータセンタからの、すべてのデータストリームに基づいて総計値を評価することができる。別の式は、特定のメトリック、例えばキャッシュヒットを提供するすべてのデータストリームを指定することができる。７４０でデータストリームプロセッサ２８０は、式に関連付けられたデータストリームのセットを監視する。実施形態においてデータストリームプロセッサ２８０は、計測分析システムによって受信されるすべてのデータストリームを監視し、それによってまた式に関連付けられたセットを監視することができる。実施形態においてデータストリームプロセッサ２８０は、データストリームのデータ値が到着するのを待つプロセスまたはスレッドを作成することによって、データストリームを監視する。
【００７４】
７５０でデータストリームプロセッサ２８０は、データストリームのデータ値が遅く到着した、すなわちデータストリームの最大予想遅延までに到着しなかった場合、時間間隔に対する式を評価するために考慮されるセットから、データストリームを除外する。言い換えればデータストリームプロセッサ２８０は、時間間隔における式の評価のために、それぞれのデータストリームに対する最大予想遅延の前に到着するデータ値のみを考慮する。７６０でデータストリームプロセッサ２８０は、データ値のセットのすべてのデータ値（遅く到着するデータ値を除外することによって得られる）を収集し、さらなる処理のために、データ値を例えば量子化モジュール２４０またはアナリティクスエンジン２７０に提供する。
【００７５】
７７０でアナリティクスエンジン２７０は、データストリームプロセッサ２８０によって与えられる収集された値のセットに基づいて、式の値を決定する。アナリティクスエンジン２７０は、式の評価の結果を、ユーザインターフェースマネージャ２９０に提供する。７８０でユーザインターフェースマネージャ２９０は、例えばリアルタイムチャートとしてのユーザインターフェースを通じた提示のために、式の評価の結果を送信する。計測分析システム１００は、ステップ７３０、７４０、７５０、７６０、７７０、および７８０を、各後続の時間間隔に対して繰り返す。これらのステップは、例えばユーザがリアルタイムチャートを見ることを望む限り、無期限に繰り返され得る。
【００７６】
データストリームプロセッサ２８０はさらに、例えばデータストリームを送信する計測手段が組み込まれたソフトウェア、またはデータストリームを提供する外部システムのクラッシュまたは故障の結果として、ストリームを提供するデータソースが故障したかどうかを決定するための、不成功閾値を保持する。データストリームが不具合になったかどうかを決定するために用いられる不成功閾値は、通常はデータストリームの最大予想遅延値より長い。例えば不成功閾値は、数個の時間間隔と同じ長さとすることができる。これと対照的にデータストリームに対する最大予想遅延値は、時間間隔の長さ未満である。実施形態において計測分析システム１００は、データストリームに対する不成功閾値の値を、例えば管理システム１６０を通じてシステム管理者から受信する。計測分析システム１００は、データストリームのセットに対する不成功閾値を、例えばデータセンタから到着するすべてのデータストリームに対して、またはあるタイプの外部システム、外部システム上で稼働するあるタイプのオペレーティングシステム、またはデータストリームを提供するタイプの計測手段が組み込まれたソフトウェアから到着するすべてのデータストリームに対して、用いることができる。
【００７７】
データストリームプロセッサ２８０が、データストリームのデータ値は不成功閾値の前に到着しなかったと決定した場合、データストリームプロセッサ２８０は、データストリームを不活性としてマークする。実施形態において計測分析システム１００は、各データストリームのステータス（不活性または活性）を、メタデータストア２３０または時系列データストア２６０のいずれかに記憶する。それに従ってデータストリームプロセッサ２８０は、不活性のデータストリームを、データストリームのステータスがもとの活性に変化するまで、後続の時間間隔に対する式のすべての計算から除外する。
【００７８】
それに従ってデータストリームプロセッサ２８０は、データストリームに関連付けられた最大予想遅延の間、データストリームを待たない。これはデータストリームプロセッサ２８０が、後続の時間間隔に対して、追加の時間（データストリームの最大予想遅延の）、待たなければならなくなることを防止する。データストリームは長い期間、不活性のままとなり得る。データストリームプロセッサ２８０が、後続の時間間隔における考慮から不活性のデータストリームを除外しない場合は、データストリームプロセッサ２８０は、無期限の大きさの時間、データストリームの最大予想遅延に対して待ち続けることになる。
【００７９】
データストリームプロセッサ２８０は、データストリームのステータスが不活性から活性に変化されるとすぐにデータストリームを、後続の時間間隔に対する式の評価のために考慮されるデータストリームのセットに含めることを開始する。データストリームプロセッサ２８０は、データストリームステータスが不活性であると決定された後に、データストリームのデータ値が計測分析システムに到着した場合は、不活性のデータストリームのステータスをもとの活性に変化させる。
【００８０】
図８は実施形態による、データストリームを送信するデータソースの故障を識別するプロセスを示す。８１０でデータストリームプロセッサ２８０は、データストリームに対する不成功閾値を決定する。データストリームプロセッサ２８０は、データ値が遅く（例えば最大予想遅延値の後に）到着するデータストリームを監視して、データ値が不成功閾値の前に到着するかどうかをチェックする。データストリームのデータ値が不成功閾値の前に到着しなかった場合、データストリームプロセッサ２８０はデータストリームを不活性としてマークする。データストリームプロセッサ２８０は、データストリームが不活性であることを示すフラグ、およびデータストリームが不活性であると決定された時間を示すタイムスタンプをメタデータストア２３０に記憶することができる。８３０でデータストリームプロセッサ２８０は、例えばデータストリームに基づいて式を評価するために、上記データストリームを後続の時間間隔に対して考慮されるデータストリームのセットから除外する。８３０でデータストリームプロセッサ２８０は、データストリームのデータ値が到着するまで、上記データストリームを除外する。
【００８１】
代替的実施形態
本発明の図および説明は、本発明の明確な理解のために関連のある要素を示すように簡略化され、明瞭にするために通常のＩＴマネジメントシステムにおいて見られる多くの他の要素を除いていることを理解されたい。当業者は、本発明の実施において他の要素および／またはステップが、望ましいおよび／または必要であることを認識し得る。しかし、このような要素およびステップは当技術分野においてよく知られているので、およびそれらは本発明のよりよい理解の助けとならないので、このような要素およびステップの議論は本明細書で与えられない。本明細書での開示は、当業者には知られているこのような要素および方法へのすべてのこのような変形および変更を対象とする。
【００８２】
上記の説明のいくつかの部分は、実施形態を、情報に対する動作を表すアルゴリズムおよび記号表示の観点から述べている。これらのアルゴリズムによる説明および表示は、データ処理技術における当業者によって、業務の内容を他の当業者に効果的に伝達するために一般に用いられる。これらの動作は、機能的に、計算的に、または論理的に説明されるが、コンピュータプログラム、または等価な電気回路、マイクロコードなどによって実施されるものと理解される。さらにまた、時には、一般性を失わずにこれらの動作の構成をモジュールと呼ぶことが便利であることが実証されている。説明される動作、およびそれらの関連付けられたモジュールは、ソフトウェア、ファームウェア、ハードウェア、またはそれらの任意の組み合わせにおいて具体化され得る。
【００８３】
本明細書で用いられる「一実施形態（ｏｎｅ  ｅｍｂｏｄｉｍｅｎｔ）」または「実施形態（ａｎ  ｅｍｂｏｄｉｍｅｎｔ）」への言及は、実施形態に関連して説明される特定の要素、機能、構造、または特徴が、少なくとも１つの実施形態に含まれることを意味する。本明細書の様々な場所で現れる「一実施形態では」という語句は、必ずしもすべて同じ実施形態を指さない。
【００８４】
いくつかの実施形態は、「結合される（ｃｏｕｐｌｅｄ）」および「接続される（ｃｏｎｎｅｃｔｅｄ）」という表現をそれらの派生語と共に用いて説明され得る。これらの用語を互い同義とするものではないことが理解されるべきである。例えばいくつかの実施形態は、２つ以上の要素が互いに直接物理的または電気的に接触することを示すために、「接続される」という用語を用いて説明され得る。他の例においていくつかの実施形態は、２つ以上の要素が互いに直接物理的または電気的に接触することを示すために、「結合される」という用語を用いて説明され得る。しかし「結合される」という用語はまた、２つ以上の要素は互いに直接接触しないが、依然として協働する、または互いに相互作用することを意味し得る。実施形態は、この関連において限定されない。
【００８５】
本明細書で用いられる、用語「備える（ｃｏｍｐｒｉｓｅｓ）」、「備える（ｃｏｍｐｒｉｓｉｎｇ）」、「含む（ｉｎｃｌｕｄｅｓ）」、「含む（ｉｎｃｌｕｄｉｎｇ）」、「有する（ｈａｓ）」、「有する（ｈａｖｉｎｇ）」またはそれらの任意の他の変形は、非排他的包含を包括するものである。例えば、要素のリストを備えたプロセス、方法、製品、または装置は、必ずしもそれらの要素のみに限定されず、明示的に列挙されないまたはこのようなプロセス、方法、製品、または装置に本質的な、他の要素を含むことができる。さらにそれに反して明示的に記載されない限り、「または（ｏｒ）」は、包含的ＯＲを指し、排他的ＯＲを指さない。例えば条件ＡまたはＢは、Ａは真（または存在する）およびＢは偽（または存在しない）、Ａは偽（または存在しない）およびＢは真（または存在する）、ならびにＡおよびＢの両方が真（または存在する）の、いずれか１つによって満足される。
【００８６】
さらに「ａ」または「ａｎ」の使用が、本明細書において実施形態の要素および構成要素を説明するために用いられる。これは単に便宜上、および本発明の一般的な意味を示すためになされる。この記述は１つ、または少なくとも１つを含むように読まれるべきであり、単数形はまた、そうでないことが意図されることが明らかでない限り複数形も含む。
【００８７】
本開示を読むことにより当業者は、本明細書で開示された原理によるシステムおよびプロセスのためのさらなる追加の代替的構造的および機能的設計を理解するであろう。従って、特定の実施形態および応用例が示され、説明されたが、開示された実施形態は、本明細書で開示された正確な構成および構成要素に限定されないことを理解されたい。本明細書で開示された方法および装置の構成、動作、および詳細において、当業者には明らかになるであろう様々な修正、変更、および変形が、添付の「特許請求の範囲」に定義された趣旨および範囲から逸脱せずに行われ得る。
【図１】
0006793901.tif 000002
【図２】
0006793901.tif 000003
【図３】
0006793901.tif 000004
【図４】
0006793901.tif 000005
【図５】
0006793901.tif 000006
【図６】
0006793901.tif 000007
【図７】
0006793901.tif 000008
【図８】
0006793901.tif 000009