IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ スプランク インコーポレイテッドの特許一覧

特許7439189計測手段が組み込まれたソフトウェアから受信されるデータストリームのリアルタイム処理
<>
  • 特許-計測手段が組み込まれたソフトウェアから受信されるデータストリームのリアルタイム処理 図1
  • 特許-計測手段が組み込まれたソフトウェアから受信されるデータストリームのリアルタイム処理 図2
  • 特許-計測手段が組み込まれたソフトウェアから受信されるデータストリームのリアルタイム処理 図3
  • 特許-計測手段が組み込まれたソフトウェアから受信されるデータストリームのリアルタイム処理 図4
  • 特許-計測手段が組み込まれたソフトウェアから受信されるデータストリームのリアルタイム処理 図5
  • 特許-計測手段が組み込まれたソフトウェアから受信されるデータストリームのリアルタイム処理 図6
  • 特許-計測手段が組み込まれたソフトウェアから受信されるデータストリームのリアルタイム処理 図7
  • 特許-計測手段が組み込まれたソフトウェアから受信されるデータストリームのリアルタイム処理 図8
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-02-16
(45)【発行日】2024-02-27
(54)【発明の名称】計測手段が組み込まれたソフトウェアから受信されるデータストリームのリアルタイム処理
(51)【国際特許分類】
   G06F 11/34 20060101AFI20240219BHJP
   G06F 11/07 20060101ALI20240219BHJP
【FI】
G06F11/34 176
G06F11/07 157
【請求項の数】 30
(21)【出願番号】P 2022124934
(22)【出願日】2022-08-04
(62)【分割の表示】P 2020126662の分割
【原出願日】2016-01-26
(65)【公開番号】P2022140767
(43)【公開日】2022-09-27
【審査請求日】2022-09-05
(31)【優先権主張番号】62/109,308
(32)【優先日】2015-01-29
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】509097518
【氏名又は名称】スプランク インコーポレイテッド
(74)【代理人】
【識別番号】110001243
【氏名又は名称】弁理士法人谷・阿部特許事務所
(72)【発明者】
【氏名】フィリップ リウ
(72)【発明者】
【氏名】アリジット ムクヘルジ
(72)【発明者】
【氏名】ラジェシュ ラマン
【審査官】三坂 敏夫
(56)【参考文献】
【文献】特開2009-266007(JP,A)
【文献】特開2007-251769(JP,A)
【文献】特開2007-165962(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 11/07
11/28-11/36
(57)【特許請求の範囲】
【請求項1】
計測手段が組み込まれたソフトウェアによって生成されたデータを処理するためのコンピュータ実装方法であって、
複数の時間区間のうちの各時間区間について、データストリームの不成功閾値を決定するステップと、
前記時間区間のデータ値について前記データストリームを監視するステップと、
前記データストリームからの前記データ値が前記不成功閾値より前に到着しなかった場合、前記データストリームを不活性データとしてマークするステップと、
不活性データとしてマークされた前記データストリームの次のデータ値が到着するまで、後続の時間区間で考慮されるデータストリームのセットから不活性データとしてマークされた前記データストリームを除外するステップと、
不活性データとしてマークされた前記データストリームの次のデータ値が受信されたとき、受信されたデータストリームを活性としてマークするステップと、
活性としてマークされた前記データストリームの前記データ値を使用して式を評価するステップであって、前記式は前記データストリームの前記データ値を処理する、ステップと、
ユーザインターフェースを介して、前記式を評価した結果を提示のために送信するステップと
を含む、方法。
【請求項2】
最大予想遅延値の後に到着するデータストリームのデータ値を永続的データストアに記憶するステップであって、前記不成功閾値は前記最大予想遅延値より大きい、ステップ
をさらに含む、請求項1に記載のコンピュータ実装方法。
【請求項3】
前記複数の時間区間のうちの時間区間について、前記データストリームの最大予想遅延値を決定するステップであって、前記不成功閾値は前記最大予想遅延値より大きい、ステップ
をさらに含む、請求項1に記載のコンピュータ実装方法。
【請求項4】
1つ以上の後続の時間区間でデータ値の到着について監視された前記データストリームのセットから、不活性としてマークされたデータストリームを除外するステップ
をさらに含む、請求項1に記載のコンピュータ実装方法。
【請求項5】
前記時間区間に関連付けられた複数のデータストリームのデータ値を処理するための式の指定を受信するステップ
をさらに含む、請求項1に記載のコンピュータ実装方法。
【請求項6】
時間区間ごとに更新されるリアルタイムチャートによる提示のために前記式の評価の結果を構成するステップ
をさらに含む、請求項1に記載のコンピュータ実装方法。
【請求項7】
分析システムによって、1つまたは複数の外部システムから、複数のデータストリームを識別する情報を受信するステップであって、各データストリームは、外部システム上で実行される計測手段が組み込まれたソフトウェアのインスタンスによって生成される、ステップ
をさらに含む、請求項1に記載のコンピュータ実装方法。
【請求項8】
前記式は、前記データストリームのセットの前記データ値を集約し、前記データ値は時間区間に関連付けられる、請求項1に記載のコンピュータ実装方法。
【請求項9】
最大予想遅延値が、前記データストリームのデータ値の履歴到着遅延に基づいて決定され、前記不成功閾値は前記最大予想遅延値より大きい、請求項1に記載のコンピュータ実装方法。
【請求項10】
前記データストリームの時間区間の最大予想遅延値が、前記時間区間の前記データストリームの前記データ値の到着遅延に基づいて決定され、前記時間区間は過去の統計に基づいて決定され、前記不成功閾値は前記最大予想遅延値より大きい、請求項1に記載のコンピュータ実装方法。
【請求項11】
計測手段が組み込まれたソフトウェアによって生成されたデータを処理するためのシステムであって、
命令が記憶されている少なくとも1つのメモリと、
前記命令を実行するように構成された少なくとも1つのプロセッサと
を備え、前記少なくとも1つのプロセッサは、
複数の時間区間のうちの各時間区間について、データストリームの不成功閾値を決定し、
前記時間区間のデータ値について前記データストリームを監視し、
前記データストリームからの前記データ値が不成功閾値より前に到着しなかった場合、前記データストリームを不活性データとしてマークし、
不活性データとしてマークされた前記データストリームの次のデータ値が到着するまで、後続の時間区間で考慮されるデータストリームのセットから不活性データとしてマークされた前記データストリームを除外し、
不活性データとしてマークされた前記データストリームの前記次のデータ値が受信されたとき、受信された前記データストリームを活性としてマークし、
活性としてマークされた前記データストリームの前記データ値を使用して式を評価し、前記式は前記データストリームの前記データ値を処理し、
ユーザインターフェースを介して、提示のために前記式を評価した結果を送信する
ように構成された、システム。
【請求項12】
最大予想遅延値の後に到着するデータストリームのデータ値を永続的データストアに記憶する
ようにさらに構成され、前記不成功閾値は前記最大予想遅延値より大きい、請求項11に記載のシステム。
【請求項13】
前記複数の時間区間のうちの時間区間について、前記データストリームの最大予想遅延値を決定する
ようにさらに構成され、前記不成功閾値は前記最大予想遅延値より大きい、請求項11に記載のシステム。
【請求項14】
1つ以上の後続の時間区間でデータ値の到着について監視された前記データストリームのセットから、不活性としてマークされたデータストリームを除外する
ようにさらに構成された、請求項11に記載のシステム。
【請求項15】
前記時間区間に関連付けられた複数のデータストリームのデータ値を処理するための式の指定を受信する
ようにさらに構成された、請求項11に記載のシステム。
【請求項16】
時間区間ごとに更新されるリアルタイムチャートによる提示のために前記式の評価の結果を構成する
ようにさらに構成された、請求項11に記載のシステム。
【請求項17】
分析システムによって、1つまたは複数の外部システムから、複数のデータストリームを識別する情報を受信する
ようにさらに構成され、各データストリームは、外部システム上で実行する計測手段が組み込まれたソフトウェアのインスタンスによって生成される、請求項11に記載のシステム。
【請求項18】
前記式は、前記データストリームのセットの前記データ値を集約し、前記データ値は時間区間に関連付けられる、請求項11に記載のシステム。
【請求項19】
最大予想遅延値が、前記データストリームのデータ値の履歴到着遅延に基づいて決定され、前記不成功閾値は前記最大予想遅延値より大きい、請求項11に記載のシステム。
【請求項20】
前記データストリームの時間区間の最大予想遅延値が、前記時間区間の前記データストリームの前記データ値の到着遅延に基づいて決定され、前記時間区間は過去の統計に基づいて決定され、前記不成功閾値は前記最大予想遅延値より大きい、請求項11に記載のシステム。
【請求項21】
記憶された命令を含む非一時的なコンピュータ可読記憶媒体であって、前記命令は、1つまたは複数のプロセッサによって実行されると、前記1つまたは複数のプロセッサに、計測手段が組み込まれたソフトウェアによって生成されたデータを処理するための動作であって、
複数の時間区間のうちの各時間区間について、データストリームの不成功閾値を決定することと、
前記時間区間のデータ値について前記データストリームを監視することと、
前記データストリームからの前記データ値が前記不成功閾値より前に到着しなかった場合、前記データストリームを不活性データとしてマークすることと、
不活性データとしてマークされた前記データストリームの次のデータ値が到着するまで、後続の時間区間で考慮されるデータストリームのセットから不活性データとしてマークされた前記データストリームを除外することと、
不活性データとしてマークされた前記データストリームの次のデータ値が受信されたときに、受信された前記データストリームを活性としてマークすることと、
活性としてマークされた前記データストリームの前記データ値を使用して式を評価することであって、前記式は前記データストリームの前記データ値を処理することと、
ユーザインターフェースを介して、前記式を評価した結果を提示のために送信することと
を含む動作を実行させる、非一時的なコンピュータ可読記憶媒体。
【請求項22】
最大予想遅延値の後に到着するデータストリームのデータ値を永続的データストアに記憶する
ためにさらに構成され、前記不成功閾値は前記最大予想遅延値より大きい、請求項21に記載の非一時的なコンピュータ可読記憶媒体。
【請求項23】
前記複数の時間区間のうちの各時間区間について、前記データストリームの最大予想遅延値を決定する
ためにさらに構成され、前記不成功閾値は前記最大予想遅延値より大きい、請求項21に記載の非一時的なコンピュータ可読記憶媒体。
【請求項24】
1つ以上の後続の時間区間でデータ値の到着について監視された前記データストリームのセットから、不活性としてマークされたデータストリームを除外する
ためにさらに構成された、請求項21に記載の非一時的なコンピュータ可読記憶媒体。
【請求項25】
前記時間区間に関連付けられた複数のデータストリームのデータ値を処理するための式の指定を受信する
ためにさらに構成された、請求項21に記載の非一時的なコンピュータ可読記憶媒体。
【請求項26】
時間区間ごとに更新されるリアルタイムチャートによる提示のために前記式の評価結果を構成する
ためにさらに構成された、請求項21に記載の非一時的なコンピュータ可読記憶媒体。
【請求項27】
分析システムによって、1つまたは複数の外部システムから、複数のデータストリームを識別する情報を受信し、各データストリームは、外部システム上で実行する計測手段が組み込まれたソフトウェアのインスタンスによって生成される
ためにさらに構成された、請求項21に記載の非一時的なコンピュータ可読記憶媒体。
【請求項28】
前記式は、前記データストリームのセットの前記データ値を集約し、前記データ値は時間区間に関連付けられる、請求項21に記載の非一時的なコンピュータ可読記憶媒体。
【請求項29】
最大予想遅延値が、前記データストリームのデータ値の履歴到着遅延に基づいて決定され、前記不成功閾値は前記最大予想遅延値より大きい、請求項21に記載の非一時的なコンピュータ可読記憶媒体。
【請求項30】
前記データストリームの時間区間の最大予想遅延値が、前記時間区間の前記データストリームの前記データ値の到着遅延に基づいて決定され、前記時間区間は過去の統計に基づいて決定され、前記不成功閾値は前記最大予想遅延値より大きい、請求項21に記載の非一時的なコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は一般に、計測手段が組み込まれたソフトウェアの分析に関し、より詳細には、計測手段が組み込まれたソフトウェアから受信されるデータストリームのリアルタイム処理に関する。
【背景技術】
【0002】
関連出願の相互参照
本出願は、参照によりその全体が組み込まれている、2015年1月29日に出願した米国特許仮出願第62/109,308号明細書の利益を主張するものである。
【0003】
ソフトウェア開発者は、コードに計測手段を組み込むことによって、開発するソフトウェアの種々の側面を監視する。これらは、ソフトウェアの性能、ソフトウェアの実行時に遭遇するエラー、ソフトウェアの実行時に遭遇する重要なイベント、実行されているコードの部分および実行されていない部分などを含む。コードに計測手段を組み込むための従来の技法は、ファイルをロギングするための情報をロギングする、または画面に情報をプリントするコード内の命令文を含む。このタイプの計測は簡単なアプリケーション、例えば単一のマシン上の簡単な実行のフローを有するアプリケーションに適している。しかしソフトウェアに計測手段を組み込むためのこれらの技法は、複雑な実行のフローを有する複雑なアプリケーション、例えば複数のシステムにわたって分散され、各システムが複数のプロセス、または実行のスレッドを実行するアプリケーションには不十分である。
【0004】
分散システムの計測手段が組み込まれたソフトウェアによって生成されるデータを処理することは、分析のためにデータを同化することを必要とする。分散システム上で実行される計測手段が組み込まれたソフトウェアから送信されるデータを同化し処理することは、同時に異なるシステムから送信されるデータ値は異なるネットワーク遅延に遭遇する場合があり、従ってデータを一様に同化するシステムに到達するのに異なる大きさの時間がかかり得るという事実によって複雑になる。さらに、計測手段が組み込まれたソフトウェアを実行する1つまたは複数のシステムは、故障する場合がある。結果として、データを同化するシステムは、データ値がネットワーク遅延により遅くなる、またはデータソースの故障により到着する可能性がないかどうかを、決定する必要がある。これらの決定を行うことは結果として、データ値の処理に遅延を生じ、および/または提示される結果に不正確さを生じる。それに従って、ソフトウェアの計測に基づいて報告を生成するための従来のシステムはしばしば、計測手段が組み込まれたソフトウェアを稼働させる高度に分散されたシステムを分析するためには不十分である。
【発明の概要】
【0005】
説明される実施形態は、計測手段が組み込まれたソフトウェアによって生成されるデータを処理する。ソフトウェア開発者はしばしば、開発されるソフトウェア内に、コードに計測手段を組み込むためのコードスニペットを含める。分析システムは、外部システム上で実行される計測手段が組み込まれたソフトウェアによって生成されるデータストリームを受信する。分析システムは、受信されたデータストリームの分析を行う。分析システムは、複数の時間間隔にわたるデータストリームのデータ値を用いて、式を評価する。例えば分析システムは、各時間間隔に対するデータストリームのデータ値を総計し、リアルタイムに更新されるチャートによる提示のためにその結果を送信することができる。
【0006】
分析システムは、時間間隔の間のデータ値の到着時間に基づいて、データストリームが時間間隔における式の評価のために考慮されるか否かを決定する。分析システムは、それに対するデータ値が時間間隔の間に遅く到着する、データストリームを除外する。分析システムは、処理される各データストリームに対する最大予想遅延値を決定する。分析システムは、時間間隔の間にそれらの最大予想遅延値の前に到着しなかったデータ値を除外する。それに従って、分析システムは、これらのデータストリームを考慮せずに、その時間間隔に対して式を評価する。分析システムは、提示のために各時間間隔に対する式の評価の結果を送信する。
【0007】
いくつかの実施形態において分析システムは、データストリームの過去のデータ値の遅延に基づいて最大予想遅延値を決定する。例えば分析システムは、データストリームのいくつかのデータ値の移動平均に基づいて、データストリームに対する最大予想遅延値を決定することができる。分析システムは、最大予想遅延値を定期的に、例えば各時間間隔に対して更新する。
【0008】
いくつかの実施形態において分析システムはさらに、データストリームに対する不成功閾値を決定する。データストリームのデータ値がデータストリームの不成功閾値の前に到着しなかった場合、分析システムは、データストリームを不活性としてマークする。それに従って、分析システムはデータストリームを、後続の時間間隔に対する式の評価のために考慮しない。分析システムは、データストリームの次のデータ値が受信されたとき、データストリームを活性としてマークする。分析システムは、データストリームが活性とマークされた後、式の評価のためにデータストリームを考慮することを開始する。
【0009】
本明細書で説明される特徴および利点は、すべてを包含するものではなく、特に、図面、明細書、および「特許請求の範囲」に鑑みて、当業者にはさらなる特徴および利点が明らかとなるであろう。さらに本明細書で用いられる述語は、主として読みやすさおよび教育的目的のために選択されており、開示される主題を詳細に叙述するまたは制限するために選択されていない場合があることが留意されるべきである。
【図面の簡単な説明】
【0010】
開示される実施形態は、他の利点および特徴を有し、それらは詳細な説明、添付の「特許請求の範囲」、および添付の図(または図面)から、より容易に明らかになるであろう。以下は図の簡単な序論である。
図1】実施形態による、計測手段が組み込まれたソフトウェアから受信されたデータストリームに基づいてリアルタイム報告を生成するための全体のシステム環境を示す図である。
図2】実施形態による、計測手段が組み込まれたソフトウェアから受信されたデータストリームに基づいてリアルタイム報告を生成するためのシステムのアーキテクチャを示す図である。
図3】実施形態による、計測分析システムによって受信されたデータストリームのデータに基づいて、リアルタイムに更新されるチャートを表示するユーザインターフェースのスクリーンショットを示す図である。
図4】実施形態による、データセンタによってグループ化されたデータストリームの合計を決定する式を示す、リアルタイムに更新されるチャートを表示するユーザインターフェースのスクリーンショットを示す図である。
図5】実施形態による、計測分析システムによるデータストリームの処理に対する、データ値の到着遅延の影響を示す図である。
図6】実施形態による、計測分析システムによってデータストリームを処理するための全体のプロセスを示す図である。
図7】実施形態による、計測分析システムによって受信されたデータストリームのデータ値に基づいて、式の値を決定するための全体のプロセスを示す図である。
図8】実施形態による、データストリームを送信するデータソースの故障を識別するプロセスを示す図である。
【発明を実施するための形態】
【0011】
次にいくつかの実施形態が詳しく参照され、その例は添付の図に示される。図において可能な限り、同様なまたは類似の参照番号が用いられ、同様なまたは類似の機能を示し得ることが留意される。図は、説明の目的のためのみに、開示されるシステム(または方法)の実施形態を示す。当業者は以下の説明から、本明細書で説明される原理から逸脱せずに、本明細書に示される構造および方法の代替的実施形態が用いられ得ることを容易に認識するであろう。
【0012】
全体のシステム環境
図1は実施形態による、計測手段が組み込まれたソフトウェアから受信されたデータストリームに基づいてリアルタイム報告を生成するための全体のシステム環境を示す。全体のシステム環境は、計測分析システム100、1つまたは複数の開発システム120、管理システム160、および報告システム150を含む。他の実施形態では、図1に示されるものより多いまたは少ない構成要素が用いられ得る。例えば開発システム120、管理システム160、および報告システム150は、ネットワーク(図1に示されない)を経由して計測分析システム100と対話することができる。さらに図1に示される各システムの例より多くまたは少なく存在することができ、例えば複数の報告システム150が存在し得る。
【0013】
図1および他の図は、類似の要素を識別するために類似の参照番号を用いる。「130a」など、参照番号の後の文字は、文が、その特定の参照番号を有する要素を具体的に指していることを示す。「130」など、続く文字のない文中の参照番号は、その参照番号を有する図内の要素のいずれかまたはすべてを指す(例えば文中の「130」は、図内の参照番号「130a」および/または「130b」を指す)。
【0014】
計測分析システム100は、外部システム、例えば開発システム120から送信されたメトリックの値を備えたデータを受信する(計測分析システム100は、本明細書では分析システムまたはデータ分析システムとも呼ばれ得る)。開発システム120は、計測手段が組み込まれたソフトウェア、例えばアプリケーション130を実行する。図1ではアプリケーション130は計測手段が組み込まれたソフトウェアの例として示されるが、本明細書で開示される技法は、アプリケーションソフトウェアに限定されず、他の種類のソフトウェア、例えばサーバソフトウェア、クライアントデバイス上で実行されるソフトウェア、ウェブサイトなどに応用可能である。
【0015】
開発システム120上で実行されるソフトウェアは、ソフトウェアに計測手段を組み込んだ結果として生成される情報を計測分析システム100に送信するように構成される。例えばアプリケーション130は、計測分析システム100にデータを定期的に送信することができる。種々のアプリケーション130は、同じメトリックまたは異なるメトリックを異なるレートにおいて送信することができる。同じアプリケーションは、異なるメトリックを異なるレートにおいて送信することができる。アプリケーション130は、計測分析システム100によってサポートされたアプリケーションプログラミングインターフェース(API)を呼び出すことによって、計測分析システム100にデータを送信する。
【0016】
アプリケーション130(または任意の他のソフトウェア)は、アプリケーションにカウンタまたはゲージを追加するように計測手段が組み込まれ得る。カウンタは、ソフトウェアにおいて特定のイベントが発生するとすぐにインクリメントされる値を記憶する命令を備える。カウンタは、コードの特定の部分、例えば関数またはメソッド、条件コードの特定のブランチ、例外、ループなどが実行された回数を決定するために用いられ得る。アプリケーション130は、データストリームのデータソースの例である。
【0017】
通常、カウンタ値は単調に変化し、すなわちカウンタ値は単調に増加/減少することができる。カウンタの値は、2つの異なる時点において、特定のカウンタ値における変化を決定するために比較され得る。例えば、t1とt2の間の時間間隔内で、特定のイベントが発生した回数は、t1からt2への対応するカウンタ値における変化を計算することによって決定され得る。計測分析システム100のAPIは、カウンタの現在値を計測分析システム100に送信するために、アプリケーション130によって呼び出され得る。
【0018】
以下は、アプリケーション130の計測手段が組み込まれたコードの例である。計測手段が組み込まれたコードに含まれた以下の命令は、アクションまたはエンティティのカウントを追跡するためのカウンタオブジェクトを作成する。
counter1=createCounter(source=”web1”,metric=”metric1”);
【0019】
上記の命令は、カウンタオブジェクトを作成し、それを変数counter1に割り当てる。カウンタオブジェクトは、ソース「web1」、およびメトリック「metric1」に関連付けられる。実施形態においてソースおよびメトリック値は、カウンタ(またはゲージ)に関連付けられたデータストリームを一意に識別する。他の実施形態では、データストリームを一意に識別するために、より多いまたはより少ないキー値ペアが用いられ得る。
【0020】
カウンタに対応するデータが、計測手段が組み込まれたコードから計測分析システム100に送信されるとき、カウンタの作成時に指定された値の1つまたは複数が受信される。例えば通常、ソースおよびメトリック値は、報告されるデータ値と共にデータストリームにおいて受信された値の各タプルにより受信される。任意選択で値のタプルは、タイムスタンプ、例えば報告されるデータ値が、計測手段が組み込まれたソフトウェアによって捕捉されたときのタイムスタンプを含むことができる。
【0021】
アプリケーション130の計測手段が組み込まれたコードは、コード内の様々な場所でカウンタ値を更新するための命令を含むことができる。例えばカウンタcounter1は、命令”counter1.increment()”を実行することによってインクリメントされ得る。カウンタは、コードに関連付けられた様々なアクションまたはエンティティを追跡するためにインクリメントされ得る。例えば、カウンタは特定の関数またはメソッドが呼ばれるたびにインクリメントされることができ、カウンタは条件式の特定のブランチが実行されるたびにインクリメントされることができ、カウンタは例えばオブジェクトのコンストラクタ内のカウンタをインクリメントすることによって、特定のタイプのオブジェクトが作成されるたびにインクリメントされることができる。カウンタのインクリメント命令は、例えば関数が特定のパラメータの組み合わせにより呼び出された場合、条件付きで呼ばれ得る。アプリケーション130は、計測分析システム100のAPIを呼び出すことによって、計測分析システム100にカウンタ値を通信する。
【0022】
計測手段が組み込まれたコードにおいて定義されたカウンタは、定期的にそれ自体をリセットすることができる。例えばカウンタは、構成可能な特定の時間間隔の後にリセットされ得る。この場合、値は間隔の終わりにおいてリセットされ得るので、受信されたカウンタ値は、単調に増加(または減少)し得ない。カウンタは、累積的とすることができ、すなわちカウンタは、それをリセットするために明示的な命令が与えられない限りリセットしない。この状態においては、累積カウンタの値は単調に変化し、すなわちユーザによって明示的にリセットされない限り単調に増加(または減少)する。
【0023】
ゲージは、アプリケーション130のいくつかのランタイム特性を測定するための命令を備え、例えばヒープサイズ、キャッシュミスまたはヒットの数、用いられるアクティブなメモリ、CPU(中央処理装置)利用率、要求に応答するためにかかった総時間、サービスに接続するためにかかった時間などである。ゲージはまた、いくつかのアプリケーション固有のパラメータまたはビジネスに関連した値、例えばトランザクションの数、ユーザの数などを追跡するために用いられ得る。ゲージは、構成可能な時間間隔で定期的に呼び出され得る。ゲージの値は、計測分析システム100に定期的に送信される。
【0024】
管理システム160は特権ユーザ、例えばシステム管理者が、データストリームをメタデータに関連付けることを可能にする。管理システム160は、システム管理者がメタデータを指定するためのユーザインターフェースを与える、管理アプリケーション170を備える。メタデータはプロパティ、例えば名前-値ペア(プロパティは、本明細書ではメタデータタグまたはタグとも呼ばれる)を備える。計測分析システム100は、データストリームを記述したメタデータを受信し、メタデータを記憶する。各データストリームから受信されたデータとは独立にデータストリームを記述したメタデータを指定する能力は、データストリームに基づいた報告の生成においていくつかの利点を与える。
【0025】
例として計測分析システム100は、アプリケーション130の計測手段が組み込まれたソフトウェアへの変更を必要とせずに、各データストリームを記述したメタデータへの変更を受信することができる。結果として計測分析システム100は、新しい報告の指定および既存の報告への変更を受信し、開発者がアプリケーション130を変更することを必要とせずに、新しい/変更された報告に基づいて結果を生成する。
【0026】
計測分析システム100は、報告の結果を生成し、計測分析システム100が計測手段が組み込まれたソフトウェアからデータストリームを受信するのに従ったリアルタイムでの提示のためにそれらを送信する。計測分析システム100は、アプリケーション130の計測手段が組み込まれたコードへの変更を必要とせずに、既存の報告への変更を可能にする。さらに、前に受信されたデータストリームに対して、新しいメタデータが定義され得る。それに従って、データストリームとして受信されているデータ、ならびに前に記憶されたデータ(データストリームに関連付けられたメタデータの前に)に基づいて、新しい報告が生成され得る。例えば大きな時間間隔にわたる移動平均を与える報告が生成されることができ、現在受信されているデータ、ならびに前に受信されたデータ(報告に用いられるメタデータが、データに関連付けられたのより前に)に基づいて、移動平均を計算するようになる。さらにこれらの新しい報告は、計測手段が組み込まれたソフトウェアを変更すること(ソフトウェアに再び計測手段を組み込むことによって)、または計測手段が組み込まれたソフトウェアを再配備することを、必要とせずに定義され得る。
【0027】
さらに計測分析システム100は、データストリームを記述したメタデータの、データストリームのデータからの分離を提供する。それに従って、開発システム120から、計測分析システム100に送信される必要があるデータ量が低減される。各アプリケーション130は、メトリックのデータ値、およびメトリックを識別する情報のみを送信する。メタデータ情報は、データストリームのデータソースとは独立したソースから別個に受信される。それに従って、各データストリームのデータ量を増加せずに、任意の量のメタデータが導入され得る。
【0028】
報告システム150は、クライアントデバイスとすることができる。報告システム150は、ユーザが計測分析システム100と対話することを可能にするクライアントアプリケーション140を含む。実施形態ではクライアントアプリケーション140は、インターネットブラウザであり、これは計測分析システム100にアクセスするためのクライアント側コード(例えばJava Script(登録商標))を含むことができる。他の実施形態においてクライアントアプリケーション140は、計測分析システム100と対話するように開発された独自開発のアプリケーションである。
【0029】
報告システム150は、従来のコンピュータシステム(例えばデスクトップまたはラップトップコンピュータ)、タブレット、または携帯情報端末(PDA)、携帯電話、スマートフォンなどのコンピュータ機能を有するデバイス、または他の適切なデバイスとすることができる。報告システム150は、ネットワークを経由して計測分析システム100と対話する。ネットワークは、有線および/または無線通信システムの両方を用いた、ローカルエリアおよび/または広域ネットワークの任意の組み合わせを備えることができる。一実施形態においてネットワークは、標準の通信技術および/またはプロトコルを用いる。
【0030】
計測分析システム100は、1つまたは複数のプロセッサ、メモリ、二次記憶装置、および入力/出力コントローラを含むコンピューティングシステムにおいてホストされ得る。計測分析システム100をホストするために用いられるコンピューティングシステムは通常、例えば報告システム150として用いられる通常のコンピューティングシステムと比べて、強力なプロセッサ、大きなメモリ、および高速な入力/出力システムを用いるサーバクラスシステムである。
【0031】
実施形態において、いくつかの開発システム120からのデータは、例えばサーバによって統合されることができ、組み合わされたデータは計測分析システム100に送信される。例えば企業は、異なる開発システム120から内部的にデータストリームを受信し、組み合わされたデータをバッチの形で計測分析システム100に定期的に送信する、サーバを設置することができる。これは、企業からの外部通信の効率性を可能にする。しかしこの構成は結果として、計測分析システム100への情報の通信における遅延、および報告システム150によるデータの報告における対応する遅延を生じ得る。
【0032】
計測分析システムのシステムアーキテクチャ
図2は実施形態による、計測手段が組み込まれたソフトウェアから受信されたデータストリームに基づいてリアルタイム報告を生成するためのシステムのアーキテクチャを示す。計測分析システム100は、インターフェースモジュール210、データストリームプロセッサ280、量子化モジュール240、メタデータモジュール220、メタデータストア230、データポイント経路指定モジュール250、アナリティクスエンジン270、ユーザインターフェースマネージャ290、および時系列データストア260を含む。他の実施形態において計測分析システム100は、本明細書で説明されない他のモジュールを含むことができる。特定のモジュールによって提供されるように示される機能は、代わりに他のモジュールによって実施され得る。
【0033】
インターフェースモジュール210は、外部システム、例えば計測分析システム100にデータストリームを送信する開発システム120から要求を受信する。インターフェースモジュール210は、外部システムが呼び出すことができる様々なアプリケーションプログラミングインターフェース(API)をサポートする。インターフェースモジュール210は、アプリケーション130によって提供されるデータを受信し、処理する。インターフェースモジュール210は、データがインターフェースモジュール210によってサポートされるAPIによって指定されたフォーマットに適合する限り、異なるベンダによって提供される機能を用いて計測手段が組み込まれたアプリケーション130によって提供されるデータを受信し、処理することができる。
【0034】
インターフェースモジュール210は、開発システム120などの外部システムから、データストリームの形でデータを受信する。実施形態においてインターフェースモジュール210は、データをタプルとして表す。インターフェースモジュールによって受信されるデータのタプルは、メトリック識別子、およびメトリックの値を含む様々な要素を備える。メトリック識別子は、メトリックの名前とすることができる。データのタプルは他の要素、例えばデータがデータソース(例えばデータを送信するアプリケーション130)によって生成された時間に対応するタイムスタンプ、およびデータに関連付けられたプロパティを備えることができる。実施形態において、タプルに関連付けられたタイムスタンプは、データ値が計測分析システム100によって受信された時間を表す。データに関連付けられたプロパティは、名前-値ペアの形で与えられることができる。これらのプロパティは、受信されたデータを記述する追加の情報、例えばホスト名、サーバ名、デバイス名などのデータのソースを記述する情報、またはソースに関連付けられたサービス名、データに関連付けられたメソッドまたは関数名、アプリケーションインスタンス識別子などを与えることができる。
【0035】
実施形態においてインターフェースモジュール210は、インターフェースモジュール210によって受信された記録に対する識別子を生成し、割り当てる。識別子は、本明細書では時系列識別子と呼ばれる(本明細書ではtsidとも呼ばれる)。メトリック名と一致するすべてのタプル、およびタプルにより受信されたプロパティのセットには、一意の時系列識別子が割り当てられる。それに従ってタプル(メトリック名、プロパティ、メトリック値、タイムスタンプ)は、タプル(tsid、メトリック値、タイムスタンプ)にマッピングされる。例えばタプルが、メトリック名m1およびホスト名h1を与える場合、メトリック名m1およびホスト名h1を有するすべてのタプルには、同じ時系列識別子が割り当てられる。それに従ってtsidは、計測分析システム100によって受信されるデータストリームのすべてのタプルを一意に識別する。インターフェースモジュール210は、さらなる処理のためにデータストリームのデータ値を、データストリームプロセッサ280に提供する。
【0036】
データストリームプロセッサ280は、異なるデータストリームのデータを処理して、アナリティクスエンジン270による分析のためにデータを準備する。データストリームプロセッサ280は、ある時間間隔に対して処理されるデータ値、およびアナリティクスエンジンによってその時間間隔の間、リアルタイム報告から無視されるデータ値を決定する。データストリームプロセッサ280は、時間間隔の間、データ値が到着した(または到着しなかった)時間に基づいて、データ値が処理されるか無視されるかを決定する。一般にデータストリームプロセッサ280は、時間間隔内で早く到着するデータ値を処理し、時間間隔の間に遅く到着するデータ値を無視する。
【0037】
データストリームプロセッサ280は、データストリームに対する最大予想遅延を決定し、データ値の到着時間を最大予想遅延値と比較して、データ値が時間間隔に対して考慮されるかどうかを決定する。考慮されるデータ値は、リアルタイム報告の式、例えばデータストリームのデータ値を総計する式への入力として提供される。
【0038】
データストリームプロセッサ280はまた、データストリームに対する不成功閾値を決定する。データストリームプロセッサ280は、不成功閾値を超えて、データストリームからデータ値が受信されない場合、データストリームを不活性としてマークする。データストリームプロセッサ280は、各データストリームのステータスをメタデータストア230に記憶する。データストリームプロセッサ280は、後続の時間間隔に対して、不活性のデータストリームを考慮することを停止する。言い換えればデータストリームプロセッサ280は、不活性のデータストリームの最大予想遅延値の間、待機しない。データストリームプロセッサ280は、データストリームからデータ値が受信された場合は、データストリームを再び活性とマークする。データストリームが活性とマークされた後、データストリームプロセッサ280は、後続の時間間隔に対して、再びデータストリームを考慮することを再開する。
【0039】
データストリームプロセッサ280は、各データストリームに対する過去のデータ値をメモリに記憶し、過去のデータ値に基づく総計値を用いて、最大予想遅延の値を決定する。例えばデータストリームに対する最大予想遅延は、N個(例えばN=5、またはN=4)のデータ値の移動平均に基づいて取得され得る。データストリームプロセッサ280は、遅延値における変動を考慮に入れるように150%などの率を、移動平均値に乗算することができる。
【0040】
実施形態においてデータストリームプロセッサ280は、各時間間隔の始まりで、または前の時間間隔の終わりにおいて、最大予想遅延値を再計算する。他の実施形態ではデータストリームプロセッサ280は、アナリティクスエンジン270が式を評価する時間間隔より大きな時間間隔で、定期的に最大予想遅延値を再計算する。例えばデータストリームプロセッサ280は、アナリティクスエンジン270が式を評価する時間間隔の5つごとに、最大予想遅延値を再計算することができる。実施形態においてデータストリームプロセッサ280は、最大予想遅延値または不成功閾値として、データストリームに対する、ユーザが構成可能な固定値を受信する。データストリームプロセッサ280は、この時間間隔に対して考慮されるべきデータ値を識別し、それらをさらなる処理のために量子化モジュール240に提供する。
【0041】
量子化モジュール240は、データがその中で任意の時間間隔において利用可能な、データの入力時系列を、データがその中で規則的な時間間隔において利用可能な時系列に変換するように、受信されたデータ値を処理する。例えば入力時系列において受信されたデータ値は不規則な間隔で発生し得るが、量子化モジュール240は、時系列のデータを処理して、1秒ごと、または5秒ごと、または15秒ごとなどに、データが定期的に発生する時系列を生成する。本明細書ではこのプロセスは、時系列の量子化と呼ばれる。実施形態においてインターフェースモジュール210は、複数のスレッドまたはプロセスを作成し、各スレッドまたはプロセスは、データストリームに対応するデータを受信するように構成される。各スレッドまたはプロセスは、量子化モジュール240を呼び出して、各時間間隔に対して各データストリームに対して受信されたデータの量子化を行う。
【0042】
メタデータモジュール220は、開発システム120から受信された様々なデータストリームを記述したメタデータ情報を受信し、記憶する。実施形態において、メタデータモジュール220に記憶されるメタデータはユーザ、例えばシステム管理者から受信される。メタデータは、名前-値ペアとして表され得る。実施形態においてメタデータは、メタデータオブジェクトとして表され、各オブジェクトは、名前-値ペアとして表され得るプロパティのセットを定義する。データストリームのセットは、メタデータオブジェクトに関連付けられ得る。それに従って、メタデータオブジェクトによって表されるすべてのプロパティは、メタデータオブジェクトに関連付けられた各データストリームに関連付けられる。
【0043】
メタデータデータストア230は、メタデータオブジェクト、およびそれらのデータストリームへの関連付けを記憶する。メタデータデータストア230は、各メタデータオブジェクトに対する識別子(ID)、およびメタデータオブジェクトによって表されるプロパティを記憶する。実施形態において各データストリームは、データストリームを一意に識別する時系列識別子に関連付けられる。メタデータデータストア230は、各メタデータオブジェクトを、時系列識別子値のセットにマッピングするインデックスを記憶する。メタデータデータストア230は、様々なプロパティ(または名前-値ペア、もしくはタグ)を、時系列識別子値のセットにマッピングするインデックスを記憶する。
【0044】
メタデータストア230は、受信された命令に基づいて、メタデータオブジェクトを変更する。例えばメタデータストア230は、メタデータオブジェクトによって表されるいくつかのプロパティを変更、追加、または削除することができる。あるいはメタデータストア230は、メタデータオブジェクトからデータストリームへのマッピングを、受信された命令に基づいて変更することができる。例えばメタデータストア230は、データストリームをメタデータオブジェクトに関連付ける、またはメタデータオブジェクトとデータストリームとの間の関連付けを削除することができる。
【0045】
実施形態においてメタデータストア230は、リレーショナルデータベースとして表されるが、任意の他のタイプのデータベースまたはデータストアとして表され得る。メタデータストア230は、メタデータオブジェクトIDを、データストリームを識別する時系列IDにマッピングするテーブルを記憶した、リレーショナルデータベースとすることができる。他のデータベーステーブルは、メタデータオブジェクトIDから、名前-値ペアとして表される各プロパティへのマッピングとして、各メタデータオブジェクトに関連付けられたプロパティを記憶することができる。
【0046】
アナリティクスエンジン270は、メタデータに基づいて式を指定する報告を評価する。式は様々な演算、例えば総計および変換に基づくことができる。式は、様々な方法で総計および変換を含む様々な関数を構成することによって、および他の前に定義された式を構成することによって得られ得る。実施形態においてアナリティクスエンジン270は、式を構文解析し、プログラムの実行可能な表現を生成し、生成された表現を実行する。
【0047】
時系列データストア260は、様々なソース、例えば開発システム120から受信されたデータを記憶する。実施形態において時系列データストア260はまた、データが量子化された後、時系列データを記憶する。時系列データストア260はまた、各時系列に対するロールアップデータを記憶することができる。時系列データストア260はまた、様々なアナリティクス要求の結果、例えばユーザによって要求された様々な報告の結果を記憶する。アナリティクスエンジン270は、いくつかの報告に対する結果、例えば時系列データストア260に記憶されたデータを様々なソースからのデータストリームとして得られる新しいデータと組み合わせることによって時間の間隔にわたる移動平均を、計算する。
【0048】
ユーザインターフェースマネージャ290は、ユーザインターフェース、例えば報告システム150のクライアントアプリケーション140のユーザインターフェースを通じて、ユーザによって要求される報告をレンダリングする。実施形態においてクライアントアプリケーション140は、インターネットブラウザアプリケーションであり、ユーザインターフェースマネージャ290は、クライアントアプリケーション140を用いて表示のためのウェブページを生成する。他の実施形態ではクライアントアプリケーション140は、独自開発のプロトコルを用いて、ユーザインターフェースマネージャ290と通信する。ユーザインターフェースマネージャは報告データを、例えばチャートとしての提示のために、クライアントアプリケーション140に提供する。
【0049】
実施形態においてユーザインターフェースマネージャ290は、計測分析システム100に到着するデータストリームのデータに基づいて、クライアントアプリケーション140によって表示される報告に対応するチャートを絶えず更新する。計測分析システム100は、データストリームのデータに基づいて報告のためのデータを生成するように、管理システム160を通じてシステム管理者によって構成される。計測分析システムは、表示された報告を特定のレートで更新する。
【0050】
計測分析システム100はまた、報告システム150によって表示される必要がある報告の定義を受信する。報告定義は、表示されることになる報告に対応する式を指定する。例えば式は、特定のメタデータ属性によってグループ化された、すべてのデータストリームの総計値が、T秒(例えば、T=1秒)ごとに表示され、更新される必要があることを指定することができる。計測分析システム100は、報告システムによってリアルタイムチャートを提示する。リアルタイムチャートとは、データストリームのデータ値が受信されるのに従って更新されるチャートを指す。これと対照的に従来の報告は、データベースの永続的記憶装置に記憶されたデータに対して実行されるクエリに基づいて生成される。実際には、リアルタイムチャートは、開発システムから計測分析システム100にネットワークを経由して生成されたデータの送信における遅延、データの処理における遅延などのため、データが生成されるとすぐ直ちには更新されない。しかし、計測分析システムの実施形態は、データソース(すなわち外部システム上で実行される計測手段が組み込まれたソフトウェア)によってデータ値が生成される時点と、生成されたデータ値に基づいた式の評価の結果が報告システム150のユーザインターフェース上に提示される時点との間の遅延を最小にする。
【0051】
計測手段が組み込まれたソフトウェアに基づくリアルタイム報告
計測分析システム100のユーザインターフェースマネージャ290は、ユーザインターフェースを通じて、リアルタイムでの報告によって生成されたデータを提示する。計測手段が組み込まれたソフトウェアを実行する開発システム120は、ネットワークを経由してデータ値を与える。ネットワークはデータ値を、データ値が外部システムによって生成され送信された後、ある遅延の後に、計測分析システム100に到着させる。図3および4は、計測分析システム100によってユーザインターフェース上に提示される報告の例を示す。
【0052】
図3は実施形態による、計測分析システムによって受信されたデータストリームのデータに基づいて、リアルタイムに更新されるチャートを表示するユーザインターフェースのスクリーンショットを示す。スクリーンショットは、メトリック320service.cache.hitを表す、データストリームを表示するいくつかのチャート310を示す。メトリックは、開発システム120上で実行される計測手段が組み込まれたソフトウェアから受信されたキャッシュヒット値を表す。値は、1秒の時間間隔にロールアップされる。それに従って、1秒の各時間間隔において受信されるキャッシュヒット値は、一緒に加算される。メトリックservice.cache.hitを報告する多数のサービスが存在することができ、それに従って多数のチャート310が表示される。図3は、ユーザがアクションをとること、例えばユーザインターフェースによって報告されるメトリックを選択すること、ロールアップを行うことを可能にする、様々なウィジェットを示す。
【0053】
大きな企業は、非常に多数の開発システム120を有し得る。各開発システム120は、複数のサービスを実行することができ、各サービスはメトリックを報告する。結果として図3に表示されるチャートの数は、非常に大きくなり得る。ユーザは、図4に示されるようにデータストリームをグループ化することによって、データストリームによって報告されるデータに対するより良い洞察を得ることができる。
【0054】
図4は実施形態による、データセンタによってグループ化されたデータストリームの合計を決定する式を示す、リアルタイムに更新されるチャートを表示するユーザインターフェースのスクリーンショットを示す。図4は、データストリームがそれによってグループ化される属性の指定、および各グループに対して行われる総計演算を可能にするウィジェット420を示す。図4に示されるようにチャート410は、データセンタによってグループ化され、各グループに対して合計されたデータストリームを示す。2つのデータセンタだけが存在すると仮定すると、チャートの数は2つに低減される。各チャート410は、特定のデータセンタから受信されたデータストリームのデータ値の合計を示す。
【0055】
計測分析システム100は、様々なデータストリームのデータ値を収集し、報告としての表示のために式の値を計算する。例えば計測分析システム100は、データストリームに基づいてデータ値のグループを決定し、各データセンタに対してデータ値の合計を計算して、図4に示されるチャートを提示する。計測分析システム100は、後続の時間間隔に対して上記の計算を行う。それに従って、各時間間隔に対して計測分析システム100は、データストリームのデータ値が到着するのを待つ。計測分析システム100が時間間隔に対するすべての予想されるデータ値が到着したと決定した後、計測分析システム100は必要な計算を行い、表示のために結果を送信する。
【0056】
しかし、異なるデータソースから様々なデータ値が、時間間隔以内の異なる時点で到着し得る。さらにはいくつかのデータ値は、時間間隔以内に到着しない場合がある(例えばそれらは次の時間間隔において、さらにはより後に到着する場合がある)。さらにいくつかのデータソースは故障する場合があり(例えばシステムクラッシュにより)、さらにはデータソースが再開するまで、その時間間隔に対する、またはいくつかの後続の時間間隔に対するデータ値を送信しない場合がある。ネットワーク遅延、結果の計算における遅延、およびシステム故障により、計測分析システム100は、データがデータソースによって生成されてから一定の遅延の後にのみ、表示のための結果値を与えることが可能になる。しかし、計測分析システム100が結果を提示できるのが、時間間隔以内で早いほど、報告はリアルタイム報告により近くなる。本発明の実施形態は、結果の正確さを最大にしながら、計測分析システムが各時間間隔内で早く、データストリームに基づいた式の評価の結果を提示することを可能にする。
【0057】
図5は実施形態による、計測分析システムによるデータストリームの処理に対する、データ値の到着遅延の影響を示す。図5は、計測分析システム100にそれぞれデータストリームd1、d2、d3、およびd4を送信する4つのデータソース、アプリケーション130a、130b、130c、および130dを示す。データストリームdxのデータ値は、dxl、dx2、dx3、等々であり、それぞれ特定の時間間隔の間に送信される。例えばデータストリームd1のデータ値は、d11、d12、等々である。すべてのデータ値は、それらのデータソースによって時間間隔の始まりにおいて生成されると想定される。それに従って、図5で時間間隔の始まりと比較して、時間間隔に沿ってデータ値が示される時点の間の差は、その後にデータ値が、データソースによって生成された後に計測分析システム100に到達する遅延を表す。
【0058】
図5に示されるタイムラインは、2つの時間間隔I1(時間t0からt2まで)およびI2(時間t2からt4まで)、等々を示す。計測分析システム100は、データストリームd1から時間間隔I1の間にデータ値d11、時間間隔I2の間にd12;データストリームd2から時間間隔I1の間にデータ値d21、時間間隔I2の間にd22;データストリームd3から時間間隔I1の間にデータ値d31、時間間隔I2の間にd32:データストリームd4から時間間隔I1の間にデータ値d41、時間間隔I2の間にd42を受信する。
【0059】
図5に示されるようにすべてのデータ値d11、d12、d13、およびd14は、間隔I1内の時間t1までに到着する。時点t1は時間間隔I1内で比較的早く、例えば4つすべてのデータ値は、時間間隔I1の半分未満が完了する前に到着する。それに従って計測分析システム100は、時間t1の後にできるだけ早く、必要な式を計算し、それらを表示することができる。これと対照的に間隔I2の間では、データ値d12、d22、およびd32が時間間隔I2の間に早く到着していても、データ値d42は時間間隔I2のほとんど終わりであるt3に到着する。それに従って計測分析システム100は、時間間隔I2のほとんど終わりである時間t3の後にのみ、必要な式を計算して、結果を提示することができる。
【0060】
結果として、時間間隔に対するデータ値の受信における長い遅延は、結果として望ましくないユーザ経験を生じる。結果は、データ値がデータソースによって生成された時点よりずっと後に提示される。さらに、時間間隔I1の結果は時間間隔以内で早く提示され、時間間隔I2の結果は時間間隔の間で遅く提示されるので、その間にユーザにデータが提示されないリアルタイムチャートにおけるギャップ、すなわち時間間隔I1に対する結果が提示される時点と、時間間隔I2に対する結果が提示される時点との間のギャップが存在する。このギャップは、結果が提示される時間の間の通常のギャップより長くなる。リアルタイムに更新されることが期待されるチャートにおいて、データがその間提示されない長いギャップを有することは、望ましくない使用経験を与える。本発明の実施形態は計測分析システム100が、時間間隔の間に早く結果をユーザに提示することを可能にし、2つの連続した時間間隔の間での、結果の提示の間のギャップを低減する。
【0061】
全体のプロセス
図6、7、および8は、計測手段が組み込まれたソフトウェアから受信されたデータを処理するための計測分析システムによって実行される様々なプロセスを示す。各図に示されるフローチャートで示されるステップは、図に示されるものとは異なる順序で実行され得る。例えばいくつかのステップは、他のステップと並行して実行され得る。さらにいくつかのモジュールによって実行されるように示されるステップは、他のモジュールによって実行され得る。
【0062】
図6は実施形態による、計測分析システムによってデータストリームを処理するための全体のプロセスを示す。実施形態において計測分析システム100は、複数の時間間隔にわたって式の値を決定する。例えば式は、データストリームの一部として時間間隔の間に受信されたデータ値を総計することができる。これらの実施形態において図6に示されるプロセスは、データ値が、時間間隔に対して式を評価するための入力として用いられるべきかどうかを決定するために、計測分析システム100によって実行される。
【0063】
計測分析システム100が、データストリームのデータ値は時間間隔の間で早く到着したと決定した場合、計測分析システム100はデータ値を、時間間隔に対する式の値を決定するための入力として用いる。計測分析システム100が、データストリームからのデータ値は遅く到着するまたは時間間隔の間で到着しそうにないと決定した場合は、計測分析システム100は、遅く到着するデータ値を考慮せずに、時間間隔に対して式を評価する。言い換えれば計測分析システム100は、遅く到着するデータ値を、その時間間隔に対して式を評価するために用いられる入力から除外する。
【0064】
610でインターフェースモジュール210は、1つまたは複数の外部システムから、複数のデータストリームを記述した情報を受信する。データストリームを記述した情報は、計測分析システムのAPIを呼び出すことにより、外部システムによって提供され得る。例えば外部システムは、データストリームを記述した情報を提供することによって外部システムがデータストリームを計測分析システム100に登録することを可能にする、計測分析システムのAPIを呼び出すことができる。データストリームを記述した情報は、データストリームに関連付けられたメトリック(例えばキャッシュヒット、キャッシュミス、CPU負荷、メモリ使用量など)、データソースを記述する属性(例えばサービス名)などを含む。
【0065】
データストリームプロセッサ280は、後続の時間間隔に対して複数のデータストリームから受信されたデータ値を処理する。データストリームプロセッサ280は、各時間間隔に対しておよび各データストリームに対して、以下のステップ(620、630、および640)を行う。
【0066】
データストリームプロセッサ280は、各データストリームに対する最大予想遅延を決定する。データストリームプロセッサ280は、最大予想遅延としてデータストリームに関連付けられた固定の閾値を用いることができる。例えば計測分析システム100は、システム管理者から、データストリームに対する構成パラメータとして最大予想遅延を受信することができる。いくつかの実施形態においてデータストリームプロセッサ280は、そのデータストリームに対して受信された前のデータ値に基づいて、データストリームに対する最大予想遅延を決定する。例えばデータストリームプロセッサ280は、受信された値のセット(例えば固定の数の過去の値、または移動時間ウィンドウ内で受信されたすべての過去の値)に基づく移動総計値に基づいて、データストリームに対する最大予想遅延を決定することができる。他の例としてデータストリームプロセッサ280は、そのデータストリームから受信された最後のデータ値に基づいて、データストリームに対する最大予想遅延を決定することができる。
【0067】
実施形態においてデータストリームプロセッサ280は、ある率だけ、例えば固定のパーセント値または固定のオフセットだけ、過去のデータ値に基づく総計値を増加させることによって、最大予想遅延値を決定する。例えばデータストリームプロセッサ280は、150%だけスケーリングされた、過去の4つのデータ値の平均として、データストリームに対する最大予想遅延値を決定することができる。他の例としてデータストリームプロセッサ280は、固定値、例えば5だけ増加された、最後のデータ値として、データストリームに対する最大予想遅延値を決定することができる(固定値の選択は、データストリームにおいて受信されるデータのタイプに依存する)。
【0068】
630でデータストリームプロセッサ280は、データストリームから受信されたデータ値を、さらにデータ値を処理するため、例えばリアルタイムチャートとしてユーザインターフェースを通じて提示するために、計測分析システム100のソフトウェアモジュールに提供する。例えば実施形態において、630でデータストリームプロセッサ280は、データ値を用いた量子化を行うために、データ値を量子化モジュール240に提供する。他の実施形態では、630でデータストリームプロセッサ280は、データ値を用いて式、例えば時間間隔の間に受信されたデータ値を用いて総計値を決定する式を評価するために、データ値をアナリティクスエンジン270に提供する。
【0069】
630でデータストリームプロセッサ280は、データストリームのデータ値が計測分析システム100に、最大予想遅延の前に到着した場合、さらなる処理のためにデータストリームのデータ値を量子化モジュール(または任意の他のモジュール)に提供する。データストリームのデータ値が計測分析システム100に、最大予想遅延の前に到着しなかった場合は、630でデータストリームプロセッサ280は、データ値が到着しなかったことを示す情報を提供する。実施形態において、630でデータストリームプロセッサ280は、特別なデータ値(例えばヌルデータ値)を後続の処理を行うモジュールに提供することによって、データ値が到着しなかったことを示す情報を提供する。
【0070】
640でデータストリームプロセッサ280は、データストリームのデータ値が到着したのが最大予想遅延の前であろうと、最大予想遅延の後であろうと、データストリームのデータ値を永続的ストア(例えば時系列データストア260)に記憶する。言い換えれば、640でデータストリームプロセッサ280は、いつデータ値が計測分析システム100に到着したかに関わりなく、データ値を記憶する。データストリームプロセッサ280は、最大予想遅延の後に到着したデータストリームのデータ値を、データのリアルタイム処理を行うため、例えばリアルタイムチャートを提示するために、量子化モジュール240またはアナリティクスエンジン270に提供しない。これは、データストリームプロセッサ280は、遅く到着するデータ値のためにリアルタイムチャートでのデータの提示を減速させないように設計されるからである。しかし、640でデータストリームプロセッサ280は、データ値を、たとえそれらが最大予想遅延の後に到着したとしても時系列データストア260に記憶し、それによりその時間間隔に対するデータストリームのデータを処理する後続のクエリは、データ値がいつ到着したかに関係なくデータ値を使用する。
【0071】
図7は実施形態による、計測分析システムによって受信されたデータストリームのデータ値に基づいて、式の値を決定するための全体のプロセスを示す。図7に示されるプロセスは、図6に示されものと同様のステップを示すが、式を評価すること、およびデータをリアルタイムチャートとして提示することの関連におけるものである。
【0072】
図6のステップ610と同様に、710でインターフェースモジュール210は、1つまたは複数の外部システムから複数のデータストリームを記述した情報を受信する。720でアナリティクスエンジン270は、時間間隔に対するデータストリームのデータに基づいた式を受信する。計測分析システム100は、例えば1秒ごと、2秒ごと、または5秒ごとに、複数の時間間隔のそれぞれに対する式の値を計算する。式は、時間間隔に関連付けられたデータ値に基づいて、総計値を計算することができる。時間間隔に関連付けられたデータ値は、時間間隔の間に処理のために外部システム(すなわちデータストリームのデータソース)から送信されるデータ値に対応する。データ値は計測分析システム100に、外部システムからデータ値が送信されたのと、同じ時間間隔以内に到着しても、しなくてもよい。例として式は、カウント、合計、平均、中央値、パーセント値、または時間間隔に関連付けられたすべてのデータ値にわたる任意の他の総計値を計算することができる。他の例として式は、特定の属性によってグループ化されたデータ値にわたって上記の総計を計算することができる。例えば式は、データセンタ属性によってグループ化されたデータ値の合計を計算することができ、それによって各データセンタから到着したデータ値の合計を決定する。
【0073】
図6のステップ620と同様に、730でデータストリームプロセッサ280は、式を評価するために考慮される各データストリームに対する最大予想遅延値を決定する。式の評価のために関連のあるデータストリームのセットは、データストリームを記述したメタデータを用いて、式の一部として指定され得る。式は、データストリームを記述した1つまたは複数のメタデータ属性の値を指定することによって、データストリームのセットを識別することができる。例えば式は、データセンタ属性の特定の値によって識別される特定のデータセンタからの、すべてのデータストリームに基づいて総計値を評価することができる。別の式は、特定のメトリック、例えばキャッシュヒットを提供するすべてのデータストリームを指定することができる。740でデータストリームプロセッサ280は、式に関連付けられたデータストリームのセットを監視する。実施形態においてデータストリームプロセッサ280は、計測分析システムによって受信されるすべてのデータストリームを監視し、それによってまた式に関連付けられたセットを監視することができる。実施形態においてデータストリームプロセッサ280は、データストリームのデータ値が到着するのを待つプロセスまたはスレッドを作成することによって、データストリームを監視する。
【0074】
750でデータストリームプロセッサ280は、データストリームのデータ値が遅く到着した、すなわちデータストリームの最大予想遅延までに到着しなかった場合、時間間隔に対する式を評価するために考慮されるセットから、データストリームを除外する。言い換えればデータストリームプロセッサ280は、時間間隔における式の評価のために、それぞれのデータストリームに対する最大予想遅延の前に到着するデータ値のみを考慮する。760でデータストリームプロセッサ280は、データ値のセットのすべてのデータ値(遅く到着するデータ値を除外することによって得られる)を収集し、さらなる処理のために、データ値を例えば量子化モジュール240またはアナリティクスエンジン270に提供する。
【0075】
770でアナリティクスエンジン270は、データストリームプロセッサ280によって与えられる収集された値のセットに基づいて、式の値を決定する。アナリティクスエンジン270は、式の評価の結果を、ユーザインターフェースマネージャ290に提供する。780でユーザインターフェースマネージャ290は、例えばリアルタイムチャートとしてのユーザインターフェースを通じた提示のために、式の評価の結果を送信する。計測分析システム100は、ステップ730、740、750、760、770、および780を、各後続の時間間隔に対して繰り返す。これらのステップは、例えばユーザがリアルタイムチャートを見ることを望む限り、無期限に繰り返され得る。
【0076】
データストリームプロセッサ280はさらに、例えばデータストリームを送信する計測手段が組み込まれたソフトウェア、またはデータストリームを提供する外部システムのクラッシュまたは故障の結果として、ストリームを提供するデータソースが故障したかどうかを決定するための、不成功閾値を保持する。データストリームが不具合になったかどうかを決定するために用いられる不成功閾値は、通常はデータストリームの最大予想遅延値より長い。例えば不成功閾値は、数個の時間間隔と同じ長さとすることができる。これと対照的にデータストリームに対する最大予想遅延値は、時間間隔の長さ未満である。実施形態において計測分析システム100は、データストリームに対する不成功閾値の値を、例えば管理システム160を通じてシステム管理者から受信する。計測分析システム100は、データストリームのセットに対する不成功閾値を、例えばデータセンタから到着するすべてのデータストリームに対して、またはあるタイプの外部システム、外部システム上で稼働するあるタイプのオペレーティングシステム、またはデータストリームを提供するタイプの計測手段が組み込まれたソフトウェアから到着するすべてのデータストリームに対して、用いることができる。
【0077】
データストリームプロセッサ280が、データストリームのデータ値は不成功閾値の前に到着しなかったと決定した場合、データストリームプロセッサ280は、データストリームを不活性としてマークする。実施形態において計測分析システム100は、各データストリームのステータス(不活性または活性)を、メタデータストア230または時系列データストア260のいずれかに記憶する。それに従ってデータストリームプロセッサ280は、不活性のデータストリームを、データストリームのステータスがもとの活性に変化するまで、後続の時間間隔に対する式のすべての計算から除外する。
【0078】
それに従ってデータストリームプロセッサ280は、データストリームに関連付けられた最大予想遅延の間、データストリームを待たない。これはデータストリームプロセッサ280が、後続の時間間隔に対して、追加の時間(データストリームの最大予想遅延の)、待たなければならなくなることを防止する。データストリームは長い期間、不活性のままとなり得る。データストリームプロセッサ280が、後続の時間間隔における考慮から不活性のデータストリームを除外しない場合は、データストリームプロセッサ280は、無期限の大きさの時間、データストリームの最大予想遅延に対して待ち続けることになる。
【0079】
データストリームプロセッサ280は、データストリームのステータスが不活性から活性に変化されるとすぐにデータストリームを、後続の時間間隔に対する式の評価のために考慮されるデータストリームのセットに含めることを開始する。データストリームプロセッサ280は、データストリームステータスが不活性であると決定された後に、データストリームのデータ値が計測分析システムに到着した場合は、不活性のデータストリームのステータスをもとの活性に変化させる。
【0080】
図8は実施形態による、データストリームを送信するデータソースの故障を識別するプロセスを示す。810でデータストリームプロセッサ280は、データストリームに対する不成功閾値を決定する。データストリームプロセッサ280は、データ値が遅く(例えば最大予想遅延値の後に)到着するデータストリームを監視して、データ値が不成功閾値の前に到着するかどうかをチェックする。データストリームのデータ値が不成功閾値の前に到着しなかった場合、データストリームプロセッサ280はデータストリームを不活性としてマークする。データストリームプロセッサ280は、データストリームが不活性であることを示すフラグ、およびデータストリームが不活性であると決定された時間を示すタイムスタンプをメタデータストア230に記憶することができる。830でデータストリームプロセッサ280は、例えばデータストリームに基づいて式を評価するために、上記データストリームを後続の時間間隔に対して考慮されるデータストリームのセットから除外する。830でデータストリームプロセッサ280は、データストリームのデータ値が到着するまで、上記データストリームを除外する。
【0081】
代替的実施形態
本発明の図および説明は、本発明の明確な理解のために関連のある要素を示すように簡略化され、明瞭にするために通常のITマネジメントシステムにおいて見られる多くの他の要素を除いていることを理解されたい。当業者は、本発明の実施において他の要素および/またはステップが、望ましいおよび/または必要であることを認識し得る。しかし、このような要素およびステップは当技術分野においてよく知られているので、およびそれらは本発明のよりよい理解の助けとならないので、このような要素およびステップの議論は本明細書で与えられない。本明細書での開示は、当業者には知られているこのような要素および方法へのすべてのこのような変形および変更を対象とする。
【0082】
上記の説明のいくつかの部分は、実施形態を、情報に対する動作を表すアルゴリズムおよび記号表示の観点から述べている。これらのアルゴリズムによる説明および表示は、データ処理技術における当業者によって、業務の内容を他の当業者に効果的に伝達するために一般に用いられる。これらの動作は、機能的に、計算的に、または論理的に説明されるが、コンピュータプログラム、または等価な電気回路、マイクロコードなどによって実施されるものと理解される。さらにまた、時には、一般性を失わずにこれらの動作の構成をモジュールと呼ぶことが便利であることが実証されている。説明される動作、およびそれらの関連付けられたモジュールは、ソフトウェア、ファームウェア、ハードウェア、またはそれらの任意の組み合わせにおいて具体化され得る。
【0083】
本明細書で用いられる「一実施形態(one embodiment)」または「実施形態(an embodiment)」への言及は、実施形態に関連して説明される特定の要素、機能、構造、または特徴が、少なくとも1つの実施形態に含まれることを意味する。本明細書の様々な場所で現れる「一実施形態では」という語句は、必ずしもすべて同じ実施形態を指さない。
【0084】
いくつかの実施形態は、「結合される(coupled)」および「接続される(connected)」という表現をそれらの派生語と共に用いて説明され得る。これらの用語を互い同義とするものではないことが理解されるべきである。例えばいくつかの実施形態は、2つ以上の要素が互いに直接物理的または電気的に接触することを示すために、「接続される」という用語を用いて説明され得る。他の例においていくつかの実施形態は、2つ以上の要素が互いに直接物理的または電気的に接触することを示すために、「結合される」という用語を用いて説明され得る。しかし「結合される」という用語はまた、2つ以上の要素は互いに直接接触しないが、依然として協働する、または互いに相互作用することを意味し得る。実施形態は、この関連において限定されない。
【0085】
本明細書で用いられる、用語「備える(comprises)」、「備える(comprising)」、「含む(includes)」、「含む(including)」、「有する(has)」、「有する(having)」またはそれらの任意の他の変形は、非排他的包含を包括するものである。例えば、要素のリストを備えたプロセス、方法、製品、または装置は、必ずしもそれらの要素のみに限定されず、明示的に列挙されないまたはこのようなプロセス、方法、製品、または装置に本質的な、他の要素を含むことができる。さらにそれに反して明示的に記載されない限り、「または(or)」は、包含的ORを指し、排他的ORを指さない。例えば条件AまたはBは、Aは真(または存在する)およびBは偽(または存在しない)、Aは偽(または存在しない)およびBは真(または存在する)、ならびにAおよびBの両方が真(または存在する)の、いずれか1つによって満足される。
【0086】
さらに「a」または「an」の使用が、本明細書において実施形態の要素および構成要素を説明するために用いられる。これは単に便宜上、および本発明の一般的な意味を示すためになされる。この記述は1つ、または少なくとも1つを含むように読まれるべきであり、単数形はまた、そうでないことが意図されることが明らかでない限り複数形も含む。
【0087】
本開示を読むことにより当業者は、本明細書で開示された原理によるシステムおよびプロセスのためのさらなる追加の代替的構造的および機能的設計を理解するであろう。従って、特定の実施形態および応用例が示され、説明されたが、開示された実施形態は、本明細書で開示された正確な構成および構成要素に限定されないことを理解されたい。本明細書で開示された方法および装置の構成、動作、および詳細において、当業者には明らかになるであろう様々な修正、変更、および変形が、添付の「特許請求の範囲」に定義された趣旨および範囲から逸脱せずに行われ得る。
図1
図2
図3
図4
図5
図6
図7
図8