JP2020187798A - ソフトウェアの計測に基づいたリアルタイム報告 - Google Patents

ソフトウェアの計測に基づいたリアルタイム報告 Download PDF

Info

Publication number
JP2020187798A
JP2020187798A JP2020137011A JP2020137011A JP2020187798A JP 2020187798 A JP2020187798 A JP 2020187798A JP 2020137011 A JP2020137011 A JP 2020137011A JP 2020137011 A JP2020137011 A JP 2020137011A JP 2020187798 A JP2020187798 A JP 2020187798A
Authority
JP
Japan
Prior art keywords
data
data stream
metadata
time interval
data streams
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
JP2020137011A
Other languages
English (en)
Other versions
JP7065916B2 (ja
Inventor
リウ フィリップ
Liu Phillip
リウ フィリップ
ムクヘルジ アリジット
Mukherji Arijit
ムクヘルジ アリジット
ラマン ラジェシュ
Raman Rajesh
ラマン ラジェシュ
グランディ クリス
Grandy Kris
グランディ クリス
リンダムード ジャック
Lindamood Jack
リンダムード ジャック
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.)
Splunk Inc
Original Assignee
Splunk 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
Priority claimed from US14/800,679 external-priority patent/US9804951B2/en
Application filed by Splunk Inc filed Critical Splunk Inc
Publication of JP2020187798A publication Critical patent/JP2020187798A/ja
Priority to JP2022072452A priority Critical patent/JP7391137B2/ja
Application granted granted Critical
Publication of JP7065916B2 publication Critical patent/JP7065916B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3065Monitoring arrangements determined by the means or processing involved in reporting the monitored data
    • G06F11/3072Monitoring arrangements determined by the means or processing involved in reporting the monitored data where the reporting involves data filtering, e.g. pattern matching, time or event triggered, adaptive or policy-based reporting
    • G06F11/3082Monitoring arrangements determined by the means or processing involved in reporting the monitored data where the reporting involves data filtering, e.g. pattern matching, time or event triggered, adaptive or policy-based reporting the data filtering being achieved by aggregating or compressing the monitored data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3065Monitoring arrangements determined by the means or processing involved in reporting the monitored data
    • G06F11/3086Monitoring arrangements determined by the means or processing involved in reporting the monitored data where the reporting involves the use of self describing data formats, i.e. metadata, markup languages, human readable formats
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3065Monitoring arrangements determined by the means or processing involved in reporting the monitored data
    • G06F11/3068Monitoring arrangements determined by the means or processing involved in reporting the monitored data where the reporting involves data format conversion
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3065Monitoring arrangements determined by the means or processing involved in reporting the monitored data
    • G06F11/3072Monitoring arrangements determined by the means or processing involved in reporting the monitored data where the reporting involves data filtering, e.g. pattern matching, time or event triggered, adaptive or policy-based reporting
    • G06F11/3075Monitoring arrangements determined by the means or processing involved in reporting the monitored data where the reporting involves data filtering, e.g. pattern matching, time or event triggered, adaptive or policy-based reporting the data filtering being achieved in order to maintain consistency among the monitored data, e.g. ensuring that the monitored data belong to the same timeframe, to the same system or component
    • 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/3452Performance evaluation by statistical analysis
    • 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
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Quality & Reliability (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Library & Information Science (AREA)
  • Debugging And Monitoring (AREA)
  • Recording Measured Values (AREA)
  • Selective Calling Equipment (AREA)
  • Stored Programmes (AREA)

Abstract

【課題】データ分析システムは、計測用ソフトウェアによって生成されるデータを処理する。【解決手段】データ分析システムは、システム上で動作する計測用ソフトウェアのインスタンスによって生成されるデータストリームを受け取る。データ分析システムは、データストリームを記述するメタデータも受け取る。データ分析システムは、メタデータに基づいて、式を受け取る。データ分析システムは、時間間隔ごとに、データストリームのデータを受け取り、受け取られたデータ値に基づいて、式の結果を計算する。データ分析システムは、時間間隔ごとに、これらのステップを繰り返す。データ分析システムは、時間間隔ごとに、その時間間隔についての各データストリームにおいて受け取られたデータに基づいて、その時間間隔についての集約値を生成することによって、データストリームのデータ値を量子化することがある。データ分析システムは、その時間間隔についての量子化されたデータを使用して、式を評価する。【選択図】図1

Description

本開示は、一般に、ソフトウェアの計測に関し、より詳細には、計測用ソフトウェアによって生成されるデータストリームに基づいたリアルタイム報告に関する。
ソフトウェア開発者は、コードに計測用の組み込みを施すことによって、彼らが開発するソフトウェアの様々な態様をモニタリングする。これらは、ソフトウェアのパフォーマンス、ソフトウェアの実行中に遭遇するエラー、ソフトウェアの実行中に遭遇する重要なイベント、およびコードのどの部分が実行中であり、どの部分が実行中でないかを記述する情報などを含む。コードに計測用の組み込みを施すための従来の技法は、様々な種類の情報をログファイルに記録する、またはスクリーン上に情報を印字する、コード内のステートメントを含む。この種類の計測は、単純なアプリケーション、例えば、シングルプロセッサ上で動作する単純な実行のフローを有するアプリケーションには適している。しかしながら、ソフトウェアに計測用の組み込みを施すためのこれらの技法は、各システムが多数のプロセスまたは実行のスレッドを実行する、多数のシステムにわたって分散されることがある、複雑なアプリケーションには不適切である。
そのような複雑なシステムに計測用の組み込みを施すためにこれまで使用されてきた1つの技法は、コードに計測用の組み込みを施すことに関する専門家の支援を使用することである。あるベンダは、コードの計測を支援する専門家サービスを提供する。しかしながら、これらのベンダは、一般に、しばしば柔軟性があまりない標準的なサービスを提供する。さらに、これらのベンダベースの解決策は、ベンダによって必要とされる、コードに計測用の組み込みを施すための時間に関して、著しいオーバヘッドを有する。したがって、これらの解決策は、ゆっくりとした開発サイクル、例えば、1年に及ぶ開発サイクルには適している。しかしながら、ソフトウェア製品についてのソフトウェア開発およびリリースサイクルは、短くなっている。例えば、ソフトウェア開発者が、毎月、毎週、または毎日のことさえある頻度で変更を行い、それらを展開する、いくつかのオンラインシステムが存在する。ベンダベースの計測解決策の著しいオーバヘッドのせいで、開発者は、ペースの速い開発環境において、これらのサービスを使用することは、困難であると感じている。
さらに、コードに計測用の組み込みを施すための従来の技法は、情報を取得し、情報を記憶し、情報を分析して、報告を生成することにおいて、著しい遅延を引き起こす。結果として、ソフトウェアにおいて問題が生じた時刻と、コードの計測を介して問題が検出される時刻との間に、著しい遅延が存在することが可能である。したがって、ソフトウェアの計測に基づいて報告を生成するための従来のシステムは、複雑なアプリケーションのペースの速い開発サイクルにおいては、しばしば不適切である。
本発明では、改善されたソフトウェアの計測に基づいたリアルタイム報告に関する方法、およびシステムを提供する。
説明される実施形態は、計測用ソフトウェアによって生成されるデータを処理する。ソフトウェア開発者は、しばしば、コードに計測用の組み込みを施すためのコードスニペットをソフトウェア内に含めることによって、開発中のソフトウェアに計測用の組み込みを施す。計測用ソフトウェアのインスタンスは、それらが動作するときに、データストリームを生成し、データストリームを分析用のシステムに送る。計測用ソフトウェアを分析するシステムは、各データストリームが計測用ソフトウェアのインスタンスによって生成されたデータ値を含む、複数のデータストリームを識別する情報を受け取る。データストリームで受け取られるデータ値は、属性の第1のセットを含む。システムは、データストリームを記述するメタデータをさらに受け取る。メタデータは、第1のセットの属性とは異なる、データストリームの属性を指定する。システムは、データストリームにわたってデータ値を集約する、式の仕様を受け取る。式は、第1のセットに属する1または複数の属性と、第2のセットに属する1または複数の属性とを含む。例えば、式は、メタデータで指定された属性によってグループ化される、データストリームとともに受け取られた属性を集約することがある。システムは、時間間隔ごとに以下のステップを実行することによって、複数の時間間隔上で、データストリームのデータを処理する。システムは、時間間隔についてのデータストリームからタプル(tuple)を受け取る。各タプルは、時間間隔内の時点と関連付けられたデータ値を含む。システムは、受け取られたタプルのデータ値に基づいて、式を計算する。システムは、以降の時間間隔についても、これらのステップを繰り返す。
実施形態では、システムは、時間間隔ごとに受け取られた各データストリームについてのデータ値を量子化し、時間間隔に基づいて、量子化されたデータ値を整列させる。データ値を量子化するために、システムは、時間間隔ごとの集約値を、その時間間隔についての各データストリームにおいて受け取られたデータに基づいて、生成する。システムは、時間間隔についての量子化されたデータを使用して、メタデータに基づいて、式を評価する。
本明細書で説明される特徴および利点は、必ずしもすべてを含むわけではなく、特に、多くの追加的な特徴および利点が、図面、明細書、および特許請求の範囲に鑑みて、当業者には明らかである。さらに、本明細書で使用される言葉は、主に読み易さおよび教示的目的で選択されており、開示される主題を正確に説明するために、または制限するために選択されていないことがあることに留意されたい。
開示される実施形態は、詳細な説明、添付の特許請求の範囲、および添付の図(または図面)からさらに容易に明らかな、他の利点および特徴を有する。図の簡潔な導入が、以下に示される。
実施形態による、計測用ソフトウェアに基づいた報告のための全体的なシステム環境を示す図である。 実施形態による、計測用ソフトウェアに基づいた報告のためのシステムのアーキテクチャを示す図である。 実施形態による、計測用ソフトウェアのインスタンスを実行することから受け取られるデータストリームと関連付けて指定されたメタデータオブジェクトの例示的な階層を示す図である。 実施形態による、メタデータオブジェクトの階層と関連付けられたデータストリームのセットを示す図である。 実施形態による、計測用ソフトウェアに基づいた報告を生成するための全体的なプロセスを示す図である。 実施形態による、計測用ソフトウェアから受け取られるデータストリームの量子化のプロセスを示す図である。 実施形態による、様々なソースから受け取られるデータストリームのデータを組み合わせるための全体的なプロセスを示す図である。
今から、その例が添付の図に示される、いくつかの実施形態に対する言及が、詳細に行われる。実施可能なところではどこでも、類似または同様の参照番号が、図において使用されることがあり、類似または同様の機能性を示すことがあることが留意される。図は、説明の目的でのみ、開示されるシステム(または方法)の実施形態を示している。当業者は、本明細書で説明される構造および方法の代替的な実施形態が、本明細書で説明される原理から逸脱することなく、利用されることがあることを、以下の説明から容易に認識する。
全体的なシステム環境
図1は、実施形態による、計測用ソフトウェアに基づいた報告のための全体的なシステム環境を示している。全体的なシステム環境は、計測分析システム100と、1または複数の開発システム120と、管理システム160と、報告システム150とを含む。他の実施形態では、図1に示されたものよりも多いまたは少ないコンポーネントが、使用されることがある。例えば、開発システム120、管理システム160、および報告システム150は、(図1に示されていない)ネットワークを介して、計測分析システム100と対話することがある。さらに、図1に示される各システムのインスタンスが、より多くまたは少なく存在することがあり、例えば、複数の報告システム150が、存在することがある。
図1および他の図は、同様の要素を識別するために、同様の参照番号を使用する。「130a」など、参照番号の後の文字は、本文が、その特定の参照番号を有する要素に特に言及していることを示す。「130」など、後続する文字を伴わない本文中の参照番号は、その参照番号を有する図中の要素のいずれかまたはすべてを参照する(例えば、本文中の「130」は、図中の参照番号「130a」および/または「130b」を参照する)。
計測分析システム100は、様々な開発システム120によって送られたメトリックの値を含むデータを受け取る(計測分析システム100は、本明細書では、分析システムまたはデータ分析システムと呼ばれることもあり、開発システムは、本明細書では、外部システムと呼ばれることもある)。開発システム120は、計測用ソフトウェア、例えば、アプリケーション130を実行する。アプリケーション130は、図1では、計測用ソフトウェアの例として示されているが、本明細書で開示される技法は、アプリケーションソフトウェアに限定されず、他の種類のソフトウェア、例えば、サーバソフトウェア、クライアントデバイス上で動作するソフトウェア、およびウェブサイトなどにも適用可能である。
開発システム120上で動作するソフトウェアは、ソフトウェアに計測用の組み込みを施した結果として生成される情報を、計測分析システム100に送るように構成される。例えば、アプリケーション130は、データを、定期的に、計測分析システム100に送ることがある。異なるアプリケーション130は、異なるレートで、同じメトリックまたは異なるメトリックを送ることがある。同じアプリケーションは、異なるレートで、異なるメトリックを送ることがある。アプリケーションは、データを、(1または複数の)データストリームの形態で、計測分析システム100に送る。データストリームは、本明細書では、時系列とも呼ばれる。アプリケーション130は、計測分析システム100によってサポートされるアプリケーションプログラミングインターフェース(API)を起動することによって、データを計測分析システム100に送る。
アプリケーション130(または他の任意のソフトウェア)は、カウンタまたはゲージをアプリケーションに追加するために、計測用の組み込みを施されることがある。カウンタは、ソフトウェア内における何らかのイベントの発生時にインクリメントされる値を記憶する命令を含む。カウンタは、コードの特定の部分、例えば、関数またはメソッド、条件コードの特定のブランチ、例外、およびループなどが実行された回数を決定するために、使用されることがある。
一般に、カウンタ値は、単調に変化し、例えば、カウンタ値は、単調に増加することがあり、またはカウンタ値は、単調に減少することがある。カウンタの値は、2つの異なる時点における特定のカウンタ値の変化を決定するために、比較されることがある。例えば、時刻t1とt2との間の時間間隔内に特定のイベントが発生した回数は、対応するカウンタのt1からt2までの変化を計算することによって、決定されることがある。カウンタの現在値を計測分析システム100に定期的に送るために、計測分析システム100のAPIが、アプリケーション130によって起動される。
以下に、アプリケーション130の計測用の組み込みを施されたコードの例を示す。計測用の組み込みを施されているコード内に含まれる以下の命令は、アクションまたはエンティティのカウントを追跡するためのカウンタオブジェクトを生成する。
counter1=createCounter(source=“web1”,metric=“metric1”);
上記の命令は、カウンタオブジェクトを生成し、それを変数counter1に割り当てる。カウンタを生成するための命令は、1または複数の属性値も指定する。例えば、上記のcreateCounter命令は、ソース属性と、メトリック属性とを指定する。ソース属性の値は、「web1」になるように指定され、メトリック属性の値は、「metric1」になるように指定される。言い換えると、カウンタオブジェクトは、ソース「web1」およびメトリック「metric1」と関連付けられる。アプリケーション130によって生成されるカウンタオブジェクトは、アプリケーション130が計測分析システム100に送るデータストリームのソースとしての役割を果たす。実施形態では、ソース値およびメトリック値は、カウンタ(またはゲージ)と関連付けられたデータストリームを一意的に識別する。他の実施形態では、データストリームを一意的に識別するために、より多いまたは少ないキー値ペアが、使用されることがある。例えば、複数のサーバが、ソース「web1」およびメトリック「metric1」と関連付けられたデータストリームを送ることがあるが、しかしながら、各データストリームは、データストリームを、サーバを識別する情報、例えば、サーバのIP(インターネットプロトコル)アドレスまたはサーバの一意名とさらに関連付けることによって、一意的に識別されることがある。
カウンタの生成中に指定される属性のうちの1または複数についての値は、カウンタの値を表すタプルが、アプリケーション130の計測用の組み込みを施されたコードによって、計測分析システム100に送られたときに、受け取られる。例えば、ソース値およびメトリック値は、報告されているデータ値とともにデータストリームで受け取られる値の各タプルを用いて、受け取られる。任意選択で、値のタプルは、タイムスタンプ、例えば、報告されているデータ値が計測用ソフトウェアによってキャプチャされた時のタイムスタンプを含むことがある。
アプリケーション130の計測用の組み込みを施されたコードは、コード内の様々な場所に、カウンタ値を更新するための命令を含むことがある。例えば、カウンタcounter1は、命令「counter1.increment()」を実行することによって、インクリメントされることがある。カウンタは、コードと関連付けられた様々なアクションまたはエンティティを追跡するために、インクリメントされることがある。例えば、カウンタは、特定の関数またはメソッドが呼ばれたとき常に、インクリメントされることがあり、カウンタは、条件式の特定のブランチが実行されたとき常に、インクリメントされることがあり、カウンタは、特定の種類のオブジェクトが、例えば、オブジェクトのコンストラクタにおいて、生成されたとき常に、インクリメントされることがある。カウンタのインクリメント命令は、条件に応じて、例えば、関数がパラメータの特定の組み合わせを用いて起動された場合に、呼ばれることがある。アプリケーション130は、計測分析システム100のAPIを起動することによって、カウンタ値を計測分析システム100に伝達する。
計測用の組み込みを施されたコード内で定義されるカウンタは、定期的に、自らをリセットすることがある。例えば、カウンタは、構成可能な特定の時間間隔の後、リセットされることがある。このケースでは、受け取られるカウンタ値は、間隔の終りに値がリセットされることがあるので、単調に増加(または減少)しないことがある。カウンタは、累積的なことがあり、すなわち、カウンタは、(それをリセットするための明示的な命令が提供されない限り)リセットされない。この状況では、累積的カウンタの値は、単調に変化し、すなわち、ユーザによって明示的にリセットされない限り、単調に増加(または減少)する。
ゲージは、アプリケーション130の何らかのランタイム特性、例えば、ヒープサイズ、キャッシュミスまたはヒットの回数、使用されるアクティブメモリ、CPU(中央処理装置)利用、要求に応答するのにかかった総時間、およびサービスに接続するのにかかった時間などを測定するための命令を含む。ゲージは、何らかのアプリケーション固有のパラメータまたはビジネス関連の値、例えば、トランザクションの数、およびユーザの数などを追跡するためにも、使用されることがある。ゲージは、構成可能な間隔に基づいて、定期的に、起動されることがある。ゲージの値は、定期的に、計測分析システム100に送られる。
管理システム160は、特権ユーザ、例えば、システム管理者が、データストリームをメタデータと関連付けることを可能にする。管理システム160は、システム管理者がメタデータを指定するためのユーザインターフェースを提供する、管理アプリケーション170を備える。メタデータは、プロパティ、例えば、名前−値ペアを含む。計測分析システム100は、データストリームを記述するメタデータを受け取り、メタデータを記憶する。
メタデータは、データストリーム自体の一部として受け取られた属性とは異なることがある、データストリームを記述する属性を含む。例えば、データストリームは、キャッシュヒット、キャッシュミス、およびメモリ使用量などの属性のデータ値を提供することがある。一方で、メタデータは、データストリームが実行されているデータセンタ、およびデータストリームと関連付けられた組織の支部などの属性を指定することがある。メタデータ属性は、データストリームのソースとは異なるソースから受け取られることもある。例えば、データストリームは、開発システム120から受け取られることがあり、一方、メタデータ属性値は、管理システム160を使用するシステム管理者によって指定されることがある。
受け取られたデータとは独立して、データストリームについてのメタデータを指定する能力は、各データストリームとともにより少量の情報が送られるように、アプリケーション130が計測用の組み込みを施されることを可能にする。より具体的には、いくつかの属性は、メタデータを使用して、データストリームと関連付けられることがあるが、データストリームと関連付けられる属性のいくつかだけが、計測用ソフトウェアによって、タプルとして送られる。これは、コードに計測用の組み込みを施した結果としてアプリケーション130内に導入される、オーバヘッドの量を低減する。
一般に、データストリームと関連付けられたメタデータ属性は、データストリームで受け取られる動的に変化する属性と比較して、静的である。メタデータ属性は、変化することもできるが、それらは、データストリームとともに受け取られる属性と比較して、あまり頻繁には変化しない。例えば、サーバが、組織の1つの部門から組織の別の部門に割り当てられることがあり、それは、そのサーバによって送られるデータストリームと関連付けられた組織の部門を記述するメタデータ属性が変化する原因となる。しかしながら、これらの変化は、毎秒もしくは毎ミリ秒、またはより頻繁に、値を変更することができる、データストリームとともに受け取られる属性と比較して、あまり頻繁ではない。
各データストリームから受け取られたデータとは独立して、データストリームを記述するメタデータを指定する能力は、データストリームに基づいて報告を生成する際に、いくつかの利益を提供する。例として、計測分析システム100は、アプリケーション130の計測用ソフトウェアに対するいかなる変更も必要とせずに、各データストリームを記述するメタデータに対する変更を受け取ることができる。結果として、計測分析システム100は、新しい報告の仕様および既存の報告に対する変更を受け取り、アプリケーション130を変更するように開発者に求めることなく、新しい/変更された報告に基づいて、結果を生成する。
これは、開発者が、ソフトウェアに計測用の組み込みを施すときに、計測用データから生成される報告の種類を考慮する必要がないので、ソフトウェアに計測用の組み込みを施すための新しいパラダイムを提供する。開発者は、メタデータ属性とは独立して、単に原データを生成するようにソフトウェアに計測用の組み込みを施す。メタデータ属性は、データストリームのデータとは独立して、指定されることができる。報告システム150は、報告を生成するために、メタデータ属性を使用して、様々な方法でデータストリームのデータを組み合わせることができる。例えば、原データは、毎秒、各サーバ上の負荷を提示することがある。計測分析システム100は、(データストリームのソースとは独立して指定されるメタデータ属性である)データセンタによってグループ化が行われ、データストリームが到着すると直ちに計算される、各サーバ上の負荷を集約することができる。結果として得られる報告は、リアルタイムに提示され、すなわち、データストリームのデータが受け取られると直ちに更新されることがある。
さらに、計測用ソフトウェアに基づいて報告を生成することに関する専門家である人たちは、ソフトウェア開発者とは異なることができる。例えば、開発者ではないデータ分析に関する専門家は、開発プロセスに関与させられることなく、データストリームについてのメタデータを定義し、報告を生成することができる。これは、計測用の組み込みを施されるコード内にメタデータがエンコードされる必要がある、ソフトウェアに計測用の組み込みを施すための従来の技法に対して、著しい改善である。これが、著しい改善であるのは、データを分析するために必要とされるスキルは、一般に、ソフトウェアを開発するために必要とされるスキルとは異なるからである。
さらに、計測分析システム100は、既存の報告を構成し、新しい分析機能性を追加することによって、既存の報告の上に構築された報告を受け取り、処理することもできる。計測分析システム100は、計測分析システム100が計測用ソフトウェアからデータストリームを受け取ると直ちに、新しい報告の結果を生成し、それらを提示用にリアルタイムに送る。計測分析システム100は、アプリケーション130の計測用の組み込みを施されたコードに対するいかなる変更も必要とせずに、これらの追加の報告を生成し、既存の報告を変更する。さらに、先に受け取られたデータストリームのために、新しいメタデータが、定義されることができる。したがって、データストリームとして受け取られているデータ、および(メタデータがデータストリームと関連付けられる以前に)先に記憶されたデータに基づいた新しい報告が、生成されることができる。例えば、大きい時間間隔にわたる移動平均を提供する報告が、生成されることができる。この報告は、現在受け取られているデータ、および(報告内で使用されるメタデータがデータと関連付けられる以前に)先に受け取られたデータに基づいて、移動平均を計算する。さらに、これらの新しい報告は、(ソフトウェアに再び計測用の組み込みを施すことによって)計測用ソフトウェアを変更する必要なしに、または計測用ソフトウェアを再び展開する必要なしに、定義されることができる。
さらに、計測分析システム100は、データストリームを記述するメタデータの、データストリームのデータからの分離を提供する。したがって、開発システム120から計測分析システム100に転送される必要があるデータの量は、低減される。各アプリケーション130は、メトリックのデータ値と、メトリックを識別する情報だけを転送する。メタデータ情報は、データストリームのデータソースとは独立して、別にソースから受け取られる。したがって、いずれの量のメタデータも、各データストリームのデータの量を増加させることなく、導入されることがある。
報告システム150は、クライアントデバイスであることがある。報告システム150は、ユーザが計測分析システム100と対話することを可能にする、クライアントアプリケーション140を含む。実施形態では、クライアントアプリケーション140は、インターネットブラウザであり、それは、計測分析システム100にアクセスするためのクライアントサイドコード(例えば、Java Script)を含むことがある。他の実施形態では、クライアントアプリケーション140は、計測分析システム100と対話するために開発された、独自仕様のアプリケーションである。報告は、計測分析システム100によって生成され、報告システム150を介して、提示用に送られることがある。
報告システム150は、従来のコンピュータシステム(例えば、デスクトップもしくはラップトップコンピュータ)、タブレット、または携帯情報端末(PDA)、モバイルフォン、スマートフォン、もしくは別の適切なデバイスなどのコンピュータ機能性を有するデバイスとすることができる。報告システム150は、ネットワークを介して、計測分析システム100と対話する。ネットワークは、有線および/または無線両方の通信システムを使用する、ローカルエリアネットワークおよび/またはワイドエリアネットワークの任意の組み合わせを含むことがある。一実施形態では、ネットワークは、標準的な通信技術および/またはプロトコルを使用する。
計測分析システム100は、1または複数のプロセッサ、メモリ、2次ストレージ、および/または入力/出力コントローラを含む、コンピューティングシステム上でホストされることがある。計測分析システム100をホストするために使用されるコンピューティングシステムは、一般に、例えば、報告システム150として使用される典型的なコンピューティングシステムと比較して、強力なプロセッサ、大容量のメモリ、および高速な入力/出力システムを使用する、サーバクラスシステムである。
実施形態では、いくつかの開発システム120からのデータは、例えば、サーバによって統合され、組み合わされたデータが、計測分析システム100に送られることがある。例えば、企業は、様々な開発システム120から内部的にデータストリームを受け取り、組み合わされたデータをバッチ形式で定期的に計測分析システム100に送る、サーバを設置することがある。これは、企業からの外部通信の効率の良さを可能にする。しかしながら、この構成は、情報を計測分析システム100に伝達する際の遅延、および報告システム150によってデータを報告する際の対応する遅延をもたらすことがある。
計測分析システムのシステムアーキテクチャ
図2は、実施形態による、計測分析システム100のシステムアーキテクチャを示している。計測分析システム100は、インターフェースモジュール210と、量子化モジュール240と、メタデータモジュール220と、メタデータストア230と、データ点ルーティングモジュール250と、分析エンジン270と、時系列データストア260とを含む。他の実施形態では、計測分析システム100は、本明細書では説明されない他のモジュールを含むことがある。特定のモジュールによって提供されるものとして示される機能性は、代わりに、他のモジュールによって実施されることがある。
インターフェースモジュール210は、計測分析システム100と通信する外部システム、例えば、開発システム120から、要求を受け取る。インターフェースモジュール210は、外部システムが起動することができる、様々なアプリケーションプログラミングインターフェース(API)をサポートする。インターフェースモジュール210は、計測用の組み込みを施されたコードが、インターフェースモジュール210によって処理されることができるフォーマットで、情報を送る限り、様々なベンダによって提供される機能性を使用して計測用の組み込みを施されたアプリケーション130によって提供されるデータを受け取り、処理することができる。実施形態では、インターフェースモジュール210は、開発システム120が、データストリームと関連付けられた様々なアクション、例えば、データストリームを登録すること、データストリームのデータ値を表すタプルを提供すること、およびデータストリームと関連付けられた属性を指定すること(例えば、新しい属性を追加すること)などを実行することを可能にする、APIをサポートする。
インターフェースモジュール210は、開発システム120から、データストリームの形態で、データを受け取る。インターフェースモジュール210は、データを受け取り、それをタプルとして表す。インターフェースモジュールによって受け取られるデータのタプルは、メトリック識別子、例えば、タプルに対応するメトリックの名前、およびメトリックの値を含む、様々な要素を含む。受け取られるデータのタプルは、他の要素、例えば、データを送ったアプリケーション130によってデータがキャプチャされた時刻に対応するタイムスタンプ、データと関連付けられた1または複数のプロパティをさらに含むことがある。実施形態では、タプルと関連付けられたタイムスタンプは、データ値が計測分析システム100によって受け取られた時刻を表す。
データと関連付けられたプロパティは、名前、値ペアの形式で、提供されることがある。これらのプロパティは、受け取られたデータを記述する追加の情報、例えば、ホスト名、サーバ名、デバイス名、またはソースと関連付けられたサービス名などのデータのソースを記述する情報、データと関連付けられたメソッド名または関数名、およびアプリケーションインスタンス識別子などを提供することがある。
実施形態では、インターフェースモジュール210は、識別子を生成し、それをインターフェースモジュール210によって受け取られた記録に割り当てる。識別子は、本明細書では、時系列識別子と呼ばれる(本明細書では、tsidまたはTSIDとも呼ばれる)。一意的な時系列識別子が、メトリック名に一致するすべてのタプル、およびタプルとともに受け取られたプロパティのセットに割り当てられる。したがって、タプル(メトリック名,プロパティ,メトリック値,タイムスタンプ)は、タプル(tsid,メトリック値,タイムスタンプ)にマッピングされる。例えば、タプルが、メトリック名m1およびホスト名h1を提供する場合、メトリック名m1およびホスト名h1を有するすべてのタプルが、同じ時系列識別子を割り当てられる。したがって、tsidは、計測分析システム100によって受け取られたデータストリームのすべてのタプルを一意的に識別する。
量子化モジュール240は、データが任意の時間間隔で利用可能である入力データストリームを、データが規則的な時間間隔で利用可能であるデータストリームに変換するように、受け取られたデータ値を処理する。例えば、入力データストリームで受け取られたデータ値は、受け取られたデータ値の1つの連続するペアから、受け取られたデータ値の次のペアにかけて変化することがある、不規則な間隔で発生することがある。しかしながら、量子化モジュール240は、毎秒、5秒ごと、または15秒ごとなど、定期的に(規則的な時間間隔で)発生するデータを有するデータストリームを生成するように、データストリームのデータを処理する。このプロセスは、本明細書では、データストリームまたは時系列の量子化と呼ばれる。実施形態では、インターフェースモジュール210は、複数のスレッドまたはプロセスを生成し、各スレッドまたはプロセスは、データストリームに対応するデータを受け取るように構成される。各スレッドまたはプロセスは、時間間隔ごとのデータストリームごとに受け取られたデータの量子化を実行するために、量子化モジュール240を起動する。
分析エンジン270は、データストリームとともに受け取られる属性、および/またはメタデータの一部として指定される属性に基づいて、式を指定する報告を評価する。式は、様々な操作、例えば、集約および変換に基づくことがある。実施形態では、式は、以降の時間間隔上で、データストリームとともに受け取られる属性値を集約する。
属性と関連付けられた属性は、値がデータストリームのデータの一部として提供される属性からなる第1のセットと、データ値がメタデータの一部として指定され、メタデータストア230内に記憶される属性からなる第2のセットの、2つのセットに属すると見なされることがある。分析エンジン270によって処理される式は、第1のセットの属性と、第2のセットの属性とに基づくことがある。言い換えると、式は、値がデータストリームとともに受け取られる属性と、メタデータの一部として指定される属性とに基づくことがある。例示的な式は、集約値がメタデータ属性に関してグループ化されるような、データストリームとともに受け取られた属性値の総和を計算することがある。例えば、データストリームが、組織のいくつかのサーバについて、毎秒、サーバの負荷を送り、各サーバと関連付けられたメタデータ属性「datacenter」が、存在する場合、式は、データセンタに関してグループ化されたサーバの平均負荷を決定することがある。
計測分析システム100は、定期的に、入力された式の値を決定し、例えば、クライアントデバイス上で動作するブラウザアプリケーションなどのクライアントアプリケーションを介して、表示用に結果を送る。式は、集約および変換を含む様々な関数を様々な方法で構成することによって、ならびに先に定義された他の式を構成することによって、獲得されることがある。実施形態では、分析エンジン270は、式を解析し、プログラムの実行可能な表現を生成し、生成された表現を実行する。
分析エンジン270は、式の評価の結果として、複数の出力データストリームを生成することがある。例えば、分析エンジン270は、式を受け取りおよび評価し、組織と関連付けられたすべての入力データストリームにわたって、データストリームで受け取られた属性値を集約し、それらをメタデータ属性「datacenter」に関する集約値にグループ化すると仮定する。したがって、分析エンジン270は、「datacenter」属性の異なる値が存在するのと同数の出力データストリームを生成する。さらに、分析エンジン270によって生成される出力データストリームの数は、1つの時間間隔から別の時間間隔にかけて、変化することができる。例えば、新しいデータセンタが、組織に追加され、アクティブになった場合、出力データストリームの数は、新しいデータセンタの追加の結果として、増加することができる。同様に、既存のデータセンタのサーバが、シャットダウンした場合、出力データストリームの数は、以降の時間間隔については、減少することができる。したがって、分析エンジン270は、異なる時間間隔上で同じ式を評価した結果として、動的に数が変化する出力ストリームを生成することがある。出力ストリームの数の変化は、以降の時間間隔上での入力データストリームの数の変化の結果として、または以降の時間間隔上でデータストリームの同じセットで受け取られるデータ値の変化の結果として、発生することがある。
メタデータモジュール220は、開発システム120から受け取られる様々なデータストリームを記述する、メタデータ情報を受け取り、記憶する。実施形態では、メタデータモジュール220内に記憶されるメタデータは、ユーザ、例えば、管理システム170のクライアント管理アプリケーション170を介して計測分析システム100と対話するシステム管理者から受け取られる。メタデータは、名前−値ペアとして表されることがある。実施形態では、メタデータは、メタデータオブジェクトとして表され、各オブジェクトは、名前−値ペアとして表されることがあるプロパティのセットを定義する。データストリームのセットは、メタデータオブジェクトと関連付けられることがある。したがって、メタデータオブジェクトによって表されるすべてのプロパティは、メタデータオブジェクトと関連付けられる各データストリームと関連付けられる。
メタデータデータストア230は、メタデータオブジェクト、およびそれらのデータストリームとの関連付けを記憶する。メタデータデータストア230は、各メタデータオブジェクトのための識別子(ID)、およびメタデータオブジェクトによって表されるプロパティを記憶する。実施形態では、各データストリームは、データストリームを一意的に識別する、時系列識別子と関連付けられる。メタデータデータストア230は、各メタデータオブジェクトを時系列識別子の値のセットにマッピングする、インデックスを記憶する。メタデータデータストア230は、様々なタグ(すなわち、プロパティまたは名前−値ペア)を時系列識別子の値のセットにマッピングする、インデックスを記憶する。
メタデータストア230は、受け取られた命令に基づいて、メタデータオブジェクトを変更することがある。例えば、メタデータストア230は、メタデータオブジェクトによって表されるいくつかのプロパティを変更し、追加し、または削除することがある。あるいは、メタデータストア230は、受け取られた命令に基づいて、メタデータオブジェクトからデータストリームへのマッピングを変更することがある。例えば、メタデータストア230は、データストリームをメタデータオブジェクトと関連付けること、またはメタデータオブジェクトとデータストリームとの間の関連付けを削除することがある。
実施形態では、メタデータストア230は、リレーショナルデータベースとして表されるが、他の任意の種類のデータベースまたはデータストアとして表されることもある。例えば、メタデータストア230は、メタデータオブジェクトIDをデータストリームを識別する時系列識別子にマッピングするテーブルを記憶する、リレーショナルデータベースであることがある。他のデータベーステーブルは、各メタデータオブジェクトと関連付けられたプロパティを、メタデータオブジェクトIDから名前−値ペアとして表される各プロパティへのマッピングとして記憶することがある。プロパティは、本明細書では、メタデータタグまたはタグとも呼ばれる。
時系列データストア260は、様々なソース、例えば、開発システム120から受け取られたデータストリームを記憶する。実施形態では、時系列データストア260は、データが量子化された後のデータストリームも記憶する。時系列データストア260は、式を評価した結果として分析エンジン270によって生成された、出力データストリームも記憶することがある。例えば、式が、複数のデータストリームの生成をもたらす場合、分析エンジン270は、これらの出力データストリームの各々についてのtsidを決定し、各出力データストリームを時系列データストア260内に記憶する。
時系列データストア260は、各データストリームのためのロールアップデータも記憶することがある。時系列データストア260は、様々な解析要求の結果、例えば、ユーザによって要求された様々な報告の結果も記憶する。分析エンジン270は、時系列データストア260内に記憶されたデータを、様々なソースからデータストリームとして獲得されるデータとリアルタイムに組み合わることによって、ある種の報告のための結果、例えば、時間の間隔上での移動平均を計算する。
メタデータ表現
実施形態では、メタデータオブジェクトは、階層方式で組織され、それによって、メタデータ定義の再使用、およびメタデータ定義を変更する際の容易さを可能にする。図3は、実施形態による、計測用ソフトウェアのインスタンスを実行することから受け取られるデータストリームと関連付けて指定されたメタデータオブジェクトの例示的な階層を示している。図3に示されるように、各メタデータオブジェクト310は、プロパティのセットを表す。メタデータオブジェクトのいくつかは、それらがシステムのすべてのユーザから利用可能なように、計測分析システム100において定義されることがある。他のメタデータオブジェクトは、ユーザによって、例えば、計測用ソフトウェアについての報告を生成するために計測分析システム100を使用する企業によって、定義されることがある。
図3に示されるメタデータオブジェクトは、階層として組織される。したがって、メタデータオブジェクト310aは、階層内でメタデータオブジェクト310cの上位にあり、メタデータオブジェクト310bは、階層内でメタデータオブジェクト310dの上位にあり、メタデータオブジェクト310a、310b、310c、310dは、すべて、メタデータオブジェクト310eの上位にある。
メタデータオブジェクトは、階層内においてそのメタデータオブジェクトの上位のオブジェクトのプロパティを含む(すなわち、継承する)。例えば、メタデータオブジェクト310cは、メタデータオブジェクト310aから、プロパティ「critical:true」を継承し、メタデータオブジェクト310dは、メタデータオブジェクト310bから、プロパティ「datacenter:east」を継承し、メタデータオブジェクト310eは、メタデータオブジェクト310eの上位のメタデータオブジェクトから、プロパティ「source:web1」、「datacenter:east」、「metric:errors」、および「critical:true」を継承する。
メタデータオブジェクトは、階層内においてそのメタデータオブジェクトの上位のメタデータオブジェクトから継承されるプロパティに加えて、追加のプロパティを定義することがある。例えば、メタデータオブジェクト310cは、メタデータオブジェクト310aから継承されるプロパティ「critical:true」に加えて、「metric:errors」を定義し、メタデータオブジェクト310dは、メタデータオブジェクト310bから継承されるプロパティ「datacenter:east」に加えて、「source:web1」を定義し、メタデータオブジェクト310eは、階層内においてメタデータオブジェクト310eの上位のメタデータオブジェクトから継承されるプロパティに加えて、新しいプロパティ「administrator:admin1」を定義する。しかしながら、メタデータオブジェクトは、階層内においてそのメタデータオブジェクトの上位のメタデータオブジェクトから継承されるもの以外の追加のプロパティを定義しなければならないわけではない。
実施形態では、ソース属性およびメトリック属性を有するメタデータオブジェクトは、メトリック時系列オブジェクト(MTSオブジェクト)とも呼ばれる。MTSメタデータオブジェクトは、メトリック値およびソース値に基づいて、一意的に識別される。したがって、メトリック値およびソース値は、MTSオブジェクトを一意的に識別するためのキー(例えば、プライマリキー)を形成する。データストリームのデータ点を定義する値からなるいずれのタプルも、タプルのソース値およびメトリック値に基づいて、MTSオブジェクトと関連付けられることができる。実施形態では、MTSオブジェクトXは、階層内においてメタデータオブジェクトXの上位のメタデータオブジェクトのプロパティのセットすべての合併を取ることによって獲得される、プロパティのセットを有する。ソース値およびメトリック値を指定しない310aおよび310bなどのメタデータオブジェクトは、プロパティのセットを指定するための抽象オブジェクトとしての役割を果たす(これらのメタデータオブジェクトは、タグとも呼ばれる)。
データストリームは、プロパティのセットによって特徴付けられる。データストリームは、一致するプロパティを有するメタデータオブジェクトと関連付けられる。メタデータオブジェクトの複数のインスタンスが、生成されることがあり、プロパティの一致するセットを有する各データストリームに1つずつ対応する。プロパティは、計測分析システム100が、キー値ペアに基づいて、何らかの基準を満たすMTSオブジェクトに問い合わせることを可能にする。例えば、キー値ペアのセットが与えられると、計測分析システム100は、キー値ペアの与えられたセットと一致するすべてのデータストリームを識別することができる。これらの一致するデータストリームに属するデータ点は、これらのデータ点に基づいてある式を評価する、分析ジョブに提供されることがある。
図4は、実施形態による、図3に示されるメタデータオブジェクトの階層と関連付けられたデータストリームのセットを示している。図3に示されるメタデータオブジェクトの階層は、図4に示されるデータストリームの対応するセットを使用して、説明される。図4に示される各楕円形は、データストリームのセット410を表すと仮定する。さらに、図3に示されるいずれのセット410x(xは、値「a」、「b」、「c」などを取ることができる変数を表す)も、図3に示されるメタデータオブジェクト310xに対応する。例えば、セット410aは、メタデータオブジェクト310aに対応し、セット410bは、メタデータオブジェクト310bに対応し、セット410cは、メタデータオブジェクト310cに対応し、その他も同様である。
メタデータオブジェクト410は、いずれのデータストリームとも関連付けられないことがあり、例えば、メタデータオブジェクトは、そのメタデータオブジェクトが追加された時に利用可能ないずれのデータストリームとも関連付けられない、モデリング構造体として追加されることがあることに留意されたい。しかしながら、メタデータオブジェクト410からデータストリームへのマッピングは、変更されることがある。例えば、要素が、メタデータオブジェクトと関連付けられたデータストリームのセットに追加されること、またはセットから削除されることがある。したがって、メタデータオブジェクトが、そのメタデータオブジェクトがメタデータストア230に追加されるときに、いずれのデータストリームとも関連付けられない場合であっても、メタデータオブジェクトは、後のステージにおいて、1または複数のデータストリームと関連付けられることがある。
図4に示されるように、セット410aは、メタデータオブジェクト310a、したがって、値「true」を有するプロパティ名「critical」を有するメタデータオブジェクトと関連付けられる、すべてのデータストリームを表す。ユーザ、例えば、システム管理者は、管理システム160を使用して、データストリームをメタデータオブジェクトに割り当てることがある。例えば、システム管理者は、企業の運営にとってクリティカルであると決定されたすべてのデータストリームを決定し、それらをメタデータオブジェクト310aと関連付けることがある。
別の例として、セット410bは、メタデータオブジェクト310b、したがって、値「east」を有するプロパティ名「datacenter」を有するメタデータオブジェクトと関連付けられる、すべてのデータストリームを表す。上で言及されたように、システム管理者は、「east」と名付けられたデータセンタにおいて動作する計測用ソフトウェアのインスタンスを決定し、それらをメタデータオブジェクト310bと関連付けることができる。あるいは、スクリプトまたは自動化プロセスが、メタデータオブジェクトのプロパティに対応する特定の基準を満たす、計測用ソフトウェアのインスタンスを識別するために、実行されることがある。例えば、クローラが、データセンタ「east」において動作するすべてのサーバを識別し、それらをメタデータオブジェクト310bと関連付けるために、実行されることがある。
セット410cは、プロパティ「critical:true」および「metric:errors」と関連付けられた、すべてのデータストリームを表す。したがって、セット410cは、セット410aのすべてのデータセンタのサブセットである。これが、サブセットであるのは、「critical:true」を満たすが、「metric:errors」を満たさない、追加のデータストリームが存在することがあるからである。セット410aとセット410bは、いくつかのオーバーラップするデータストリームを含むことがあるが、含むことを求められるわけではないことに留意されたい。同様に、セット410cとセット410dは、いくつかのオーバーラップするデータストリームを含むことがあるが、含むことを求められるわけではない。図4に示されるように、セット410aとセット410bは、いくつかのオーバーラップするデータストリームを含み、同様に、セット410cとセット410dは、いくつかのオーバーラップするデータストリームを含む。セット410eは、継承されたプロパティに加えて、それが、プロパティ「administrator:admin1」を定義するので、セット410cとセット410dの共通部分セットのサブセットを含む。セット410eが、継承されるプロパティに加えて、プロパティを定義しない場合、セット410eは、セット410cとセット410dの共通部分セットである。
一般に、メタデータオブジェクトXに対応するセットは、メタデータオブジェクトXが、継承されるプロパティに加えて、いかなる新しいプロパティも定義しない場合、階層内においてメタデータオブジェクトXの上位のメタデータオブジェクトに対応するセットの共通部分である。さらに、メタデータオブジェクトYに対応するセットは、メタデータオブジェクトYが、継承されるプロパティに加えて、新しいプロパティを定義する場合、階層内においてメタデータオブジェクトYの上位のメタデータオブジェクトに対応するセットの共通部分のサブセットであることがある。
いくつかの実施形態では、計測分析システム100は、いくつかのメタデータオブジェクトからデータストリームのセットへのマッピングを受け取る。メタデータモジュール220は、階層内においてメタデータオブジェクトの下位の他のメタデータオブジェクトにマッピングされるデータストリームのセットに基づいて、メタデータオブジェクトと関連付けられたデータストリームのセットの要素を決定する。例えば、メタデータモジュール220は、階層内においてメタデータオブジェクトの下位のメタデータオブジェクトにマッピングされるデータストリームのセットの合併に基づいて、メタデータオブジェクトと関連付けられたすべてのデータストリームのセットを決定する。例えば、図3および図4では、メタデータモジュール220は、各メタデータオブジェクト310から1または複数のデータストリームへのマッピングを受け取る。メタデータモジュール220は、メタデータオブジェクト310aと関連付けられたデータストリームのセットを、メタデータオブジェクト310a、301c、310eにマッピングされるデータストリームの合併として、決定する。
メタデータオブジェクトの階層定義は、データセンタを様々なプロパティに割り当てることを容易にし、新しいメタデータオブジェクトを定義することも容易にする。分析エンジン270は、メタデータオブジェクト内で定義されたプロパティに基づいて、式を受け取り、処理する。分析エンジン270は、式に適用可能なデータストリームのセットを決定する。例えば、分析エンジン270が、「critical:true」を満たすすべてのデータストリームの95パーセンタイルの計算を指定する式を受け取った場合、分析エンジン270は、メタデータオブジェクト310aに対応するすべてのデータストリーム、すなわち、セット410aの95パーセンタイルを決定する。分析エンジン270が、「critical:true」および「metric:errors」を満たすすべてのデータストリームの95パーセンタイルの計算を指定する式を受け取った場合、分析エンジン270は、メタデータオブジェクト310cに対応するすべてのデータストリーム、すなわち、セット410cの95パーセンタイルを決定する。
メタデータが、変更される場合は常に、計測分析システム100は、変更されたメタデータに適用可能なすべてのデータストリームを決定し、メタデータをデータストリームと関連付けるインデックス構造を更新する。例えば、新しいタグ(すなわち、プロパティまたは名前−値ペア)が、定義され、データストリームのセットと関連付けられる場合、計測分析システム100は、タグをデータストリームと関連付けるインデックスを更新する。(例えば、図3に示されるような)メタデータオブジェクトの階層内で階層の高位レベルにあるメタデータオブジェクトに対する変更は、その階層内でそのメタデータオブジェクトの下位にある複数のメタデータオブジェクトに影響することがあることに留意されたい。計測分析システム100は、インデックスを更新して、影響されるこれらのメタデータオブジェクトの各々を適切なデータストリームと関連付ける。
全体的なプロセス
図5は、実施形態による、計測用ソフトウェアに基づいた報告を生成するための全体的なプロセスを示している。メタデータモジュール220は、510において、データストリームを記述するメタデータを受け取る。メタデータ定義は、データストリーム自体のデータとは独立して、受け取られる。例えば、データストリームは、メタデータで指定されるようなデータストリームを記述する属性(例えば、データセンタ属性)についての値を提供することなく、データ値と、データ値と関連付けられたタイムスタンプとを含む、タプルを提供することがある。メタデータモジュール220は、データストリームを提供するソースとは異なるソースから、データストリームを記述するプロパティを受け取る。例えば、データストリームは、動作中の計測用ソフトウェアのインスタンスによって提供され、一方、メタデータ定義は、管理システム160を介して、システム管理者によって提供される。
分析エンジン270は、520において、メタデータに基づいて、式を、例えば、メタデータで指定されるプロパティを使用する式を受け取る。520において受け取られる式は、問い合わせの一部であることがあり、例えば、計測用ソフトウェアを記述する報告を生成し、結果をリアルタイムに、すなわち、データストリームのデータが受け取られると直ちに、提供するための、計測分析システム100によって受け取られる問い合わせの一部であることがある。
例示的な式は、複数のデータストリームからのデータの集約に基づいて、値を生成する。例えば、式は、複数のデータストリームからのデータの一定のパーセンタイルに基づいて、値を生成することがあり、または式は、複数のデータストリームからのデータの最大値(または最小値、平均、もしくは他の任意の統計的尺度)である値を生成することがある。別の例示的な式は、複数のストリームからのデータを集約し、メタデータ属性によってデータ値をグループ化し、それによって、複数の出力データストリームを生成する(メタデータ属性は、複数のデータ値を取ることができ、複数の入力データストリームは、メタデータ属性の複数のデータ値と関連付けられたデータストリームを含むと仮定する。
計測分析システム100は、様々なデータストリームのデータが、様々な開発システム120から、計測分析システム100によって受け取られると直ちに、以下のステップ(530、540、550、560)を繰り返す。インターフェースモジュール210は、530において、受け取られた式を分析して、式に適用可能なデータストリームを識別する。例えば、特定の時間間隔において、インターフェースモジュール210は、データストリームの第1のセットが式に適用可能であると決定することがある。しかしながら、第2の(後続する)時間間隔においては、インターフェースモジュール210は、データストリームの第2のセットが式に適用可能であると決定することがある。例えば、式が、プロパティdatacenter=eastを使用して指定されるような、データセンタ「east」から到着するデータストリームに基づいて、ある値を評価する場合、受け取られるデータストリームの数は、(ソフトウェアの新しいインスタンスが、データセンタ内のサーバによって実行されるときは)増加することがあり、または受け取られるデータストリームの数は、(いくつかのサーバが、ダウンしている場合は)減少することがある。
インターフェースモジュール210は、530において、定期的に式を分析して、式に適用可能なすべてのデータストリームを識別する。実施形態では、インターフェースモジュール210が、530において、受け取られた式を分析するレートは、残りのステップ540、550、560が実行されるレートとは異なる。例えば、インターフェースモジュール210が、530において、受け取られた式を分析するレートは、残りのステップ540、550、560が実行されるレートよりも遅いことがある。
実施形態では、計測分析システム100は、式に適用可能なデータストリームが利用可能になると直ちに、式と関連付けられたデータストリームのセットを更新する。計測分析システム100は、評価中の各式と関連付けられたデータストリームのセットの表現を維持する。新しいデータストリームが登録されると、または式に適用可能なデータストリームについてのデータが受け取られると直ちに、計測分析システム100、計測分析システム100は、そのデータストリームを、式と関連付けられたデータストリームのセットに追加する。同様に、データストリームが、もはや式に適用可能ではない場合、計測分析システム100は、そのデータストリームを、計測分析システム100と関連付けられたデータストリームのセットから削除する。例えば、データストリームは、そのデータストリームを記述するメタデータが変更された場合、式と関連付けられないことがある。したがって、計測分析システム100は、式に適用可能なデータストリームのセットを定期的に評価する必要がない。式と関連付けられたデータストリームが変化する原因となる、入力データストリームに対する変更が発生すると直ちに、各式に適用可能なデータストリームのセットが、決定される。
インターフェースモジュール210は、540において、異なるデータストリームの(値のタプルとして表される)データ点を受け取る。実施形態では、インターフェースモジュール210は、時間の一定の間隔、例えば、1秒または数秒にわたって待ち、一定の時間間隔の期間中、異なるデータストリームから受け取られたすべてのデータを収集する。実施形態では、量子化モジュール240は、時間間隔ごとに、データの量子化を実行する。したがって、各データストリームからのデータは、時間間隔についてのデータストリームと関連付けられた単一の値に集約される。量子化されたデータストリームの表現が、維持され、それは、データストリームのソースから到着したデータのメモリ内表現と、時系列データストア260内にデータストリームまたは時系列として記憶されたより古いデータ値とを含む。
分析エンジン270は、550において、時間間隔についてのデータストリームのデータに基づいて、式を評価する。データが、データストリームごとに量子化される場合、分析エンジン270は、550において、各データストリームからの量子化された値を使用して、式を評価する。分析エンジン270は、560において、式の評価の結果を、提示用に、例えば、ユーザインターフェースに送る。
分析エンジン270は、また、式の評価の結果として獲得された(1または複数の)出力データストリームを、例えば、時系列データストア260内に記憶する。実施形態では、分析エンジン270は、式の評価の結果として獲得された各出力データストリームを表す、新しいデータストリームを生成する。新しいデータストリームは、時系列データストア260内に記憶される。これは、式の結果が、他の式への入力として使用されることを可能にする。例えば、式は、複数のデータストリームとして受け取られた値の95パーセンタイルを表すことがある。式の結果は、新しいデータストリームとして、時系列データストア260内に記憶されることがある。分析エンジン270は、生成されたデータストリームに基づいて、移動平均値を計算する式をさらに実行することがある。
実施形態では、計測分析システム100は、受け取られた式を評価し、ステップ530、540、550、560を実行するために、ジョブ(またはプロセス)を実行する。このジョブは、式に対応するMTSオブジェクトのインスタンス(および関連付けられたデータストリーム)を決定するために、問い合わせを動的に評価する。式に基づいて問い合わせに一致するすべてのデータストリームが、決定される。式を評価する場合、一致するデータストリームのデータ点が、考察される。
量子化
計測分析システム100は、不規則な時間間隔で到着するデータ値を有するデータストリームを処理し、規則的な時間間隔でデータを有する等価なデータストリームを生成することによって、データストリームの量子化を実行する。データストリームのデータ値は、2つの連続するデータ値のペアの間の時間間隔が異なる場合、不規則な時間間隔で到着する。例えば、値v1の到着と値v2の到着との間の時間間隔は、値v2の到着と値v3の到着との間の時間間隔と異なる。
入力データストリームの量子化は、量子化されたデータストリームを使用するデータの処理を簡素化する。例えば、時間間隔ごとに、受け取られた複数のデータストリームに基づいた集約値が、各量子化されたデータストリームからの、その時間間隔についての単一のデータ値を単に集約することによって、決定されることができる。さらに、計測分析システム100は、異なる報告に対応する異なる式を評価するために、量子化されたデータストリームの同じセットを使用する。結果として、量子化を実行するための、データ値を集約するために実行される計算が、各一定の時間間隔ごとに各式を評価するために再使用される。
実施形態では、計測分析システム100は、各一定の時間間隔の終りに、入力データストリームの量子化を実行して、その時間間隔についての量子化されたデータが、その一定の時間間隔についての処理に利用可能であるようにする。さらに、計測分析システム100は、量子化されたデータストリームを記憶して、複数のデータストリームにわたるデータが、様々な方法で組み合わされることができるようにする。言い換えると、ユーザは、第1の方法で、データストリームのセットにわたってデータを組み合わせる第1の要求を送ることがあり、その後、ユーザは、異なる方法で、データストリームの異なるセットにわたってデータを組み合わせるための新しい要求を送ることがある。データストリームの2つのセットが、オーバーラップしている場合、オーバーラップするデータストリームについての、その時間間隔についてのデータ値は、2つの計算のために再使用されることができる。
例として、計測分析システム100は、様々なデータセンタ上で計算された集約を見るために、複数のデータストリームにわたるデータを組み合わせた報告を受け取り、処理することがある。しかしながら、その後、ユーザが、異なる種類のアプリケーション、異なる種類のサーバ、および異なる地理的領域上などで計算された集約を見るために、要求を変更することがある。計測分析システム100は、これらの計算の各々のために、量子化されたデータストリームのデータ値を再使用する。
計測分析システム100は、データストリームのデータを集約する式が以前に評価されたデータストリームのセットをユーザが変更する要求も受け取ることがある。例えば、ユーザは、計測分析システム100に、データストリームのセットから1または複数のデータストリームを削除するように要求し、改定されたセットに基づいた集約を要求することがある。ユーザは、新しいサーバ、アプリケーションを削除もしくは追加することの影響、または他の任意の変更をシステム構成に施すことの影響を分析するために、そのような要求を送ることがある。計測分析システム100は、量子化されたデータストリーム(または量子化された時系列データ)を保持し、これらの要求に基づいて、異なる時間間隔についての量子化されたデータストリームを組み合わせる。計測分析システム100が、量子化されたデータストリームを記憶するので、計測分析システム100は、必要に応じて、データストリームにわたってデータを効率的に組み合わせる能力を有する。
計測分析システム100は、複数のデータストリームにわたって移動集約計算を実行するために、データストリームにわたってデータを組み合わせることができる。計測分析システム100は、与えられた長さの時間間隔にわたる任意の移動集約値、例えば、1時間の移動平均、および15分の移動平均などを、連続的に計算することがある。
量子化モジュールのアーキテクチャ
量子化モジュール240は、時間間隔ごとに入力データストリームの値を集約し、その時間間隔についての集約値を生成する。したがって、量子化モジュール240は、任意の時間間隔の後にデータ値が発生することができるデータストリームを受け取る。量子化モジュール240は、入力データストリームを処理して、データが規則的な時間間隔で利用可能であるデータストリームを生成する。量子化モジュール240についての詳細が、本明細書で、さらに説明される。
量子化モジュール240は、データストリームで受け取られた値の種類、例えば、値があるアクションまたはエンティティのカウントであるかどうか、値がある値の集約によって獲得されたかどうか、および値が値の与えられたセットの最大値/最小値を表すかどうかなどを記述する情報を受け取る。データストリームは、値を獲得するために、計測用ソフトウェアによって実行される操作の種類を記述する、値の種類と関連付けられる。量子化モジュール240によって受け取られ、処理されるデータストリームの値の様々な種類の例は、カウント(カージナリティ)、平均、中央値、パーセンタイル、および最新値など、統計的演算を実行した結果として獲得される値を含む。統計的演算は、計測用ソフトウェアにおいて表されるエンティティ、または計測用ソフトウェアによって実行されるアクションを記述する値に対して実行される。
実施形態では、量子化モジュール240は、量子化されたデータストリームの一定の時間間隔に対応する結果の値を獲得するために、データストリームの値の様々な種類から、ある間隔についてのデータストリームの入力値に対して実行される操作の種類へのマッピングを記憶する。マッピングは、構造として記憶されること、または量子化モジュール240の命令内に、例えば、if、then、elseコマンドのシーケンスとして、エンコードされることがある。例えば、量子化モジュール240は、データストリームが操作の種類「count」と関連付けられるならば(if)、そのときは(then)、第1の関数を実行し、そうではなく(else)、データストリームが操作の種類「sum」と関連付けられるならば(if)、そのときは(then)、第2の関数を実行するなど、といった形式の命令を含むように構成されることがある。
実施形態では、量子化モジュール240は、特定の時間間隔についての入力として受け取られたデータ値を記憶するためのバッファを含む。時間間隔内で受け取られる値の数は、あらかじめ知られておらず、1つの時間間隔から別の時間間隔にかけて変化することができるので、量子化モジュール240のバッファは、任意の数の値を記憶するように構成されたデータ構造を使用する。例えば、量子化モジュール240は、入力データストリームの値を記憶するために、リストデータ構造、またはスタックデータ構造を使用することがある。
量子化モジュール240は、各一定の時間間隔ごとに、受け取られたデータストリームのデータ値を収集する。量子化モジュール240は、一定の時間間隔の長さを表す定数値Lを記憶する。量子化モジュール240は、現在の時間間隔の長さを決定するために、先の一定の時間間隔が閉じられて以降の時間を追跡する。量子化モジュール240は、現在の時間間隔の終りにいつ達したかを決定するために、現在の時間間隔の長さをLと比較する。量子化モジュール240は、現在の時間間隔を表す集約値を決定するために、現在の時間間隔において受け取られたすべてのデータ値を処理する。
量子化モジュール240は、現在の時間間隔に対応する一定の時間間隔についての量子化されたデータストリーム値を表すものとして、集約値を記憶する。量子化モジュール240は、その後、現在の時間間隔の入力値を表すために使用されたバッファをクリアし、それを次の一定の時間間隔についての値を記憶するために使用する。実施形態では、量子化モジュール240は、バッファ内に記憶された先の時間間隔のデータが処理されている間に、次の時間間隔についての新しいデータが別のバッファ内に記憶されることができるように、複数のバッファを使用する。
図6は、実施形態による、計測用ソフトウェアから受け取られるデータストリームの量子化のプロセスを示している。図6は、時間軸620a、620bを示しており、各々は、データ値の系列を有するタイムラインを表す。時間軸620aは、入力データストリーム600のデータ値を示しており、時間軸620bは、量子化モジュール240によって生成された量子化されたデータストリーム610の結果の値のデータストリームを示している。
時間間隔I1、I2、I3などは、量子化されたデータストリームに対応する一定の時間間隔を表す。図6に示されるように、4つのデータ値D11、D12、D13、D14が、(T0からT1までの時間を表す)時間間隔I1において受け取られ、2つのデータ値D21、D22が、(T1からT2までの時間を表す)時間間隔I2において受け取られ、3つのデータ値D31、D32、D33が、(T2からT3までの時間を表す)時間間隔I3において受け取られる。
TmとTnとの間の時間間隔は、開始時点Tmを含むと仮定されることがある(終了時点Tnは、次の時間間隔に含まれる)。TmとTnとの間の時間間隔についての他の任意の解釈が、使用されることがあり、例えば、終了時点Tnが、時間間隔に含まれ、開始時点Tmは、先の時間間隔に含まれる。
量子化モジュール240は、各時間間隔のデータ値を処理して、時間軸620bに示される対応する結果の値を生成する。例えば、量子化モジュール240は、時間間隔I1において受け取られた値D11、D12、D13、D14を集約して、時間軸620bに示される値D1を生成し、量子化モジュール240は、時間間隔I2において受け取られた値D21、D22を集約して、時間軸620bに示される値D2を生成し、量子化モジュール240は、時間間隔I3において受け取られた値D31、D32、D33を集約して、時間軸620bに示される値D3を生成する。
実施形態では、量子化モジュール240は、データがどのように量子化されるべきかを定義する量子化方針を定義する、構成パラメータ(例えば、ユーザ定義の構成パラメータ)を受け取る。異なる種類のデータは、異なるように量子化されることがある。言い換えると、データストリームの入力値を集約するために実行される操作の種類は、入力データストリームによって表されるデータの種類に依存する。
入力データストリームの各タプルが、ある値のカウント、例えば、ソフトウェアによって実行されたアクションのカウントである場合、量子化モジュール240は、カウントを加算することによって、入力値を集約して、時間間隔ごとの出力データストリーム値を決定する。受け取られた入力データストリームの各タプルが、値のセットのうちの最小値(または最大値)である場合、量子化モジュール240は、時間間隔についての入力値の最小値(または最大値)を決定することによって、時間間隔についての入力値を集約して、その時間間隔についての出力値を決定する。受け取られた入力データストリームの各タプルが、値のセットのうちの最新値である場合、量子化モジュール240は、時間間隔についての入力値の最新を決定(し、時間間隔の期間中受け取られた以前の値を無視)することによって、時間間隔についての入力値を集約して、その時間間隔についての出力値を決定する。受け取られた入力データストリームの各タプルが、値のセットの平均である場合、量子化モジュール240は、時間間隔の入力値の平均を決定することによって、時間間隔と関連付けられた入力値を集約して、各時間間隔についての出力データストリーム値を決定する。平均のセットの平均は、必ずしも平均のセットを決定するために使用された入力の平均ではない。
実施形態では、量子化モジュール240は、セットのうちの最新値を決定することによって、平均のセットを含む入力値を集約する。受け取られた入力データストリームの各タプルが、その時点におけるメトリックの最後に利用可能な値である場合、量子化モジュール240は、単にデータストリームの最後の値を使用することによって、時間間隔についての入力値を集約して、その時間間隔についての出力値を決定する。
実施形態では、入力データストリームは、ある入力値の平均を表すデータ値を含む。各データ値は、平均を決定するために使用されたデータ値のカウントを含むタプルとして表される。タプルは、平均値と、平均を決定するために使用されたデータ値の数のカウントとを含むことがある。量子化モジュール240は、以下のようにして、複数のタプルに基づいて、全体的な平均値を決定する。量子化モジュール240は、平均値をカウント値で乗算することによって、各タプルについての総和値を決定する。量子化モジュール240は、各タプルについての総和値の合算を決定することによって、複数の入力タプルについての全体的な総和値を決定する。量子化モジュール240は、タプルのカウント値を合算することによって、全体的なカウント値を決定する。量子化モジュール240は、全体的な総和値を全体的なカウント値で除算することによって、全体的な平均値を決定する。
あるいは、各タプルは、総和と、総和を決定するために使用された値のカウントとを含むことがある。量子化モジュール240は、総和値をカウント値で除算することによって、各タプルに対応する各個々の平均値を決定することができる。量子化モジュール240は、以下のようにして、タプルを組み合わせて、全体的な平均値を決定する。量子化モジュール240は、すべての総和値を合算して、全体的な総和値を決定する。量子化モジュール240は、すべてのカウント値を合算して、全体的なカウント値を決定する。量子化モジュール240は、全体的な総和値を全体的なカウント値で除算することによって、全体的な平均値を決定する。
いくつかの実施形態では、量子化モジュール240は、ロールアップ操作を実行する。ロールアップ操作は、(本明細書ではロールアップ時間間隔と呼ばれる)より大きい時間間隔上で、データをさらに集約することに対応する。例えば、量子化モジュール240は、様々な時間間隔で不規則に到着するデータを有する入力データストリームを、1つの第2の時間間隔で利用可能なデータを有するデータストリームに変換するために、量子化を実行すると仮定する。量子化モジュール240は、さらに、より大きい時間間隔、すなわち、ロールアップ時間間隔、例えば、1分間の時間間隔にわたってデータを集約するために、ロールアップ操作を実行することがある。
実施形態では、ロールアップ操作は、ロールアップ時間間隔の終りに実行される。これは、計測分析システム100が、複数のデータストリームにわたって効率的にロールアップ操作を実行することができるように、計測分析システム100が、各データストリームについてロールアップデータがいつでも準備できているようにすることを可能する。上で説明されたように、計測分析システム100は、ロールアップデータを、複数のデータストリームにわたって、異なる方法で、すなわち、ロールアップのために使用される関数の異なる種類別に、データストリームの異なる組み合わせ別に、ロールアップが実行される異なるセット別に、効率的に組み合わせることができる。実施形態では、量子化モジュール240が量子化またはロールアップを実行する時間間隔の長さは、構成可能である。
図7は、実施形態による、様々なソースから受け取られるデータストリームのデータを組み合わせるための全体的なプロセスを示している。本明細書で説明されるステップは、示されたもの以外のモジュールによって実行されることがある。さらに、あるステップは、図7に示されるのとは異なる順序で実行されることがある。
この計測分析システム100は、複数の開発システム120からデータストリームを受け取り、データに基づいた報告をリアルタイムに生成するために、データが受け取られると直ちに、データストリームのデータを組み合わせる。したがって、データが受け取られると直ちに、入力データストリームに対応する報告の結果の値が、進行中ベースで生成され、提示用に送られる。例えば、時間間隔ごとのデータストリームのデータ値が、受け取られ、後続する時間間隔についての結果の値が処理される前に、結果の値が、計算され、提示用に送られる。あるいは、次の時間間隔についてのデータ値は、現在の時間間隔についての結果の値が、提示用に送られている間に、並列して、受け取られ、処理されることがある。図7は、時間間隔ごとに繰り返されるステップを示している。
インターフェースモジュール210は、710において、1または複数のデータストリームからデータを受け取る。例えば、インターフェースモジュールは、710a、710b、710cにおいて、第1のデータストリーム、第2のデータストリーム、第3のデータストリームについてのデータを受け取り、その他についても同様である。量子化モジュール240は、720において、時間間隔についての各データストリームにおいて受け取られたデータを量子化する。例えば、量子化モジュール240は、720a、720b、710cにおいて、第1のデータストリーム、第2のデータストリーム、第3のデータストリームについてのデータを量子化し、その他についても同様である。したがって、量子化された集約値が、時間間隔の期間中受け取られた各データストリームのデータ値に基づいて、生成される。
分析エンジン270は、730において、時間間隔についてのデータストリームに対応する量子化されたデータ値を集約する式を評価する。式は、メタデータストア230内に記憶されたデータストリームを記述するメタデータを使用して、指定されることがある。分析エンジン270は、740において、式の評価の結果を、時系列データストア260内に記憶する。実施形態では、分析エンジン270は、式の評価の結果として獲得された出力データストリームを、提示用に送る。
上述のステップ710、720、730、740は、後続する時間間隔ごとに、計測分析システム100によって繰り返される。結果として、分析エンジン270によって受け取られる式の結果を表す新しいデータストリームが、生成され、時系列データストア260内に記憶される。さらに時間間隔ごとのデータが、入力データストリームから受け取られると直ちに、式の結果が、各一定の時間間隔ごとに、リアルタイムに、表示用に送られる。
代替的な実施形態
本明細書で説明された実施形態は、計測用ソフトウェアから受け取られたデータストリームの分析を開示するが、本明細書で開示される技法は、他の種類のデータストリームにも適用される。例えば、計測分析システム100は、センサによって生成されたデータを表すデータストリーム、フライト追跡情報を表すデータストリーム、センサによって生成された天文情報を表すデータストリーム、および天候情報表すデータストリームなどを分析するために、使用されることがある。計測分析システム100は、ユーザが、データストリーム自体によっては提供されないデータストリームを記述するメタデータ属性を定義することを可能にする。したがって、データストリームを記述する任意の数のメタデータ属性が、データストリーム自体のソースとは独立したソースによって定義されることができる。さらに、計測分析システム100は、メタデータ属性、およびデータストリームの一部として受け取られる属性に基づいて、式の仕様を受け取ることができる。そのような式に基づいたリアルタイム報告が、生成され、ユーザインターフェースを介して提示されることができる。
実施形態では、いくつかのセンサは、計測分析システム100に登録して、各センサを識別する情報を提供する。各センサは、データストリームを計測分析システム100に送る。計測分析システム100は、さらに、データストリームとともに提供されないデータストリームを記述する属性を指定する、データストリームを記述するメタデータを受け取る。例えば、メタデータ属性は、センサの地理的ロケーションを指定することがあり、組織または組織内のグループをセンサと関連付けることがあり、1または複数のユーザ名を各センサと、製造者名を各センサと関連付けることがあり、その他のこともある。計測分析システム100は、さらに、センサデータおよび1または複数のメタデータ属性に基づいて報告を定義する式を受け取る。計測分析システム100は、一定の時間間隔に基づいて、各データストリームを量子化する。計測分析システム100は、さらに、式を定期的に評価し、結果を、出力データストリームとして、ユーザインターフェースを介して、表示用に送る。
センサデータを使用して計測分析システム100によって生成される例示的な報告は、様々なロケーションによって、例えば、センサがある製造プロセスと関連付けられたデータを提供した、製造設備と関連付けられた各ロケーションによってグループ化されるセンサから受け取られたデータ値の総和を決定する。センサデータを使用して計測分析システム100によって生成される別の例示的な報告は、計測分析システム100が、受け取られたデータストリームに基づいて(またはセンサからの予想されるデータストリームの欠如に基づいて)、アクティブセンサを故障センサから区別することができると仮定して、各センサの製造者によってグループ化されるアクティブセンサのカウントを決定する。センサデータを使用して計測分析システム100によって生成される例示的な報告は、(異なるセンサが組織のグループと関連付けられると仮定して)組織内のグループによってグループ化されるセンサデータに基づいて、アクティビティの度合いを決定する。これらの例は、本明細書で開示される技法が、計測用ソフトウェア以外のソースから受け取られるデータストリームにどのように適用されることができるかを示す。
本発明の図および説明は、本発明の明確な理解のために関連する要素を説明する一方で、明瞭さのために、典型的なシステムにおいて見出される他の多くの要素を除外するように、簡略化されていることを理解されたい。当業者は、本発明を実施する際に、他の要素および/またはステップが望ましいこと、および/または必要とされることを認識することがある。しかしながら、そのような要素およびステップは、当技術分野においてよく知られているため、およびそれらは、本発明についてのより良い理解を促進しないため、そのような要素およびステップの説明は、本明細書では提供されない。本明細書の開示は、当業者に知られたそのような要素および方法に対する、そのような変形および変更すべてを対象にしている。
上述の説明のいくつかの部分は、情報に対する操作のアルゴリズムおよびシンボル表現に関して、実施形態を説明している。これらのアルゴリズム記述および表現は、データ処理分野の当業者によって、自分の仕事の内容を他の当業者に効果的に伝えるために、一般に使用される。これらの操作は、機能的、計算的、または論理的に説明されるが、コンピュータプログラムまたは等価の電気回路もしくはマイクロコードなどによって実施されることが理解される。さらに、一般性を失うことなく、操作のこれらの並びをモジュールとして言及することも、時には便利であることが分かっている。説明された操作およびそれらと関連付けられたモジュールは、ソフトウェア、ファームウェア、ハードウェア、またはそれらの任意の組み合わせで実施されることがある。
本明細書で使用される場合、「一実施形態」または「実施形態」に対するいずれの言及も、その実施形態に関連して説明される特定の要素、特徴、構造、または特性が、少なくとも1つの実施形態に含まれることを意味する。本明細書内の様々な箇所における「一実施形態では」という句の出現は、必ずしもすべてが、同じ実施形態に言及しているとは限らない。
いくつかの実施形態は、「結合された」および「接続された」という表現を、それらの派生形とともに使用して、説明されることがある。これらの用語は、互いの同意語としては意図されていないことを理解されたい。例えば、いくつかの実施形態は、2つ以上の要素が、互いに直接的に物理または電気接触していることを示すために、「接続された」という用語を使用して、説明されることがある。別の例では、いくつかの実施形態は、2つ以上の要素が、直接的に物理または電気接触していることを示すために、「結合された」という用語を使用して、説明されることがある。しかしながら、「結合された」という用語は、2つ以上の要素が、互いに直接的に接触していないが、依然として、互いに協力または対話することを意味することもある。実施形態は、これに関連して、限定されない。
本明細書で使用される場合、「comprises(含む)」、「comprising(含む)」、「includes(含む)」、「including(含む)」、「has(有する)」、「having(有する)」という語、またはそれらの他の任意の変化形は、非排他的な包含をカバーすることが意図されている。例えば、要素のリストを含むプロセス、方法、物品、または装置は、必ずしもそれらの要素だけに限定されず、明示的に列挙されていないが、そのようなプロセス、方法、物品、または装置に固有の他の要素を含むことがある。さらに、反対のことが明示的に述べられていない限り、「or(または)」は、包含的orのことであり、排他的orのことではない。例えば、条件AまたはBは、以下のうちのいずれか1つ、すなわち、Aが真であり(または存在し)、Bが偽である(または存在しない)、Aが偽であり(または存在せず)、Bが真である(または存在する)、およびAとBの両方が真である(または存在する)によって満たされる。
加えて、本明細書の実施形態の要素および構成要素を記述するために、「a」または「an」の使用が、利用される。これは、もっぱら便宜的に、本発明の一般的な意味を与えるために行われる。この記述は、1つまたは少なくとも1つを含むと読まれるべきであり、別のことが意味されていることが明らかでない限り、単数形は、複数形も含む。
本開示を読むと、当業者は、本明細書で開示された原理を通して、計測用ソフトウェアに基づいて報告を生成するための、システムおよびプロセスについてのさらなる追加の代替的な構造設計および機能設計を理解する。したがって、特定の実施形態および応用例が、図説され、説明されたが、開示された実施形態は、本明細書で開示された通りの構成および構成要素に限定されないことを理解されたい。当業者に明らかな様々な変更、変化、および変形が、添付の特許請求の範囲において確定される主旨および範囲から逸脱することなく、本明細書で開示された方法および装置の配置、操作、および詳細において施されることがある。

Claims (13)

  1. 計測用ソフトウェアによって生成されるデータを処理するためのコンピュータ実施方法であって、
    複数のデータストリームの1つのデータストリームを記述するメタデータを受け取るステップであって、前記データストリームに関する前記メタデータは、第1のセットの属性を含み、
    初期の時間間隔上で、前記複数のデータストリームに関して受信されたデータを量子化するステップと、
    ユーザインターフェースを通じて、前記複数のデータストリームの少なくとも2つのデータストリームにわたって量子化されたデータを集約するための式を受け取るステップであって、前記式は、少なくとも前記第1のセットの属性の1つの属性および第2のセットの属性の1つの属性に基づき、前記第2のセットの属性の各属性は、前記第1のセットの属性とは異なる、該ステップと、
    出力データストリームを生成するために、複数の時間間隔上で前記データストリームの少なくとも2つを使用して前記式を評価するステップと、
    前記ユーザインターフェースを通じて表示するために、前記出力データストリームを送るステップと
    を含むことを特徴とする方法。
  2. 1または複数の外部システムから、複数のデータストリームを識別する情報を受け取るステップであって、各データストリームは、前記1または複数の外部システム上で動作する計測用ソフトウェアのインスタンスによって生成され、各データストリームはタプルを含み、各タプルは前記データストリームの前記第2のセットの属性の値を含む、該ステップをさらに含むことを特徴とする請求項1に記載の方法。
  3. 時間間隔ごとに、
    前記複数のデータストリームから、1または複数のタプルを受け取るステップであって、各タプルは、ある時点と関連付けられたデータ値を含む、該ステップと、
    前記受け取られたタプルの前記データ値に基づいて、前記式の値を決定するステップと、
    前記式の前記値を、前記出力データストリームに提供するステップと
    をさらに含むことを特徴とする請求項1に記載の方法。
  4. 前記複数のデータストリームの少なくとも2つのデータ値を集約するステップであって、各データ値は、前記時間間隔と関連付けられる、該ステップをさらに含むことを特徴とする請求項3に記載の方法。
  5. 後続の時間間隔の期間中、受信した新たなデータストリームに基づいて、前記出力データストリームをリアルタイムで更新するステップをさらに含むことを特徴とする請求項1に記載の方法。
  6. 前記量子化するステップは、
    前記複数のデータストリームの1つのデータストリームを受け取るステップであって、前記データストリームは、任意の時間間隔上で生じるデータ値を含む、該ステップと、
    規則的な時間間隔で利用可能なデータを含む量子化されたデータストリームを生成するために、前記データストリームを処理するステップと
    をさらに含むことを特徴とする請求項1に記載の方法。
  7. 第1の時間間隔の期間中、データストリームの第1のセットを受け取るステップと、
    データストリームの前記第1のセットを使用して、前記式を評価することによって、第1の複数の出力データストリームを生成するステップと、
    第2の時間間隔の期間中、データストリームの第2のセットを受け取るステップと、
    データストリームの前記第2のセットを使用して、前記式を評価することによって、第2の複数の出力データストリームを生成するステップと
    をさらに含むことを特徴とする請求項1に記載の方法。
  8. データストリームを記述する前記メタデータのメタデータオブジェクトを変更するための命令を受け取るステップと、
    後続の時間間隔について、時間間隔ごとに、
    第2の出力データストリームを生成するために、前記変更されたメタデータに基づいて記式を評価するステップと、
    前記ユーザインターフェースを介して表示するために、前記変更されたメタデータに基づいて、前記第2の出力データストリームを送るステップと
    をさらに含むことを特徴とする請求項1に記載の方法。
  9. メタデータオブジェクトを記述する情報を受け取るステップであって、各メタデータオブジェクトは、1または複数のプロパティと関連付けられ、各プロパティは、名前および値を含む、該ステップと、
    メタデータオブジェクトと前記複数のデータストリームを識別する情報との間の関連付けを記述する情報を受け取るステップと
    を含むことを特徴とする請求項1に記載の方法。
  10. 前記式は、前記複数のデータストリームの前記少なくとも2つを選択するためのプロパティ値を指定し、前記複数のデータストリームの前記少なくとも2つは、前記プロパティ値と一致することを特徴とする請求項1に記載の方法。
  11. ユーザインターフェースを通じて、計測用ソフトウェアによって生成されるデータを処理するためのデータストリーム言語プログラムを指定するシステムであって、
    少なくとも1つのプロセッサと、
    前記少なくとも1つのプロセッサに、請求項1ないし10のいずれか1つに記載のコンピュータ実施方法を実行させることが可能な命令を有する、少なくとも1つのメモリと
    を備えたことを特徴とするシステム。
  12. コンピュータに、請求項1ないし10のいずれか1つに記載のコンピュータ実施方法を実行させることを特徴とするコンピュータプログラム。
  13. 請求項12記載のコンピュータプログラムを記録したことを特徴とする非一過性コンピュータ可読記録媒体。
JP2020137011A 2014-10-08 2020-08-14 ソフトウェアの計測に基づいたリアルタイム報告 Active JP7065916B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2022072452A JP7391137B2 (ja) 2014-10-08 2022-04-26 ソフトウェアの計測に基づいたリアルタイム報告

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US201462061616P 2014-10-08 2014-10-08
US62/061,616 2014-10-08
US14/800,679 2015-07-15
US14/800,679 US9804951B2 (en) 2014-10-08 2015-07-15 Quantization of data streams of instrumented software
US14/800,677 US9846632B2 (en) 2014-10-08 2015-07-15 Real-time reporting based on instrumentation of software
US14/800,677 2015-07-15

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2017538572A Division JP7023113B2 (ja) 2014-10-08 2015-09-22 ソフトウェアの計測に基づいたリアルタイム報告

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2022072452A Division JP7391137B2 (ja) 2014-10-08 2022-04-26 ソフトウェアの計測に基づいたリアルタイム報告

Publications (2)

Publication Number Publication Date
JP2020187798A true JP2020187798A (ja) 2020-11-19
JP7065916B2 JP7065916B2 (ja) 2022-05-12

Family

ID=58448186

Family Applications (3)

Application Number Title Priority Date Filing Date
JP2017538572A Active JP7023113B2 (ja) 2014-10-08 2015-09-22 ソフトウェアの計測に基づいたリアルタイム報告
JP2020137011A Active JP7065916B2 (ja) 2014-10-08 2020-08-14 ソフトウェアの計測に基づいたリアルタイム報告
JP2022072452A Active JP7391137B2 (ja) 2014-10-08 2022-04-26 ソフトウェアの計測に基づいたリアルタイム報告

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2017538572A Active JP7023113B2 (ja) 2014-10-08 2015-09-22 ソフトウェアの計測に基づいたリアルタイム報告

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2022072452A Active JP7391137B2 (ja) 2014-10-08 2022-04-26 ソフトウェアの計測に基づいたリアルタイム報告

Country Status (5)

Country Link
EP (2) EP3204848B1 (ja)
JP (3) JP7023113B2 (ja)
CN (2) CN112882906B (ja)
AU (3) AU2015328574B2 (ja)
CA (3) CA2962760C (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9846632B2 (en) 2014-10-08 2017-12-19 Signalfx, Inc. Real-time reporting based on instrumentation of software
US9846574B2 (en) 2014-12-19 2017-12-19 Signalfx, Inc. Representing result data streams based on execution of data stream language programs
US10394692B2 (en) 2015-01-29 2019-08-27 Signalfx, Inc. Real-time processing of data streams received from instrumented software
CN111208990B (zh) * 2019-12-27 2024-05-24 苏州数设科技有限公司 一种对象分析方法与装置
CN111274256B (zh) * 2020-01-20 2023-09-12 远景智能国际私人投资有限公司 基于时序数据库的资源管控方法、装置、设备及存储介质
CN112685164B (zh) * 2021-01-08 2023-04-04 浪潮软件科技有限公司 基于dac定时任务发送日报的方法及系统

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002278780A (ja) * 2001-03-19 2002-09-27 Toshiba Corp ネットワークシステムおよび資源分析システム
US20100293535A1 (en) * 2009-05-14 2010-11-18 International Business Machines Corporation Profile-Driven Data Stream Processing
US20120078975A1 (en) * 2010-09-23 2012-03-29 Hewlett-Packard Development Company, L.P. Data processing system and method
WO2012046316A1 (ja) * 2010-10-06 2012-04-12 株式会社日立製作所 ストリームデータ処理方法及び装置
US8504733B1 (en) * 2007-07-31 2013-08-06 Hewlett-Packard Development Company, L.P. Subtree for an aggregation system
WO2014113273A2 (en) * 2013-01-15 2014-07-24 Oracle International Corporation Variable duration windows on continuous data streams

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7111282B2 (en) * 2001-06-12 2006-09-19 Hewlett-Packard Development Company, L.P. Instrumenting a software program and collecting data from the instrumented software program by type
US7624174B2 (en) * 2003-05-22 2009-11-24 Microsoft Corporation Self-learning method and system for detecting abnormalities
US7165063B2 (en) * 2003-11-19 2007-01-16 International Business Machines Corporation Context quantifier transformation in XML query rewrite
US8396886B1 (en) * 2005-02-03 2013-03-12 Sybase Inc. Continuous processing language for real-time data streams
US7979245B1 (en) * 2006-05-17 2011-07-12 Quest Software, Inc. Model-based systems and methods for monitoring computing resource performance
US8046739B2 (en) * 2006-08-04 2011-10-25 National Instruments Corporation System and method for enabling a graphical program to propagate attributes of inputs and outputs of blocks
US8381039B1 (en) * 2008-10-20 2013-02-19 Amazon Technologies, Inc. Storage of mass data for monitoring
JP4659877B2 (ja) * 2008-12-03 2011-03-30 株式会社日立製作所 ストリームデータ処理制御方法、ストリームデータ処理装置及びストリームデータ処理制御プログラム
US8935293B2 (en) * 2009-03-02 2015-01-13 Oracle International Corporation Framework for dynamically generating tuple and page classes
CN102859517B (zh) 2010-05-14 2016-07-06 株式会社日立制作所 时序数据管理装置、系统以及方法
EP2609507B1 (en) * 2010-08-25 2019-05-15 Ab Initio Technology LLC Evaluating dataflow graph characteristics
US8572274B2 (en) * 2011-02-17 2013-10-29 International Business Machines Corporation Estimating load shed data in streaming database applications
JP5623336B2 (ja) 2011-05-25 2014-11-12 三菱電機株式会社 リソース使用率算出装置および応答時間比算出装置およびリソース使用率算出方法およびプログラム
CN102221998A (zh) 2011-06-07 2011-10-19 北京大学 一种扩展构件运行支撑平台中ejb容器的方法
US9396157B2 (en) * 2011-08-26 2016-07-19 International Business Machines Corporation Stream application performance monitoring metrics
US8447851B1 (en) 2011-11-10 2013-05-21 CopperEgg Corporation System for monitoring elastic cloud-based computing systems as a service
JP5505464B2 (ja) * 2012-06-08 2014-05-28 沖電気工業株式会社 センサデータ提供システム、ゲートウェイ及び抽象化センサデータ生成方法
WO2013186831A1 (ja) * 2012-06-11 2013-12-19 株式会社日立製作所 ストリームデータ処理方法、ストリームデータ処理装置及びプログラム
US9563663B2 (en) * 2012-09-28 2017-02-07 Oracle International Corporation Fast path evaluation of Boolean predicates

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002278780A (ja) * 2001-03-19 2002-09-27 Toshiba Corp ネットワークシステムおよび資源分析システム
US8504733B1 (en) * 2007-07-31 2013-08-06 Hewlett-Packard Development Company, L.P. Subtree for an aggregation system
US20100293535A1 (en) * 2009-05-14 2010-11-18 International Business Machines Corporation Profile-Driven Data Stream Processing
US20120078975A1 (en) * 2010-09-23 2012-03-29 Hewlett-Packard Development Company, L.P. Data processing system and method
WO2012046316A1 (ja) * 2010-10-06 2012-04-12 株式会社日立製作所 ストリームデータ処理方法及び装置
WO2014113273A2 (en) * 2013-01-15 2014-07-24 Oracle International Corporation Variable duration windows on continuous data streams

Also Published As

Publication number Publication date
CA2962760A1 (en) 2016-04-14
JP2017535012A (ja) 2017-11-24
AU2022201801B2 (en) 2024-04-18
JP7391137B2 (ja) 2023-12-04
CN106796520A (zh) 2017-05-31
CA2962760C (en) 2022-07-19
JP7065916B2 (ja) 2022-05-12
EP4198738A1 (en) 2023-06-21
EP3204848B1 (en) 2022-12-21
CA3177882A1 (en) 2016-04-14
AU2015328574A1 (en) 2017-04-06
JP7023113B2 (ja) 2022-02-21
CA3158525A1 (en) 2016-04-14
EP3204848A4 (en) 2018-08-08
AU2021201308B2 (en) 2022-01-06
EP3204848A1 (en) 2017-08-16
CN112882906B (zh) 2024-05-17
AU2021201308A1 (en) 2021-03-18
CN112882906A (zh) 2021-06-01
JP2022119762A (ja) 2022-08-17
AU2022201801A1 (en) 2022-04-07
AU2015328574B2 (en) 2020-12-10
CN106796520B (zh) 2021-04-16

Similar Documents

Publication Publication Date Title
US11010278B2 (en) Real-time reporting based on instrumentation of software
AU2021201512B2 (en) Data stream processing language for analyzing instrumented software
JP7065916B2 (ja) ソフトウェアの計測に基づいたリアルタイム報告
WO2016057211A1 (en) Real-time reporting based on instrumentation of software
WO2016100534A1 (en) Data stream processing language for analyzing instrumented software

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200901

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210811

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210914

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20211207

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: 20220405

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220426

R150 Certificate of patent or registration of utility model

Ref document number: 7065916

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150