(57)【要約】監視システムはコンピューティングシステムの状態情報を監視することによりメトリックまたはイベントデータを提供する。実施形態にて監視システムはコンピューティングシステムで実行中のエージェントから状態情報を受信する１つまたは複数のプロセッサーを含む。状態情報はコンピューティングシステムのコンポーネントを説明する。状態情報の受信に応答して監視システムは状態情報とエージェントから以前に受信された前の状態情報とに基づいて集約状態情報を生成する。状態情報と前の状態情報とは同じ時間周期に対応し得る。監視システムは集約状態情報からサブスクライブされた状態情報を生成する。サブスクライブされた状態情報はクライアントの命令を使用して選択された集約状態情報のサブセットである。監視システムはサブスクライブされた状態情報をクライアントに送ってクライアントより表されるユーザーインターフェイスにおいて更新をさせる。
2021508105.tif 000002
【特許請求の範囲】
【請求項１】
状態情報を監視するためのシステムであって、
前記システムによって、コンピューティングシステム上で実行しているエージェントから状態情報を受信し、第１の時間周期に対する前記状態情報は、前記コンピューティングシステムのコンポーネントに関し、
前記状態情報を受信することに応答して、
前記システムによって、前記状態情報と、前記エージェントから以前に受信した前の状態情報とに基づいて、集約状態情報を生成し、前記第１の時間周期に対する前記前の状態情報は、前記コンポーネントに関し、
サブスクライブされた状態情報を前記集約状態情報から生成し、前記サブスクライブされた状態情報は、クライアントの命令を使用して選択された前記集約状態情報のサブセットであり、
前記クライアントよって表されるユーザーインターフェイスにおいて更新をさせるために、前記クライアントに前記サブスクライブされた状態情報を送信する
ように構成された１つまたは複数のプロセッサー
を備えたことを特徴とするシステム。
【請求項２】
前記１つまたは複数のプロセッサーは、
前記状態情報の開始時間および終了時間を使用して、前記第１の時間周期と前記状態情報を関連付け、
前記前の状態情報が前記第１の時間周期に対して以前に受信されたと決定することに応答して前記前の状態情報を検索する
ようにさらに構成されたことを特徴とする請求項１に記載のシステム。
【請求項３】
前記１つまたは複数のプロセッサーは、
前記状態情報に対する前記第１の時間周期に基づいて、前記集約状態情報に関連付けられたディスプレイタイムを決定し、
前記ユーザーインターフェイスにおける前記更新に、前記関連付けられたディスプレイタイムに関して前記サブスクライブされた状態情報の表示を含ませるために、前記クライアントに前記ディスプレイタイムを送信する
ようにさらに構成されたことを特徴とする請求項２に記載のシステム。
【請求項４】
前記ユーザーインターフェイスにおける前記更新は、前記関連付けられたディスプレイタイムに関して前記コンピューティングシステムに関連付けられた集約するメトリックまたは集約するイベントデータを表示することを含むことを特徴とする請求項３に記載のシステム。
【請求項５】
前記１つまたは複数のプロセッサーは、
前記システムによって、前記エージェントから第２の状態情報を受信し、前記第２の状態情報は、前記第１の時間周期に続く第２の時間周期に対してであり、
前記第２の時間周期と前記第２の状態情報を関連付ける
ようにさらに構成されたことを特徴とする請求項２に記載のシステム。
【請求項６】
前記１つまたは複数のプロセッサーは、前記第２の時間周期に関する前記ユーザーインターフェイスにおいて第２の更新をさせるために、前記第２の状態情報から生成される第２のサブスクライブされた状態情報を送信するようにさらに構成されたことを特徴とする請求項５に記載のシステム。
【請求項７】
前記１つまたは複数のプロセッサーは、
前記第２の時間周期が前記第１の時間周期の前であるかどうかを決定し、
前記第２の時間周期が前記第１の時間周期の前であると決定することに応答して、前記第２の状態情報を使用することなしに、前記集約された状態情報を生成する
ようにさらに構成されたことを特徴とする請求項５に記載のシステム。
【請求項８】
前記１つまたは複数のプロセッサーは、
前記システムによって、前記クライアントから前記命令を受信し、前記命令は、前記サブスクライブされた状態情報に対するリクエストを示し、前記サブスクライブされた状態情報は、前記命令に基づいて、前記集約状態情報をフィルタリングすることによって生成される
ようにさらに構成されたことを特徴とする請求項１に記載のシステム。
【請求項９】
前記１つまたは複数のプロセッサーは、
前記サブスクライブされた状態情報を受信する前記クライアントから第１のリクエストを受信し、
前記第１のリクエストに応答して、前記サブスクライブされた状態情報を前記クライアントに提供するために、前記クライアントに関連付けられたサブスクリプションを生成し、
前記サブスクライブされた状態情報を受信する第２のクライアントから第２のリクエストを受信し、
前記第２のリクエストに応答して、前記クライアントに関連付けられた前記サブスクリプションがアクティブであるかどうかを決定し、
前記クライアントに関連付けられた前記サブスクリプションがアクティブであると決定することに応答して、前記第２のクライアントと前記サブスクリプションを関連付け、
前記サブスクリプションを取り消す前記クライアントから第３のリクエストを受信し、
前記第３のリクエストに応答して、
前記クライアントから前記サブスクリプションを取り消し、
前記サブスクライブされた状態情報を前記第２のクライアントに提供するために、前記サブスクリプションを維持する
ようにさらに構成されたことを特徴とする請求項１に記載のシステム。
【請求項１０】
監視システムによって、コンピューティングシステム上で実行しているエージェントから状態情報を受信するステップであって、第１の時間周期に対する前記状態情報は、前記コンピューティングシステムのコンポーネントに関する、ステップと、
前記状態情報を受信することに応答して、
前記監視システムによって、前記状態情報と、前記エージェントから以前に受信した前の状態情報とに基づいて、集約状態情報を生成するステップであって、前記第１の時間周期に対する前記前の状態情報は、前記コンポーネントに関する、ステップと、
サブスクライブされた状態情報を前記集約状態情報から生成するステップであって、前記サブスクライブされた状態情報は、クライアントの命令を使用して選択された前記集約状態情報のサブセットである、ステップと、
前記クライアントに前記サブスクライブされた状態情報を送信して、前記クライアントよって表されるユーザーインターフェイスにおいて更新をさせるステップと
を備えることを特徴とする方法。
【請求項１１】
前記集約状態情報を生成するステップは、
前記状態情報の開始時間および終了時間を使用して、前記第１の時間周期と前記状態情報を関連付けるステップと、
前記前の状態情報が前記第１の時間周期に対して以前に受信されたと決定することに応答して前記前の状態情報を検索するステップと
を含むことを特徴とする請求項１０に記載の方法。
【請求項１２】
前記状態情報に対する前記第１の時間周期に基づいて、前記集約状態情報に関連付けられたディスプレイタイムを決定するステップと、
前記クライアントに前記ディスプレイタイムを送信して、前記ユーザーインターフェイスにおける前記更新に、前記関連付けられたディスプレイタイムに関して前記サブスクライブされた状態情報の表示を含ませるステップと
をさらに備えることを特徴とする請求項１１に記載の方法。
【請求項１３】
前記ユーザーインターフェイスにおける前記更新は、前記関連付けられたディスプレイタイムに関して前記コンピューティングシステムに関連付けられた集約するメトリックまたは集約するイベントデータを表示することを含むことを特徴とする請求項１２に記載の方法。
【請求項１４】
前記監視システムによって、前記エージェントから第２の状態情報を受信するステップであって、前記第２の状態情報は、前記第１の時間周期に続く第２の時間周期に対してである、ステップと、
前記第２の時間周期と前記第２の状態情報を関連付けるステップと
をさらに備えることを特徴とする請求項１１に記載の方法。
【請求項１５】
前記第２の状態情報から生成される第２のサブスクライブされた状態情報を送信して、前記第２の時間周期に関する前記ユーザーインターフェイスにおいて第２の更新をさせるステップをさらに備えることを特徴とする請求項１４に記載の方法。
【請求項１６】
前記第２の時間周期が前記第１の時間周期の前であるかどうかを決定するステップと、
前記第２の時間周期が前記第１の時間周期の前であると決定することに応答して、前記第２の状態情報を使用することなしに、前記集約された状態情報を更新するステップと
をさらに備えることを特徴とする請求項１４に記載の方法。
【請求項１７】
前記監視システムによって、前記クライアントから前記命令を受信するステップであって、前記命令は、前記ユーザーインターフェイスによる表示に対するデータを示し、前記サブスクライブされた状態情報は、前記命令に基づいて、前記集約状態情報をフィルタリングすることによって生成される、ステップ
をさらに備えることを特徴とする請求項１０に記載の方法。
【請求項１８】
前記サブスクライブされた状態情報を受信する前記クライアントから第１のリクエストを受信するステップと、
前記第１のリクエストに応答して、前記サブスクライブされた状態情報を前記クライアントに提供するために、前記クライアントに関連付けられたサブスクリプションを生成するステップと、
前記サブスクライブされた状態情報を受信する第２のクライアントから第２のリクエストを受信するステップと、
前記第２のリクエストに応答して、前記クライアントに関連付けられた前記サブスクリプションがアクティブであるかどうかを決定するステップと、
前記クライアントに関連付けられた前記サブスクリプションがアクティブであると決定することに応答して、前記第２のクライアントと前記サブスクリプションを関連付けるステップと、
前記サブスクリプションを取り消す前記クライアントから第３のリクエストを受信するステップと、
前記第３のリクエストに応答して、
前記クライアントから前記サブスクリプションを取り消すステップと、
前記サブスクリプションを維持して、前記サブスクライブされた状態情報を前記第２のクライアントに提供するステップと
をさらに備えることを特徴とする請求項１０に記載の方法。
【請求項１９】
プロセッサーによって実行されると、前記プロセッサーを
監視システムによって、コンピューティングシステム上で実行しているエージェントから状態情報を受信し、第１の時間周期に対する前記状態情報は、前記コンピューティングシステムのコンポーネントに関し、
前記状態情報を受信することに応答して、
前記監視システムによって、前記状態情報と、前記エージェントから以前に受信した前の状態情報とに基づいて、集約状態情報を生成し、前記第１の時間周期に対する前記前の状態情報は、前記コンポーネントに関し、
サブスクライブされた状態情報を前記集約状態情報から生成し、前記サブスクライブされた状態情報は、クライアントの命令を使用して選択された前記集約状態情報のサブセットであり、
前記クライアントよって表されるユーザーインターフェイスにおいて更新をさせるために、前記クライアントに前記サブスクライブされた状態情報を送信する
ように構成する命令を格納することを特徴とする非一時的なコンピューター読み取り可能な媒体。
【請求項２０】
前記プロセッサーによって実行されると、前記プロセッサーを
前記サブスクライブされた状態情報を受信する前記クライアントから第１のリクエストを受信し、
前記第１のリクエストに応答して、前記サブスクライブされた状態情報を前記クライアントに提供するために、前記クライアントに関連付けられたサブスクリプションを生成し、
前記サブスクライブされた状態情報を受信する第２のクライアントから第２のリクエストを受信し、
前記第２のリクエストに応答して、前記クライアントに関連付けられた前記サブスクリプションがアクティブであるかどうかを決定し、
前記クライアントに関連付けられた前記サブスクリプションがアクティブであると決定することに応答して、前記第２のクライアントと前記サブスクリプションを関連付け、
前記サブスクリプションを取り消す前記クライアントから第３のリクエストを受信し、
前記第３のリクエストに応答して、
前記クライアントから前記サブスクリプションを取り消し、
前記サブスクライブされた状態情報を前記第２のクライアントに提供するために、前記サブスクリプションを維持する
ように構成する命令をさらに格納することを特徴とする請求項１９に記載の非一時的なコンピューター読み取り可能な媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、一般に、コンピューティングシステム上で実行しているアプリケーションからのデータを処理し、ユーザーインターフェイスを生成することに関する。
【背景技術】
【０００２】
ウェブベースおよびモバイルのアプリケーションは、コンテンツおよびサービスをユーザーコンピューティングデバイスに配信するための一般的なツールである。今述べたアプリケーションは、アプリケーションシステムによって実行され、コンテンツをコンピューティングデバイスに提供し、コンピューティングデバイスからのリクエストに応答する。アプリケーションシステムの機能を説明する情報を提供するために、アプリケーションシステムは、例えば、アプリケーションまたはアプリケーションサーバーを監視するエージェントなどのプログラムを実行することがあり得る。大量な情報の作成に帰着するアプリケーションシステムは、多くのユーザーコンピューティングデバイスに役立つことがあり得る。
【発明の概要】
【０００３】
監視システムは、コンピューティングシステムの状態情報を監視することによって、ユーザーインターフェイスを更新する。いくつかの実施形態において、監視システムは、コンピューティングシステム上で実行しているエージェントから状態情報を受信する（たとえば、サーバーの）１つまたは複数のプロセッサーを含む。状態情報は、コンピューティングシステムのコンポーネントに関する第１の時間周期に対応する。状態情報を受信することに応答して、監視システムは、状態情報と、エージェントから以前に受信された前の状態情報に基づいて、集約状態情報（aggregate state information）を生成する。監視システムは、さらに前の状態情報がコンポーネントに関する第１の時間周期にも対応するという決定を行い、同じ時間周期に関連付けられた状態情報に対して集約を行うことがあり得る。例えば、状態情報と前の状態情報とは、第１の時間周期内に生成されることがあり得り、第１の時間周期内にコンピューティングシステムに関連することがあり得り、またはそうでなければ第１の時間周期に関連付けられることがあり得る。監視システムは、集約状態情報からサブスクライブされた状態情報（subscribed state information）を生成する。サブスクライブされた状態情報は、クライアントの命令を使用して選択された集約状態情報のサブセットである。命令は、コンピューティングシステムの特定のメトリックまたはイベントデータについて報告することをサブスクライブする（subscribe）ためのクライアントによるリクエストを含むことがあり得る。監視システムは、サブスクライブされた状態情報をクライアントに送って、クライアントよって表されるユーザーインターフェイスにおいて更新をさせる。サブスクライブされた状態情報は、監視システムが状態情報の（たとえば、最新の）インスタンスを受信することに基づいて送られることがあり得る。ここで、サブスクライブされた状態情報は、時間周期に対する状態情報の部分的な集約であり、時間周期に対する追加の状態情報は、時間周期に対するサブスクライブされた状態情報の別の集約および送信に帰着することがあり得る。さらに、監視システムは、時間周期が経過したときに、時間周期に対する完全に集約された状態情報（fully aggregated state information）を送信してもよい。状態情報の後続のインスタンスは、後続の時間周期に関連付けられることがあり得り、同様の集約および送信は、複数の時間周期に対して行われることがあり得る。
【０００４】
様々な実施形態において、監視システムは、たとえば、論理的または審美的に順序付けられたデータを表示するユーザーインターフェイスにおいて、集約データを、クライアント上の提出に供給することが可能である。さらに、監視システムは、追加の状態情報が受信される後のときに、メトリックまたはイベントデータを更新することも可能である。加えて、監視システムは、状態情報からステートデータポイント（state data point）を検出し、無視してもよい。
【０００５】
いくつかの実施形態において、監視システムの１つまたは複数のプロセッサーは、状態情報の開始時間および終了時間を使用して、状態情報を第１の時間周期に関連付ける。監視システムは、前の状態情報が、第１の時間周期に対して、以前に受信されたと決定することに応答する、前の状態情報を検索する。さらに、監視システムは、状態情報に対する第１の時間周期に基づいて、集約状態情報に関連付けられたディスプレイタイム（display time）を決定することがあり得る。監視システムは、ディスプレイタイムをクライアントに送って、ユーザーインターフェイスにおける更新に、関連したディスプレイタイムに関してサブスクライブされた状態情報の表示を含ませる。いくつかの実施形態において、ユーザーインターフェイスにおける更新は、関連したディスプレイタイムに関してコンピューティングシステムに関連付けられた集約するメトリックまたは集約するイベントデータの表示を含む。
【０００６】
いくつかの実施形態において、監視システムの１つまたは複数のプロセッサーは、サブスクライブされた状態情報を受信するクライアントから第１のリクエストを受信する。第１のリクエストに応答して、監視システムは、サブスクライブされた状態情報をクライアントに供給するために、クライアントに関連付けられたサブスクリプションを生成する。さらに、監視システムは、サブスクライブされた状態情報を受信する第２のクライアントから第２のリクエストを受信する。第２のリクエストに応答して、監視システムは、クライアントに関連付けられたサブスクリプションがアクティブであるかどうかを決定する。クライアントに関連付けられたサブスクリプションがアクティブであると決定することに応答して、監視システムは、サブスクリプションを第２のクライアントに関連付ける。監視システムは、サブスクリプションを取り消すクライアントから第３のリクエストを受信する。第３のリクエストに応答して、監視システムは、クライアントからサブスクリプションを取り消し、監視システムは、サブスクライブされた状態情報を第２のクライアントに提供するために、サブスクリプションを維持する。
【０００７】
いくつかの実施形態は、コンピューティングシステムの状態情報を監視するための方法を含むことがあり得る。方法は、コンピューティングシステム上で実行しているエージェントから状態情報を受信することを含む。状態情報は、コンピューティングシステムのコンポーネントに関する第１の時間周期に対応する。状態情報を受信することに応答して、方法は、状態情報と、エージェントから以前に受信された前の状態情報とに基づいて、集約状態情報（aggregate state information）を生成することを含む。前の状態情報は、コンポーネントに関する第１の時間周期に対応する。さらに、方法は、集約状態情報から、サブスクライブされた状態情報（subscribed state information）を生成することを含む。サブスクライブされた状態情報は、クライアントの命令を使用して選択された集約状態情報のサブセットである。さらに、方法は、サブスクライブされた状態情報をクライアントに送って、クライアントによって表されるユーザーインターフェイスにおいて更新をさせる。
【０００８】
いくつかの実施形態は、プロセッサーによって実行されると、本明細書において説明されるようなコンピューティングシステムの状態情報を監視するための方法を実行するプロセッサーを構成する命令を格納している非一時的なコンピューター読み取り可能な媒体を含む。
【図面の簡単な説明】
【０００９】
【図１】いくつかの実施形態に係る監視システムを含むシステム環境のブロック図である。
【図２】いくつかの実施形態に係る監視システムのブロック図である。
【図３】いくつかの実施形態に係る図２に示される監視システムのデータフロー図である。
【図４】いくつかの実施形態に係る状態情報を含むユーザーインターフェイスの例を例示する。
【図５】いくつかの実施形態に係る状態情報を使用してユーザーインターフェイスを更新するための方法のフローチャートである。
【図６】いくつかの実施形態に係る監視システムによってサブスクリプションを維持するための方法のフローチャートである。
【発明を実施するための形態】
【００１０】
図面は、例示の目的だけで本開示の実施形態を描いている。当業者は、次に述べる説明から、本明細書において例示される構造および方法の代替の実施形態が、本明細書において説明される開示の原理または勧められる利益から逸脱することなく、採用されることがあり得ることを快く認めるであろう。
【００１１】
システム概要
図１は、いくつかの実施形態に係る監視システムのブロック図である。システム環境は、インターネットを含むことがあり得るネットワーク１２４を通じて通信する監視システム１０２、アプリケーションシステム１０６、およびクライアント１０４（たとえば、クライアントデバイス）を含む。監視システム１０２は、アプリケーションシステム１０６の１つまたは複数のアプリケーションサーバー１１０によって実行されるアプリケーション１０８のパフォーマンスを監視する。さらに、監視システム１０２は、クライアント１０４上の提出のための、アプリケーションシステム１０６からの状態情報を使用して、ユーザーインターフェイスを、例えば、グラフィカルユーザーインターフェイスなどを生成する。
【００１２】
アプリケーションシステム１０６は、１つまたは複数のアプリケーションサーバー１１０と、１つまたは複数のデータストア１１２とを含む。データストア１１２は、１つまたは複数のアプリケーションサーバー１１０によって実行されるアプリケーション１０８に対して、アプリケーションデータを格納する。さらに、アプリケーションサーバー１１０は、例えば、アプリケーションサーバー１１０上で実行しているプロセス、アプリケーション１０８のレスポンスタイム、アプリケーション１０８のトランザクション、アプリケーション１０８のトランザクションのプロセス、クライアント１０４におけるアプリケーション１０８のパフォーマンスに対するバックエンドプロセスの効果、アプリケーション１０８を実行している仮想マシンの統計、他の情報、またはこれらの組み合わせなど、アプリケーションシステム１０６のパフォーマンスを監視する１つまたは複数のエージェント１１４を実行する。エージェント１１４は、アプリケーション１０８、またはアプリケーションシステム１０６の他のコンポーネントについてのパフォーマンスに関連がある状態情報を収集し格納する。その上、エージェント１１４は、状態情報、または他の種類の情報を、監視システム１０２に周期的に送ることがあり得る。
【００１３】
アプリケーション１０８は、様々な種類のモバイルアプリケーションまたはｗｅｂアプリケーションのいずれかであり得て、クライアントサーバーアプリケーションの動作のサブセットを表現することがあり得る。例えば、アプリケーションサーバー１１０によって動かされるアプリケーション１０８は、例えば、データベースのコンテンツを検索し格納する、クライアント１０４におけるレンダリングのためのユーザーインターフェイスを生成する、クライアント１０４においてリクエストされる機能を行う、コンテンツをクライアント１０４に（たとえば、ネットワーク１２４を通じて）伝達するなど、クライアントサーバーアプリケーションのどんなサーバー側プロセスでも含むことがあり得る。アプリケーションサーバー１１０は、アプリケーション１０８の機能を実行している１つまたは複数のコンピューティングデバイスを含むことがあり得る。
【００１４】
いくつかの実施形態において、アプリケーションサーバー１１０は、アプリケーション１０８のプロセスを実行するＪａｖａ仮想マシンを実行しているコンピューティングデバイスを含む。仮想マシンは、アプリケーション１０８を実行するための環境を提供し、アプリケーション１０８によって作成されるオブジェクトと、アプリケーション１０８によって使用されるデータストア１１２（たとえば、メモリー）の一部とを管理する。特に、仮想マシンは、アプリケーションシステム１０６の利用可能なメモリーを効率的に管理するために、アプリケーション１０８およびエージェント１１４の実行中に作成された変数またはデータ構造を含むオブジェクトを移動させることによって、メモリープールのいずれかにメモリーを割り当てる。さらに、仮想マシンは、ガベージコレクションプロセスを実行して、アプリケーション１０８において、もはや使用されも参照されもしないオブジェクトを識別し取り除いて、他のオブジェクトを格納するために、使用されないオブジェクトによって占有されたメモリーも解放する。
【００１５】
アプリケーションサーバー１１０を監視するために、監視システム１０２は、（たとえば、ソフトウェア開発キットとして、またはアプリケーション１０８のソフトウェアに統合されるモジュールとして）エージェント１１４をアプリケーションサーバー１１０に提供することが可能である。アプリケーションサーバー１１０がエージェント１１４を実行している間、監視システム１０２は、エージェント１１４と通信して、アプリケーションサーバー１１０のパフォーマンスを監視する。監視システム１０２は、エージェント１１４からアプリケーション１０８の状態情報を受信する。加えて、例えば、監視システム１０２は、アドミニストレーターに、アプリケーション１０８のどんなパフォーマンスの問題にでも対処できるようにする、アプリケーションサーバー１１０のアドミニストレーターによる分析のための情報の表示（たとえば、ユーザーインターフェイス）を生成する。例えば、監視システム１０２は、アプリケーション１０８のプロセスに対して、メトリックまたはイベントデータを示すテーブル、チャート、またはプロットを生成する。情報の表示は、監視システム１０２、および／またはアプリケーション１０８を実行している仮想マシンからの統計を含むことがあり得る。
【００１６】
図２は、いくつかの実施形態に係る監視システム１０２のブロック図である。監視システム１０２は、１つまたは複数の監視サーバー２００、データストア２１０、データアグリゲーター２２０、サブスクリプションエンジン２３０、およびユーザーインターフェイスエンジン２４０を含む。他の実施形態において、監視システム１０２は、異なるまたは追加のコンポーネントを含むことがあり得る。監視サーバー２００は、図１に示すように、対応するエージェント１１４との通信を介してアプリケーションシステム１０６のパフォーマンスを監視する１つまたは複数のプロセッサーを含むコンピューティングデバイスである。監視サーバー２００は、アプリケーション監視サービスプロバイダーによって供給されることがあり得り、異なるアプリケーションシステム１０６に渡るアプリケーション１０８およびアプリケーションサーバー１１０を含む、いくつものアプリケーションシステム１０６のパフォーマンスを監視することがあり得る。データストア２１０、データアグリゲーター２２０、サブスクリプションエンジン２３０、およびユーザーインターフェイスエンジン２４０を、次の図面を参照して以下にさらに説明する。
【００１７】
図３は、いくつかの実施形態に係る図２に示される監視システム１０２のデータフロー図である。監視サーバー２００は、アプリケーションシステム１０６のエージェント１１４から状態情報を受信する。状態情報は、アプリケーションシステム１０６のコンポーネントを説明するメトリックまたはイベントデータを含むことがあり得る。例えば、メトリックは、コンポーネントのパフォーマンス（たとえば、ネットワーク遅延、帯域幅、スループットなど）、コンピューティングリソース（たとえば、ＣＰＵ、メモリー、キャッシュなど）の使用量、またはハードウェアの状態を示すことがあり得る。例えば、イベントデータは、ｗｅｂトランザクション、ｗｅｂページのインタラクション（たとえば、ビュー、クリック、データの入力、データのリクエストなど）、ＡＰＩ（アプリケーションプログラミングインターフェイス）のコール、ファイルのダウンロードもしくはアップロード、またはアプリケーションの状態に関連付けられた他のデータなどを示すことがあり得る。
【００１８】
メトリックまたはイベントデータの各インスタンスは、時間周期に関連付けられることがあり得る。いくつかの実施形態において、状態情報は、開始時間および終了時間に関連付けられる。開始時間および終了時間は、メトリックまたはイベントデータの測定またはキャプチャーが、アプリケーションシステム１０６の一定のコンポーネントに対して、それぞれ、開始したおよび終了したときのタイムスタンプを示す。例えば、プロセッサーのＣＰＵの使用量（たとえば、メトリック）、または数分間もしくは数時間に渡るウェブサイトのページビュー数（たとえば、イベントデータ）の測定。加えて、状態情報は、監視サーバー２００がエージェント１１４から状態情報を受信したときを示すタイムスタンプ（たとえば、受信時間）に関連付けられることがあり得る。いくつかの実施形態において、イベントデータ（またはメトリック）は、１つのタイムスタンプを有し、関連したイベント時間を示す。イベント時間は、開始時間、終了時間、または開始時間と終了時間との間における他の何かの時間をいうことがあり得る。加えて、１つのタイムスタンプ（たとえば、イベント時間）は、開始時刻と終了時刻との両方として使用されることがあり得る。
【００１９】
データアグリゲーター２２０は、監視サーバー２００によって受信された状態情報を処理する。図３に示す実施形態において、データアグリゲーター２２０は、ミニットアグリゲーター（minute aggregator）３１０、アワーアグリゲーター（hour aggregator）３２０、アワーライター（hour writer）３２５、およびミニットライター（minute writer）３３０を含み、とはいえ他の実施形態において、データアグリゲーター２２０は、例えば、一定数の秒、日、週、月、またはそれらのどんな組み合わせでもなど、他の時間間隔に対するアグリゲーターおよびライターを含むことがあり得る。データアグリゲーター２２０は、メトリックまたはイベントデータを処理することがあり得る。いくつかの実施形態において、データアグリゲーター２２０は、メトリックデータアグリゲーター（metric data aggregator）およびイベントデータアグリゲーター（event data aggregator）を含む。監視サーバー２００は、メトリックをメトリックデータアグリゲーターに送り、イベントデータをイベントデータアグリゲーターに送ることがあり得る。
【００２０】
ミニットアグリゲーター３１０は、分毎にキャプチャーされる状態情報を集約し、集約するミニットタイムスライス（minute timeslice）３１５を生成する。各集約するミニットタイムスライス３１５は、時間周期に関連付けられた状態情報の１つまたは複数の異なるインスタンスを含むことがあり得る。今述べた例において、時間周期は、１分であるが、他の時間周期が使用されてもよい。集約するミニットタイムスライス３１５は、１つまたは複数の種類の集約されたメトリック、または１つまたは複数の種類の集約されたイベントデータを含むことがあり得る。
【００２１】
さらに、ミニットアグリゲーター３１０は、部分的に集約されたタイムスライス３４０を生成する。部分的に集約されたタイムスライス３４０は、現在の時刻が時間周期の経過の前であれば、ミニットアグリゲーター３１０が時間周期の開始時間から現在の時刻までに受信した状態情報を含む。例えば、エージェント１１４は、状態情報が収集されるときに、状態情報を監視サーバー２００に送ることがあり得る。状態情報の各インスタンスは、時間周期に対するメトリックまたはイベントデータの値の一部のみを表現することがあり得る。しかしながら、依然として、部分的に集約されたタイムスライス３４０は、リアルタイムの更新を供給するために生成され使用されて、更新された（たとえば、最終の）状態情報が時間周期全体にわたって受信されるまで、ユーザーインターフェイスを更新することがあり得る。
【００２２】
アワーアグリゲーター３２０およびミニットライター３３０は、ミニットアグリゲーター３１０から、集約するミニットタイムスライス３１５を受信する。さらにその上、アワーアグリゲーター３２０は、集約するミニットタイムスライス３１５を時間毎に収集して、アワーライター３２５に提供される、集約する時間単位のタイムスライス（図３に示さず）を生成する。本明細書において使用される「タイムスライス」は、状態情報が集約されることが可能である時間周期をいう。アワーライター３２５およびミニットライター３３０は、集約する時間単位のタイムスライスおよび集約するミニットタイムスライス３１５を、それぞれ、ユーザーインターフェイスエンジン２４０のチャートデータサービス３３５(またはＣＤＳ３３５)に提供する。集約された状態情報（aggregated state information）についての受信されたタイムスライスを使用して、ユーザーインターフェイスエンジン２４０は、集約された状態情報をユーザーに提供するために、ユーザーインターフェイスを生成するまたは更新する。イベントデータを表示する例示的なユーザーインターフェイスを、図４を参照して説明する。ユーザーインターフェイスは、集約するミニットタイムスライス３１５または集約する時間単位のタイムスライスがデータアグリゲーター２２０によって処理される時間にわたって周期的に更新されることがあり得る。さらに、データアグリゲーター２２０のコンポーネントは、（たとえば、部分的に集約されたデータを含む）タイムスライスおよび状態情報を、データストア２１０に格納することがあり得る。
【００２３】
さらに、ミニットアグリゲーター３１０は、部分的に集約されたタイムスライス３４０を、サブスクリプションエンジン２３０のタイムスライスフィルター３４５に提供する。タイムスライスフィルター３４５は、サブスクリプションエンジン２３０によって受信される命令に、またはサブスクリプションストア３５５から検索されるサブスクリプションに従って、タイムスライスからデータをフィルタリングすることがあり得る。命令は、ユーザーインターフェイスにおける提出に対して含むまたは除外する、一定の種類のメトリックまたはイベントデータを示すことがあり得る。加えて、命令は、ユーザーインターフェイスが、特定のタイプのアプリケーションシステム１０６から生じる、または特定の時間周期の間に測定された（もしくは受信された）状態情報を含むべきであることを示すことがあり得る。いくつかの実施形態において、さらに、命令は、集約に対する時間周期（複数可）を定義することがあり得る。例えば、分および時間の集約よりも、他のより長い時間周期と、より短い時間周期とが使用されることがあり得る。サブスクリプションエンジン２３０は、クライアント１０４から受信されるサブスクライブされた状態情報に対する（たとえば、命令を含む）リクエストに応えて、サブスクリプションを生成し、サブスクリプションをサブスクリプションストア３５５に格納することがあり得る。いくつかの実施形態において、さらに、サブスクリプションエンジン２３０は、集約されたミニットタイムスライス３１５からデータをフィルタリングして、サブスクライブされた状態情報を生成することも可能である。サブスクライブされた状態情報は、選択されたメトリックまたはイベントデータに属する、部分的に集約されたタイムスライス３４０のサブセットを参照する。
【００２４】
タイムスライスフィルター３４５は、リアルタイムにストリームされるユーザーインターフェイスを更新するために、フィルタリングされたタイムスライスをストリーミングＣＤＳ３５０に提供する。特に、ストリーミングＣＤＳ３５０は、時間周期全体にわたる状態情報が監視システム１０２に対して利用可能でない場合でさえ、部分的に集約されたタイムスライス３４０を使用して、状態情報を、ストリームされるユーザーインターフェイスにプッシュすることがあり得る。したがって、ストリームされるユーザーインターフェイスは、監視されているアプリケーションシステム１０６のエージェント１１４から追加の状態情報が受信されるときに更新される状態情報を含むことがあり得る。さらに、サブスクリプションエンジン２３０は、状態情報をＣＤＳ３３５に提供してもよい。時間周期内の更新を提供するストリーミングＣＤＳ３５０とは対照的に、ＣＤＳ３３５は、複数の時間周期の集約に基づいて更新を提供する。いくつかの実施形態において、データアグリゲーター２２０は、予め定義されたまたは予定された時間における集約状態情報をＣＤＳ３３５に提供し、エージェント１１４からサブスクリプションに属する状態情報を受信することに応答して、サブスクライブされた状態情報をストリーミングＣＤＳ３５０に提供する。
【００２５】
図４は、いくつかの実施形態に係る状態情報を含むユーザーインターフェイスの例を例示する。ユーザーインターフェイスエンジン２４０は、アプリケーションシステム１０６のメトリックまたはイベントデータを表示するために、ユーザーインターフェイス４００、４１０、４２０、および４３０を生成する、または更新する。図４の例において、状態情報は、時間に渡るｗｅｂページビュー数を定義するメトリックである。さらに、他の種類のメトリックまたはイベントデータが、ユーザーインターフェイスに提供されてもよい。ユーザーインターフェイスを、図５、６に示す方法とともに以下に説明する。
【００２６】
図５は、いくつかの実施形態に係る状態情報を使用してユーザーインターフェイスを更新するための方法５００のフローチャートである。方法５００は、アプリケーションシステム１０６からの状態情報を使用して生成されるメトリックまたはイベントデータの表示を提供する。一実施形態において、方法５００は、図１のシステムによって行われる。他のエンティティは、他の実施形態において方法５００のステップのいくつかまたは全部を行うことがあり得る。同じように、実施形態は、異なるおよび/または追加されるステップを含むことか、異なる順においてステップを行うことかがあり得る。
【００２７】
監視システム１０２は、（たとえば、コンピューティングシステムともいわれる）アプリケーションシステム１０６上で実行しているエージェント１１４から状態情報を受信する５１０。状態情報は、アプリケーションシステム１０６のコンポーネントに関する時間周期に対してである。いくつかの実施形態において、状態情報は、時間周期に関連付けられたメトリックまたはイベントデータを含む。いくつかの実施形態において、状態情報は、時間周期、および時間周期と対応するメトリックまたはイベントデータの値を定義するデータ構造によって表現されることがあり得る。いくつかの実施形態において、さらに、データ構造は、監視システム１０２による状態情報の受信時間を含むことがあり得る。いくつかの実施形態において、状態情報は、ＪＳＯＮ（JavaScript Object Notation）におけるデータ構造｛開始時間，終了時間，データ，受信時間｝によって表現されることがあり得る。
【００２８】
監視システム１０２（たとえば、データアグリゲーター２２０）は、前の状態情報が、時間周期に対して受信されているかどうかを決定する５２０。さらに、前の状態情報は、関連した時間周期を有してもよい。受信された状態情報と前の状態情報とが同じ時間周期に対してであると決定することに応答して、監視システム１０２は、状態情報と前の状態情報とを、集約状態情報に組み合わせることがあり得る。対照的に、状態情報と前の状態情報とが（たとえば、前の時間周期が経過したことを意味する）異なる時間周期に対してであると決定することに応答して、監視システム１０２は、状態情報と前の状態情報とを、集約状態情報に組み合わせないと決定することがあり得る。前の状態情報は、前の状態情報の時間周期に対して、以前に集約されている、受信された状態情報の１つまたは複数のインスタンスを含むことがあり得る。
【００２９】
状態情報が前の状態情報と同じ時間周期に対して受信されたと決定することに応答して、監視システム１０２（たとえば、データアグリゲーター２２０）は、状態情報と前の状態情報とに基づいて、集約状態情報を生成する５３０。
【００３０】
監視システム１０２（たとえば、サブスクリプションエンジン２３０）は、集約状態情報から、サブスクライブされた状態情報を生成する５４０。サブスクライブされた状態情報は、クライアント１０４からの命令を使用して、サブスクリプションエンジン２３０により選択された集約状態情報のサブセットであることがあり得る。例えば、サブスクリプションエンジン２３０は、命令に基づいて、集約状態情報をフィルタリングする。監視システム１０２からの一定のデータをリクエストしたいユーザーは、クライアント１０４を使用して、サブスクライブされた状態情報を受信するリクエストを入力することがあり得る。クライアント１０４は、ユーザーのリクエストに対応する命令を監視システム１０２に提供する。例えば、命令は、ユーザーが、ユーザーインターフェイス上の提出のためのメトリックもしくはイベントデータまたはデータを説明する他の基準についての１つまたは複数の種類に関する特定のサブセットに対する集約状態情報に関心があることを示す。別の例において、命令は、状態情報の集約および報告のための時間周期を指定することがあり得る。いくつかの実施形態において、サブスクリプションエンジン２３０は、たとえば、リクエストされたサブスクリプションまたはアクティブのサブスクリプションに対して、ユーザーの命令に従って状態情報をフィルタリングする。
【００３１】
監視システム１０２（たとえば、サブスクリプションエンジン２３０）は、サブスクライブされた状態情報をクライアント１０４に送って、クライアント１０４よって表されるユーザーインターフェイスにおいて更新をさせる５５０。サブスクライブされた状態情報の作成および送ることは、監視システム１０２が状態情報（たとえば、時間周期に対する部分的な集約）を受信するときに、または経過した時間周期に対して集約されたサブスクライブされた状態情報を報告するための監視システム１０２をトリガーすることがあり得る時間周期が経過したときに、トリガーされることがあり得る。サブスクライブされた状態情報は、ユーザーインターフェイス内の提示に対して、コヒーレントなやり方において、クライアント１０４に提供される。監視システム１０２からのサブスクライブされた状態情報の各インスタンスは、クライアント１０４が、時間周期に対するどんな前の状態情報にもアクセスする必要がなく、表されることが可能であるデータポイントと対応して、ポイントに対して更新されたデータ値を生成することがあり得る。さらにその上、時間周期が経過する前に、サブスクライブされた状態情報は、部分的に集約されたデータを含むことがあり得る。ここで、サブスクライブされた状態情報は、上に述べたように、時間周期に対して完全な「今のところまでの（so-far）」値を表現する。部分的に集約されたデータは、システムが（たとえば、信頼できる完全な集約が生成されることが可能である時間周期が経過する前に）時間周期に対してこれまでに受信した状態情報のみを含むので、時間周期に対して最終の値を表現しない。それにもかかわらず、部分的に集約されたデータを含むサブスクライブされた状態情報は、有用な情報としてユーザーインターフェイスに表されることが可能であり、時間周期が経過する前に、時間周期に対してさらに部分的な集約によって更新されることがあり得る。
【００３２】
いくつかの実施形態において、サブスクライブされた状態情報は、ディスプレイタイム、および時間値と対応するメトリックまたはイベントデータの値を含む。サブスクライブされた状態情報は、データ構造｛ディスプレイタイム，データ｝により表現されることがあり得り、ただし、ディスプレイタイムが、ユーザーインターフェイスのグラフ（またはチャート）内のｘ軸の値として使用されることが可能であり、データが、グラフの対応するｙ軸の値として使用されることが可能である。したがって、サブスクライブされた状態情報の各インスタンスは、ユーザーインターフェイスのグラフにおける点を定義することがあり得る。いくつかの実施形態において、ユーザーインターフェイスエンジン２４０は、状態情報の最新のインスタンスに関する開始時間または終了時間に基づいて、ディスプレイタイムを決定する。例えば、各時間周期は、ディスプレイタイムに関連付けられることがあり得る。ユーザーインターフェイスエンジン２４０は、状態情報の開始時間および終了時間を使用して、時間周期を決定して、次に、時間周期に対して、関連したディスプレイタイム決定することがあり得る。いくつかの実施形態において、ユーザーインターフェイスエンジン２４０は、時間周期内にすべて集約された、または部分的に集約された状態情報を、ユーザーインターフェイスにおけるディスプレイタイムに関連付ける。
【００３３】
図４のユーザーインターフェイス４００に示すように、ユーザーインターフェイスエンジン２４０は、１０：２０ＡＭから１０：３０ＡＭまでと定義された時間周期に対して（ディスプレイタイムｘ＝１０：３０ＡＭにおいて）点４０２としてグラフに、サブスクライブされた状態情報をプロットする。ここで、ディスプレイタイムは、時間周期の終了時間から決定されるが、さらに、時間周期内の他の時間が、例えば、開始時間、または開始時間と終了時間との間の平均時間など、ディスプレイタイムとして使用されることもあり得る。さらにその上、集約に使用される時間周期は、１０分であるが、他の時間周期を使用することもあり得る。ユーザーインターフェイスエンジン２４０は、１０：２０ＡＭと１０：３０ＡＭとの間の時間周期に関連付けられた状態情報の１つまたは複数のインスタンスに基づいて、点４０２を生成する。時間周期に対する状態情報の複数のインスタンスが集約されていると、点４０２のデータ値８０ｋは、集約されたインスタンスの状態情報を表現する。別の例において、点４０２のデータ値８０ｋは、状態情報の単一のインスタンスを表現する。ここで、ユーザーインターフェイス４００における点４０２によって示される状態情報は、データ構造｛１０：２１ＡＭ，１０：２３ＡＭ，８０ｋ，１０：２３ＡＭ｝によって定義されることがあり得る。データ構造は、開始時間１０：２１ＡＭから終了時間１０：２３ＡＭまでに、または部分的に集約された状態情報の場合、開始時間１０：２１から時間周期内の現在もしくは最新の時間までに、キャプチャーされたページビュー数を示すイベントデータ８０ｋを含む。点４０２に加えて、ユーザーインターフェイス４００は、前の時間周期に関連付けられた状態情報を表現する点４０４を含む。
【００３４】
いくつかの実施形態において、ディスプレイタイムは、時間周期において受信される状態情報の最新のインスタンスに関する受信時間、開始時間、または終了時間に基づいて、選択される。例えば、図４に示すような時間周期の終了と対応するディスプレイタイムを有するよりも、ディスプレイタイムは、周期内の他の何かの時間であることがあり得る。
【００３５】
図４のユーザーインターフェイス４１０に示すように、１０：２０ＡＭと１０：３０ＡＭとの間の時間周期に対する状態情報の後続のインスタンスは、点４０２がグラフにおいて点４０６に更新されることに帰着する。例えば、時間周期に関連付けられた状態情報の追加インスタンスが、監視システム１０２によって受信されると、点４０２は、時間周期に関連付けられた前の状態情報であり得る。追加の状態情報は、データ構造｛１０：２２ＡＭ，１０：２４ＡＭ，４０ｋ，１０：２４ＡＭ｝によって定義されることがあり得る。データアグリゲーター２２０は、４０ｋのデータ値により点４０２の８０ｋのデータ値を集約して、１０：２０ＡＭから１０：３０ＡＭまでの時間周期に対する１２０ｋのデータ値に帰着する。監視システム１０２は、データ構造｛ディスプレイタイム，データ｝を使用して、点４０６に対してサブスクライブされた状態情報を送ることがあり得り、ただし、ディスプレイタイムが時間周期対して１０：３０ＡＭであり、データ値が１２０ｋに集約される。ユーザーインターフェイスエンジン２４０は、１０：２０ＡＭから１０：３０ＡＭまでと定義された時間周期に対して（ディスプレイタイムｘ＝１０：３０ＡＭにおいて）、サブスクライブされた状態情報を、点４０６としてプロットし、点４０２と取り替える。
【００３６】
図５のステップ５２０に戻ると、状態情報が前の状態情報と異なる時間周期に対して受信されたと決定することに応答して、監視システム１０２（たとえば、サブスクリプションエンジン２３０）は、状態情報に基づいて、時間周期に対してサブスクライブされた状態情報を生成する５６０。前の状態情報が時間周期に対して存在しないので、５１０において受信された状態情報は、新しい時間周期と対応する。前の状態情報により集約するよりも、監視システム１０２は、状態情報を使用して、別の（たとえば、後続の）時間周期に対してサブスクライブされた状態情報を作成する。さらにその上、状態情報は、時間周期に対して受信される後続の状態情報に対する前の状態情報として使用されてもよいし、後続の状態情報により集約されてもよい。
【００３７】
監視システム１０２（たとえば、サブスクリプションエンジン２３０）は、サブスクライブされた状態情報をクライアント１０４に送って、クライアント１０４よって表されるユーザーインターフェイスにおいて更新をさせる５７０。図４のユーザーインターフェイス４２０に示すように、１０：３０ＡＭと１０：４０ＰＭとの間の時間周期に対する状態情報の後続のインスタンスは、新しい点４１２がグラフに追加されることに帰着する。監視システム１０２は、データ構造｛ディスプレイタイム，データ｝を使用して、点４１２に対してサブスクライブされた状態情報を送ることがあり得り、ただし、ディスプレイタイムが時間周期に対して１０：４０ＡＭであり、データ値が９０ｋである。ここで、５１０において受信される状態情報は、データ構造｛１０：３３ＡＭ，１０：３４ＡＭ，９０ｋ，１０：３４ＡＭ｝によって定義されることがあり得る。
【００３８】
いくつかの実施形態において、クライアント１０４によって表されるユーザーインターフェイスは、新しい時間周期に対する状態情報がクライアント１０４によって受信されると、時間値用のｘ軸をずらす。図４のユーザーインターフェイス４３０に示すように、チャートは、１０：１０ＡＭから１０：２０ＡＭまでの時間周期に対する点４０４がグラフから取り除かれる（または隠される）ように左方向にずらされる。例えば、ｘ軸は、クライアント１０４がチャート上にない時間値を有するポイントに対してサブスクライブされた状態情報を受信すると、ずらされることがあり得る。いくつかの実施形態において、受信した状態情報が経過した時間周期に対してであるならば、クライアント１０４は、無効であるまたは期限切れであるとしてポイントを無視することがあり得る。他の実施形態において、クライアント１０４は、後続の時間周期に対するサブスクライブされた状態情報が、クライアント１０４によって受信されてプロットされた後でさえ、経過した時間周期に対してデータ値を更新することがあり得る。
【００３９】
方法５００は、状態情報の追加のインスタンスに対して、監視システム１０２によって繰り返されることがあり得る。各新しいインスタンスは、方法５００において論じられたように扱われることがあり得る。例えば、前の状態情報を有する時間周期に対する新しい状態情報は、前の状態情報により集約されることがあり得る。前の状態情報を有しない時間周期に対する新しい状態情報は、少なくとも、時間周期に対する後続の状態情報が、監視システム１０２によって受信されるまで、集約されない。監視システム１０２は、サブスクライブされた状態情報を生成して送り、クライアント１０４は、サブスクライブされた状態情報を使用して、ユーザーインターフェイスを適宜に更新する。
【００４０】
図６は、いくつかの実施形態に係る監視システム１０２によるサブスクリプションを維持する方法６００のフローチャートである。一実施形態において、方法６００は、図１のシステムによって行われる。他のエンティティは、他の実施形態において、方法６００のステップのいくつかまたは全部を行うことがあり得る。同じように、実施形態は、異なるおよび/または追加されるステップを含むことか、異なる順においてステップを行うことかがあり得る。
【００４１】
監視システム１０２（たとえば、サブスクリプションエンジン２３０）は、サブスクライブされた状態情報を受信するクライアント１０４から、第１のリクエストを受信する６１０。監視システム１０２（たとえば、サブスクリプションエンジン２３０）は、第１のリクエストに応答して、クライアント１０４に関連付けられたサブスクリプションを生成する６２０。本明細書において使用されるサブスクリプションは、サブスクライブされた状態情報とクライアント１０４との間の関連をいい、サブスクライブされた状態情報をクライアント１０４に送るために、サブスクリプションエンジン２３０によって使用される。例えば、サブスクリプションは、関心のあるメトリックまたはイベントデータを指定することがあり得る。さらに、サブスクリプションは、報告のための時間周期を指定してもよい。
【００４２】
監視システム１０２（たとえば、サブスクリプションエンジン２３０）は、サブスクライブされた状態情報を受信する第２のクライアント１０４から、第２のリクエストを受信する６３０。第２のクライアント１０４は、第１のクライアント１０４とは異なることがあり得る。
【００４３】
監視システム１０２（たとえば、サブスクリプションエンジン２３０）は、第２のリクエストに応答して、サブスクリプションがアクティブであるかどうかを決定する６４０。例えば、サブスクリプションエンジン２３０は、第２のリクエストのサブスクリプションに一致するサブスクリプションを見つけるために、既存のサブスクリプションを評価することがあり得る。一致が見つかるならば、サブスクリプションは、アクティブであると決定される。一致が見つからないならば、サブスクリプションは、非アクティブであると決定される。
【００４４】
サブスクリプションがアクティブであると決定することに応答して、監視システム１０２（たとえば、サブスクリプションエンジン２３０）は、サブスクリプションを、第２のクライアント１０４に関連付ける６５０。今述べたことは、有利であり得り、なぜなら、例えば、第２のクライアント１０４に対して新しいサブスクリプションを生成する代わりに、サブスクリプションエンジン２３０が、たとえば、共通の種類のメトリックまたはイベントデータをリクエストするユーザーの複数のクライアント１０４に対して、同じサブスクリプションを共有することにおいて、日和見的であるからである。したがって、サブスクリプションエンジン２３０は、状態情報に対するサブスクリプションを維持するのに必要な、監視システム１０２の計算上のリソースまたはメモリーリソースの量を削減することがあり得る。いくつかの実施形態において、各サブスクリプションは、サブスクリプションに従ってサブスクライブされた状態情報を提供するために、１つまたは複数のクライアント１０４と通信する単一のサブスクリプションエンジン２３０によって、扱われることがあり得る。
【００４５】
６４０に戻ると、サブスクリプションが非アクティブであると決定することに応答して、監視システム１０２（たとえば、サブスクリプションエンジン２３０）は、新しいサブスクリプションを生成して、サブスクライブされた状態情報を第２のクライアント１０４に関連付ける６６０。新しいサブスクリプションは、関心のある、同じまたは異なるメトリック、イベントデータ、または時間周期を、非アクティブとして指定することがあり得る。
【００４６】
監視システム１０２（たとえば、サブスクリプションエンジン２３０）は、サブスクリプションを取り消すクライアント１０４から、第３のリクエストを受信する６７０。サブスクリプションエンジン２３０は、第３のリクエストに応答して、クライアント１０４からのサブスクリプションを取り消す６８０。いくつかの実施形態において、サブスクリプションエンジン２３０は、非アクティブなサブスクリプションを取り消す。サブスクリプションエンジン２３０は、サブスクライブされた状態情報を第２のクライアント１０４に提供するために、サブスクリプションを維持する６９０。同様に、第２のクライアント１０４がサブスクリプションを取り消すならば、サブスクリプションエンジン２３０は、第２のクライアント１０４に対するサブスクリプションを取り消し、クライアント１０４のためにサブスクリプションを維持することがあり得る。いくつかの実施形態において、サブスクリプションエンジン２３０は、他のクライアント１０４がサブスクリプションを取り消す場合でさえ、少なくとも１つのクライアント１０４がサブスクリプションを使用している限り、サブスクリプションをサブスクリプションストア３５５に保持する。やがて、異なるクライアント１０４は、特定のサブスクリプションに対して、サブスクライブする、または取り消す（アンサブスクライブする）リクエストを供給することがあり得る。サブスクリプションを使用するクライアント１０４がもうないと決定することに応答して、サブスクリプションエンジン２３０は、サブスクリプションストア３５５からサブスクリプションを取り除いて、使用されないメモリー容量と処理のリソースとを自由に使えるようにすることがあり得る。
【００４７】
追加の構成情報
本開示の実施形態ついての前述の説明は、例示の目的のために表されており、網羅的であること、または本開示を開示された厳密なかたちに制限することは意図されない。当業者は、多くの修正および変形が上の開示に照らして可能であることを理解することが可能である。
【００４８】
今までに述べた説明のいくつかの部分は、情報の演算のアルゴリズムおよび記号的な表現に関して、本開示の実施形態を説明する。今までに述べたアルゴリズムの説明および表現は、データ処理技術の当業者によって一般的に使用され、彼らの仕事の内容を他の当業者に効果的に伝える。今までに述べた動作は、機能的、計算的、または論理的に説明される一方、コンピュータープログラムまたは同等の電気回路、マイクロコードなどによって実装されることが理解される。さらにその上、モジュールとしての動作に関する今までに述べた配置を参照することは、一般性を失うことなく、時々便利であることも明らかである。説明された動作および関連付けられたモジュールは、ソフトウェア、ファームウェア、ハードウェア、またはどの組み合わせにおいても具現されることがあり得る。
【００４９】
本明細書において説明されたステップ、演算、または処理のどれでも、１つまたは複数のハードウェアまたはソフトウェアモジュールにより、単独または他のデバイスの組み合わせにおいて、行われるまたは実装されることがあり得る。一実施形態において、ソフトウェアモジュールは、説明したステップ、演算、または処理のいずれかまたはすべてを行うためのコンピュータープロセッサーによって実行されることが可能である、コンピュータープログラムコードを含むコンピューター読み取り可能な媒体を含むコンピュータープログラム製品により実装される。
【００５０】
さらに、本開示の実施形態は、本明細書における演算を行うための装置に関することもあり得る。今述べた装置は、要求される目的のために特別に構築されてもよく、および／または、コンピューターに格納されたコンピュータープログラムによって選択的にアクティベートされるまたは再構成される汎用コンピューティングデバイスを含んでもよい。上述のコンピュータープログラムは、コンピューターシステムバスに接続されることがあり得る非一時的な、有形のコンピューター読み取り可能な記録媒体、または電子命令を格納するのに適したどんな種類の媒体にでも格納されることがあり得る。さらにその上、本明細書において参照されるどのコンピューティングシステムをとっても、シングルプロセッサーを含むことがあり得り、または計算能力を高めるためにマルチプロセッサーの設計を採用するアーキテクチャーであり得る。
【００５１】
さらに、本開示の実施形態は、本明細書において説明される計算処理によって作り出される製品に関することもあり得る。上述の製品は、計算処理に起因する情報を含むことがあり得り、ただし、情報が非一時的な、有形のコンピューター読み取り可能な記録媒体に格納され、コンピュータープログラム製品、または本明細書において説明される他のデータの組み合わせのどんな実施形態でも含み得る。
【００５２】
最後に、本明細書において使用される言い回しは、主に読みやすさおよび教育目的のために選択され、本発明の主題を詳細に叙述するまたは制限するために選択されていることはあり得ない。それゆえ、本開示の範囲は、今までに述べた詳細な説明によってではなく、本明細書に基づいた出願に生じる請求項によって制限されることが意図される。したがって、実施形態の開示は、制限しないが、次に述べる特許請求の範囲に記載される、本開示の範囲を例示することが意図される。
【図１】
2021508105.tif 000003
【図２】
2021508105.tif 000004
【図３】
2021508105.tif 000005
【図４】
2021508105.tif 000006
【図５】
2021508105.tif 000007
【図６】
2021508105.tif 000008
【国際調査報告】
2021508105.tif 000009
2021508105.tif 000010