(57)【特許請求の範囲】
【請求項１】
１つまたは複数のサービスを実装するように構成された少なくとも１つのコンピューティングデバイスを備えるシステムであって、前記１つまたは複数のサービスが、
メトリクスの１つまたは複数の測定値を保存するリクエストを受信することであって、前記リクエストは、前記メトリクスの他の測定値を保存するための先のリクエストで受信されたメタデータと同一のメタデータを有さない、前記リクエストを受信することと、
前記１つまたは複数の測定値に対する１つのメトリクス識別子を判定することと、
前記メトリクス識別子を用いて前記１つまたは複数の測定値を保存し、前記メトリクスの測定値を検索するための、前記メタデータを指定しているリクエストに応答する情報が、前記１つまたは複数の測定値及び前記他の測定値の少なくとも両方を含むようにすることと、
を行うように構成された、システム。
【請求項２】
前記１つまたは複数の測定値を保存する前記リクエストが、前記メトリクス識別子を含む、請求項１に記載のシステム。
【請求項３】
前記１つまたは複数のサービスが、さらに、前記判定されたメトリクス識別子に少なくとも部分的に基づいて、前記１つまたは複数の測定値を前記他の測定値と集計するように構成された、請求項１または２に記載のシステム。
【請求項４】
前記判定されたメトリクス識別子を用いてメトリクスデータを保存することが、
前記１つまたは複数の測定値のうちの前記測定値の前記メトリクス識別子及びタイムスタンプを用いて、前記１つまたは複数の測定値を１つまたは複数のパーティションに分割することと、
前記１つまたは複数の測定値の保存のために、前記１つまたは複数のパーティションからの前記１つまたは複数の測定値を複数の集計サブシステムのうちの１つまたは複数の集計サブシステムに送信することと、
前記１つまたは複数の測定値を、前記１つまたは複数の集計サブシステムの１つまたは複数の集計データストア内に保存することと、を含む、請求項１〜３のいずれか一項に記載のシステム。
【請求項５】
前記１つまたは複数のサービスが、さらに、
メトリクスマッピングレジストリから、前記１つまたは複数の測定値のうちの前記測定値のタイムスタンプに少なくとも部分的に基づいて、前記１つまたは複数のパーティションと前記複数の集計サブシステムの１つまたは複数のマッピングを取得し、
前記１つまたは複数のマッピングに少なくとも部分的に基づいて、前記複数の集計サブシステムから１つまたは複数の集計サブシステムを選択するように構成された、請求項４に記載のシステム。
【請求項６】
前記１つまたは複数のサービスが、さらに、
前記１つまたは複数の測定値を検索する第２のリクエストを受信することであって、前記リクエストは、前記メタデータを指定する、前記第２のリクエストを受信することと、
前記メタデータに少なくとも部分的に基づいて、前記メトリクス識別子を判定することと、
前記メトリクス識別子及び前記メタデータに指定された１つまたは複数の期間を用いて、前記１つまたは複数の測定値及び前記他の測定値の少なくとも両方を検索することと、
を行うように構成された、請求項１〜５のいずれか一項に記載のシステム。
【請求項７】
前記１つまたは複数の測定値がバイナリシリアライゼーションフォーマットで保存され、前記バイナリシリアライゼーションフォーマットは、前記メトリクス識別子、メトリクスデータのタイムスタンプ、前記メトリクスデータに対する測定の単位、及び前記メトリクスデータによって表されるメトリクスの測定値を含む、請求項１〜６のいずれか一項に記載のシステム。
【請求項８】
前記メトリクス識別子が、ハッシュ関数及び前記メタデータ内に指定された１つまたは複数のメトリクス属性を用いて生成された、請求項１〜７のいずれか一項に記載のシステム。
【請求項９】
コンピュータシステムに、少なくとも、
メトリクスの１つまたは複数の測定値を保存する第１のアプリケーションプログラミングインタフェース呼び出しを受信する手順であって、前記第１のアプリケーションプログラミングインタフェース呼び出しは、前記１つまたは複数の測定値及び前記１つまたは複数の測定値に対するメトリクス識別子を指定し、前記メトリクス識別子は、前記メトリクスの他の測定値を保存するための先のリクエストに含まれるメタデータに少なくとも部分的に基づいて生成される、前記第１のアプリケーションプログラミングインタフェース呼び出しを受信する手順と、
前記メトリクス識別子を用いて、前記１つまたは複数の測定値を保存するデータストアを識別する手順と、
前記１つまたは複数の測定値及び前記他の測定値を、前記メタデータまたは前記メトリクス識別子を含むリクエストに応答して取得することができるように、前記１つまたは複数の測定値を前記識別されたデータストアに保存する手順と、
を実行させるためのプログラム。
【請求項１０】
さらに、前記コンピュータシステムに、
前記メトリクスの複数の測定値を検索する第２のアプリケーションプログラミングインタフェース呼び出しを受信する手順であって、前記第２のアプリケーションプログラミングインタフェース呼び出しは、前記メタデータを含む、前記第２のアプリケーションプログラミングインタフェース呼び出しを受信する手順と、
前記含まれるメタデータを用いて、前記メトリクス識別子を生成する手順と、
前記生成されたメトリクス識別子及び前記メタデータに指定された１つまたは複数の期間に少なくとも部分的に基づいて、前記１つまたは複数の測定値及び前記他の測定値を含む１つまたは複数のデータストアを識別する手順と、
前記識別された１つまたは複数のデータストアから、前記１つまたは複数の測定値及び前記他の測定値を提供する手順と、
を実行させるための、請求項９に記載のプログラム。
【請求項１１】
さらに、前記コンピュータシステムに、
前記１つまたは複数の測定値をバイナリシリアライゼーションフォーマットに変換する手順であって、前記バイナリシリアライゼーションフォーマットの前記１つまたは複数の測定値は、前記メトリクス識別子及び前記１つまたは複数の測定値を含む、前記バイナリシリアライゼーションフォーマットに変換する手順を実行させるための、請求項９または１０に記載のプログラム。
【請求項１２】
前記１つまたは複数の測定値を、前記識別されたデータストアに保存することが、
前記データストアから、前記メトリクスのシリアライズされた測定値を検索することであって、前記シリアライズされた測定値は、前記バイナリシリアライゼーションフォーマットの前記他の測定値を含む、前記測定値を検索することと、
前記バイナリシリアライゼーションフォーマットの前記シリアライズされた測定値及び前記１つまたは複数の測定値をデシリアライズすることと、
前記１つまたは複数の測定値を前記他の測定値と集計することと、
前記１つまたは複数の測定値及び前記他の測定値を前記バイナリシリアライゼーションフォーマットに変換することと、
を含む、請求項１１に記載のプログラム。
【請求項１３】
さらに、前記コンピュータシステムに、
ランレングス符号化を用いて、前記バイナリシリアライゼーションフォーマットで同一の値を有する１つまたは複数の連続した測定値に対して前記１つまたは複数の測定値を圧縮する手順を実行させるための、請求項１１または１２に記載のプログラム。
【請求項１４】
さらに、前記コンピュータシステムに、
前記１つまたは複数の測定値の前記メトリクス識別子及びタイムスタンプに少なくとも部分的に基づいて、パーティションを生成する手順と、
前記パーティションの前記１つまたは複数の測定値を、集計サブシステムに割り振るためにキュー内に配置する手順であって、前記集計サブシステムは、前記識別されたデータストアを含む、前記配置する手順と、
前記１つまたは複数の測定値を前記識別されたデータストアに保存するために、前記キューから、前記集計サブシステムに前記１つまたは複数の測定値を送信する手順と、を実行させるための、請求項９〜１３のいずれか一項に記載のプログラム。
【請求項１５】
さらに、前記コンピュータシステムに、
メトリクスマッピングレジストリから、パーティションと集計サブシステムのマッピングを経時的に取得する手順と、
メトリクスデータの前記メトリクス識別子及びタイムスタンプを用いて、前記１つまたは複数の測定値を前記識別されたデータストアに保存するために、前記マッピングから前記集計サブシステムを判定する手順と、を実行させるための、請求項９〜１４のいずれか一項に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本出願は、同時係属中の２０１６年６月２６日に出願された米国特許出願第１４／７５２，７５４号「ＤＡＴＡＳＴＯＲＥ  ＦＯＲ  ＡＧＧＲＥＧＡＴＥＤ  ＭＥＡＳＵＲＥＭＥＮＴＳ  ＦＯＲ  ＭＥＴＲＩＣＳ」（代理人整理番号００９７７４９−５１５ＵＳ０）、２０１６年６月２６日に出願された米国特許出願第１４／７５２，７５２号「ＡＧＧＲＥＧＡＴＩＯＮ  ＯＦ  ＭＥＴＲＩＣＳ  ＤＡＴＡ  ＷＩＴＨ  ＦＩＮＥ  ＧＲＡＮＵＬＡＲＩＴＹ」（代理人整理番号００９７７４９−４９２ＵＳ０)、２０１６年６月２６日に出願された米国特許出願第１４/７５２，７５９号「ＡＲＣＨＩＴＥＣＴＵＲＥ  ＦＯＲ  ＭＥＴＲＩＣＳ  ＡＧＧＲＥＧＡＴＩＯＮ  ＷＩＴＨＯＵＴ  ＳＥＲＶＩＣＥ  ＰＡＲＴＩＴＩＯＮＩＮＧ」（代理人整理番号００９７７４９−５４７ＵＳ０)、２０１６年６月２６日に出願された米国特許出願第１４/７５２，７６０号「ＡＵＴＯＭＡＴＩＣ  ＳＣＡＬＩＮＧ  ＯＦ  ＣＯＭＰＵＴＩＮＧ  ＲＥＳＯＵＲＣＥＳ  ＵＳＩＮＧ  ＡＧＧＲＥＧＡＴＥＤ  ＭＥＴＲＩＣＳ」（代理人整理番号００９７７４９−５４８ＵＳ０)及び２０１６年６月２６日に出願された米国特許出願第１４/７５２，７５６号「ＲＥＴＲＩＥＶＡＬ  ＯＦ  ＡＵＴＨＯＲＩＴＡＴＩＶＥ  ＭＥＡＳＵＲＥＭＥＮＴ  ＤＡＴＡ  ＦＲＯＭ  ＩＮ−ＭＥＭＯＲＹ  ＤＡＴＡＳＴＯＲＥＳ」（代理人整理番号００９７７４９−５４９ＵＳ０）の全開示をあらゆる目的で参照によって包含する。
【背景技術】
【０００２】
コンピューティングリソースサービスプロバイダのカスタマー及びアドミニストレータならびにコンピューティングリソースサービスプロバイダのコンピューティングリソースの他のユーザは、モニタリングサービスを用いて、自らのコンピューティングリソースの運用方法を測定し、診断し、改善することがよくある。例えば、これらのモニタリングサービスを通じて、カスタマー、アドミニストレータ及び他のユーザは、自らのコンピューティングリソースに対するデータを取得し、このデータを用いて、自らのコンピューティングリソースが適切に機能しているかどうかを判定することができる。自らのコンピューティングリソースが適切に機能していない場合、データを用いて、存在し得る問題を識別し、カスタマー、アドミニストレータ及び他のユーザによるトラブルシュートを可能にすることができる。しかし、負担のかかる運用イベントの際、時間が重要となることが多い。分散型システムでのコンピューティングリソースのモニタリングは、非常に複雑で、分散型システムのサイズとともにその複雑性は増していく。結果的に、コンピューティングリソースをモニタリングする従来技術では、問題の兆候を示すデータを取得してからそのデータの消費が利用可能となるまでに、著しい待ち時間が発生することが多い。一部のカスタマー、アドミニストレータ及び他のユーザは、自らのコンピューティングリソースを追跡するデータを迅速に取得し、可能な限り早く問題に対処することを必要とし得る。
【０００３】
本開示による様々な実施形態を、図面を参照しながら説明する。
【図面の簡単な説明】
【０００４】
【図１】様々な実施形態を実施することができる環境の具体例を示す図である。
【図２】少なくとも一実施形態による、コンピューティングリソースモニタリングサービスのフロントエンドサーバが、１つまたは複数のアプリケーションプログラミングインタフェース呼び出しを処理して、測定値を保存し、サービスで測定値を検索する環境の具体例を示す図である。
【図３】少なくとも一実施形態による、コンピューティングリソースモニタリングサービスの分割サブシステムが、測定値を様々な論理パーティションに分割し、各論理パーティションの測定値を集計サブシステムに配信する環境の具体例を示す図である。
【図４】少なくとも一実施形態による、集計サブシステムが測定値の集計を行い、１つまたは複数のデータストア内に保存された測定値に対するリードアクセスを提供する環境の具体例を示す図である。
【図５】少なくとも一実施形態による、カスタマーコンピュータシステムが、測定値を様々な論理パーティションに分割し、各論理パーティションの測定値をコンピューティングリソースモニタリングサービスの１つまたは複数の集計サブシステムに配信する環境の具体例を示す図である。
【図６】少なくとも一実施形態による、メタデータがメトリクスの測定値とともに提供されて、そのメトリクスの測定値の今後の保存を、さらなるメタデータの送信の必要なしに可能とする環境の具体例を示す図である。
【図７】少なくとも一実施形態による、メトリクスの測定値の採集を用いて、１つまたは複数のリソースの自動スケーリングが行われるかどうかを判定する環境の具体例を示す図である。
【図８】少なくとも一実施形態による、メトリクスの測定値を、１つまたは複数の集計サブシステムに配信するために分割するプロセスの具体例を示す図である。
【図９】少なくとも一実施形態による、１つまたは複数の分割サブシステムからの測定値を、コンピューティングリソースモニタリングサービスの１つまたは複数のデータストアからの測定値と集計するプロセスの具体例を示す図である。
【図１０】少なくとも一実施形態による、ＧＥＴアプリケーションプログラミングインタフェース呼び出しに応答して、１つまたは複数の測定値を１つまたは複数の集計データストアから検索するプロセスの具体例を示す図である。
【図１１】少なくとも一実施形態による、コンピューティングリソースモニタリングサービスに送信される測定値を、測定値の発行のために分割するプロセスの具体例を示す図である。
【図１２】少なくとも一実施形態による、メタデータハッシュに少なくとも部分的に基づいて、１つまたは複数の集計データストアに測定値を保存するプロセスの具体例を示す図である。
【図１３】少なくとも一実施形態による、測定値を取得するリクエスト内に含まれるメタデータに少なくとも部分的に基づいて、測定値を１つまたは複数の集計データストアから検索するプロセスの具体例を示す図である。
【図１４】様々な実施形態を実施することができる環境の具体例を示す図である。
【発明を実施するための形態】
【０００５】
以下の説明では、様々な実施形態を説明する。説明するという目的のために、実施形態の完全な理解を提供すべく、特定の構成及び詳細を記載している。しかしまた、実施形態は特定の詳細なしに実施し得ることが、当業者には明らかであろう。また、周知の特徴は、記述されている実施形態を不明瞭にしないために省略または簡略化し得る。
【０００６】
本明細書中で記載したかつ示唆した技術は、サービスプロバイダによって指定された保持期間の間、メトリクスの測定値を集計し、集計された測定値をメモリに保存するように構成されたコンピューティングリソースモニタリングサービスに関する。コンピューティングリソースモニタリングサービスは、フロントエンドサーバを含み得、このフロントエンドサーバは、コンピューティングリソースサービスプロバイダのカスタマー、コンピューティングリソースサービスプロバイダの様々な他のサービス及びカスタマーに様々なサービスを通して利用可能になされたコンピューティングリソースを含む各種の様々なソースから測定値を取得するように構成され得る。このフロントエンドサーバは、これらの測定値を、コンピューティングリソースモニタリングサービスの様々なコンポーネントが利用することができるバイナリシリアライゼーションフォーマットに変換し得る。測定値の変換が完了すると、フロントエンドサーバは、これらの測定値を様々な分割サブシステムに発行して、測定値ごとのまたはメトリクスごとの完全修飾メトリクス識別子（ＦＱＭＩ）及び測定値のタイムスタンプに基づいて、測定値を様々な集計データストアに割り振るために分割する。
【０００７】
分割サブシステムは、ＦＱＭＩに基づいて、測定値を様々なキューに保存し得る。各キューは、様々な集計データストアに測定値を保存するために、それぞれの集計サブシステムに関連付けられ得る。この集計データストアは、コンピューティングリソースモニタリングサービスに対する、測定値を検索するアプリケーションプログラミングインタフェース（ＡＰＩ）呼び出しをサポートするのに利用される。分割サブシステムは、さらに、各キュー内の測定値を、測定値ごとのタイムスタンプに基づいて分割し得る。このことによって、分割サブシステムが、集計サブシステムへの測定値の配信にタイムスタンプに基づいて優先順位を付け、最新の測定値を第１に配信することが可能になる。さらに、分割サブシステムは、測定値を、このデータのタイムスタンプが最も古い保持期間よりも以前である場合、様々なキューからパージし得る。未来のタイムスタンプを有する測定値（例えば、最新の保持期間を過ぎている）の場合、分割サブシステムは、これらの測定値を、別個の未分割のキューの待ち行列に入れ得る。このキューに、測定値は、この測定値のタイムスタンプが後の時点で現在の保持期間によってカバーされるまで残るであろう。保持期間が更新されると、この保持期間内のタイムスタンプを有する測定値は、別個の未分割のキューから転送され、処理され得る。
【０００８】
集計サブシステムは、保持期間において、測定値を分割サブシステムの様々なキューから取得し、これらの測定値を集計し得る。集計サブシステムが様々な分割サブシステムから測定値を取得するとき、集計サブシステムは、既存の測定値を取得し、既存の測定値のいずれかが最も古い保持期間よりも以前の期間に対応しているかどうかを判断し得る。対応している場合、集計サブシステムは、これらの既存の測定値をパージし得る。集計サブシステムは、分割サブシステムから取得した測定値を、集計サブシステムの集計データストアによって非同期処理を行うために、様々なファイルベースのキュー内に保存し得る。新規に取得された測定値と既存の測定値のこの集計は、既存の測定値及び新規に取得された測定値のデシリアライゼーション及び新規に取得された測定値と残っている測定値のシリアライズされたフォーマットに向けての集計を通して行われ得る。次いで、シリアライズされたデータは、集計データストア内に保存され得る。
【０００９】
コンピューティングリソースサービスプロバイダのカスタマーが、コンピューティングリソースモニタリングサービスから測定値を検索する（例えば、ＧＥＴなど）ＡＰＩ呼び出しをフロントエンドサーバに送ると、フロントエンドサーバは、集計サブシステムに、測定値を取得するリクエストを送信し得る。このことによって、様々な集計サブシステムはそれぞれ、メトリクスマッピングレジストリにアクセスして、リクエストされた測定値がどこに保存されているかを判定し得る。次いで、集計サブシステムは、それぞれの集計データストアにアクセスして、リクエストされた測定値を取得し、これらの測定値をメトリクス統合エンジンに提供し得る。このメトリクス統合エンジンは、集計サブシステムの測定値をコンパイルし、これらの測定値をフロントエンドサーバに提供し得る。フロントエンドサーバは、コンパイルされた測定値をメトリクス統合エンジンから提供することによって、カスタマーのリクエストを満たし得る。
【００１０】
このようにして、コンピューティングリソースモニタリングサービスは、各種ソースから様々なメトリクスの測定値を採集し、リアルタイム分析を行い、カスタマー、アドミニストレータ及び他のエンティティに測定値を提供して、内在するコンピューティングリソースの問題への迅速な応答を可能にし、短時間でのメトリクスの評価を可能にし得る。さらに、本明細書中に記載されたかつ示唆された技術は、さらなる技術的な利点を容易にする。例えば、コンピューティングリソースモニタリングサービスによって採集された測定値は、様々な分割サブシステムへ割り振るために分けられ論理パーティション内に配置されるので、分割サブシステムに起きるいずれの故障も、コンピューティングリソースモニタリングサービスによる全体的な測定値の集計にもたらす影響を最小にし得る。このことにより、コンピューティングリソースサービスプロバイダのカスタマーが、重大なデータ損失の危険性を最小にして、保持期間において迅速に測定値を保存し得ることが確実になり得る。
【００１１】
図１は、様々な実施形態を実施することができる環境１００の具体例を示す。環境１００では、コンピューティングリソースサービスプロバイダの１つまたは複数のカスタマー１０２（例えば、個人、組織、自動工程、コンピューティングリソースエージェントなど）は、コンピューティングリソースモニタリングサービス１０４に、コンピューティングリソースに対する特定のメトリクスの測定値を保存するリクエストを送り得る。測定値を保存するリクエストは、ＰＵＴ呼び出しなどのＡＰＩ呼び出しの形式でコンピューティングリソースモニタリングサービス１０４に提供され得る。一実施形態では、測定値を保存する初期リクエストは、コンピューティングリソースモニタリングサービス１０４に提供されている測定値を記述するのに用いることができるメタデータを含む。例えば、メタデータは、データを生成した発信元コンピューティングリソースの名前、発信元コンピューティングリソースが属するオートスケーリンググループ、発信元コンピューティングリソースに対する仮想マシンイメージ識別子などを指定し得る。測定値を保存するＡＰＩ呼び出しを通して測定値及びメタデータを受信すると、コンピューティングリソースモニタリングサービス１０４は、メタデータハッシュを生成し得、このハッシュは、測定値を保存の際インデックス化するのに用いられ得る。測定値は、可能な値のスケールの数値、ブール値または可能な状態のセットの状態の英数字もしくは他のインジケータであり得る。測定値は、さらに、仮想マシンインスタンス、カスタマーコンピュータシステム、オブジェクトベースのデータストア及び／または他のコンピューティングリソースなどの、関連するコンピューティングリソースの運用の少なくとも一態様を表示するものとなり得る。例えば、測定値は、経時的なプロセッサ使用率、経時的なメモリ使用率、一定期間にコンピューティングリソース内で検出されたエラーのカウントなどを含み得る。
【００１２】
一実施形態では、コンピューティングリソースモニタリングサービス１０４は、コンピューティングリソースモニタリングサービス１０４の各データセンタ１０６内に、１つまたは複数の分割サブシステム１０８及び１つまたは複数の集計サブシステム１１０を、測定値の保存のために含む。各データセンタ１０６は、コンピューティングリソースモニタリングサービス１０４のコンピュータシステム及びコンピューティングリソースサービスプロバイダのサービスのための他のコンピュータシステムが配置され得る物理的な位置に対応し得る。コンピューティングリソースモニタリングサービス１０４が測定値をカスタマー１０２から取得すると、コンピューティングリソースモニタリングサービス１０４は、提供されたメタデータを用いて、データを生成したコンピューティングリソースを識別し、このコンピューティングリソースが配置されているデータセンタ１０６を判定し得る。この判定に少なくとも部分的に基づいて、コンピューティングリソースモニタリングサービス１０４は、データの保存のために、対応するデータセンタ１０６を選択し得る。一部の実施形態では、コンピューティングリソースモニタリングサービス１０４は、測定値を、複数のデータセンタ１０６のサブセットに保存するために複製して、測定値に対して冗長性を提供する。このことによって、コンピューティングリソースモニタリングサービス１０４が、複数のデータセンタ１０６のサブセットがリクエストに応答して整合する測定値の回答を提供できない場合、特定の測定値を選択するために、１つまたは複数の競合解消ルールを生成することが可能になり得る。例えば、コンピューティングリソースモニタリングサービス１０４は、クォーラムを必要とし得る。クォーラムにおいて、コンピューティングリソースモニタリングサービス１０４は、同一の測定値を提供するデータセンタ１０６の数が所定のデータセンタ１０６の数以上である限り、大多数のデータセンタ１０６によって提供されている測定値を選択し得る。
【００１３】
コンピューティングリソースモニタリングサービス１０４に提供された測定値に対するメタデータは、測定値に対する特定のメトリクスを固有に識別し得る。例えば、メタデータは、カスタマーのアカウント番号、名前空間（例えば、コンピューティングリソースに対する関連サービス）、測定値のディメンション（例えば、キー／値のペア）、測定値自体の名前などの組み合わせによって、測定値を固有に識別し得る。一実施形態では、コンピューティングリソースモニタリングサービス１０４がカスタマー１０２から測定値及びメタデータを受信すると、コンピューティングリソースモニタリングサービス１０４は、ハッシュ関数を用いて、メタデータハッシュを生成する。このハッシュは、保存される測定値に対するＦＱＭＩとして用いることができる。さらに、コンピューティングリソースモニタリングサービス１０４は、バイナリシリアライゼーションフォーマットを用いて、保存される測定値を圧縮し得る。このバイナリシリアライゼーションフォーマットで、シリアライズされた測定値は、メタデータをハッシュすることによって生成されたＦＱＭＩ、データのタイムスタンプ、データに対する測定の単位及び測定値自体を含み得る。代替実施形態では、カスタマー１０２は、カスタマーコンピュータシステムまたは他のコンピューティングリソースを用いて、ＦＱＭＩを、測定値に対するメタデータに少なくとも部分的に基づいて計算する。このことによって、カスタマー１０２は、コンピューティングリソースモニタリングサービス１０４がＦＱＭＩ自体を生成する必要なしに、測定値に、測定値に対するＦＱＭＩを設けることが可能になり得る。
【００１４】
一実施形態では、コンピューティングリソースモニタリングサービス１０４がメタデータをハッシュして、保存される測定値に対するＦＱＭＩを生成すると、カスタマー１０２は、メタデータが期限切れしていない限り、または、カスタマー１０２がコンピューティングリソースモニタリングサービス１０４との間に新規のセッションを開始していない限り、特定のメトリクスの測定値の今後の送信のためにメタデータを繰り返す必要がもはやなくなる。例えば、カスタマー１０２がさらなる測定値をコンピューティングリソースモニタリングサービス１０４に供給するとき、カスタマー１０２は、メタデータの代わりに、同一のメトリクスに対応する測定値に対するＦＱＭＩを提供し得る。コンピューティングリソースモニタリングサービス１０４は、様々な測定値をコンピューティングリソースモニタリングサービス１０４のデータストア内に保存することを見越して、測定値及びＦＱＭＩをシリアライズし得る。コンピューティングリソースモニタリングサービス１０４は、測定値に対するメタデータを含む第１の測定値を保存するカスタマーのリクエストに応答して、カスタマー１０２に、測定値に対するＦＱＭＩを提供し得る。コンピューティングリソースモニタリングサービス１０４が、カスタマー１０２によって提供されたメタデータに少なくとも部分的に基づいてＦＱＭＩを生成すると、コンピューティングリソースモニタリングサービス１０４は、ＦＱＭＩをカスタマー１０２にＰＵＴリクエスト及びＧＥＴリクエストを含む今後の使用のために送信し得る。
【００１５】
測定値を保存する（例えば、メトリクスの観察）ためにコンピューティングリソースモニタリングサービス１０４に対してなされ得るＡＰＩ呼び出しは、さらに、メトリクスの特定の時系列において提供されたデータは時系列において信頼すべきものであることを指定するのに用いられ得る１つまたは複数のパラメータを含み得る。例えば、メトリクスの測定値は特定の保持期間において集計されるので、カスタマー１０２は、時系列に対して、提供された１つまたは複数の測定値が時系列において信頼すべきものであると指定し、コンピューティングリソースモニタリングサービス１０４が、時系列において提供された測定値は実際のところ信頼すべき安定したものであることを、測定値をリクエストしているエンティティに示すようにし得る。一実施形態では、コンピューティングリソースモニタリングサービス１０４が、提供された測定値が時系列において信頼すべきものであることを指定するのに使用可能な１つまたは複数のパラメータを含むＡＰＩ呼び出しを受信すると、コンピューティングリソースモニタリングサービス１０４は、受信した測定値が時系列における他の測定値と集計され保存されるとすぐに時系列における様々な測定値を利用可能にするであろう。この測定値及び時系列における他の測定値は、カスタマー１０２または他のエンティティに利用可能となり得、コンピューティングリソースモニタリングサービス１０４が、これらの測定値が時系列において信頼すべきものであることを示し得るようにし得る。
【００１６】
コンピューティングリソースモニタリングサービス１０４が測定値をシリアライズされたフォーマットに変換すると、コンピューティングリソースモニタリングサービス１０４は、測定値を、各データセンタ１０６内の１つまたは複数の分割サブシステム１０８に送信し得る。一実施形態では、各分割サブシステム１０８は、ＦＱＭＩ及び測定値のタイムスタンプに少なくとも部分的に基づいて、複数の論理パーティションのどの論理パーティションが測定値を保存するのに使用されるのかを判定する。受信した様々な測定値に対して、分割サブシステム１０８は、これらの様々な測定値を、さらに１つまたは複数の保持期間においてデータセンタ１０８内のいくつかのアクティブな集計サブシステム１１０に少なくとも部分的に基づいて、様々な論理パーティションに分け得る。いくつかのアクティブな集計サブシステム１１０を判定するために、分割サブシステム１０８は、メトリクスマッピングレジストリにアクセスし得る。このメトリクスマッピングレジストリは、論理パーティションの、１つまたは複数の保持期間においてアクティブな集計サブシステム１１０に対するマッピングを提供し得る。分割サブシステム１０８は、データセンタ１０６内の単一の集計サブシステム１１０に結び付けられた、選択された論理パーティションに関連するファイルベースのキュー内に測定値を保存し得る。
【００１７】
ファイルベースのキューは、様々な測定値を含み得、これらの測定値は、一定の期間が経過すると（例えば、数ミリ秒ごとなど）バッチ処理され、対応する集計サブシステム１１０に非同期的に配信され得る。これらのファイルベースのキュー内の測定値は、メトリクスマッピングレジストリを通して判定されたように、各保持期間において、データセンタ１０６ごとにたった１つの集計サブシステム１１０に配信され得る。ファイルベースのキュー内の測定値は、さらに、測定値ごとの観察時間に少なくとも部分的に基づいて、部分分割され得る。このことによって、分割サブシステムが、最新の測定値の配信を第１に優先するように、測定値を集計サブシステム１１０に配信することが可能になり得る。未来のタイムスタンプを有する測定値（最近の保持期間の最近の時系列を過ぎている）は、時系列が現在となったときのみ処理され得る別個の未分割のキューの待ち行列に入れられ得る。さらに、分割サブシステム１０８は、最も古い保持期間より以前のタイムスタンプを有する測定値をパージし得る。
【００１８】
集計サブシステム１１０は、測定値を集計し様々なメトリクスの時系列の測定値データを与えるのに最適化され得るメモリ内キー値ストレージシステムである。一実施形態では、メモリ内キー値ストレージシステムは、集計された測定値を保存するために、１つまたは複数のコンピュータシステムのメインメモリに依存する。例えば、メモリ内キー値ストレージシステムは、メモリバスを介して、コンピュータシステムの中央処理装置（ＣＰＵ）に直接的にまたは間接的に接続され得る。このことによって、ＣＰＵは、ＧＥＴリクエストに応答してメモリ内キー値ストレージシステム内に保存された任意のデータを取得することが可能になり得、または、ＧＥＴリクエストに応答してメモリ内キー値ストレージシステム内に任意のデータを保存することが可能になり得る。メインメモリは、ＣＰＵに直接アクセス可能でもあり得る。メモリ内キー値ストレージシステムは、揮発性ストレージシステム（例えば、ランダムアクセスメモリ（ＲＡＭ）など）または不揮発性ストレージシステムを用いて形成され得る。一部の実施形態では、測定値は、ソリッドステートドライブ（ＳＳＤ）などのソリッドステートストレージに保存され得る。
【００１９】
集計サブシステム１１０は、データセンタ１０６内の様々な分割サブシステム１０８から複数の測定値を取得し得、測定値を、非同期的な処理のために、ファイルベースのキュー内に配置し得る。集計期間中に特定のメトリクスが観察されたことが初めてである場合、集計サブシステム１１０は、この特定のメトリクスの測定値を集計データストア内に、そのシリアライズされたフォーマットで保存し得る。あるいは、特定のメトリクスは以前観察されたことがある場合、集計サブシステム１１０は、保存されたメトリクスの測定値を取得し、保存された測定値及び新規に取得された測定値をデシリアライズし、新規に取得された測定値を既存の測定値とシリアライズされたフォーマットで集計し得る。次いで、これらの集計された測定値は、クエリリクエストを満たすために集計データストア内に保存され得る。一実施形態では、集計サブシステム１１０は、測定値の保存のために、最も古い保持期間がその後の保持期間に置き換わると、任意の期限切れした測定値を集計データストアからパージするであろう。
【００２０】
任意の時点で、コンピューティングリソースサービスプロバイダのカスタマー１０２は、任意の数の測定値を様々な集計データストアから検索するリクエストをコンピューティングリソースモニタリングサービス１０４に送信し得る。測定値を検索するリクエストは、ＧＥＴ呼び出しなどのＡＰＩ呼び出しの形式でコンピューティングリソースモニタリングサービス１０４に提供され得る。コンピューティングリソースモニタリングサービス１０４が、リクエストを満たすのに必要な測定値を取得するために、カスタマー１０２は、取得される測定値に対するメタデータを提供することを必要とされ得る。このことによって、コンピューティングリソースモニタリングサービス１０４がメタデータをハッシュして、測定値に対する１つまたは複数のＦＱＭＩを取得することが可能になり得る。コンピューティングリソースモニタリングサービス１０４は、１つまたは複数のＦＱＭＩを用いて、メトリクスマッピングレジストリから、１つまたは複数の現在の保持期間における測定値の１つまたは複数の位置を識別し得る。
【００２１】
一実施形態では、カスタマー１０２からコンピューティングリソースをモニタリングサービス１０４への、測定値データ（例えば、メトリクスの１つまたは複数の測定値）を様々な集計データストアから検索するＡＰＩ呼び出しは、パラメータを含み得、このパラメータは、カスタマー１０２が、信頼できる結果をリクエストしていることを示すのに用いられ得る。例えば、ＡＰＩ呼び出しが、特定の時間範囲及びメトリクスに対して信頼できる結果をリクエストするパラメータを含む場合、コンピューティングリソースモニタリングサービス１０４は、指定された時間範囲内のメトリクスの測定値を検索し、これらの測定値のいずれも信頼できるかどうかを判定し得る。例えば、上述のように、カスタマー１０２は、ＰＵＴ  ＡＰＩ呼び出しを用いて、特定のある測定値または一連の測定値が時系列において信頼できるものであることを指定し得る。コンピューティングリソースモニタリングサービス１０４は、この情報を用いて信頼できる測定値を識別し、これらの測定値をカスタマー１０２または他のリクエストしているエンティティに提供し得る。一部の実施形態では、カスタマー１０２は、カスタマー１０２が特定の時間範囲において信頼できる測定値を取得することにとらわれないことを示すパラメータを含むＧＥＴ  ＡＰＩ呼び出しを送ることができる。このことによって、コンピューティングリソースモニタリングサービス１０４は、測定値が信頼できるか否かに関わらず、指定された時間範囲において、全ての測定値を提供し得る。
【００２２】
リクエストされた測定値が保存されている位置を判定すると、コンピューティングリソースモニタリングサービス１０４は、メトリクス統合エンジン１１２を用いてリクエストを様々なデータセンタ１０６から適切な集計サブシステム１１０に送信して、ＧＥＴリクエストを満たすのに必要な測定値を取得し得る。メトリクス統合エンジン１１２は、コンピューティングリソースモニタリングサービス１０４のコンピュータシステムモジュールであり得、様々な集計サブシステム１１０から測定値を読み出すことを当該モジュールに可能にさせるクライアントライブラリを含み得る。メトリクス統合エンジン１１２が様々な集計サブシステム１１０から測定値を取得すると、各データセンタ１０６の測定値はコンパイルされて、データセンタ１０６の測定値のレスポンスを生成し得る。メトリクス統合エンジン１１２は、生成されたレスポンスが競合する場合、１つまたは複数の競合解消ルールを用いて、ＧＥＴリクエストに対する適切なレスポンスを判定し得る。例えば、メトリクス統合エンジン１１２は、様々なデータセンタ１０６から、最多のサンプルカウントを有するレスポンスを選択し得る。メトリクス統合エンジン１１２は、ＧＥＴリクエストに対するレスポンスを、カスタマー１０２が自らの目的のために用い得るデシリアライズされたフォーマットの測定値の形式で提供し得る。
【００２３】
一実施形態では、メトリクス統合エンジン１１２は、これらの測定値を、１つまたは複数のサーバコンピュータ及びコンピューティングリソースを備えるオートスケールグループに提供するように構成されている。測定値は、グループ内のコンピューティングリソースに関連するメトリクスに対する、オートスケールグループ内の１つまたは複数のコンピューティングリソースマネージャからのＧＥＴリクエストに応答して、メトリクス統合エンジン１１２によって取得され得る。これらの１つまたは複数のコンピューティングリソースマネージャは、特定のメトリクスに対する取得された測定値を用いて、既存のコンピューティングリソースのスケーリングが必要かどうかを判定し得る。必要である場合、オートスケールグループの各サーバコンピュータ内のコンピューティングリソースマネージャは、必要に応じて、さらなるコンピューティングリソースを供給し得、またはオートスケールグループからコンピューティングリソースを削除し得る。
【００２４】
一部の実施形態では、分割サブシステム１０８は、カスタマー１０２の１つまたは複数のクライアント側コンピューティングシステム内で用いられることに留意すべきである。例えば、クライアント側コンピューティングシステムは、測定値を様々なコンピューティングリソースから取得し得、測定値に対するメタデータを直接ハッシュし得る。さらに、カスタマークライアントデバイスは、コンピューティングリソースモニタリングサービス１０４によって提供されるメトリクスマッピングレジストリにアクセスして、どの集計サブシステム１１０が、カスタマークライアントデバイス内の分割サブシステム１０８の論理パーティション内に保存された測定値を受信するかを判定し得る。カスタマークライアントデバイスは、ＰＵＴリクエストをコンピューティングリソースモニタリングサービス１０４の対応する集計サブシステム１１０に送信して、測定値を保存し得る。測定値は、対応する集計サブシステム１１０への各測定値の送信が成功したかどうかをカスタマークライアントデバイスが判定することを可能にし得る１つまたは複数の通信プロトコルを用いて送信され得る。測定値の送信が成功しなかった場合、カスタマークライアントデバイスは、分割サブシステム１０８のファイルベースのキューをリフレッシュし、失敗したリクエストごとに、新規のＰＵＴリクエストを集計サブシステム１１０に送信し得る。それ以外の場合、カスタマークライアントデバイスは、集計サブシステム１１０から、測定値の配信が成功したという確認応答を受信し得る。
【００２５】
上述のように、コンピューティングリソースモニタリングサービスは、カスタマー、アドミニストレータ、コンピューティングリソース及び他のエンティティから測定値を取得し、これらの測定値を、サービスによって定義されたような特定の保持期間にわたって１つまたは複数の集計データストア内に保存し得る。コンピューティングリソースモニタリングサービスによって取得された測定値は、到達するとリアルタイムで集計され得る。このことによって、コンピューティングリソースモニタリングサービスは、リクエストに対応して迅速に測定値を集計データストアから取得することが可能になり得、カスタマー及び他のエンティティが測定値をそれぞれのニーズに利用することを可能とする。したがって、図２は、少なくとも一実施形態による、コンピューティングリソースモニタリングサービス２０２のフロントエンドサーバ２０４が、１つまたは複数のＡＰＩ呼び出しを処理して、測定値をサービス２０２で保存かつ検索する環境２００の具体例を示す。
【００２６】
環境２００では、コンピューティングリソースモニタリングサービス２０２のフロントエンドサーバ２０４はカスタマーコンピュータシステムからＰＵＴリクエストを受信して、測定値を集計データストア内に保存し得る。カスタマーコンピュータシステムは、コンピューティンリソースサービスプロバイダによってホストされるがカスタマーによって管理されるコンピュータシステムであり得る。あるいは、カスタマーコンピュータシステムは、自らのデータセンタに、カスタマーによってホストされるコンピュータシステム及びリソースを含み得る。ＰＵＴリクエストは、所与のタイムスタンプで、特定のメトリクスの測定値を含み得る。加えて、ＰＵＴリクエストは、さらに、提供された測定値に対するメタデータを含み得る。このメタデータは、コンピューティングリソースモニタリングサービス２０２内で、関連する測定値及びメトリクスを固有に識別し得る１つまたは複数のメトリクス属性を含み得る。例えば、メタデータは、ＰＵＴリクエストを送っているカスタマーコンピュータシステムに関連するまたは測定値の生成に関与している別のコンピューティングリソースに関連するカスタマーのアカウント番号、コンピューティングリソースの管理に関与している特定のサービスの名前（例えば、仮想コンピュータシステムサービス、データベースサービスなど）、測定値のディメンション（例えば、キー／値のペア）及び測定値を生成しているコンピューティングリソースの識別子を、個々にまたは組み合わせて指定し得る。
【００２７】
フロントエンドサーバ２０４が、カスタマーコンピュータシステムからＰＵＴリクエストを受信すると、フロントエンドサーバ２０４は、ＰＵＴリクエストからメタデータを取得し、ハッシュ関数を用いて、集計データストア内に保存される測定値に対するＦＱＭＩを生成し得る。さらに、フロントエンドサーバ２０４は、測定値を、１つまたは複数のデータセンタ２０６内の分割サブシステム２０８に発行するために、シリアライズされたフォーマットに変換し得る。カスタマーコンピュータシステムから取得された特定の測定値のシリアライズされたフォーマットは、ＦＱＭＩ、測定値のタイムスタンプ、測定値の測定の単位及び測定値自体を含み得る。フロントエンドサーバ２０４は、様々なＰＵＴリクエストの未分割の測定値を、１つまたは複数のデータセンタ２０６の１つまたは複数の分割サブシステム２０８へ非同期的に配信するために、スプールし得る。例えば、フロントエンドサーバ２０４は、各データセンタ２０６内に保持された分割サブシステム２０８のうち少なくとも１つの分割サブシステム２０８に測定値を送信するように各々が構成され得る１つまたは複数のファイルベースのキューを含み得る。
【００２８】
一実施形態では、カスタマーコンピュータシステムが、同一のメトリクスの測定値を保存するその後のＰＵＴリクエストを送る場合、カスタマーコンピュータシステムは、メタデータが期限切れしていない限り、測定値の完全なメタデータの代わりに、メトリクスに対するＦＱＭＩを提供するだけでよい。あるいは、ＰＵＴリクエストは、同一のメトリクスの別の測定値を保存する初期ＰＵＴリクエスト内で受信されたメタデータの少なくとも一部が欠落し得る。以下でより詳細に記載するように、１つまたは複数の分割サブシステム２０８は、提供されたＦＱＭＩを用いて、測定値を集計データストア内に保存し得、測定値を検索するリクエストに応答しかつメタデータを指定する情報が、少なくとも両方の測定値を含むようにする。
【００２９】
ＰＵＴリクエストにおいて、さらに、カスタマーコンピュータシステムには、提供された測定値の保存のために各種オプションが提供され得る。例えば、一実施形態では、ＰＵＴ  ＡＰＩにより、カスタマーコンピュータシステムは、提供された測定値が、コンピューティングリソースモニタリングサービス２０２による測定値の集計の一定期間中に特定のメトリクスに対して提供される最後の測定値であるかどうかを指定することが可能になり得る。例えば、フロントエンドサーバ２０４が、測定値を、分割サブシステム２０８への配信に先立って、特定の時間間隔（例えば、１秒、１分、１時間など）でバッチ処理するように構成されている場合、カスタマーコンピュータシステムは、提供された測定値が特定の時間間隔において最後の測定値であることをＰＵＴ  ＡＰＩを通じて指定し得る。このことによって、フロントエンドサーバ２０８は、現在の時間間隔がまだ経過していなくても、測定値を分割サブシステム２０８へ配信するために準備し得る。このことによって、フロントエンドサーバ２０４はカスタマーコンピュータシステムからのさらなる測定値を待つ必要がなくなり得るので、測定値の保存および利用可能性をより早く実現し得る。別の実施形態では、フロントエンドサーバ２０４は、ランレングス符号化を用いて、測定値の一定時間間隔において、同一の値を有する１つまたは複数の連続した測定値に対して、取得された測定値を圧縮するであろう。このことは、シリアライズされた測定値に必要な保存空間を減少させ得る。
【００３０】
一実施形態では、フロントエンドサーバ２０４は、受信したＰＵＴリクエストに少なくとも部分的に基づいて生成されたシリアライズされた測定値を、測定値の冗長的な保存のために、各データセンタ２０６へ送る。各データセンタ２０６は、シリアライズされた測定値を特定のデータセンタ２０６内の分割サブシステム２０８に送信するように構成され得る分割ロードバランサ（図示せず）を含み得る。分割サブシステムは、様々なメトリクスの測定値を、データセンタ２０６内の１つまたは複数の集計サブシステム２１０へ配信するために、各測定値のＦＱＭＩ及びタイムスタンプに少なくとも部分的に基づいて分割するように集合的に構成された１つまたは複数のコンピュータシステムを含み得る。分割サブシステム２０８は、フロントエンドサーバ２０４から測定値を取得すると、メトリクスマッピングレジストリ２１２にアクセスして、論理パーティションのデータセンタ２０６内の集計サブシステム２１０に対するマッピングを経時的に取得し得る。メトリクスマッピングレジストリは、マッピングのデータベースと、各データセンタ内の利用可能な集計サブシステム２１０に少なくとも部分的に基づいて、分割スケジュールを作成する１つまたは複数のコンピュータシステムとを含み得る。例えば、メトリクスマッピングレジストリ２１２は、所定の（例えば、コンピューティングリソースモニタリングサービス２０２またはコンピューティングリソースサービスプロバイダによって定義された）時間間隔で、様々なデータセンタ２０６内の様々な集計サブシステム２１０を評価し得る。この評価は、未来の時間に対する分割スケジュールを生成するのに用いられ得る。一部の実施形態では、分割スケジュールは、集計サブシステム２１０の利用可能性に関する緊急課題、測定値の保存のために必要なスループット及び他の課題に対処するために、手動で更新することができる。マッピングは、マッピングがアクティブである特定の保持期間に対応し得る。保持期間が経過すると、メトリクスマッピングレジストリ２１２は、次のマッピングを現在のものとし、分割スケジュールに対する最近の変化の履歴を保持して、ＧＥＴリクエストが正しい集計サブシステム２１０に振り分けられることを可能にし得る。
【００３１】
分割サブシステム２０８は、メトリクスマッピングレジストリ２１２からのマッピングを用いて、論理パーティションごとに、分割された測定値の配信先となる集計サブシステム２１０を判定し得る。分割サブシステム２０８は、ＰＵＴリクエストを通じて取得された測定値のＦＱＭＩ及びタイムスタンプに少なくとも部分的に基づいて、測定値の保存のために、複数の論理パーティションからある論理パーティションを選択し得る。上述のように、ＦＱＭＩは、メタデータに提供されたメトリクス属性をハッシュするハッシュ関数を用いて作成され得る。例えば、ＦＱＭＩは、複数バイトのハッシュを含み得、このハッシュの一部は、測定値のメトリクスごとに論理パーティションを判定するのに用いられ、このハッシュの別の一部は、論理パーティション内の測定値の固有の識別に用いられる。この論理パーティションは、メトリクスマッピングレジストリ２１２によって、特定の集計サブシステム２１０にマッピングされ得る。
【００３２】
分割サブシステム２０８は、分割された測定値を、データセンタ２０６内の単一の集計サブシステム２１０へ各々が結び付けられたファイルベースのキュー内に保存し得る。各ファイルベースのキュー内の測定値は、一定の短い時間間隔で（例えば、数ミリ秒ごとなど）、バッチ処理され、各集計サブシステム２１０に非同期的に配信され得る。このことによって、分割サブシステム２０８は、メトリクスマッピングレジストリ２１２によって判定されたように、各保持期間の間、各論理パーティションからの測定値をデータセンタ２０６ごとにたった１つの集計サブシステム２１０に配信することが可能になり得る。各論理パーティションは、さらに、測定値のタイムスタンプによって部分分割され得る。分割サブシステム２０８は、最新の測定値の集計サブシステム２１０への配信を第１に優先し得る。任意の時点でファイルベースのキューが容量いっぱいになった場合、分割サブシステム２０８は、最も古い測定値をファイルベースのキューからパージし得る。さらに、最も古い保持期間よりも以前のタイムスタンプの測定値もパージされ得る。分割サブシステム２０８は、タイムスタンプが未来の時間に対応する（例えば、タイムスタンプが、最近の保持期間を過ぎている時間を指定している）測定値のために、別個の未分割のキューを保持し得る。これらの未来観察は、これらの測定値のタイムスタンプが現在となり保持期間内に存在するときのみ処理され得る。
【００３３】
上述のように、集計サブシステム２１０は、様々なメトリクスの測定値をリアルタイムで集計し様々なメトリクスに対する時系列の測定値を与えるのに最適化されたメモリ内キー値ストレージシステムであり得る。集計サブシステム２１０は、特定のデータセンタ２０６内の分割サブシステム２０８の論理パーティションから測定値を取得し、これらの測定値を、集計サブシステム２１０の専用集計データストアによる非同期的な処理のために、１つまたは複数のファイルベースのキュー内に配置し得る。集計データストアは、ファイルベースのキューからメトリクスの測定値を取得し、集計期間において特定のメトリクスに対する既存の測定値が存在するかどうかを判定し得る。特定のメトリクスに対する既存の測定値が存在しない場合、集計データストアは、シリアライズされた測定値を保存し得、集計サブシステム２１０は、メトリクスマッピングレジストリ２１２を更新して、シリアライズされた測定値のデータストア内での保存に成功したことを示し得る。それ以外の場合は、集計サブシステム２１０は、集計データストアから既存のシリアライズされた測定値を検索し、これらの測定値及びキューから新規に取得された測定値をデシリアライズし得る。集計サブシステム２１０は、２つのデシリアライズされた測定値のセットを集計し得る。次いで、これらの集計された測定値は、シリアライズされ、集計データストア内に保存され得る。集計サブシステムは、メトリクスマッピングレジストリ２１２を更新して、論理パーティションから得た測定値の保存が成功したことを示し得る。
【００３４】
任意の時点で、フロントエンドサーバ２０４は、カスタマーコンピュータシステム、コンピューティングリソース、アドミニストレータまたは他の権限のあるエンティティからＧＥＴリクエストを受信して、特定のメトリクスの測定値を、１つまたは複数の集計サブシステム２１０の１つまたは複数の集計データストアから検索し得る。ＧＥＴリクエストは、コンピューティングリソースモニタリングサービス２０２から取得される測定値に対するメタデータを含み得、このメタデータは、メトリクスの測定値を保存するために先の時間に提供されたメタデータと同様なものであり得る。フロントエンドサーバ２０４は、受信したメタデータをハッシュして、求められている測定値の位置を見つけるのに用いることができるＦＱＭＩを生成し得る。フロントエンドサーバ２０４は、ＧＥＴリクエストを満たすのに必要な測定値を取得するために、ＦＱＭＩとともにクエリをメトリクス統合エンジン２１４に送信し得る。クエリに応答して、メトリクス統合エンジン２１４は、メトリクスマッピングレジストリ２１２にアクセスして、ＧＥＴリクエストを満たすのに必要な測定値がどこに保存されているかを判定し得る。
【００３５】
ＧＥＴリクエストを満たすのに必要な測定値を有する集計サブシステム２１０を判定するために、メトリクス統合エンジン２１４は、ＦＱＭＩをメトリクスマッピングレジストリ２１２に提供し得る。メトリクスマッピングレジストリ２１２は、現在のマッピング及びいくつかの保持期間の過去のマッピングを分析して、測定値がどこに保存されているかを判定し得る。メトリクス統合エンジン２１４が、メトリクスマッピングレジストリ２１２によって提供された情報に少なくとも部分的に基づいて、測定値が保存されている集計サブシステム２１０の集計データストアを判定すると、メトリクス統合エンジン２１４は、各データセンタ２０６内の集計データストアにアクセスして、リクエストされた測定値を取得し得る。
【００３６】
一実施形態では、メトリクス統合エンジン２１４は、データセンタ２０６のそれぞれから取得された測定値をコンパイルする。データセンタ２０６のコンパイルされた測定値が不整合である場合、メトリクス統合エンジン２１４は、１つまたは複数の競合解消ルールを用いて、ＧＥＴリクエストに応答してどの測定値が提供されるのかを判定し得る。例えば、メトリクス統合エンジン２１４は、様々なデータセンタ２０６から、最多のサンプルカウントを有するレスポンスを選択し得る。メトリクス統合エンジン２１４がデータセンタ間の競合が存在する場合はその競合を解消すると、メトリクス統合エンジン２１４は、測定値をフロントエンドサーバ２０４に提供し得る。こうして、フロントエンドサーバ２０４は、ＧＥＴリクエストを、リクエストしているエンティティに測定値を提供することによって満たすことが可能になり得る。
【００３７】
フロントエンドサーバ２０４は、一部の実施形態ではさらに、様々なメトリクスの測定値を、測定値が集計されるとすぐにオートスケールグループの１つまたは複数のコンピューティングリソースマネージャに提供するように構成される。メトリクスマッピングレジストリ２１２は、オートスケールグループのコンピューティングリソースに対する１つまたは複数のエントリを保持し得、このエントリは、保持期間ごとに、これらのコンピューティングリソースに対する測定値を含む様々なデータセンタ２０６内の集計データストアを指定し得る。さらに、メトリクス統合エンジン２１４は、メトリクスマッピングレジストリ２１２に周期的にアクセスして、これらの測定値を含むこれらの集計データストアを識別するように構成され得る。このことによって、メトリクス統合エンジン２１２が、これらのコンピューティングリソースに対する測定値を取得し測定値をフロントエンドサーバ２０４に提供することが可能になり得る。フロントエンドサーバ２０４は、オートスケールグループの１つまたは複数のコンピューティングリソースマネージャに測定値を送信して、コンピューティングリソースマネージャが、それに応じて、コンピューティングリソースをスケールすることを可能にし得る。一部の例では、１つまたは複数のコンピューティングリソースマネージャは、代わりにＧＥＴリクエストをフロントエンドサーバ２０４に送信し得、フロントエンドサーバは、上記の処理を行って、１つまたは複数のコンピューティングリソースに対するリクエストされた測定値を取得することによってＧＥＴリクエストを満たし得る。
【００３８】
上述のように、コンピューティングリソースモニタリングサービスは、１つまたは複数のデータセンタ内に、１つまたは複数の分割サブシステムを含み得る。分割サブシステムは、測定値をカスタマーコンピュータシステムから集計サブシステムへ保存のために発行するように集合的に構成された１つまたは複数のコンピュータシステムを含み得る。したがって、図３は、少なくとも一実施形態による、コンピューティングリソースモニタリングサービスの分割サブシステム３０２が、様々なカスタマーコンピュータシステムからの測定値を様々な論理パーティションに分割し、各論理パーティションの測定値を１つまたは複数の集計サブシステム３１２に配信する環境３００の具体例を示す。分割サブシステム３０２は、メトリクス採集エンジン３０４を含み得、このメトリクス採集エンジン３０４は、フロントエンドサーバから、シリアライズされた測定値を取得するように構成された分割サブシステム３０２の１つまたは複数のコンピュータシステムのモジュールであり得る。
【００３９】
メトリクス採集エンジン３０４は、メトリクスマッピングレジストリ３１０にアクセスして、フロントエンドサーバから取得された測定値を、１つまたは複数の集計サブシステム３１２で保存するために、１つまたは複数の論理パーティションに分割する方法を判定し得る。例えば、メトリクス採集エンジン３０４は、メトリクスマッピングレジストリ３１０を用いて、特定の保持期間における論理パーティションの集計サブシステム３１２に対するマッピングを取得し得る。メトリクス採集エンジン３０４は、受信した測定値を、測定値ごとの受信したＦＱＭＩ、各測定値のタイムスタンプ及びメトリクスマッピングレジストリ３１０によってマッピングを通じて定義されたようないくつかの集計サブシステム３１２に少なくとも部分的に基づいて、１つまたは複数の論理パーティションに分割し得る。
【００４０】
ＦＱＭＩは、上述のように、測定値に対するメタデータハッシュであり得る。ＦＱＭＩの一部は、関連するメトリクスに対する論理パーティションを判定するのに用いられ得る。ＦＱＭＩの別の一部は、論理パーティション内の測定値の識別に用いられ得る。測定値の分割はコンシステントハッシュ法で行われ、集計サブシステム３１２が特定のデータセンタで追加または削除されるときに集計サブシステム３１２との間で送信される測定値の量を最小にし得る。測定値の分割はまた、測定値ごとの測定値のタイムスタンプに少なくとも部分的に基づいて行われて、クロックスキューによる影響を除外し得る。
【００４１】
メトリクス採集エンジン３０４が、取得した測定値を、メトリクスマッピングレジストリ３１０のマッピングに少なくとも部分的に基づいて１つまたは複数の論理パーティションに分割すると、メトリクス採集エンジン３０４は、１つまたは複数の論理パーティションの測定値を、１つまたは複数のファイルベースのキュー３０８内に配置し得る。各ファイルベースのキュー３０８は、図３に示すように、単一の集計サブシステム３１２に結び付けられ得る。各論理パーティションは、マッピングに少なくとも部分的に基づいて特定の集計サブシステム３１２にマッピングされ得るので、ファイルベースのキュー３０８の特定の集計サブシステム３１２に対するこの結び付きは、ファイルベースのキュー３０８に関連付けられた論理パーティションに少なくとも部分的に基づき得る。各ファイルベースのキュー３０８内の測定値は、測定値の時系列に少なくとも部分的に基づいて、一定の時間間隔で（例えば、数ミリ秒ごと、数秒ごとなど）バッチ処理され、各集計サブシステム３１２に非同期的に配信され得る。
【００４２】
各ファイルベースのキュー３０８内で、測定値はさらに、測定値ごとのタイムスタンプに少なくとも部分的に基づいて部分分割され得る。このことによって、分割サブシステム３０２が、最新の測定値が第１に集計サブシステム３１２に配信されるように測定値の配信に優先順位をつけることが可能になり得る。一実施形態では、ファイルベースのキュー３０８が容量に達した場合、分割サブシステム３０２は、最も古いタイムスタンプを有する測定値を識別し、これらの測定値をキュー３０８からパージする。さらに、最も古い保持期間よりも以前のタイムスタンプを有する測定値も、分割サブシステム３０２からパージされ得る。このことによって、メトリクス採集エンジン３０４が、カスタマーコンピュータシステムから測定値を取得し得たフロントエンドサーバから取得された新規の測定値を、ファイルベースのキュー３０８に連続して追加することが可能になり得る。
【００４３】
分割サブシステム３０２は、さらに、いかなる集計サブシステム３１２にも関連しない別個の未分割のキューであり得る未来観察キュー３０６を含み得る。メトリクス採集エンジン３０４は、未来のタイムスタンプを有する測定値（例えば、最も新しい保持期間よりも後のタイムスタンプを有する測定値）を未来観察キュー３０６に転送し得る。なぜなら、メトリクスマッピングレジストリ３１０は、これらの測定値を含むであろう保持期間における論理パーティションの集計サブシステム３１２に対するマッピングを含まないことがあるからである。こうして、メトリクス採集エンジン３０４は、未来観察キュー３０６の測定値を、これらの測定値のタイムスタンプが現在となりマッピングが測定値を論理パーティションに保存し論理パーティションの測定値を対応する集計サブシステム３１２に送信するために利用可能になった場合のみ、処理し得る。
【００４４】
上述のように、コンピューティングリソースモニタリングサービスは、各データセンタ内に、リアルタイムでメトリクスの測定値を集計し、各種メトリクスに対する時系列の測定値を与えるように構成された１つまたは複数の集計サブシステムを含み得る。集計サブシステムは、測定値を１つまたは複数の集計データストア内に保存すること及びこれらの測定値をカスタマーコンピュータシステム及び他のエンティティからのＧＥＴリクエストを満たすのに利用可能にすることという上記のタスクを行うように集合的に構成された１つまたは複数のコンピュータシステムを含み得る。したがって、図４は、少なくとも一実施形態による、集計サブシステム４０２が、測定値の集計を行い、１つまたは複数のデータストア４０８内に保存された測定値に対するリードアクセスを提供する環境４００の具体例を示す。環境４００では、集計サブシステム４０２は、メトリクス処理エンジン４０４を含み得る。このメトリクス処理エンジン４０４は、集計サブシステム４０２の１つまたは複数のコンピュータシステム内で動作するモジュールを備え得る。メトリクス処理エンジン４０４は、様々な分割サブシステムの論理パーティションから測定値を、１つまたは複数のデータストア４０８に保存するために受信し得る。ＰＵＴリクエストに応答して、メトリクス処理エンジン４０４は、受信した１つまたは複数の測定値を、専用集計データストア４０８による非同期的な処理のためにファイルベースのキュー４０６内に配置し得る。
【００４５】
各集計データストア４０８は、１つまたは複数のストレージデバイスと、ファイルベースのキュー４０６から測定値を取得して測定値を１つまたは複数のストレージデバイス内に保存するように構成された少なくとも１つのモジュールとを備え得る。一実施形態では、集計データストア４０８は、ファイルベースのキュー４０６から測定値を取得し、同一の集計期間の同一のメトリクスの測定値が集計データストア４０８内に保存されているかどうかを判定する。保存されている場合、集計データストア４０８は、特定のメトリクスの測定値を集計するために、保存されている測定値及びキュー４０４からの測定値をデシリアライズし得る。集計データストア４０８は、２つの測定値のセットの集計の結果を取得し、上記のバイナリシリアライゼーションフォーマットを用いて、集計された測定値をシリアライズし得る。集計された測定値がシリアライズされると、集計データベース４０８は、これらの測定値を、データストア４０８の１つまたは複数のストレージデバイス内に保存し、最近の測定値の保存が成功したという通知をメトリクス処理エンジン４０４に送信し得る。あるいは、測定値が集計期間中に観察されたのが初めてであった場合、測定値は既にバイナリシリアライゼーションフォーマットであるので、デシリアライズの必要なしに、単に集計データストア４０８内に保存され得る。メトリクス処理エンジン４０４が、測定値の集計データストア４０８内への保存が成功したことの確認を受信すると、メトリクス処理エンジン４０４は、メトリクスマッピングレジストリ４１０にアクセスして、マッピング内のエントリを修正して、集計サブシステム４０２内の測定値の保存完了が成功したことを指定し得る。
【００４６】
メトリクス処理エンジン４０４は、コンピューティングリソースモニタリングサービスのメトリクス統合エンジン４１０からのＧＥＴリクエストも処理するように構成され得る。上述のように、メトリクスマッピングレジストリは、論理パーティション及び測定値の、各データセンタ内の集計サブシステム４０２に対するマッピングを含み得る。メトリクス統合エンジンは、このマッピングを用いて、カスタマーコンピュータシステムからのＧＥＴリクエストを満たすのに必要な測定値を有する集計サブシステム４０２を識別し得る。マッピングに少なくとも部分的に基づいて、メトリクス統合エンジンは、リクエストを、これらの識別された１つまたは複数の集計サブシステム４０２のそれぞれのメトリクス処理エンジン４０４に送信して、必要とされる測定値を取得し得る。
【００４７】
メトリクス処理エンジン４０４がメトリクス統合エンジンからＧＥＴリクエストを受信すると、メトリクス処理エンジン４０４は、どの集計データストア４０８がリクエストを満たすのに必要な測定値を有しているかを判定し得る。メトリクス処理エンジン４０４は、ＦＱＭＩ及び時間範囲を含むクエリを各集計データストア４０８に送信し得る。各集計データストア４０８は、提供された情報を用いて、リクエストを満たすのに用いられ得る測定値を識別し得る。１つまたは複数の測定値が識別された場合、集計データストア４０８は、これらの測定値をメトリクス処理エンジン４０４に提供し得る。メトリクス処理エンジン４０４は、ＧＥＴリクエストを満たすのに用いられ得る測定値をコンパイルし、さらなる処理のために、コンパイルされた測定値をメトリクス統合エンジン４１０に提供し得る。
【００４８】
一実施形態では、集計データストア４０８は、最も古い保持期間がそれよりも後の保持期間に置き換わると、１つまたは複数のストレージデバイスから期限切れの測定値をパージするように構成される。例えば、コンピュータリソースモニタリングサービスは、１つまたは複数の連続した保持期間に対するＧＥＴリクエストを扱い得る。新規の保持期間が開始すると、コンピューティングリソースモニタリングサービスは、カスタマーコンピュータシステムまたは他のコンピューティングリソースからのＧＥＴリクエストを満たすために多くの連続した保持期間を保持し得る。コンピューティングリソースモニタリングサービスは、期限終了の対象となったがまだパージされていない可能性がある、より古い保持期間に対する測定値も保持し得る。このより古い保持期間に対する測定が期限終了の対象となったとき、集計データストア４０８は、このより古い保持期間内のタイムスタンプを有する測定値をパージし得る。
【００４９】
上述のように、カスタマーコンピュータシステムは、コンピューティングリソースモニタリングサービス内の１つまたは複数の集計サブシステムを用いた集計及び保存に先立って、測定値の分割を内部的に行い得る。このアーキテクチャによって、コンピューティングリソースモニタリングサービスはカスタマーコンピュータシステムの論理パーティションからシリアライズされた測定値を直接取得し得るので、コンピューティングリソースモニタリングサービスが、図２及び図３に関連して上記した１つまたは複数の分割サブシステムを保持する必要性がなくなり得る。したがって、図５は、少なくとも一実施形態による、カスタマーコンピュータシステム５０２が、測定値を様々な論理パーティションに分割し、これらの測定値をコンピューティングリソースモニタリングサービスの１つまたは複数の集計サブシステム５１２に配信する環境５００の具体例を示す。
【００５０】
環境５００では、カスタマーコンピュータシステム５０２は、メトリクス採集エンジン５０４を含み得る。このメトリクス採集エンジン５０４は、カスタマーコンピュータシステム５０２に関連するコンピューティングリソースから、またはカスタマーコンピュータシステム５０２自体から測定値を取得するように構成されたカスタマーコンピュータシステム５０２のモジュールであり得る。メトリクス採集エンジン５０４は、図３に関連して上記されたメトリクス採集エンジンと同様の動作をし得る。例えば、メトリクス採集エンジン５０４は、コンピューティングリソースモニタリングサービス内のメトリクスマッピングレジストリ５１０にアクセスして、取得した測定値を、１つまたは複数の集計サブシステム５１２に保存するために１つまたは複数の論理パーティションに分割する方法を判定し得る。メトリクス採集エンジン５０４は、受信した測定値を、測定値ごとの受信したＦＱＭＩ、各測定値のタイムスタンプ及びメトリクスマッピングレジストリ５１０によってマッピングを通じて定義されたようないくつかの集計サブシステム５１２に少なくとも部分的に基づいて、１つまたは複数の論理パーティションに分割し得る。図２に関連して上記した処理とは対称的に、カスタマーコンピュータシステム５０２は、測定値ごとのメタデータを取得し、ハッシュ関数を用いて測定値に対するＦＱＭＩを生成し得る。さらに、カスタマーコンピュータシステム５０２は、測定値を、メトリクス採集エンジン５０４による処理のために、シリアライズされたフォーマットに変換し得る。カスタマーコンピュータシステム５０２から取得された特定の測定値のシリアライズされたフォーマットは、ＦＱＭＩ、測定値のタイムスタンプ、観察のための測定の単位及び測定値自体を含み得る。
【００５１】
メトリクス採集エンジン５０４が、測定値を、メトリクスマッピングレジストリ５１０のマッピングに少なくとも部分的に基づいて、１つまたは複数の論理パーティションに分割すると、メトリクス採集エンジン５０４は、各論理パーティションの１つまたは複数の測定値を、対応するファイルベースのキュー５０８内に配置し得る。図３に示したファイルベースのキューと同様に、各ファイルベースのキュー５０８は、単一の集計サブシステム５１２に結び付けられ得る。各ファイルベースのキュー５０８の測定値は、測定値の時系列に少なくとも部分的に基づいて、一定の時間間隔で（例えば、数ミリ秒ごと、数秒ごとなど）バッチ処理され、各集計サブシステム５１２に非同期的に配信され得る。例えば、各時間間隔で、カスタマーコンピュータシステム５０２は、測定値を含むＰＵＴリクエストを、マッピングに少なくとも部分的に基づいて選択された１つまたは複数の集計サブシステム５１２に送信し得る。ＰＵＴリクエストは、これらの集計サブシステム５１２に、カスタマーコンピュータシステム５０２及び集計サブシステム５１２の両方に互換性のある通信プロトコルを用いて送信され得る。ＰＵＴリクエストが成功しなかった場合、通信プロトコルは、論理パーティション内の測定値の送信が失敗したことを指定する通知を生成させ得る。さらに、通信プロトコルにより、カスタマーコンピュータシステム５０２は、カスタマーコンピュータシステム５０２と集計サブシステム５１２の間の通信チャネルをリフレッシュし得る。このことによって、カスタマーコンピュータシステム５０２が、ＰＵＴリクエストの集計サブシステム５１２への送信をもう一度試みることが可能になり得る。
【００５２】
各ファイルベースのキュー５０８内で、測定値はさらに、測定値のタイムスタンプに少なくとも部分的に基づいて、部分分割され得る。このことによって、カスタマーコンピュータシステム５０２は、最新の測定値が集計サブシステム５１２に第１に配信されるように、測定値の配信に優先順位をつけることが可能になり得る。最も古い保持期間よりも以前のタイムスタンプを有する測定値は、カスタマーコンピュータシステム５０２からパージされ得、または、代替のメトリクスモニタリングサービスに配信され得る。このことによって、メトリクス採集エンジン５０４が、カスタマーコンピュータシステム５０２によって生成されたまたは取得された新規の測定値を、ファイルベースのキュー５０８に連続的に追加することが可能になり得る。
【００５３】
図３に示した分割サブシステムと同様に、カスタマーコンピュータシステム５０２は、さらに、いかなる集計サブシステム５１２にも関連しない別個の未分割のキューであり得る未来観察キュー５０６を含み得る。メトリクス採集エンジン５０４は、未来のタイムスタンプを有する測定値（例えば、最も新しい保持期間よりも後のタイムスタンプを有する測定値）を未来観察キュー５０６に転送し得る。なぜなら、メトリクスマッピングレジストリ５１０は、これらのタイムスタンプを有する測定値を含むであろう保持期間における論理パーティションの集計サブシステム５１２に対するマッピングを含まないことがあるからである。このようにして、メトリクス採集エンジン５０４は、未来観察キュー５０６の測定値を、これらの測定値のタイムスタンプが現在となりマッピングがこれらの測定値に対する論理パーティションを生成し測定値を論理パーティションから対応する集計サブシステム５１２に送信するために利用可能になった場合のみ、処理し得る。
【００５４】
代替実施形態では、メトリクス採集エンジン５０４は、未分割の測定値を、コンピューティングリソースモニタリングサービスの任意の数の集計サブシステム５１２に提供することができる。１つまたは複数の集計サブシステム５１２は、未分割の測定値を取得すると、メトリクスマッピングレジストリ５１０にアクセスして、測定値ごとのＦＱＭＩ及びタイムスタンプに少なくとも部分的に基づいて、どの集計サブシステム５１２が未分割の測定値を保存するのに用いられるかを判定し得る。集計サブシステム５１２が、メトリクスマッピングレジストリ５１０の１つまたは複数のマッピングに少なくとも部分的に基づいて、未分割の測定値が別の集計サブシステムのメモリ内データストア内に保存されることを判定した場合、集計サブシステムは、これらの未分割の測定値を当該他の集計サブシステムに送信し得、次いで、当該他の集計サブシステムは、測定値をその１つまたは複数のメモリ内データストア内に保存し得る。
【００５５】
図６は、少なくとも一実施形態による、メタデータが測定値とともに提供されて、測定値の今後の保存を、さらなるメタデータの送信の必要なしに可能とする環境６００の具体例を示す。環境６００では、カスタマーコンピュータシステム６０２は、ＰＵＴリクエストをコンピューティングリソースモニタリングサービスに送信して、特定のメトリクスの測定値を１つまたは複数のデータセンタ６０６の集計サブシステム６１０内に保存し得る。ＰＵＴリクエストは、保存される測定値に加えて、測定値に対するメタデータ６０４を含み得る。このメタデータ６０４は、コンピューティングリソースモニタリングサービス内で関連する測定値を固有に識別し得る１つまたは複数のメトリクス属性を含み得る。例えば、メタデータ６０４は、ＰＵＴリクエストを送っているカスタマーコンピュータシステム６０２に関連するまたは測定値の生成に関与している別のコンピューティングリソースに関連するカスタマーのアカウント番号、コンピューティングリソースの管理に関与している特定のサービスの名前（例えば、仮想コンピュータシステムサービス、データベースサービスなど）、測定値のディメンション（例えば、キー／値のペア）及び測定値を生成しているコンピューティングリソースの識別子を、個々にまたは組み合わせて指定し得る。
【００５６】
コンピューティングリソースモニタリングサービスがカスタマーコンピュータシステム６０２から測定値及びメタデータ６０４を受信すると、コンピューティングリソースモニタリングサービスは、ハッシュ関数を用いて、保存される測定値に対するＦＱＭＩとして用いることができるメタデータ６０４のハッシュを生成し得る。さらに、コンピューティングリソースモニタリングサービスは、バイナリシリアライゼーションフォーマットを用いて、保存される測定値を圧縮し得る。このバイナリシリアライゼーションフォーマットで、シリアライズされた測定値は、メタデータ６０４をハッシュすることによって生成されたＦＱＭＩ、測定値のタイムスタンプ、測定値に対する測定の単位及び測定値自体を含み得る。コンピューティングリソースモニタリングサービスが測定値をシリアライズされたフォーマットに変換すると、コンピューティングリソースモニタリングサービスは、測定値を各データセンタ６０６内の分割サブシステム６０８に送信し得る。分割サブシステム６０８は、受信した測定値のＦＱＭＩ及びタイムスタンプならびに論理パーティションの集計サブシステム６１０に対するマッピングに指定されたような１つまたは複数の保持期間における特定のデータセンタ６０６内のいくつかのアクティブな集計サブシステム６１０に少なくとも部分的に基づいて、測定値の保存のために、複数の論理パーティションからある論理パーティションを判定し得る。分割サブシステム６０８は、メトリクスマッピングレジストリから取得された論理パーティションの集計サブシステム６１０に対するマッピングに応じて、論理パーティションに関連付けられたキューから、測定値を、データセンタ６０６内の集計サブシステム６１０に送信し得る。
【００５７】
一実施形態では、コンピューティングリソースモニタリングサービスがメタデータ６０４をハッシュして、保存される測定値に対するＦＱＭＩを生成すると、カスタマーコンピュータシステム６０２は、メタデータ６０４が期限切れしていない限り、または、カスタマーコンピュータシステム６０２がコンピューティングリソースモニタリングサービスとの間に新規のセッションを開始していない限り、メトリクスの測定値を今後送信するためにメタデータ６０４を繰り返す必要がもはやなくなる。例えば、カスタマーコンピュータシステム６０２が、後の時点でさらなるＰＵＴリクエストをコンピューティングリソースモニタリングサービスに送る場合、カスタマーコンピュータサービス６０２は、メタデータ６０４の代わりに、同一のメトリクスに対応する測定値に対するＦＱＭＩ（例えば、メタデータハッシュ６１２）を提供し得る。コンピューティングリソースモニタリングサービスは、測定値をコンピューティングリソースモニタリングサービスのデータストア内に保存することを見越して、測定値及びＦＱＭＩをシリアライズし得る。あるいは、カスタマーコンピュータシステム６０２が測定値とともにＦＱＭＩを与えない場合、コンピューティングリソースモニタリングサービスは、メトリクスマッピングレジストリ内のメトリクスのエントリに少なくとも部分的に基づいて用いられるＦＱＭＩを、測定値及びメトリクスに少なくとも部分的に基づいて識別し得る。例えば、ＰＵＴリクエストが特定の時系列において連続する測定値を含む場合、コンピューティングリソースモニタリングサービスは、ＦＱＭＩを、時系列において以前に取得された測定値に少なくとも部分的に基づいて判定し得る。これらの以前に取得された測定値は、コンピューティングリソースモニタリングサービスに対する測定値を保存する先のＰＵＴリクエストを通して取得され得ている。この、先のＰＵＴリクエストは、ＦＱＭＩの生成元であるメタデータ６０４を含み得る。
【００５８】
任意の時点で、カスタマーコンピュータシステム６０２は、ＧＥＴリクエストを送って、コンピューティングリソースモニタリングサービスの１つまたは複数の集計サブシステム６１０から測定値を検索し得る。ＧＥＴリクエストは、取得される測定値に対するメタデータ６０４を含み得る。コンピューティングリソースモニタリングサービスは、受信したメタデータ６０４をハッシュして、求められている測定値の位置を見つけるのに用いることができるＦＱＭＩを生成し得る。コンピューティングリソースモニタリングサービスは、ＧＥＴリクエストを満たすのに必要な測定値を取得するために、ＦＱＭＩとともにクエリをメトリクス統合エンジン６１４に送信し得る。クエリに応答して、メトリクス統合エンジン６１４は、メトリクスマッピングレジストリにアクセスして、ＧＥＴリクエストを満たすのに必要な測定値がどこに保存されているかを判定し得る。メトリクス統合エンジン６１４は、メトリクスマッピングレジストリにアクセスし、測定値のＦＱＭＩ及びタイムスタンプを用いて、どの集計サブシステム６１０がＧＥＴリクエストを満たすのに必要であるデータを有しているかを判定し得る。メトリクス統合エンジン６１４が、メトリクスマッピングレジストリによって提供された情報に少なくとも部分的に基づいて、測定値が保存されている集計サブシステム６１０の集計データストアを判定すると、メトリクス統合エンジン６１４は、各データセンタ６０６内の集計データストアにアクセスして、リクエストされた測定値を取得し得る。
【００５９】
上述のように、コンピューティングリソースモニタリングサービスは、オートスケールグループの１つまたは複数のコンピューティングリソースマネージャに対して測定値を利用可能にして、これらのコンピューティングリソースマネージャが、オートスケールグループ内でさらなるコンピューティングリソースが必要かどうかを、取得した測定値に少なくとも部分的に基づいて、迅速に判定することを可能にし得る。したがって、図７は、少なくとも一実施形態による、１つまたは複数のリソースの自動スケーリングが行われるかどうかを判定するのに、測定値の採集が用いられる環境７００の具体例を示す。この例では、ネットワーク化された環境７００は、ネットワーク７０６を介して、クライアントデバイス７０６及びサーバコンピュータ７４２とデータ通信しているコンピューティングリソースサービスプロバイダ７０４を含む。一実施形態では、サーバコンピュータ７４２は、インスタンス７２０（例えば、コンピューティングリソース）を実装するのに用いられる１つまたは複数のコンピュータハードウェアデバイスを備える。例えば、サーバコンピュータ７４２は、ストレージデバイス、仮想化ストレージデバイス、ネットワークデバイスなどのコンピューティングリソースのタイプを実装するハードウェアを含み得る。さらに、実装されたコンピューティングリソースは、分散型コンピューティングリソースサービスプロバイダ７０４のカスタマーによって、プログラムでかつ遠隔から管理され得る。
【００６０】
サーバコンピュータ７４２は、コンピューティングリソースサービスプロバイダ７０４によって作成された１つまたは複数のインスタンス７２０をそれぞれが実行可能な複数のコンピュータシステムデバイスを含む。一実施形態では、サーバコンピュータ７４２はそれぞれ、プロセッサ、データストア、入出力バス及び／またはインスタンス７２０を実行する当技術分野で既知の任意の他のコンポーネントを含む。さらに、インスタンス７２０は、仮想マシンインスタンスであり得る。当技術分野で既知のように、仮想マシンインスタンスは、物理マシンのようにプログラムを実行するマシン（すなわち、コンピュータ）上のソフトウェア実装のインスタンスである。例えば、サーバコンピュータ７４２はそれぞれ、インスタンス７２０を実装可能なインスタンスマネージャ７１８を実行するように構成され得る。例えば、インスタンスマネージャ７１８は、ハイパーバイザー、仮想化層または単一のサーバコンピュータ７４２上で複数のインスタンス７２０の実行を可能にするように構成された別のタイプのプログラムであり得る。前述のように、インスタンス７２０はそれぞれ、アプリケーションの全部または一部を実行するように構成され得る。ネットワーク化された環境７００は、互いから地理的に異なり得る１つまたは複数のデータセンタにわたるものであり得る。さらに、図７に示したネットワーク化された環境７００は、コンピューティングリソースサービスプロバイダ７０４によって採用されるいくつかの実施形態の１つであり得る。
【００６１】
一実施形態では、コンピューティングリソースサービスプロバイダ７０４は、ロードバランサデータベース７１０、インスタンスサービス７１２、配置サービス７２６、オートスケールサービス７３０、メンテナンスサービス７３２、コンピューティングリソースモニタリングサービス７３４、ロードバランシングサービス７３６及び／または他のコンポーネントを含む。ロードバランサデータベース７１０は、ロードバランサデータ７４２を含み得る。例えば、ロードバランサデータベース７１０は、オートスケールグループ７０２に関連するロードバランサ７４０の１つまたは複数のレコードを含み得る。ロードバランサデータ７４６のレコードはそれぞれ、ネットワーク化された環境７００のロードバランサ７４０に対応し得る。
【００６２】
インスタンスサービス７１２は、カスタマーによって提供されたプリファレンスのセットに少なくとも部分的に基づいて、インスタンス７２０を作成する。一実施形態では、インスタンスサービス７１２は、クライアントデバイス７０６のカスタマーからリクエスト７１６を受信して、１つまたは複数のインスタンス７３２を作成し、作成されたインスタンス７２０を必要に応じてオートスケールグループ７０２に割り当てる。さらに、クライアントデバイス７０６のカスタマーから受信したリクエスト７１６は、リクエストされたインスタンス７２０の実行を開始する時間も示し得る。リクエストを受信したことに応答して、インスタンスサービス７１２は、インスタンス７２０を作成する。様々な実施形態では、オートスケールサービス７３０は、リクエストを受信しコマンドをインスタンスサービス７１２に送信してインスタンス７２０を作成し、インスタンスが、例えばオートスケールグループ７０２のメタデータをインスタンス７２０と関連付けることによって、オートスケールグループに関連付けられるようになる。一実施形態では、インスタンスサービス７１２は、クライアントデバイス７０６及び／またはオートスケールサービス７３０からのリクエストに応答して、インスタンスをスタンバイ状態にし得、または、オートスケールグループからインスタンスを切り離し得る。例えば、オートスケールサービス７３０は、リクエストをインスタンスサービス７１２に送信して、リクエスト７１６に応じてオートスケールグループ７０２から切り離されているインスタンス７２０に関連するオートスケールグループ７０２のメタデータを削除し得る。さらに、オートスケールサービス７３０は、ロードバランサ７４０から、切り離されたインスタンスをデアサインし得る。
【００６３】
カスタマーは、コンピューティングリソースサービスプロバイダ７０４と（適切に構成かつ認証されたＡＰＩ呼び出しを介して）インタラクトして、サーバコンピュータ７４２上で作成されコンピューティングリソースサービスプロバイダ７０４によって運用されるオートスケールグループ７０２に関連するインスタンス７２０を提供し、運用しかつ管理し得る。さらに、カスタマーは、１つまたは複数のオートスケールグループ７０２を作成し得、オートスケールグループ７０２は、インスタンス７２０の論理集合であり得る。さらに、インスタンス７２０は、オートスケールグループ７０２に割り当てられ得、または、オートスケールグループ７０２のメンバーであり得る。オートスケールサービス７３０は、カスタマーが様々なオートスケールグループ７０２とインタラクトし、管理を行うことを可能にし得る。例えば、カスタマーは、オートスケールサービス７３０を通じて、オートスケールグループ７０２に対する最大容量または最小容量を設定し得る。次いで、オートスケールグループ７０２は、カスタマーによって提供された設定を維持するために、オートスケールグループに割り当てられたインスタンス７２０を管理し得る。様々な実施形態では、カスタマーは、コンピューティングリソースサービスプロバイダ７０４によって提供された管理コンソールを通じて、上記のようにオートスケールグループ７０２を作成し管理することができる。
【００６４】
管理コンソールは、ウェブページとしてカスタマーに触れ得、ウェブページとインタラクト（例えば、ブラウザアプリケーションを通じて）することによって、カスタマーは、ＡＰＩ呼び出しを生成させ得る。生成されたＡＰＩ呼び出しは、コンピューティングリソースサービスプロバイダ７０４またはそのコンポーネントに、カスタマーによって示された様々な動作を行わせ得る。カスタマーがオートスケールグループ７０２を作成すると、カスタマーは、リクエスト７１６を送ることによって、１つまたは複数のロードバランサをオートスケールグループ７０２に割り当て得る。この場合、リクエスト７１６は、オートスケールサービス７３０またはコンピューティングリソースサービスプロバイダ３０４の他のコンポーネントによって処理され得る。オートスケールグループ７０２のインスタンス７２０は、ウェブサイトをサポートするサーバとして動作するため、ビジネスアプリケーションを動作させるため、または一般に、カスタマーに対してコンピュータ処理能力として機能するためなどの様々な目的のために用いられ得る。インスタンス７２０の他の用途としては、データベースアプリケーション、電子商アプリケーション、ビジネスアプリケーション及び／または他のアプリケーションをサポートすることがあり得る。さらに、ロードバランサ７４０は、トラフィックをオートスケールグループ７０２の様々なインスタンス７２０に割り振って、上記の様々な目的のためのインスタンスの動作を可能にし、オートスケールグループ７０２のインスタンス７２０のオーバーロードを防ぎ得る。図７にはインスタンスサービス７１２を示しているが、仮想化またはインスタンス化を使用せず、代わりに、専用のまたは共用のコンピュータ／サーバ及び／または他の物理的デバイス上でコンピューティングリソースを提供するコンピュータシステムまたはコンピュータシステムサービスなどの、任意の他のコンピュータシステムまたはコンピュータシステムサービスが、コンピューティングリソースサービスプロバイダ７０２によって用いられ得る。
【００６５】
配置サービス７２６は、インスタンス７２０を、サーバコンピュータ７４２の１つまたは複数に供給する。一実施形態では、配置サービス７２６は、新規のインスタンス７２０の示したオートスケールグループ７０２に少なくとも部分的に基づいて、新規のインスタンス７２０を供給するサーバコンピュータ７４２を判定する。例えば、配置サービス７２６は、インスタンス７２０を実行するのに適切な容量を有する１つまたは複数のサーバコンピュータ７４２を識別し得る。この目的のため、配置サービス７２６は、以下に記載するように、データストアに保存されたリソースデータ７１０から各サーバコンピュータ７４２の容量を判定し、それに応じて、インスタンス７３０を供給する。オートスケールサービス７３０は、インスタンス７２０をリクエストしたカスタマーによって定義された状況に少なくとも部分的に基づいて、以前リクエストされたインスタンス７２０の集合の容量を自動的にスケールアップまたはスケールダウンする。例えば、オートスケールサービス７３０は、デマンドが途切れている間、カスタマーに割り当てられたインスタンス７２０の数を減らし得、デマンドがピークの間、カスタマーに割り当てられたインスタンス７２０の数を増やし得る。
【００６６】
一実施形態では、オートスケールサービス７３０は、使用率が低いかつ／またはアイドル時間の期間中、リクエストされたインスタンス７２０のサブセットを削減する。例えば、オートスケールサービス７３０は、カスタマーによってリクエストされたインスタンス７２０の量が冗長であることかつ／または過度であることを判定し得る。これに応じて、オートスケールサービス７３０は、カスタマーに割り当てられた一定の数のインスタンス３２０を終了させ、カスタマーに割り当てられた残りの数のインスタンス７２０が冗長にならないようにかつ／または過度にならないようにし得る。別の実施形態では、オートスケールサービス７３０は、使用率が所定閾値を超えない場合、リクエストされたインスタンス７３０のサブセットを削減し得る。同様に、オートスケールサービス７３０は、高使用率の期間中、インスタンス３２０の量を増やす。一実施形態では、オートスケールサービス７３０は、使用率が所定閾値を超えた場合、インスタンス７２０の量を増やし得る。
【００６７】
メンテナンスサービス７３２は、サーバコンピュータ７４２に対するメンテナンス、ソフトウェアの更新及び／またはファームウェアの更新をスケジュールする。一実施形態では、メンテナンスサービス７３２は、サーバコンピュータ７４２の利用可能容量に少なくとも部分的に基づいて、適切な時間に、メンテナンス及びソフトウェアの更新をスケジュールする。例えば、メンテナンスサービス７３２は、それぞれのサーバコンピュータ７４２が計画された利用可能性を有するときに、メンテナンス及びソフトウェアの更新をスケジュールし得る。一実施形態では、メンテナンスサービス７３２は、サーバコンピュータ７４２がいずれのインスタンス７２０もホストしていないと判定すると、サーバコンピュータ７４２にパッチを適用し再起動し得る。さらに、メンテナンスサービス７３２は、仮想マシンそれぞれに関連する新規のイメージをインスタンス化するのに先立って、必要であれば、インスタンス７４２に関連する仮想マシンにパッチを適用し得る。例えば、メンテナンスサービス７３２は、インスタンス７２０のヘルスステータスに少なくとも部分的に基づいて、マシンイメージのパッチをスケジュールし得る。一実施形態では、スケジュールされたメンテナンスが完了するまで、追加のインスタンスはサーバコンピュータ７４２に提供され得ない。
【００６８】
メンテナンスサービス７３２は、オートスケールグループ７０２及び／またはロードバランサ７４０に割り当てられたインスタンスを含むインスタンス７２０のヘルスステータスも周期的にまたは非周期的にチェックし得る。ヘルスチェックは、中央処理装置、メモリ、ネットワーキングインタフェース、オペレーティングシステム、アプリケーション及びインスタンス７２０の他のコンポーネントなどのインスタンス７２０の様々なコンポーネントの負荷、稼働率及び動作を判定することを含み得る。様々な実施形態では、メンテナンスサービス７３２が、ヘルスチェックに少なくとも部分的に基づいてインスタンス７２０がアンヘルシーであると判定すると、メンテナンスサービス７３２またはオートスケールサービス７３０などのサービスプロバイダ７０４の他のコンポーネントは、アンヘルシーなインスタンスをオートスケールグループ７０２から削除するワークフローを開始し得る。さらに、メンテナンスサービス７３２が、以前アンヘルシーであったインスタンス７２０がヘルシーステータスに戻ったと判定した場合、メンテナンスサービス７３２またはオートスケールサービス７３０などのサービスプロバイダ７０４の他のコンポーネントは、インスタンス７２０をサービス内に移動させ得、または、インスタンス７２０をオートスケールグループ７０２にアタッチし得る。さらに、ロードバランサ７４０に割り当てられたインスタンス７２２がヘルシーステータスに戻った場合、上記のように、オートスケールグループ７０２は、ロードバランサ７４０の状態を稼働中へと更新し得る。
【００６９】
コンピューティングリソースモニタリングサービス７３４は、インスタンス７２０に対応するリソースデータの収集に関与し得る。コンピューティングリソースモニタリングサービス７３４によって取得されたリソースデータは、中央処理装置、メモリ、ネットワーキングインタフェース、オペレーティングシステム、アプリケーション及びインスタンス７２０の他のコンポーネントなどの、インスタンス７２０の様々なコンポーネントの使用率を示し得る。この情報は、各種の様々な目的、例えば、リソースをオートスケールグループ７０２に割り当てるか割当てを解除するかを判定するために用いられ得る。さらに、この情報は、メンテナンスサービス７３２によって、インスタンス７２０及び／またはサーバコンピュータ７４２のヘルスを判定するのに用いられ得る。コンピューティングリソースモニタリングサービス７３４は、オートスケールグループ７０２に割り当てられたインスタンス７２０の全てに対する使用率の情報を取得し、集計し得る。
【００７０】
一実施形態では、コンピューティングリソースモニタリングサービス７３４は、オートスケールグループ７０２のインスタンス７２０に対する１つまたは複数のロードバランサ７４０から、１つまたは複数のＰＵＴリクエストを取得して、１つまたは複数のインスタンス７２０に対する測定値を、コンピューティングリソースモニタリングサービス７３４の１つまたは複数のメモリ内データストア内に保存する。各ＰＵＴリクエストは、測定値のメトリクス属性を指定している測定値ごとのメタデータを含み得る。コンピューティングリソースモニタリングサービス７３４は、フロントエンドサーバを通じて、ロードバランサ７４０から測定値及びメタデータを取得し得る。フロントエンドサーバは、メタデータ及びハッシュ関数を用いて、コンピューティングリソースモニタリングサービス７３４の集計データストア内に保存される測定値に対するＦＱＭＩを生成し得る。さらに、フロントエンドサーバは、測定値を、サービス７３４の１つまたは複数のデータセンタ内の分割サブシステムに発行するために、シリアライズされたフォーマットに変換し得る。フロントエンドサーバは、インスタンス７２０のシリアライズされた測定値を分割サブシステムに送信し得る。
【００７１】
分割サブシステムは、測定値のＦＱＭＩ及びタイムスタンプに少なくとも部分的に基づいて、複数の論理パーティションのうちどの論理パーティションが測定値を保存するのに用いられるのかを判定し得る。分割サブシステムは、メトリクスマッピングレジストリにアクセスし得る。このメトリクスマッピングレジストリは、論理パーティションの、１つまたは複数の保持期間においてアクティブである集計サブシステムに対するマッピングを提供し得る。このことによって、分割サブシステが、ＧＥＴリクエストを処理するために、コンピューティングリソースモニタリングサービス７３４のどの集計サブシステムに測定値が保存されるのかを判定することが可能になり得る。分割サブシステムは、単一の集計サブシステムに結び付けられた、選択された論理パーティションに関連するファイルベースのキュー内に測定値を保存し得る。
【００７２】
コンピューティングリソースモニタリングサービス７３４の集計サブシステムが分割サブシステムから測定値を取得すると、集計サブシステムは、同一の集計期間における同一のメトリクスの測定値が集計データストア内に保存されているかどうかを判定し得る。保存されている場合、集計データストアは、特定のメトリクスの測定値を集計するために、保存されている測定値及び分割サブシステムからの測定値をデシリアライズし得る。集計データストアは、２つの測定値のセットの集計の結果を取得し、集計した測定値を上記のバイナリシリアライゼーションフォーマットを用いてシリアライズし得る。集計された測定値がシリアライズされると、集計データストアは、これらの測定値を、データストアの１つまたは複数のストレージデバイス内に保存し、最近の測定値の保存が成功したという通知をメトリクス処理エンジン４０４に送信し得る。あるいは、測定値が集計期間中に観察されたのが初めてである場合、測定値は、デシリアライズの必要なしに、単に集計データストア内に保存され得る。
【００７３】
一実施形態では、コンピューティングリソースモニタリングサービス７３４のフロントエンドサーバは、さらに、特定の期間が経過した後に、かつ／または特定のメトリクスの測定値のスパイクなどのトリガとなるイベントに応答して、測定値が集計されるとすぐに、様々なメトリクスの測定値をオートスケールグループ７０２の１つまたは複数のインスタンスマネージャ７１８に提供するように構成されている。メトリクスマッピングレジストリは、オートスケールグループ７０２のインスタンス７２０に対する１つまたは複数のエントリを保持し得、これは、保持期間ごとに、これらのインスタンス７２０に対する測定値を含むコンピューティングリソースモニタリングサービス７３４の様々なデータセンタ内の集計データストアを指定し得る。さらに、コンピューティングリソースモニタリングサービス７３４のメトリクス統合エンジンは、メトリクスマッピングレジストリに周期的にアクセスして、これらの測定値を含むこれらの集計データストアを識別するように構成され得る。このことによって、メトリクス統合エンジンが、これらのインスタンス７２０に対する測定値を取得し測定値をフロントエンドサーバに提供することが可能になり得る。フロントエンドサーバは、測定値を、オートスケールグループ７０２の１つまたは複数のインスタンスマネージャ７１８に送信して、インスタンスマネージャ７１８が、それに応じて、インスタンス７２０を自動的にスケーリングすることを可能にし得る。一部の例では、１つまたは複数のインスタンスマネージャ７１８は、代わりにＧＥＴリクエストをコンピューティングリソースモニタリングサービス７３４に送信し得、コンピューティングリソースモニタリングサービス７３４は、上記の処理を行って１つまたは複数のインスタンス７２０に対するリクエストされた測定値を取得することによって、ＧＥＴリクエストを満たし得る。
【００７４】
一実施形態では、オートスケールグループ７０２の１つまたは複数のインスタンスマネージャ７１８がフロントエンドサーバから測定値を取得すると、１つまたは複数のインスタンスマネージャ７１８は、オートスケールグループ７０２の１つまたは複数のインスタンス７２０のいずれかの修正を行うかどうかを判定することができる。例えば、１つまたは複数のインスタンスマネージャ７１８は、特定のインスタンス７２０に対する取得した測定値に部分的に基づいて、インスタンスタイプを変更して、取得した測定値によってハイライトされた問題に対応し得る。例えば、１つまたは複数のインスタンスマネージャ７１８が、測定値に少なくとも部分的に基づいて、特定のインスタンス７２０がさらなる処理能力及びメモリを必要としていると判定した場合、１つまたは複数のインスタンスマネージャ７１８は、より大きい処理能力及びメモリをもたらすインスタンスを供給し得、したがって、１つまたは複数のインスタンスマネージャ７１８が、インスタンスアセットを元のインスタンスからこの新たに供給されたインスタンスに転送することを可能にする。
【００７５】
１つまたは複数のインスタンスマネージャ７１８は、特定の期間にわたる測定値の評価が終わった後に、１つまたは複数のインスタンス７２０の修正を行い得る。例えば、特定の保持期間における取得された測定値が、オートスケールグループ７０２を自動的にスケールする必要性を示している場合（例えば、インスタンス７２０の追加、インスタンス７２０の削除、既存のインスタンス７２０の修正など）、１つまたは複数のインスタンスマネージャ７１８は、さらなる保持期間における測定値を取得し評価するまで、オートスケールグループ７０２の修正を待ち得る。例えば、後続の保持期間における測定値がオートスケールグループ７０２のいかなる修正も行う必要がないことを示した場合、オートスケールグループ７０２を自動的にスケールする必要性を示す測定値を例外的とみなし得るので、１つまたは複数のインスタンスマネージャ７１８は、これらの修正を行わなくてもよい。
【００７６】
ロードバランシングサービス７３６は、カスタマーのインスタンス７２０によるリクエスト処理を容易にするために、コンピューティングリソースサービスプロバイダ７０４のカスタマーに提供され得る。様々な実施形態では、インスタンス７２０は、オートスケールグループ７０２に割り当てられ得、ロードバランササービス７３６は、トラフィックを、オートスケールグループ７０２に割り当てられたインスタンス７２２に割り振り得る。例えば、カスタマーは、コンピューティングリソースサービスプロバイダ７０４のリソースを使用してオートスケールグループ７０２に割り当てられたインスタンス７２０を用いてウェブサイトを動作させ得る。さらに、ウェブサイトは、ネットワーク７０６を介して、複数の他のカスタマーからリクエストを受信し得る。コンピューティングリソースサービスプロバイダ７０４は、ロードバランシングサービス７３６のロードバランサを構成して、リクエストの処理によって生じる負荷が、ウェブサイトを実行しているオートスケールグループ７０２のインスタンス７２０間で分散されるように、ウェブサイトを実行しているオートスケールグループ７０２のインスタンス７２０にリクエストを案内し得る。ロードバランシングサービス７３６は、リソース使用率を最適化しかつ／または特定のサーバコンピュータ７４２のオーバーロードを回避するために、リクエストを、ロードバランサに割り当てられたインスタンス７２０に割り振るように構成されたコンピュータシステムまたは仮想コンピュータシステムであり得る。例えば、ロードバランサは、サーバラックに接続されているかそうでなければデータセンタに含まれている物理的なハードウェアを含み得る。別の例では、ロードバランサは、サーバコンピュータ７４２によってサポートされる１つまたは複数の仮想マシンを含み得る。
【００７７】
上述のように、コンピューティングリソースモニタリングサービスは、様々なメトリクスの測定値を発行するためのエントリポイントとして機能し得る１つまたは複数の分割サブシステムを含み得る。分割サブシステムは、フロントエンドサーバから測定値を取得し、これらの測定値を、測定値ごとのＦＱＭＩ及びタイムスタンプならびにメトリクスマッピングレジストリによって提供されるようないくつかの集計サブシステムに少なくとも部分的に基づいて、論理パーティション内に分け得る。分割サブシステムは、これらの測定値を、メトリクスマッピングレジストリのマッピングに少なくとも部分的に基づいて、様々な集計サブシステムに提供し得る。したがって、図８は、少なくとも一実施形態による、メトリクスの測定値を、１つまたは複数の集計サブシステムに配信するために分割するプロセス８００の具体例を示す。プロセス８００は、コンピューティングリソースモニタリングサービスのフロントエンドサーバによって行われ得、このフロントエンドサーバは、様々なコンピューティングリソース及び／またはカスタマーコンピュータシステムから測定値を取得し得、コンピューティングリソースモニタリングサービスの上記分割サブシステムに測定値を提供するに先立って動作を行うものである。この分割サブシステムは、プロセス８００の様々な動作を行い得るものである。
【００７８】
任意の時点で、フロントエンドサーバは、カスタマーコンピュータシステムまたは他のコンピューティングリソースから、ＰＵＴ  ＡＰＩ呼び出しを受信８０２して、測定値を集計データストア内にメモリ内保存するために、測定値を集計サブシステム内に発行し得る。ＰＵＴ  ＡＰＩ呼び出しは、保存される測定値及び特定の測定値に対するメタデータを含み得る。メタデータは、測定値に対する１つまたは複数のメトリクス属性を指定し得る。例えば、メタデータは、カスタマーのアカウント番号、名前空間（例えば、コンピューティングリソースに対する関連サービス）、測定値のディメンション（例えば、キー／値のペア）、測定値自体の名前などの組み合わせによって、測定値を固有に識別し得る。このようにして、フロントエンドサーバは、ＰＵＴ  ＡＰＩ呼び出しから、コンピューティングリソースモニタリングサービスの集計データストア内にメモリ内保存される測定値を取得８０４し得る。
【００７９】
フロントエンドサーバがＰＵＴ  ＡＰＩ呼び出しから測定値を取得すると、フロントエンドサーバは、ハッシュ関数及び提供されたメタデータを用いて、測定値に対するＦＱＭＩを生成し得る。このＦＱＭＩは、複数バイトのハッシュを含み得、このハッシュの一部は、メトリクスマッピングレジストリ内のマッピングに少なくとも部分的に基づいて、測定値のメトリクスごとに論理パーティションを判定するのに用いられ得、このハッシュの別の一部は、対応する論理パーティション内にかつて配置された測定値の固有の識別に用いられ得る。フロントエンドサーバは、さらに、測定値をバイナリシリアライゼーションフォーマットに変換し得る。このフォーマットの測定値は、ＦＱＭＩ、測定値のタイムスタンプ、測定値に対する測定の単位及び測定値自体を含み得る。フロントエンドサーバは、このシリアライズされた測定値を、測定値の冗長的な保存のために、コンピューティングリソースモニタリングサービスの各データセンタ内の分割サブシステムに送信し得る。各データセンタ内の分割サブシステムは、分割ロードバランサを用いて選択され得る。
【００８０】
分割サブシステムがフロントエンドサーバからシリアライズされた測定値を受信すると、分割サブシステムは、測定値のＦＱＭＩ及びタイムスタンプを判定８０６し得る。分割サブシステムは、メトリクスマッピングレジストリにアクセス８０８して、論理パーティションの様々な集計サブシステムに対するマッピングを取得して、測定値の配置のためにかつ集計サブシステムへの配信のために、どの論理パーティションが用いられるかを判定し得る。例えば、分割サブシステムは、シリアライズされた測定値のＦＱＭＩ及びタイムスタンプを用いて、マッピングに少なくとも部分的に基づいて、測定値を配置するのはどの論理パーティションかを識別し得る。
【００８１】
一実施形態では、分割サブシステムは、タイムスタンプ及びマッピングを用いて、測定値が、マッピングに指定されたような最近の保持期間を過ぎている期間にあるかどうかを判定８１０する。測定値が未来のタイムスタンプを含む（例えば、タイムスタンプが最近の保持期間を過ぎている時間にある）場合、分割サブシステムは、測定値を、別個の未分割のキューの待ち行列に入れ得る８１２。ここで、測定値は、測定値のタイムスタンプが後の時点で現在の保持期間によってカバーされるまで、残り得る。保持期間が更新されると、分割サブシステムは、測定値をこのキューから取得し、測定値のタイムスタンプが現在の保持期間によってカバーされるかどうかを判定し得る。カバーされない場合、測定値は、キューに残り得る。
【００８２】
測定値のタイムスタンプが現在の保持期間中である場合、分割サブシステムは、測定値を、タイムスタンプ、ＦＱＭＩ及びマッピングに少なくとも部分的に基づいて判定されたように、分割サブシステムの複数の論理パーティションのうちのある論理パーティション内に配置し得る。各論理パーティションは、特定のキューに関連付けられ得、このキューは、測定値を分割サブシステムから、マッピングを用いて判定されたような対応する集計サブシステムに送信するのに用いられ得る。このようにして、測定値が論理パーティションに配置されると、分割サブシステムは、測定値を、対応する集計サブシステムに結び付けられた関連するファイルベースのキュー内に移動８１４させ得る。このキュー内の測定値は、測定値ごとのタイムスタンプに少なくとも部分的に基づいて、最新の測定値の配信が第１に完了され得るように、分割され得る。このようにして、測定値のこの分割に基づいて、分割サブシステムは測定値のメモリ内保存のために、測定値をキューから対応する集計サブシステムに非同期的に配信８１６し得る。
【００８３】
上述のように、分割サブシステムは、シリアライズされた測定値を、メトリクスの測定値をリアルタイムで集計し各種メトリクスに対する時系列の測定値を与えるように構成された１つまたは複数の集計サブシステムに送信し得る。集計サブシステムは、測定値を１つまたは複数の集計データストア内に保存すること及びこれらの測定値をカスタマーコンピュータシステム及び他のエンティティからのＧＥＴリクエストを満たすのに利用可能にすることという上記のタスクを行うように集合的に構成された１つまたは複数のコンピュータシステムを含み得る。したがって、図９は、少なくとも一実施形態による、１つまたは複数の分割サブシステムの測定値をコンピューティングリソースモニタリングサービスの１つまたは複数のデータストアの測定値と集計するプロセス９００の具体例を示す。プロセス９００は、コンピューティングリソースモニタリングサービスの任意の集計サブシステムによって行われ得、この集計サブシステムは、分割サブシステムからの測定値を処理し、測定値を１つまたは複数のメモリ内データストアに保存するように構成され得る。
【００８４】
保持期間中の任意の時点で、集計サブシステムは、分割サブシステムから新規のシリアライズされた測定値を受信９０２し得る。図８に関連して上記したように、分割サブシステムは、１つまたは複数のファイルベースのキューを含み得、このキューは、データを、データセンタ内の１つまたは複数の集計サブシステムに非同期的に送信するように構成され得る。各キューは、メトリクスマッピングレジストリ内に含まれている所与の保持期間に対するマッピングに少なくとも部分的に基づいて、単一の集計サブシステムに関連付けられ得る。受信した測定値のＦＱＭＩ及びタイムスタンプに少なくとも部分的に基づいて、集計サブシステムは、受信した測定値を保存するために特定のメモリ内データストアを識別し得る。
【００８５】
集計サブシステムが、取得した測定値を保存するためにメモリ内データストアを識別すると、集計サブシステムは、集計サブシステムが集計期間において特定のメトリクスの測定値に遭遇したのが初めてであるかどうかを判定９０４し得る。集計サブシステムが集計期間中このメトリクスの測定値を観察したのはこれが初めてである場合、集計サブシステムは、シリアライズされた測定値を、識別されたメモリ内データストア内に保存９１２し得る。しかし、集計サブシステムが、集計期間においてメトリクスに対する他の測定値が、識別されたメモリ内データストア内に保存されていると判定した場合、集計サブシステムは、これらの他のシリアライズされた測定値をメモリ内データストアから取得９０６し得る。
【００８６】
集計サブシステムは、測定値の集計のために、分割サブシステムからの新規に取得されたシリアライズされた測定値及びメモリ内データストアからの他のシリアライズされた測定値をデシリアライズ９０８し得る。集計サブシステムが、新規に取得されたシリアライズされた測定値及びメモリ内データストアからの測定値をデシリアライズすると、集計サブシステムは、分割サブシステムからの新規に取得されたシリアライズされた測定値を、メモリ内データストア内に以前保存されたメトリクスの他の測定値と集計９１０し得る。この集計は、集計された測定値を上記のバイナリシリアライゼーションフォーマットにシリアライズすることを含み得る。集計サブシステムが測定値を集計しシリアライズすると、集計サブシステムは、シリアライズされた測定値をメモリ内データストア内に保存９１２し得る。
【００８７】
上述のように、コンピューティングリソースモニタリングサービスのフロントエンドサーバは、サービスのメトリクス統合エンジンと併用されて、カスタマーコンピュータシステム及び／または他のコンピューティングリソースからのＧＥＴリクエストを処理し満たし得る。例えば、ＧＥＴリクエストに応答して、メトリクス統合エンジンは、メトリクスマッピングレジストリ内で指定されたような１つまたは複数の集計データストアから、リクエストを満たすのに必要な測定値を取得し、これらの測定値を、リクエストしているエンティティに配信するためにコンパイルし得る。したがって、図１０は、少なくとも一実施形態による、ＧＥＴアプリケーションプログラミングインタフェース呼び出しに応答して、１つまたは複数の集計データストアから１つまたは複数の測定値を検索するプロセス１０００の具体例を示す。プロセス１０００は、様々なエンティティからＧＥＴリクエストを取得し得るフロントエンドサーバ及び測定値を取得しこれらの測定値を、リクエストしているエンティティに配信するためにコンパイルし得るメトリクス統合エンジンによって行われ得る。
【００８８】
任意の時点で、コンピューティングリソースモニタリングサービスのフロントエンドサーバは、ＧＥＴ  ＡＰＩ呼び出しを受信１００２して、コンピューティングリソースモニタリングサービスから１つまたは複数の測定値を取得し得る。ＧＥＴ  ＡＰＩ呼び出しは、取得される測定値に対するメタデータを含み得る。フロントエンドサーバは、ハッシュ関数及びメタデータを用いて、コンピューティングリソースモニタリングサービスの１つまたは複数の集計データストアから取得される測定値に対する１つまたは複数のＦＱＭＩを生成し得る。フロントエンドサーバは、メトリクスマッピングレジストリにアクセスし１つまたは複数のＦＱＭＩを用いて、リクエストされた測定値のそれぞれの位置を判定１００４し得る。
【００８９】
フロントエンドサーバが、リクエストされた測定値のそれぞれの位置を取得すると、フロントエンドサーバは、リクエストされた測定値のいずれかが、測定値の期限切れにより、コンピューティングリソースモニタリングサービスの１つまたは複数の集計データストア内にもはや保存されていないかどうかを判定１００６し得る。１つまたは複数の測定値が期限切れしていると判定された場合、フロントエンドサーバは、リクエストしているエンティティに、これらの１つまたは複数の測定値は１つまたは複数の集計データストアからもはや利用可能ではないと示し得る１００８。これらの期限切れの測定値がアーカイバルデータストアなどの代替データストアに移動されている場合、フロントエンドサーバは、リクエストを、アーカイバルデータストアのコンピュータシステムに送信して、期限切れの測定値を検索し得る。
【００９０】
フロントエンドサーバが、１つまたは複数の集計データストア内の任意の期限切れしていない測定値の位置を判定すると、フロントエンドサーバは、メトリクス統合エンジンに、メトリクスマッピングレジストリ内で指定された１つまたは複数の集計データストアにアクセス１０１０させて、集計データストアから、１つまたは複数の、ＧＥＴリクエストを満たすのに必要である測定値を取得１０１２し得る。メトリクス統合エンジンは、ＧＥＴリクエストを満たすために、１つまたは複数の集計データストアからの測定値を集計１０１４しコンパイルし、測定値をデシアライズし得る。一実施形態では、測定値が、コンピューティングリソースモニタリングサービスの１つより多いデータセンタ内に冗長的に保存されている場合、メトリクス統合は、ＧＥＴリクエストに対する複数のレスポンスを取得する。
【００９１】
データセンタのコンパイルされた測定値が不整合である場合、メトリクス統合エンジンは、１つまたは複数の競合解消ルールを用いて、ＧＥＴリクエストに応答してどの測定値が提供されるのかを判定し得る。例えば、メトリクス統合エンジンは、様々なデータセンタから、最多のサンプルカウントを有するレスポンスを選択し得る。メトリクス統合エンジンがデータセンタ間の競合が存在する場合はその競合を解消すると、メトリクス統合エンジンは、測定値をフロントエンドサーバに提供し得る。このことによって、フロントエンドサーバが、要求しているエンティティに測定値を提供することによって、ＧＥＴリクエストを満たすことが可能になり得る。
【００９２】
上述のように、測定値をコンピューティングリソースモニタリングサービスに提供しているカスタマーコンピュータシステムまたは他のコンピューティングリソースは、コンピューティングリソースモニタリングサービスの１つまたは複数の集計サブシステムを用いた集計及び保存に先立って、測定値の分割を内部的に行い得る。このアーキテクチャによって、コンピューティングリソースモニタリングサービスは、カスタマーコンピュータシステムまたは他のコンピューティングリソースの論理パーティションから、シリアライズされた測定値を直接取得し得るので、コンピューティングリソースモニタリングサービスが、図２及び図３に関連して上記した１つまたは複数の分割サブシステムまたは分割サブシステムに対するロードバランサを保持する必要性がなくなり得る。したがって、図１１は、少なくとも一実施形態による、コンピューティングリソースモニタリングサービスに送信される測定値を、測定値を発行するために分割するプロセス１１００の具体例を示す。プロセス１１００は、カスタマーコンピュータシステムまたは他のコンピューティングリソースによって行われ得、このカスタマーコンピュータシステムまたは他のコンピューティングリソースは、測定値を内部的に取得し、メモリ内保存を目的としてコンピューティングリソースモニタリングサービスの集計サブシステムに配信するために、測定値を分割するように構成され得る。
【００９３】
カスタマーコンピュータシステムまたは他のコンピューティングリソースは、カスタマーコンピュータシステムまたはコンピューティングリソースのヘルス及び他のメトリクスをモニタリングするように構成された１つまたは複数のモニタリングエージェントを含み得る。これらのモニタリングエージェントは、経時的に様々なメトリクスに対する様々な測定値を記録し、これらの測定値をカスタマーコンピュータシステムまたはコンピューティングリソースのフロントエンドモジュールに提供し得る。このようにして、カスタマーコンピュータシステムは、メモリ内データストア内に保存するために、モニタリングエージェントから測定値を取得１１０２し得る。さらに、カスタマーコンピュータシステムは、取得した測定値に関連するメタデータを取得し得る。上記のプロセス８００と同様に、カスタマーコンピュータシステムサーバは、ハッシュ関数及び提供されたメタデータを用いて、測定値に対するＦＱＭＩを判定１１０４し得る。このＦＱＭＩは、複数バイトのハッシュを含み得、このハッシュの一部は、コンピューティングリソースモニタリングサービスのメトリクスマッピングレジストリ内のマッピングに少なくとも部分的に基づいて、測定値のメトリクスごとに論理パーティションを判定するのに用いられ得、このハッシュの別の一部は、対応する論理パーティション内にかつて配置された測定値の固有の識別に用いられ得る。カスタマーコンピュータシステムは、さらに、測定値をバイナリシリアライゼーションフォーマットに変換し得る。
【００９４】
カスタマーコンピュータシステムは、コンピューティングリソースモニタリングサービスのメトリクスマッピングレジストリにアクセス１１０６して、論理パーティションのコンピューティングリソースモニタリングサービス内の集計サブシステムに対するマッピングを取得し得る。カスタマーコンピュータシステムは、マッピングならびに測定値のＦＱＭＩ及びタイムスタンプを用いて、１つまたは複数の保持期間においてアクティブな集計サブシステムを識別し得る。このことによって、カスタマーコンピュータシステムが、各論理パーティションをコンピューティングリソースモニタリングサービス内の対応する集計サブシステムに関連付けることが可能になり得る。
【００９５】
一実施形態では、カスタマーコンピュータシステムは、タイムスタンプ及びマッピングを用いて、測定値がマッピングで指定されたような最近の保持期間を過ぎている期間にあるかどうかを判定１１０８する。測定値が未来のタイムスタンプを含む（例えば、タイムスタンプが最近の保持期間を過ぎている時間にある）場合、カスタマーコンピュータシステムは、測定値を、別個の未分割のキューの待ち行列に入れ得る１１１０。ここで、測定値は、測定値のタイムスタンプが後の時点で現在の保持期間によってカバーされるまで、残り得る。保持期間が更新されると、カスタマーコンピュータシステムは、測定値をこのキューから取得し、測定値のタイムスタンプが現在の保持期間によってカバーされているかどうかを判定し得る。カバーされていない場合、測定値は、キューに残り得る。
【００９６】
測定値のタイムスタンプが現在の保持期間にある場合、カスタマーコンピュータシステムは、測定値を、タイムスタンプ、ＦＱＭＩ及びマッピングに少なくとも部分的に基づいて判定されたように、分割サブシステムの複数の論理パーティションのうちある論理パーティション内に配置し得る。各論理パーティションは、上記のように、特定のキューに関連付けられ得る。このようにして、測定値が論理パーティションに配置されると、カスタマーコンピュータシステムは、測定値を、対応する集計サブシステムに結び付けられた関連ファイルベースのキュー内の待ち行列に入れ得る１１１２。このキュー内の測定値は、測定値ごとのタイムスタンプに少なくとも部分的に基づいて、最新の測定値の配信が第１に完了され得るように、分割され得る。このようにして、測定値のこの分割に基づいて、カスタマーコンピュータシステムは、測定値を含む１つまたは複数のＰＵＴ  ＡＰＩ呼び出しを、コンピューティングリソースモニタリングサービス内の対応する集計サブシステムに送信１１１４し得る。
【００９７】
一実施形態では、ＰＵＴ  ＡＰＩ呼び出しは、集計サブシステムに、ＰＵＴ  ＡＰＩ呼び出しの配信完了が成功したか否かを示し得る通信プロトコルを用いて送信される。このようにして、このプロトコルを用いて、カスタマーコンピュータシステムは、ＰＵＴ  ＡＰＩ呼び出しの、したがって測定値の配信が成功したかどうかを判定１１０６し得る。測定値の配信が成功しなかった場合、カスタマーコンピュータシステムは、カスタマーコンピュータシステムと集計サブシステムの間の通信チャネルをリフレッシュし、測定値を含む１つまたは複数のＰＵＴ  ＡＰＩ呼び出しを、コンピューティングリソースモニタリングサービス内の対応する集計サブシステムに送信１１１４し得る。そうではなく、配信が成功した場合、カスタマーコンピュータシステムは、配信成功の確認応答及び集計サブシステム内の測定値の集計を受信１１１６し得る。
【００９８】
上述のように、コンピューティングリソースモニタリングサービスが、メタデータをハッシュして、保存される測定値に対するＦＱＭＩを生成すると、カスタマーコンピュータシステムは、メタデータが期限切れしていない限り、または、カスタマーコンピュータシステムがコンピューティングリソースモニタリングサービスとの間に新規のセッションを開始していない限り、特定のメトリクスの測定値を今後送信するために、メタデータを繰り返す必要がもはやなくなり得る。例えば、カスタマーコンピュータシステムがさらなる測定値をコンピューティングリソースモニタリングサービスへ供給するとき、カスタマーコンピュータシステムは、メタデータの代わりに、同一のメトリクスに対応する測定値に対するＦＱＭＩを提供し得る。コンピューティングリソースモニタリングサービスは、コンピューティングリソースモニタリングサービスのメモリ内データストア内に様々な測定値を保存することを見越して、測定値及びＦＱＭＩをシリアライズし得る。したがって、図１２は、少なくとも一実施形態による、メタデータハッシュに少なくとも部分的に基づいて、測定値を１つまたは複数の集計データストアに保存するプロセス１２００の具体例を示す。プロセス１２００は、上記コンピューティングリソースモニタリングサービスによって行われ得、このコンピューティングリソースモニタリングサービスは、測定値に対するメタデータか測定値ごとのＦＱＭＩのいずれかを含み得る、測定値を保存するリクエストを取得し得る。
【００９９】
任意の時点で、コンピューティングリソースモニタリングサービスは、ＰＵＴ  ＡＰＩ呼び出しを受信１２０２して、測定値を集計データストア内に発行し得る。このＰＵＴ  ＡＰＩ呼び出しは、保存される測定値及び測定値に対するメタデータまたは測定値に対するＦＱＭＩを含み得る。このようにして、ＰＵＴ  ＡＰＩ呼び出しを通して、コンピューティングリソースモニタリングサービスは、集計データストア内に保存される測定値を取得１２０４し得る。コンピューティングリソースモニタリングサービスはさらに、ＰＵＴ  ＡＰＩ呼び出しが、保存される測定値に対するメタデータを含むかどうかを判定１２０６し得る。例えば、メタデータは、コンピューティングリソースモニタリングサービス内で関連する測定値及びメトリクスを固有に識別し得る１つまたは複数のメトリクス属性を含み得る。例えば、メタデータは、ＰＵＴリクエストを送っているカスタマーコンピュータシステムに関連するまたは測定値の生成に関与している別のコンピューティングリソースに関連するカスタマーのアカウント番号、コンピューティングリソースの管理に関与している特定のサービスの名前（例えば、仮想コンピュータシステムサービス、データベースサービスなど）、測定値のディメンション（例えば、キー／値のペア）及び測定値を生成しているコンピューティングリソースの識別子を、個々にまたは組み合わせて指定し得る。
【０１００】
ＰＵＴ  ＡＰＩ呼び出しが測定値に対するメタデータを含む場合、コンピューティングリソースモニタリングサービスは、ハッシュ関数及び提供されたメタデータを用いて、測定値に対するＦＱＭＩを含み得るメタデータハッシュを生成１２０８し得る。このＦＱＭＩは、複数バイトのハッシュを含み得、このハッシュの一部は、コンピューティングリソースモニタリングサービスのメトリクスマッピングレジストリ内のマッピングに少なくとも部分的に基づいて、測定値のメトリクスごとに論理パーティションを判定するのに用いられ得、このハッシュの別の一部は、対応する論理パーティション内にかつて配置された測定値の固有の識別に用いられ得る。ＰＵＴ  ＡＰＩ呼び出しが測定値に対するメタデータを含まない場合、コンピューティングリソースモニタリングサービスは、ＰＵＴ  ＡＰＩ呼び出しが測定値に対するメタデータハッシュ（例えばＦＱＭＩ）を含むかどうかを判定１２１０し得る。ＰＵＴ  ＡＰＩ呼び出しが測定値に対するメタデータまたはＦＱＭＩのいずれも含まない場合、コンピューティングリソースモニタリングサービスは、測定値を保存するリクエストを拒否１２１２し得る。あるいは、メタデータ及びＦＱＭＩの欠落によって測定値は適切にインデックス化され得ないので、コンピューティングリソースモニタリングサービスが測定値を処理し得るが、測定値は、カスタマーコンピュータシステムまたは他のコンピューティングリソースによって取得可能となり得ない。
【０１０１】
コンピューティングリソースモニタリングサービスが測定値に対するＦＱＭＩを取得すると、コンピューティングリソースモニタリングサービスは、ＦＱＭＩを利用１２１４して、測定値のメモリ内ストレージ先を識別し得る。例えば、コンピューティングリソースモニタリングサービスは、メトリクスマッピングレジストリにアクセスして論理パーティションの様々な集計サブシステムに対するマッピングを取得して、測定値の配置のためにかつ集計サブシステムへの配信のために、どの論理パーティションが用いられるかを判定し得る。コンピューティングリソースモニタリングサービスは、シリアライズされた測定値からのＦＱＭＩ及びタイムスタンプを用いて、測定値を配置するのはどの論理パーティションかを、マッピングに少なくとも部分的に基づいて識別し得る。このことによって、コンピューティングリソースモニタリングサービスが、測定値を適切なストレージ先に保存１２１６することが可能になり得、このストレージ先は、測定値が測定値のＦＱＭＩ及びタイムスタンプに少なくとも部分的に基づいて配置されている論理パーティションに関連する集計サブシステムを含み得る。
【０１０２】
上述のように、コンピューティングリソースモニタリングサービスは、１つまたは複数のエンティティから様々なＧＥＴリクエストを取得して、メモリ内データストアから測定値を検索し得る。これらのＧＥＴリクエストは、取得される測定値に対するメタデータ及びこれらの測定値のタイムスタンプを含み得る。このことによって、コンピューティングリソースモニタリングサービスが、ＧＥＴリクエストに応答して、測定値の保存位置を判定しリクエストしているエンティティにこれらの測定値を提供することが可能になり得る。したがって、図１３は、少なくとも一実施形態による、１つまたは複数の集計データストアから、測定値を取得するリクエスト内に含まれるメタデータに少なくとも部分的に基づいて測定値を検索するプロセス１３００の具体例を示す。プロセス１３００は、上記コンピューティングリソースモニタリングサービスによって行われ得る。
【０１０３】
任意の時点で、コンピューティングリソースモニタリングサービスは、ＧＥＴ  ＡＰＩ呼び出しを受信１３０２して、コンピューティングリソースモニタリングサービスから１つまたは複数の測定値を取得し得る。コンピューティングリソースモニタリングサービスがＧＥＴ  ＡＰＩ呼び出しを受信すると、コンピューティングリソースモニタリングサービスは、ＧＥＴ  ＡＰＩ呼び出しが、検索される測定値に対するメタデータを含むかどうかを判定１３０４し得る。ＧＥＴ  ＡＰＩ呼び出しが、検索される測定値に対するメタデータを含まない場合、コンピューティングリソースモニタリングサービスは、リクエストを拒否１３０６し得る。しかし、ＧＥＴ  ＡＰＩ呼び出しが取得される測定値に対するメタデータを含む場合、コンピューティングリソースモニタリングサービスは、ハッシュ関数及びメタデータを用いて、コンピューティングリソースモニタリングサービスの１つまたは複数の集計データストアから取得される測定値に対する１つまたは複数のＦＱＭＩ（例えば、メタデータハッシュ）を生成１３０８し得る。
【０１０４】
コンピューティングリソースモニタリングサービスが、取得される測定値に対する１つまたは複数のＦＱＭＩを生成すると、コンピューティングリソースモニタリングサービスは、メトリクスマッピングレジストリにアクセスし、生成された１つまたは複数のＦＱＭＩを使用１３１０して、測定値が保存され得るメモリ内保存位置（例えば、集計データストア）を識別し得る。例えば、コンピューティングリソースモニタリングサービスは、メトリクスマッピングレジストリから、測定値の、集計データストアに対するマッピングを取得し、ＦＱＭＩを用いて、リクエストされた測定値を含み得る集計データストアの位置を判定１３１２し得る。コンピューティングリソースモニタリングサービスが、リクエストされた測定値に対するメモリ内保存位置を識別できない場合（例えば、測定値が期限切れしているなど）、コンピューティングリソースモニタリングサービスは、リクエストを拒否１３０６し得る。
【０１０５】
コンピューティングリソースモニタリングサービスが、リクエストされた測定値の１つまたは複数のメモリ内保存位置を識別できる場合、コンピューティングリソースモニタリングサービスは、リクエストされた測定値を、識別された位置から検索１３１４し、測定値を、リクエストしているエンティティに配信するためにコンパイル１３１６し得る。例えば、コンピューティングリソースモニタリングサービスは、測定値が冗長的に保存され得た各データセンタの様々な集計サブシステムから測定値を取得し得る。１つまたは複数のデータセンタから取得した測定値が同一でない場合、コンピューティングリソースモニタリングサービスは、１つまたは複数の競合解消ルールを用いて、ＧＥＴ  ＡＰＩ呼び出しに対する適切なレスポンスを判定し得る。例えば、コンピューティングリソースモニタリングサービスは、様々なデータセンタから、最多のサンプルカウントを有するレスポンスを選択し得る。コンピューティングリソースモニタリングサービスは、ＧＥＴリクエストに対するレスポンスを、リクエストしているエンティティが自らの目的のために用い得るデシリアライズされたフォーマットで、コンパイルされた測定値の形式で提供１３１８し得る。
【０１０６】
図１４は、様々な実施形態に従った態様を実装するための例示的環境１４００の態様を示す。理解されるように、ウェブベースの環境が説明目的に使用されるが、必要に応じて、異なる環境を使用して様々な実施形態を実装してもよい。環境は、電子クライアントデバイス１４０２を含み、これは、適切なネットワーク１４０４上でリクエスト、メッセージまたは情報を送信かつ／または受信し、かつ一部の実施形態で、情報をデバイスのユーザに戻して伝達するように動作可能な任意の適切なデバイスを含み得る。そのようなクライアントデバイスの例には、パーソナルコンピュータ、携帯電話、携帯型メッセージングデバイス、ラップトップ型コンピュータ、タブレットコンピュータ、セットトップボックス、個人データ端末、埋込み型コンピュータシステム、電子ブックリーダなどが挙げられる。ネットワークは、イントラネット、インターネット、セルラーネットワーク、ローカルエリアネットワーク、衛星ネットワークまたは任意の他のそのようなネットワーク及び／もしくはそれらの組み合わせを含む任意の適切なネットワークを含み得る。そのようなシステムに用いられるコンポーネントは、ネットワークの種類及び／または選択された環境に少なくとも部分的に依存し得る。そのようなネットワークを介した通信用のプロトコル及びコンポーネントは周知であり、本明細書で詳細に論じることはない。ネットワークを介する通信は、有線または無線接続及びそれらの組み合わせによって可能にされ得る。本実施例では、環境がリクエストの受信及びそれに応答するコンテンツの提供のためのウェブサーバ１４０６を含むため、ネットワークはインターネットを含むが、他のネットワークについては、当業者には明白であり得るように、同様の目的に提供する代替のデバイスが使用され得る。
【０１０７】
具体例の環境は、少なくとも１つのアプリケーションサーバ１４０８及びデータストア１４１０を含む。適切なデータストアからデータを取得するなどのタスクを実行するように、連結またはそうでなければ構成され得、そのように相互作用することができる複数のアプリケーションサーバ、層または他の要素、プロセスもしくはコンポーネントが存在し得ることを理解されたい。本明細書中で用いられるサーバは、ハードウェア装置または仮想コンピュータシステムなど様々な方法で実装され得る。一部の文脈で、サーバとは、コンピュータシステム上で実行されているプログラミングモジュールを指し得る。本明細書で使用される「データストア」という用語は、そうでないように記載されていない限りまたは文脈から明らかでない限り、データを保存し、データにアクセスし、かつデータを検索することができる任意のデバイスまたはデバイスの組み合わせを指し、任意の標準、分散型、仮想またはクラスタ化環境において、任意の組み合わせ及び任意の数のデータサーバ、データベース、データストレージデバイス及びデータストレージ媒体を含み得る。アプリケーションサーバは、必要に応じてデータストアと統合して、クライアントデバイスの１つまたは複数のアプリケーションの態様を実行するために、任意の好適なハードウェア、ソフトウェア及びファームウェアを含み得、アプリケーションのデータアクセス及びビジネスロジックの一部または全部を処理する。アプリケーションサーバは、データストアと協働してアクセス制御サービスを提供し得、以下に限定するものではないが、ユーザに提供されるのに使用可能なテキスト、画像、音声、動画及び／または他のコンテンツを含むコンテンツも生成することができ、これは、ハイパーテキストマークアップ言語（「ＨＴＭＬ」）、拡張マークアップ言語（「ＸＭＬ」）、Ｊａｖａ（登録商標）スクリプト、カスケーディングスタイルシート（「ＣＳＳ」）または別の適切なクライアント側構造化言語の形態で、ウェブサーバによってユーザに提供され得る。クライアント装置に転送されるコンテンツは、クライアント装置によって処理されて、以下に限定するものではないが、聴覚的に、視覚的にかつ／または触覚、味覚及び／または嗅覚を含む他の感覚を通してユーザに感知可能な形式を含む１つまたは複数の形式で、コンテンツを提供し得る。すべてのリクエスト及びレスポンスの処理ならびにクライアントデバイス１４０２とアプリケーションサーバ１４０８の間でのコンテンツの配信は、この例では、ＰＨＰ：ハイパーテキストプリプロセッサ（「ＰＨＰ」）、パイソン、ルビー、パール、Ｊａｖａ（登録商標）、ＨＴＭＬ、ＸＭＬまたは別の適切なサーバ側構造化言語を用いるウェブサーバによって処理され得る。本明細書で論じられる構造化コードが、本明細書の他の箇所で論じられる任意の適切なデバイスまたはホストマシン上で実行され得るため、ウェブサーバおよびアプリケーションサーバは必須ではなく、単に例示のコンポーネントにすぎないことを理解されたい。さらに、本明細書中で記載された、単一のデバイスで行われている操作は、文脈からそうではないことが明らかでない限り、分散型かつ／または仮想システムを形成し得る複数のデバイスによって集合的に行われ得る。
【０１０８】
データストア１４１０は、複数の別個のデータテーブル、データベース、データドキュメント、ダイナミックデータストレージスキーム及び／または他のデータストレージ機構及び本開示の特定の態様に関するデータを保存するための媒体を含み得る。例えば、説明されるデータストアは、生産データ１４１２及びユーザ情報１４１６を保存する機構を含み得、生産側にコンテンツを提供するために使用され得る。データストアは、ログデータ１４１４を格納するための機構を含むこともまた示され、これは、報告、分析または他のかかる目的のために使用され得る。ページの画像情報及びアクセス権情報など、データストアに保存する必要があり得る多数の他の態様が存在し得、これは、必要に応じて上に列挙された機構のいずれかまたはデータストア１４１０内の追加の機構に保存することができることを理解されたい。データストア１４１０は、それに応答して、更新または他のプロセスデータをアプリケーションサーバ１４０８からの命令を受信し、取得するために、それに関連するロジックを介して、動作可能である。アプリケーションサーバ１４０８は、受信した命令に応答して、静的なデータ、動的なデータまたは静的なデータと動的なデータの組み合わせのデータを提供し得る。ウェブログ（ブログ）、買い物アプリケーション、ニュースサービス及び他のそのようなアプリケーションで用いられるデータなどの動的なデータは、本明細書中で記載されるようなサーバ側の構造化言語によって生成され得、または、アプリケーションサーバ上でまたはその制御下で動作しているコンテンツ管理システム（「ＣＭＳ」）によって提供され得る。一例では、ユーザは、ユーザが操作するデバイスを通じて、特定の種類の品目の検索リクエストを送信し得る。この事例において、データストアは、ユーザ情報にアクセスして、ユーザの識別情報を検証することができ、カタログの詳細情報にアクセスして、その種類の品目についての情報を取得することができる。次いでこの情報は、ユーザに、ユーザがユーザデバイス１４０２上でブラウザを介して見ることのできるウェブページ上にリスト化された結果などで戻され得る。関心のある特定の品目の情報を、ブラウザの専用ページまたはウィンドウで見ることができる。しかし、本開示の実施形態は必ずしもウェブページの文脈に限定されるものではなく、リクエストが必ずしもコンテンツに対するリクエストではない一般の処理リクエストに、より一般的に適用可能であり得ることに留意されたい。
【０１０９】
各サーバは、通常、一般管理及びそのサーバの操作のための実行可能なプログラム命令を提供するオペレーティングシステムを含み、通常、サーバのプロセッサによって実行されると、サーバがその意図される機能を実行することを可能にする命令を保存するコンピュータ可読ストレージ媒体（例えば、ハードディスク、ランダムアクセスメモリ、読出し専用メモリなど）を含む。サーバのオペレーティングシステム及び一般的な機能性の好適な実装は、既知である、または市販入手可能であり、特に、本明細書の開示を踏まえて、当業者によって容易に実装される。
【０１１０】
一実施形態における環境は、１つまたは複数のコンピュータネットワークもしくは直接接続を使用し、通信リンクを介して相互接続された複数のコンピュータシステムおよびコンポーネントを利用する、分散型かつ／または仮想コンピューティング環境である。しかしながら、当業者であれば、そのようなシステムが、図１４に説明されるコンポーネントよりも少ない数または多い数のコンポーネントを有するシステムにおいても同等にうまく動作し得ることを理解する。したがって、図１４のシステム１４００の描写は、本質的に例示とみなされるべきであり、本開示の範囲を制限するものではない。
【０１１１】
さらに、本開示の実施形態は、以下の条項に照らして、説明することができる。
１．コンピュータにより実装される方法であって、
実行可能な命令で構成される１つまたは複数のコンピュータシステムの制御下で、
カスタマーコンピュータシステムから、複数の測定値の受信につながる１つまたは複数のリクエストを受信することであって、前記１つまたは複数のリクエストは、測定値及び前記測定値の属性を指定するメタデータを含む、前記リクエストを受信することと、
ハッシュ関数及び前記メタデータを用いて、完全修飾メトリクス識別子を生成することと、
前記測定値に対する前記完全修飾メトリクス識別子に少なくとも部分的に基づいて、前記測定値を複数の論理パーティションに分割することと、
前記複数の論理パーティションからの前記測定値を、前記測定値を１つまたは複数のメモリ内データストアに保存された前記前記完全修飾メトリクス識別子に関連する他の測定値と集計し保存するために、前記１つまたは複数のメモリ内データストアを備える対応する集計サブシステムに送信することと、
前記１つまたは複数のメモリ内データストアに、前記測定値を保存することと、
１つまたは複数の測定値を検索するリクエストを受信することであって、前記リクエストは、前記１つまたは複数の測定値に関連するメタデータを含む、前記リクエストを受信することと、
前記ハッシュ関数及び前記１つまたは複数の測定値に関連する前記メタデータを用いて、前記完全修飾メトリクス識別子を生成することと、
前記完全修飾メトリクス識別子を用いて、前記１つまたは複数の測定値及び前記他の測定値が保存されている前記１つまたは複数のメモリ内データストアを識別することと、
前記識別された１つまたは複数のメモリ内データストアから、前記１つまたは複数の測定値及び前記他の測定値を取得することと、
前記リクエストに応答して、前記１つまたは複数の測定値及び前記他の測定値を提供することと、を含む、前記方法。
【０１１２】
２．前記１つまたは複数のメモリ内データストアに保存するために、前記測定値を前記完全修飾識別子に関連する前記他の測定値と集計することをさらに含む、条項１に記載のコンピュータにより実装される方法。
【０１１３】
３．前記測定値のタイムスタンプに少なくとも部分的に基づいて、前記複数の論理パーティションの前記測定値を分割して、最新の測定値の送信を第１に可能にすることをさらに含む、条項１または２に記載のコンピュータにより実装される方法。
【０１１４】
４．メトリクスマッピングレジストリから、前記複数の論理パーティションの複数の集計サブシステムに対するマッピングを取得することと、
前記マッピング及び前記測定値の測定値ごとのタイムスタンプに少なくとも部分的に基づいて、前記対応する集計サブシステムを識別することと、
前記複数の論理パーティションを前記識別された対応する集計サブシステムに関連付けて、前記測定値の、前記識別された対応する集計サブシステムへの送信を可能にすることと、をさらに含む、条項１〜３のいずれかに記載のコンピュータにより実装される方法。
【０１１５】
５．１つまたは複数のサービスを実装するように構成された少なくとも１つのコンピューティングデバイスを備えるシステムであって、前記１つまたは複数のサービスが、
測定値を保存するリクエストを受信することであって、前記リクエストは、前記測定値及び前記測定値の属性を指定するメタデータを含む、前記リクエストを受信することと、
前記メタデータに少なくとも部分的に基づいて、前記測定値に対するメトリクス識別子を生成することと、
前記メトリクス識別子に少なくとも部分的に基づいて、前記測定値の配置のために、複数のデータセンタの複数のパーティションのうちのあるパーティションを選択することと、
前記パーティションから前記測定値を１つまたは複数のメモリ内データストアを備える対応する集計システムに送信することと、
前記測定値を、前記１つまたは複数のメモリ内データストアのうちのあるメモリ内データストア内に以前に保存された１つまたは複数の測定値と集計することと、
前記測定値及び前記１つまたは複数のメモリ内データストアのうちの前記メモリ内データストアの前記１つまたは複数の測定値を保存することと、を行うように構成された、前記システム。
【０１１６】
６．前記１つまたは複数のサービスが、さらに、
１つまたは複数の測定値を検索するリクエストを受信することであって、前記リクエストは、前記１つまたは複数の測定値に関連するメタデータを含む、前記リクエストを受信することと、
前記１つまたは複数の測定値に関連する前記メタデータに少なくとも部分的に基づいて、前記メトリクス識別子を生成することと、
前記メトリクス識別子を用いて、前記１つまたは複数の測定値が保存されている前記複数のデータセンタ内の前記１つまたは複数のメモリ内データストアを識別することと、
前記複数のデータセンタの前記識別された１つまたは複数のメモリ内データストアから、前記１つまたは複数の測定値を取得することと、
前記１つまたは複数の測定値が前記複数のデータセンタとは異なる場合、１つまたは複数の競合解消ルールを用いて、前記リクエストに応答して送信される前記１つまたは複数の測定値を判定することと、
前記リクエストに応答して、前記１つまたは複数の測定値を送信することと、を行うように構成された、条項５に記載のシステム。
【０１１７】
７．前記測定値の前記属性の少なくとも１つが前記測定値のタイムスタンプを含み、
前記パーティションの前記選択が、さらに前記タイムスタンプに少なくとも部分的に基づいている、条項５または６に記載のシステム。
【０１１８】
８．前記１つまたは複数のサービスが、さらに、前記メモリ内データストアから、保持期間の期限切れに少なくとも部分的に基づいて、前記保持期間を過ぎているタイムスタンプを有する測定値を削除するように構成された、条項５〜７のいずれかに記載のシステム。
【０１１９】
９．前記１つまたは複数のサービスが、さらに、前記測定値をバイナリシリアライゼーションフォーマットでシリアライズし、前記バイナリシリアライゼーションフォーマットの前記測定値が、前記メトリクス識別子、前記測定値のタイムスタンプ、前記測定値の測定の単位、及び前記測定値自体を含む、ように構成された、条項５〜８のいずれかに記載のシステム。
【０１２０】
１０．前記１つまたは複数のサービスが、さらに、
前記複数のパーティションの複数の集計システムに対するマッピングを取得し、
前記マッピング及び前記測定値のタイムスタンプに少なくとも部分的に基づいて、前記選択されたパーティションに対する前記対応する集計システムを識別し、
前記選択されたパーティションを前記対応する集計システムに関連付けて、前記選択されたパーティションからの前記測定値を前記対応する集計システムに送信することを可能にするように構成された、条項５〜９のいずれかに記載のシステム。
【０１２１】
１１．前記１つまたは複数のサービスが、さらに、
第２の測定値を保存するリクエストを受信することであって、前記リクエストは、前記第２の測定値及び前記第２の測定値の属性を指定するメタデータを含む、前記リクエストを受信することと、
前記メタデータに少なくとも部分的に基づいて、前記第２の測定値に対するメトリクス識別子を生成することと、
前記第２の測定値のタイムスタンプ及び前記メトリクス識別子に少なくとも部分的に基づいて、前記第２の測定値の前記タイムスタンプが保持期間外にあることを受けて、前記第２の測定値を配置するのに利用可能なパーティションはないことを判定することと、
前記タイムスタンプ及び前記メトリクス識別子に少なくとも部分的に基づいて、パーティションが利用可能になるまで、前記第２の測定値をキューに保存することと、を行うように構成された、条項５〜１０のいずれかに記載のシステム。
【０１２２】
１２．前記１つまたは複数のサービスが、さらに、前記選択されたパーティションに、前記測定値を配置する容量がない場合、前記測定値のタイムスタンプよりも以前のタイムスタンプを有する１つまたは複数の他の測定値をパージするように構成された、条項５〜１１のいずれかに記載のシステム。
【０１２３】
１３．非一時的なコンピュータ可読ストレージ媒体であって、実行可能な命令を保存し、前記命令は、コンピュータシステムの１つまたは複数のプロセッサによって実行されると、前記コンピュータシステムに、少なくとも、
複数のパーティションのうちのあるパーティションから、メトリクスの複数の測定値を受信することと、
メモリ内データストアから、前記メトリクスの他の測定値を取得することと、
前記受信した複数の測定値を前記他の測定値と集計することと、
前記集計し測定値を前記メモリ内データストアに保存することと、を行わせる、前記非一時的なコンピュータ可読ストレージ媒体。
【０１２４】
１４．前記命令は、さらに、前記コンピュータシステムに、
１つまたは複数のメモリ内データストアから１つまたは複数の測定値を検索するリクエストを受信することであって、前記リクエストは、前記１つまたは複数の測定値に対するメトリクス識別子を含む、前記リクエストを受信することと、
前記メトリクス識別子を用いて、前記１つまたは複数の測定値が保存されている前記１つまたは複数のメモリ内データストアを識別することと、
前記識別された１つまたは複数のメモリ内データストアから、前記１つまたは複数の測定値を取得することと、
前記１つまたは複数の測定値を送信することと、を行わせる、条項１３に記載の非一時的なコンピュータ可読ストレージ媒体。
【０１２５】
１５．前記複数の測定値が、バイナリシリアライゼーションフォーマットで受信され、前記バイナリシリアライゼーションフォーマットの前記複数の測定値が、メトリクス識別子、前記測定値のタイムスタンプ、前記測定値に対する測定の単位、及び前記複数の測定値自体を含む、条項１３または１４に記載の非一時的なコンピュータ可読ストレージ媒体。
【０１２６】
１６．前記命令は、さらに、前記コンピュータシステムに、
前記複数の測定値及び前記メモリ内データストアからの前記他の測定値をデシリアライズすることと、
前記デシリアライズされた複数の測定値を前記メモリ内データストアからの前記デシリアライズされた測定値と集計することと、
前記集計された測定値を前記メモリ内データストアに保存するのに先立って、前記集計された測定値をシリアライズすることと、を行わせる、条項１５に記載の非一時的なコンピュータ可読ストレージ媒体。
【０１２７】
１７．前記命令は、さらに、前記コンピュータシステムに、保持期間の期限切れに少なくとも部分的に基づいて、前記保持期間を過ぎているタイムスタンプを有する、前記メモリ内データストアからの測定値を削除させる、条項１３〜１６のいずれかに記載の非一時的なコンピュータ可読ストレージ媒体。
【０１２８】
１８．レジストリから取得された、複数の集計システムに対する前記複数のパーティションのマッピングに少なくとも部分的に基づいて、前記パーティションが前記コンピュータシステムに関連付けられた、条項１３〜１７のいずれかに記載の非一時的なコンピュータ可読ストレージ媒体。
【０１２９】
１９．前記パーティションは、前記複数の測定値のメトリクス識別子及びタイムスタンプに少なくとも部分的に基づく測定値の分割に少なくとも部分的に基づいて、前記複数の測定値が提供される、条項１３〜１８のいずれかに記載の非一時的なコンピュータ可読ストレージ媒体。
【０１３０】
２０．前記測定値に対する前記メトリクス識別子が、ハッシュ関数及び前記測定値の属性を指定する前記測定値に対するメタデータを用いて生成される、条項１９に記載の非一時的なコンピュータ可読ストレージ媒体。
【０１３１】
２１．実行可能な命令で構成される１つまたは複数のコンピュータシステムの制御下で、
カスタマーコンピュータシステムから、メトリクスに対する期間内に取得された前記メトリクスの測定値を保存するリクエストを受信することであって、前記リクエストは、前記測定値及び前記測定値の属性を指定するメタデータを含む、前記リクエストを受信することと、
前記測定値に対して、ハッシュ関数及び前記メタデータを用いて、前記測定値に対する完全修飾メトリクス識別子を生成することと、
前記測定値の前記完全修飾メトリクス識別子及びタイムスタンプに少なくとも部分的に基づいて、前記測定値に対する１つまたは複数のデータストアを判定することと、
前記判定された第１の１つまたは複数のデータストア内に前記測定値を保存することと、
前記カスタマーコンピュータシステムから、前記メトリクスに対する前記期間内に取得された測定値を指定する第２の複数の測定値を保存する第２のリクエストを受信することであって、前記リクエストは、前記第２の複数の測定値及び前記完全修飾メトリクス識別子を含んでいるが前記メタデータの少なくとも一部が欠落している、前記第２のリクエストを受信することと、
前記第２の複数の測定値の前記完全修飾メトリクス識別子及びタイムスタンプを用いて、前記第２の複数の測定値をどこに保存するかを決定することと、
前記決定に応じて、前記第２の複数の測定値を保存することと、を含む、コンピュータにより実装される方法。
【０１３２】
２２．前記カスタマーコンピュータシステムから、前記測定値を検索する第３のリクエストを受信することであって、前記リクエストは、前記完全修飾メトリクス識別子を含む、前記第３のリクエストを受信することと、
前記完全修飾メトリクス識別子を用いて、前記測定値に対する前記１つまたは複数のデータストアから前記測定値を取得することと、をさらに含む、条項２１に記載のコンピュータにより実装される方法。
【０１３３】
２３．ランレングス符号化を用いて、前記測定値及び前記第２の複数の測定値を、同一の値を有する１つまたは複数の連続した測定値に対して圧縮することをさらに含む、条項２１または２２に記載のコンピュータにより実装される方法。
【０１３４】
２４．前記決定が、前記第２の複数の測定値を、前記測定値と同一の１つまたは複数のデータストアに保存するというものである場合、前記測定値を前記第２の複数の測定値と集計することをさらに含む、条項２１〜２３のいずれかに記載のコンピュータにより実装される方法。
【０１３５】
２５．１つまたは複数のサービスを実装するように構成された少なくとも１つのコンピューティングデバイスを備えるシステムであって、前記１つまたは複数のサービスが、
メトリクスの複数の測定値を保存するリクエストを受信することであって、前記リクエストは、前記メトリクスの他の測定値を保存するための先のリクエストで受信されたメタデータと同一のメタデータを有さない、前記リクエストを受信することと、
前記複数の測定値に対するメトリクス識別子を判定することと、
前記メトリクス識別子を用いて前記複数の測定値を保存し、前記メトリクスの測定値を検索するための、前記メタデータを指定しているリクエストに応答する情報が、前記複数の測定値及び前記他の測定値の少なくとも両方を含むようにすることと、を行うように構成された、前記システム。
【０１３６】
２６．前記複数の測定値を保存する前記リクエストが、前記メトリクス識別子を含む、条項２５に記載のシステム。
【０１３７】
２７．前記１つまたは複数のサービスが、さらに、前記判定されたメトリクス識別子に少なくとも部分的に基づいて、前記複数の測定値を前記他の測定値と集計するように構成された、条項２５または２６に記載のシステム。
【０１３８】
２８．前記メトリクスデータを保存するのに、前記判定された完全修飾メトリクス識別子を用いることが、
前記複数の測定値のうちの前記測定値の前記メトリクス識別子及びタイムスタンプを用いて、前記複数の測定値を１つまたは複数のパーティションに分割することと、
前記複数の測定値の保存のために、前記１つまたは複数のパーティションからの前記複数の測定値を前記複数の集計サブシステムのうちの１つまたは複数の集計サブシステムに送信することと、
前記複数の測定値を、前記１つまたは複数の集計サブシステムの１つまたは複数の集計データストア内に保存することと、を含む、条項２５〜２７のいずれかに記載のシステム。
【０１３９】
２９．前記１つまたは複数のサービスが、さらに、
メトリクスマッピングレジストリから、前記複数の測定値のうちの前記測定値のタイムスタンプに少なくとも部分的に基づいて、前記１つまたは複数のパーティションと前記複数の集計サブシステムの１つまたは複数のマッピングを取得し、
前記１つまたは複数のマッピングに少なくとも部分的に基づいて、前記複数の集計サブシステムから１つまたは複数の集計サブシステムを選択するように構成された、条項２８に記載のシステム。
【０１４０】
３０．前記１つまたは複数のサービスが、さらに、
前記複数の測定値を検索する第２のリクエストを受信することであって、前記リクエストは、前記メタデータを指定する、前記第２のリクエストを受信することと、
前記メタデータに少なくとも部分的に基づいて、前記メトリクス識別子を判定することと、
前記メトリクス識別子及び前記メタデータに指定された１つまたは複数の期間を用いて、前記複数の測定値及び前記他の測定値の少なくとも両方を検索することと、を行うように構成された、条項２５〜２９のいずれかに記載のシステム。
【０１４１】
３１．前記複数の測定値がバイナリシリアライゼーションフォーマットで保存され、前記バイナリシリアライゼーションフォーマットが、前記メトリクス識別子、前記メトリクスデータのタイムスタンプ、前記メトリクスデータに対する測定の単位、及び前記メトリクスデータによって表されるメトリクスの測定値を含む、条項２５〜３０のいずれかに記載のシステム。
【０１４２】
３２．前記メトリクス識別子が、ハッシュ関数及び前記メタデータ内で指定された１つまたは複数のメトリクス属性を用いて生成された、条項２５〜３１のいずれかに記載のシステム。
【０１４３】
３３．非一時的なコンピュータ可読ストレージ媒体であって、実行可能な命令を保存し、前記命令は、コンピュータシステムの１つまたは複数のプロセッサによって実行されると、前記コンピュータシステムに、少なくとも、
メトリクスの１つまたは複数の測定値を保存する第１のアプリケーションプログラミングインタフェース呼び出しを受信することであって、前記第１のアプリケーションプログラミングインタフェース呼び出しは、前記１つまたは複数の測定値及び前記１つまたは複数の測定値に対するメトリクス識別子を指定し、前記メトリクス識別子は、前記メトリクスの他の測定値を保存するための先のリクエストに含まれるメタデータに少なくとも部分的に基づいて生成される、前記第１のアプリケーションプログラミングインタフェース呼び出しを受信することと、
前記メトリクス識別子を用いて、前記１つまたは複数の測定値を保存するデータストアを識別することと、
前記１つまたは複数の測定値及び前記他の測定値を、前記メタデータまたは前記完全修飾メトリクス識別子を含むリクエストに応答して取得することができるように、前記１つまたは複数の測定値を前記識別されたデータストアに保存することと、を行わせる、前記非一時的なコンピュータ可読ストレージ媒体。
【０１４４】
３４．前記命令は、さらに、前記コンピュータシステムに、
前記メトリクスの複数の測定値を検索する第２のアプリケーションプログラミングインタフェース呼び出しを受信することであって、前記第２のアプリケーションプログラミングインタフェース呼び出しは、前記メタデータを含む、前記第２のアプリケーションプログラミングインタフェース呼び出しを受信することと、
前記含まれるメタデータを用いて、前記メトリクス識別子を生成することと、
前記生成されたメトリクス識別子及び前記メタデータに指定された１つまたは複数の期間に少なくとも部分的に基づいて、前記１つまたは複数の測定値及び前記他の測定値を含む１つまたは複数のデータストアを識別することと、
前記識別された１つまたは複数のデータストアから、前記１つまたは複数の測定値及び前記他の測定値を提供することと、を行わせる、条項３３に記載の非一時的なコンピュータ可読ストレージ媒体。
【０１４５】
３５．前記命令は、さらに、前記コンピュータシステムに、
前記１つまたは複数の測定値をバイナリシリアライゼーションフォーマットに変換することであって、前記バイナリシリアライゼーションフォーマットの前記１つまたは複数の測定値は、前記メトリクス識別子及び前記測定値を含む、前記バイナリシリアライゼーションフォーマットに変換することを行わせる、条項３３または３４に記載の非一時的なコンピュータ可読ストレージ媒体。
【０１４６】
３６．前記１つまたは複数の測定値を、前記識別されたデータストアに保存することが、
前記データストアから、前記メトリクスのシリアライズされた測定値を検索することであって、前記シリアライズされた測定値が、前記バイナリシリアライゼーションフォーマットで前記他の測定値を含む、前記測定値を検索することと、
前記バイナリシリアライゼーションフォーマットの前記シリアライズされた測定値及び前記１つまたは複数の測定値をデシリアライズすることと、
前記１つまたは複数の測定値を前記他の測定値と集計することと、
前記１つまたは複数の測定値及び前記他の測定値を前記バイナリシリアライゼーションフォーマットに変換することと、を含む、条項３５に記載の非一時的なコンピュータ可読ストレージ媒体。
【０１４７】
３７．前記命令は、さらに、前記コンピュータシステムに、
ランレングス符号化を用いて、前記バイナリシリアライゼーションフォーマットで同一の値を有する１つまたは複数の連続した測定値に対して前記１つまたは複数の測定値を圧縮することを行わせる、条項３５または３６に記載の非一時的なコンピュータ可読ストレージ媒体。
【０１４８】
３８．前記命令は、さらに、前記コンピュータシステムに、
前記１つまたは複数の測定値の前記メトリクス識別子及びタイムスタンプに少なくとも部分的に基づいて、パーティションを生成することと、
前記論理パーティションの前記１つまたは複数の測定値を、集計サブシステムに割り振るためにキュー内に配置することであって、前記集計サブシステムは、前記識別されたデータストアを含む、前記配置することと、
前記１つまたは複数の測定値を前記識別されたデータストアに保存するために、前記キューから、前記集計サブシステムに前記１つまたは複数の測定値を送信することと、を行わせる、条項３３〜３７のいずれかに記載の非一時的なコンピュータ可読ストレージ媒体。
【０１４９】
３９．前記命令は、さらに、前記コンピュータシステムに、
メトリクスマッピングレジストリから、パーティションと集計サブシステムのマッピングを経時的に取得することと、
前記メトリクスデータの前記メトリクス識別子及び前記タイムスタンプを用いて、前記１つまたは複数の測定値を前記識別されたデータストアに保存するために、前記マッピングから前記集計サブシステムを判定することと、を行わせる、条項３８に記載の非一時的なコンピュータ可読ストレージ媒体。
【０１５０】
４０．前記メトリクス識別子がハッシュ関数を用いて生成されて、前記他の測定値を保存する前記リクエストに含まれる前記メタデータに指定された１つまたは複数のメトリクス属性をハッシュする、条項３３〜３９のいずれかに記載の非一時的なコンピュータ可読ストレージ媒体。
【０１５１】
４１．少なくとも、ウェブサーバコンピュータシステムで、
カスタマーコンピュータシステムに関連するコンピューティングリソースから、メトリクスの複数の測定値を取得することであって、前記複数の測定値の測定値ごとに、前記測定値の属性を指定するメタデータを含む、前記メトリクスの複数の取得することと、
ハッシュ関数及び前記メタデータを用いて、前記複数の測定値の測定値ごとに完全修飾メトリクス識別子を生成することと、
コンピューティングリソースモニタリングサービスのメトリクスマッピングレジストリから、前記複数の測定値の測定値ごとのタイムスタンプに少なくとも部分的に基づいて、論理パーティションの前記コンピューティングリソースモニタリングサービスの集計サブシステムに対するマッピングを取得することであって、前記１つまたは複数の集計サブシステムは、前記複数の測定値を保存するためものである、前記マッピングを取得することと、
測定値ごとの前記完全修飾メトリクス識別子及び前記複数の測定値の測定値ごとの前記タイムスタンプに少なくとも部分的に基づいて、前記複数の測定値を複数の論理パーティションに分割することと、
前記複数の測定値の測定値ごとの前記タイムスタンプに少なくとも部分的に基づいて、前記複数の論理パーティションの前記複数の測定値を部分分割することと、
前記複数の測定値の測定値ごとの前記タイムスタンプに少なくとも部分的に基づいて、前記複数の論理パーティションの前記複数の測定値に優先順位を付けることと、
前記コンピューティングリソースモニタリングサービスの前記１つまたは複数の集計サブシステムに１つまたは複数のアプリケーションプログラミングインターフェース呼び出しを送信することであって、前記１つまたは複数の集計サブシステムの１つまたは複数のデータストア内に前記複数の論理パーティションの前記複数の測定値を保存し、前記１つまたは複数のアプリケーションプログラミングインターフェース呼び出しは、前記複数の測定値を含む、前記１つまたは複数のアプリケーションプログラミングインターフェース呼び出しを送信することと、によって、
前記ウェブサーバコンピュータシステムで、入力されるメトリクスを処理することを含む、コンピュータにより実装される方法。
【０１５２】
４２．前記複数の論理パーティションからの前記複数の測定値を１つまたは複数のファイルベースのキューに配置することであって、前記１つまたは複数のファイルベースのキューは、前記１つまたは複数の集計サブシステムに関連付けられている、前記配置することと、
前記ファイルベースのキューから、前記複数の測定値を前記１つまたは複数の集計サブシステムに配信することと、をさらに含む、条項４１に記載のコンピュータにより実装される方法。
【０１５３】
４３．最近のタイムスタンプを含む前記少なくとも１つの測定値に少なくとも部分的に基づいて、前記複数の測定値から前記少なくとも１つの測定値を選択することをさらに含む、条項４１または４２に記載のコンピュータにより実装される方法。
【０１５４】
４４．前記ウェブサーバコンピュータシステムから、前記複数の測定値を前記１つまたは複数のデータストアから検索するリクエストを送信することと、
メトリクス統合エンジンで、前記複数の論理パーティションの前記マッピングに少なくとも部分的に基づいて、前記１つまたは複数のデータストアを含む前記１つまたは複数の集計サブシステムを判定することと、
前記１つまたは複数のデータストアから、前記複数の測定値を取得することと、
前記複数の測定値を前記ウェブサーバコンピュータシステムに提供することと、をさらに含む、条項４１〜４３のいずれかに記載のコンピュータにより実装される方法。
【０１５５】
４５．１つまたは複数のプロセッサと、
命令を含むメモリであって、前記命令が、前記一つまたは複数のプロセッサによって実行されると、前記システムに、
メトリクスの複数の測定値を受信することであって、前記複数の測定値のうちの測定値は、前記測定値に対するメタデータを含む、前記メトリクスの複数の測定値を受信することと、
前記測定値に対して、前記メタデータに少なくとも部分的に基づいて、メトリクス識別子を判定することと、
前記測定値を複数のパーティションに分割することと、
前記システムから、コンピューティングリソースモニタリングサービスの１つまたは複数の集計システムに、前記測定値を保存するメッセージを送信することと、を行わせる、前記メモリとを備えるシステム。
【０１５６】
４６．前記命令は、さらに、前記システムに、
前記１つまたは複数のデータストアから１つまたは複数の測定値を検索するリクエストを送信することであって、前記リクエストは、前記メトリクス識別子を含み、前記１つまたは複数の測定値に関連する期間を指定し、前記メトリクス識別子及び前記指定された期間は、前記１つまたは複数の測定値が保存されている１つまたは複数のデータストアを識別するのに用いられる、前記リクエストを送信することと、
前記コンピューティングリソースモニタリングサービスから前記１つまたは複数の測定値を取得することと、を行わせる、条項４５に記載のシステム。
【０１５７】
４７．前記命令は、さらに、前記システムに、前記測定値をバイナリシリアライゼーションフォーマットでシリアライズすることであって、前記バイナリシリアライゼーションフォーマットの前記測定値が、前記メトリクス識別子、前記測定値のタイムスタンプ、前記測定値に対する測定の単位及び前記測定値自体を含む、前記シリアライズすることと、を行わせる、条項４５または４６に記載のシステム。
【０１５８】
４８．前記命令は、さらに、前記システムに、
前記測定値のタイムスタンプに少なくとも部分的に基づいて、複数のパーティションの複数の集計サブシステムに対するマッピングを取得することと、
前記マッピングに少なくとも部分的に基づいて、前記複数のパーティションに対する前記１つまたは複数の集計サブシステムを識別することと、
前記メッセージの作成のために、前記複数のパーティションを前記１つまたは複数の集計サブシステムに関連付けて、前記複数の論理パーティションからの前記測定値の選択を可能にすることと、を行わせる、条項４５〜４７のいずれかに記載のシステム。
【０１５９】
４９．前記命令は、さらに、前記システムに、
前記複数のパーティションのうちの任意のパーティションが、前記複数の測定値のうちの少なくとも１つの測定値に対して容量が不足しているかどうかを判定することと、
前記少なくとも１つの測定値を配置するための容量を作成するのに、前記少なくとも１つの測定値のタイムスタンプよりも以前のタイムスタンプを有する１つまたは複数の測定値をパージすることと、を行わせる、条項４５〜４８のいずれかに記載のシステム。
【０１６０】
５０．前記命令は、さらに、前記システムに、
前記メトリクス識別子及び保持期間外のタイムスタンプに少なくとも部分的に基づいて、測定値の配置のために利用可能な論理パーティションがないことを判定することと、
論理パーティションが前記測定値の配置のために利用可能となるまで、前記測定値をキューに配置することと、を行わせる、条項４５〜４９のいずれかに記載のシステム。
【０１６１】
５１．前記メッセージが、前記１つまたは複数の集計サブシステムに、前記測定値の配信成功の確認応答を提供するように構成されている通信プロトコルを用いて送信される、条項４５〜５０のいずれかに記載のシステム。
【０１６２】
５２．前記命令は、さらに、前記システムに、
前記複数のパーティションからの前記測定値を、前記１つまたは複数の集計サブシステムに関連付けられている１つまたは複数のキュー内に配置することと、
前記キューから、前記測定値を前記１つまたは複数の集計サブシステムに配信することと、を行わせる、条項４５〜５１のいずれかに記載のシステム。
【０１６３】
５３．非一時的なコンピュータ可読ストレージ媒体であって、実行可能な命令を保存し、前記命令は、コンピュータシステムの１つまたは複数のプロセッサによって実行されると、前記コンピュータシステムに、少なくとも、
メトリクスの測定値を取得することであって、前記測定値は、前記測定値の属性を指定するメタデータを含む、前記メトリクスの測定値を取得することと、
前記メタデータに少なくとも部分的に基づいて、前記測定値に対するメトリクス識別子を判定することと、
前記測定値を含む複数の測定値を複数のパーティションに分割することと、
前記複数のパーティションからの前記複数の測定値を、コンピューティングリソースモニタリングサービスの複数の集計システム間で割り振る、前記非一時的なコンピュータ可読ストレージ媒体。
【０１６４】
５４．前記命令は、さらに、前記コンピュータシステムに、
前記複数のパーティションの前記コンピューティングリソースモニタリングサービスの前記複数の集計システムに対するマッピングを取得することと、
前記パーティションを、対応する集計システムに関連付けて、前記パーティションからの前記複数の測定値の前記対応する集計システムへの割り振りを判定することと、を行わせる、条項５３に記載の非一時的なコンピュータ可読ストレージ媒体。
【０１６５】
５５．前記命令は、さらに、前記コンピュータシステムに、
前記複数の測定値を複数のキュー内に配置することであって、前記１つまたは複数のキューは前記複数の集計システムに関連付けられる、前記配置することと、
前記複数のキューから前記複数の測定値を前記複数の集計システム間で割り振ることと、を行わせる、条項５３または５４に記載の非一時的なコンピュータ可読ストレージ媒体。
【０１６６】
５６．前記命令は、さらに、前記コンピュータシステムに、
前記複数の測定値を、前記複数の測定値の保存が成功すると前記複数の測定値の割り振り成功の確認応答を提供するように構成された通信プロトコルを用いて前記複数の集計システム間で割り振ることを行わせる、条項５３〜５５のいずれかに記載の非一時的なコンピュータ可読ストレージ媒体。
【０１６７】
５７．前記命令は、さらに、前記コンピュータシステムに、
１つまたは複数の測定値を検索するメッセージを前記複数の集計システムに送信することであって、前記リクエストは、前記メトリクス識別子を含み、前記１つまたは複数の測定値に対する期間を指定して、前記複数の集計システムの識別を可能にする、前記複数の集計システムに送信することと、
前記複数の集計システムから前記１つまたは複数の測定値を取得することと、を実行させる、条項５３〜５６のいずれかに記載の非一時的なコンピュータ可読ストレージ媒体。
【０１６８】
５８．前記命令は、さらに、前記コンピュータシステムに、
前記メトリクスの第２の測定値を取得することであって、前記第２の測定値は前記第２の測定値の属性を指定するメタデータを含む、前記第２の測定値を取得することと、
前記第２の測定値の前記メタデータに少なくとも部分的に基づいて、前記第２の測定値に対するメトリクス識別子を判定することと、
前記第２の測定値に対する前記メトリクス識別子及び最近の保持期間より後である前記第２の測定値のタイムスタンプに少なくとも部分的に基づいて、前記第２の測定値に対して利用可能な論理パーティションは存在しないことを判定することと、
パーティションが前記第２の測定値に対して利用可能になるまで、前記第２の測定値をキューに配置することと、を行わせる、条項５３〜５７のいずれかに記載の非一時的なコンピュータ可読ストレージ媒体。
【０１６９】
５９．前記命令は、さらに、前記コンピュータシステムに、
前記測定値をバイナリシリアライゼーションフォーマットに変換することであって、前記バイナリシリアライゼーションフォーマットの前記測定値がさらに少なくとも前記メトリクス識別子を含む、前記変換すること、を行わせる、条項５３〜５８のいずれかに記載の非一時的なコンピュータ可読ストレージ媒体。
【０１７０】
６０．前記命令は、さらに、前記コンピュータシステムに、
少なくとも１つの測定値に対する容量が不足している任意のパーティションに対して、前記少なくとも１つの測定値のタイムスタンプよりも以前のタイムスタンプを有する１つまたは複数の測定値を前記パーティションから削除することを行わせる、条項５３〜５９のいずれかに記載の非一時的なコンピュータ可読ストレージ媒体。
【０１７１】
６１．実行可能な命令で構成される１つまたは複数のコンピュータシステムの制御下で、
オートスケールグループの１つまたは複数の仮想マシンインスタンスのための１つまたは複数のロードバランサから、複数の測定値のうちの測定値の属性を指定するメタデータを含む、メトリクスの前記複数の測定値を受信することと、
ハッシュ関数及び前記メタデータを用いて、前記測定値に対する完全修飾メトリクス識別子を生成することと、
前記測定値の前記完全修飾メトリクス識別子及びタイムスタンプに少なくとも部分的に基づいて、前記測定値を分割して、複数の論理パーティションを得ることと、
前記複数の論理パーティションからの前記複数の測定値を、１つまたは複数の集計サブシステムの１つまたは複数のデータストア内に保存するために、前記１つまたは複数の集計サブシステムに送信することと、
前記１つまたは複数の仮想マシンインスタンスに対する１つまたは複数のインスタンスマネージャで、前記１つまたは複数のデータストアから前記測定値を取得することと、
前記オートスケールグループでいくつかの仮想マシンインスタンスを少なくとも変更することによって、前記取得された測定値に少なくとも部分的に基づいて前記オートスケールグループの自動スケーリングを行うことと、を含む、コンピュータにより実装される方法。
【０１７２】
６２．メトリクスマッピングレジストリから、前記複数の論理パーティションの複数の集計サブシステムに対するマッピングを取得することと、
前記複数の論理パーティションの論理パーティションごとに、前記マッピングに少なくとも部分的に基づいて、前記対応する集計サブシステムを識別することと、
各論理パーティションを前記識別された対応する集計サブシステムに関連付けて、前記論理パーティションの前記測定値を、前記識別された対応する集計サブシステムに送信することを可能にすることと、をさらに含む、条項６１に記載のコンピュータにより実装される方法。
【０１７３】
６３．前記１つまたは複数のインスタンスマネージャから、１つまたは複数の測定値を検索するリクエストを受信することであって、前記リクエストは前記完全修飾メトリクス識別子を含む、前記リクエストを受信することと、
前記完全修飾メトリクス識別子を用いて、前記１つまたは複数の測定値が保存されている前記１つまたは複数のデータストアを識別することと、
前記リクエストに応答して、前記１つまたは複数の測定値を前記１つまたは複数のインスタンスマネージャに提供することと、をさらに含む、条項６１または６２に記載のコンピュータにより実装される方法。
【０１７４】
６４．１つまたは複数の集計サブシステム内で、前記測定値を前記１つまたは複数のメモリ内データストア内の既存の測定値と集計して、前記複数の測定値の保存を可能にすることをさらに含む、条項６１〜６３のいずれかに記載のコンピュータにより実装される方法。
【０１７５】
６５．１つまたは複数のサービスを実装するように構成された少なくとも１つのコンピューティングデバイスを備えるシステムであって、前記１つまたは複数のサービスが、
コンピューティングリソースのグループに関連するメトリクスの複数の測定値を受信することであって、前記複数の測定値のうちの測定値は前記測定値に対するメタデータに関連付けられる、前記複数の測定値を受信することと、
前記測定値に対して、前記メタデータに少なくとも部分的に基づいて、メトリクス識別子を判定することと、
前記測定値を複数のパーティションに分割することと、
前記複数のパーティションからの前記測定値を、保存のために１つまたは複数のメモリ内データストアに送信することと、
前記測定値を、前記グループの１つまたは複数のコンピューティングリソースマネージャに提供して、前記グループの１つまたは複数のコンピューティングリソースの修正を可能にすることと、を行うように構成された、前記システム。
【０１７６】
６６．前記１つまたは複数のサービスが、
１つまたは複数の測定値を検索するリクエストを受信することであって、前記リクエストは、前記メトリクス識別子を含み、期間を指定する、前記リクエストを受信することと、
前記メトリクス識別子及び前記指定された期間を用いて、前記１つまたは複数の測定値が保存されている前記１つまたは複数のメモリ内データストアを識別することと、
前記１つまたは複数の測定値を取得することと、
前記１つまたは複数の測定値を前記１つまたは複数のコンピューティングリソースマネージャに送信して、前記グループの前記１つまたは複数のコンピューティングリソースの修正を可能にすることと、を行うように構成された、条項６５に記載のシステム。
【０１７７】
６７．前記１つまたは複数のサービスが、さらに、前記測定値を、前記１つまたは複数のメモリ内データストアに前記測定値を保存するために、前記１つまたは複数のメモリ内データストアの既存の測定値と集計するように構成された、条項６５または６６に記載のシステム。
【０１７８】
６８．前記１つまたは複数のサービスが、さらに、前記測定値をバイナリシリアライゼーションフォーマットでシリアライズし、前記バイナリシリアライゼーションフォーマットの前記測定値が、前記メトリクス識別子、前記メトリクスのタイムスタンプ、前記測定値に対する測定の単位、及び前記測定値自体を含む、ように構成された、条項６５〜６７のいずれかに記載のシステム。
【０１７９】
６９．前記１つまたは複数のサービスが、さらに、前記複数のパーティションのうちの１つまたは複数のパーティションに、前記測定値のための容量がない場合、前記測定値の最も早いタイムスタンプよりも以前のタイムスタンプを有する１つまたは複数の測定値をパージするように構成された、条項６５〜６８のいずれかに記載のシステム。
【０１８０】
７０．前記１つまたは複数のサービスが、
前記複数のパーティションの複数の集計システムに対するマッピングを取得することであって、前記複数の集計システムは、前記１つまたは複数のメモリ内データストアを含む、前記マッピングを取得することと、
前記マッピングに少なくとも部分的に基づいて、前記複数のパーティションのうちのパーティションに対する対応する集計システムを識別することと、
前記パーティションを前記対応する集計システムに関連付けて、前記パーティションからの前記測定値を前記１つまたは複数のメモリ内データストアに送信することを可能にすることと、を行うように構成された、条項６５〜６９のいずれかに記載のシステム。
【０１８１】
７１．前記１つまたは複数のサービスが、前記１つまたは複数のメモリ内データストアから期限切れの測定値を、前記期限切れの測定値に対する古い保持期間がより新しい保持期間に置き換えられていることを受けて削除するように構成された、条項６５〜７０のいずれかに記載のシステム。
【０１８２】
７２．前記１つまたは複数のコンピューティングリソースマネージャが、前記提供された測定値に少なくとも部分的に基づいて、前記オートスケールグループに対してさらなるコンピューティングリソースを供給するように構成された、条項６５〜７１のいずれかに記載のシステム。
【０１８３】
７３．非一時的なコンピュータ可読ストレージ媒体であって、実行可能な命令を保存し、前記命令は、コンピュータシステムの１つまたは複数のプロセッサによって実行されると、前記コンピュータシステムに、少なくとも、
コンピューティングリソースのグループに関連するメトリクスの測定値を受信することであって、前記測定値は、前記測定値に対するメタデータに関連付けられる、前記測定値を受信することと、
前記メタデータに少なくとも部分的に基づいて、メトリクス識別子を判定することと、
前記測定値に対する前記メトリクス識別子に少なくとも部分的に基づいて、複数のパーティションから、あるパーティションを選択することと、
前記選択されたパーティションからの前記測定値を、保存のためにメモリ内データストアに送信することと、
前記測定値を前記コンピューティングリソースのグループに対する１つまたは複数のコンピューティングリソースマネージャに提供して、１つまたは複数の動作を前記コンピューティングリソースのグループ上で行うことを可能にすること、を行わせる、前記非一時的なコンピュータ可読ストレージ媒体。
【０１８４】
７４．前記１つまたは複数のコンピューティングリソースマネージャが、前記提供された測定値に少なくとも部分的に基づいて、前記オートスケールグループから１つまたは複数のコンピューティングリソースを終了させるように構成された、条項７３に記載の非一時的なコンピュータ可読ストレージ媒体。
【０１８５】
７５．前記命令は、さらに、前記コンピュータシステムに、
集計システムに対するパーティションのマッピングに少なくとも部分的に基づいて、
前記選択されたパーティションに対する対応する集計システムを判定することであって、前記対応する集計システムは前記メモリ内データストアを含む、前記集計システムを判定することと、
前記パーティションを前記対応する集計システムに関連付けて、前記選択されたパーティションから前記メモリ内データストアへの前記測定値の送信を可能にすること、を行わせる、条項７３または７４に記載の非一時的なコンピュータ可読ストレージ媒体。
【０１８６】
７６．前記命令は、さらに、前記コンピュータシステムに、
前記選択されたパーティションに前記測定値に対する容量がないかどうかを判定することと、
前記測定値のタイムスタンプよりも以前のタイムスタンプを有する１つまたは複数の測定値をパージすることと、を行わせる、条項７３〜７５のいずれかに記載の非一時的なコンピュータ可読ストレージ媒体。
【０１８７】
７７．前記命令は、さらに、前記コンピュータシステムに、
前記メモリ内データストア内に保存された測定値に関して、古い保持期間がより新しい保持期間に置き換えられたことを判定することと、
メモリ内データストアから、前記古い保持期間内のタイムスタンプを有する測定値を削除することと、を行わせる、条項７３〜７６のいずれかに記載の非一時的なコンピュータ可読ストレージ媒体。
【０１８８】
７８．前記命令は、さらに、前記コンピュータシステムに、
メトリクスの１つまたは複数の測定値を検索するメッセージを受信することであって、前記リクエストは、前記１つまたは複数の測定値に関連する前記メトリクス識別子を含み、時間範囲を指定する、前記メッセージを受信することと、
前記メトリクス識別子及び前記指定された時間範囲を用いて、１つまたは複数のメモリ内データストアを識別することと、
前記識別された１つまたは複数のメモリ内データストアから、前記１つまたは複数の測定値を取得することと、
前記１つまたは複数の測定値を前記１つまたは複数のコンピューティングリソースマネージャに送信して、前記グループ上で前記１つまたは複数の動作のパフォーマンスを可能にすること、を行わせる、条項７３〜７８のいずれかに記載の非一時的なコンピュータ可読ストレージ媒体。
【０１８９】
７９．前記命令は、さらに、前記コンピュータシステムに、
前記測定値を、バイナリシリアライゼーションフォーマットを用いてシリアライズし、前記バイナリシリアライゼーションフォーマットの前記測定値が、前記メトリクス識別子、前記測定値のタイムスタンプ、前記測定値に対する測定の単位、及び前記測定値自体を含む、前記シリアライズすること、を行わせる、条項７３〜７８のいずれかに記載の非一時的なコンピュータ可読ストレージ媒体。
【０１９０】
８０．前記命令は、さらに、前記コンピュータシステムに、
前記メモリ内データストアから、前記バイナリシリアライゼーションフォーマットの複数の測定値を取得することと、
前記複数の測定値及び前記受信した前記メトリクスの測定値をデシリアライズすることと、
前記複数の測定値を前記メトリクスの前記受信した測定値と、前記メモリ内データストア内に保存するために集計することと、を行わせる、条項７９に記載の非一時的なコンピュータ可読ストレージ媒体。
【０１９１】
８１．コンピューティングリソースサービスプロバイダによって提供されるコンピューティングリソースモニタリングサービスの１つまたは複数のコンピュータシステムの制御下で、
前記コンピューティングリソースサービスプロバイダのカスタマーのカスタマーコンピュータシステムから、メトリクスの測定値の第１のセットを検索する第１のアプリケーションプログラミングインタフェース呼び出しを受信することであって、前記第１のアプリケーションプログラミングインタフェース呼び出しは、完全修飾メトリクス識別子を含み、測定値の前記第１のセットに対する時間範囲及び測定値の前記第１のセットが信頼できるべきであることを示すパラメータを指定するものである、前記第１のアプリケーションプログラミングインタフェース呼び出しを受信することと、
前記完全修飾メトリクス識別子及び測定値の前記第１のセットに対する前記指定された時間範囲に少なくとも部分的に基づいて、測定値の前記第１のセットが保存されている１つまたは複数のデータストアを判定することと、
測定値の前記第１のセットが保存されている前記判定された１つまたは複数のデータストアから、測定値の前記第１のセットを取得することと、
前記判定された１つまたは複数のデータストアから取得された測定値の前記第１のセットが信頼できるものであるかどうかを判定することと、
測定値の前記第１のセットが信頼できるものであることを受けて、測定値の前記第１のセットを、前記第１のアプリケーションプログラミングインターフェース呼び出しに応答して提供することと、
前記カスタマーコンピュータシステムから、前記メトリクスの測定値の第２のセットを取得する第２のアプリケーションプログラミングインターフェース呼び出しを受信することであって、前記第２のアプリケーションプログラミングインタフェース呼び出しは、前記完全修飾メトリクス識別子を含み、測定値の前記第２のセットに対する時間範囲及び測定値の前記第２のセットは前記メトリクスの測定値の保存の期間が過ぎたかどうかにかかわらず取得されることを示すパラメータを指定するものである、前記第２のアプリケーションプログラミングインターフェース呼び出しを受信することと、
前記完全修飾メトリクス識別子及び測定値の前記２のセットに対する前記指定された時間範囲に少なくとも部分的に基づいて、測定値の前記第２のセットが保存されている１つまたは複数のデータストアを判定することと、
測定値の前記第２のセットが保存されている前記判定された１つまたは複数のデータストアから、測定値の前記第２のセットを取得することと、
前記第２のアプリケーションプログラミングインタフェース呼び出しに応答して、測定値の前記第２のセットを提供することと、を含む、コンピュータにより実装される方法。
【０１９２】
８２．前記カスタマーコンピュータシステムから、第２のメトリクスに対する期間内に取得された前記第２のメトリクスの測定値を保存する第３のアプリケーションプログラミングインタフェース呼び出しを受信することであって、前記第３のアプリケーションプログラミングインタフェース呼び出しは、保存される前記測定値が前記期間において信頼できることを示すパラメータを指定するものである、前記第３のアプリケーションプログラミングインタフェース呼び出しを受信することと、
前記第２のメトリクスの前記測定値に対する完全修飾メトリクス識別子を判定することと、
前記第２のメトリクスの前記測定値に対する前記完全修飾メトリクス識別子に少なくとも部分的に基づいて、前記第２のメトリクスの前記測定値に対するデータストアを判定することと、
前記判定されたデータストア内に、前記第２のメトリクスの前記測定値を保存することと、
保存される前記測定値が前記期間において信頼できることを示す前記パラメータを指定する前記第３のアプリケーションプログラミングインタフェース呼び出しを受けて、前記第２のメトリクスの前記測定値を検索のために利用可能とし、前記第２のメトリクスの前記測定値が前記期間において信頼できることを示すことと、をさらに含む、条項８１に記載のコンピュータにより実装される方法。
【０１９３】
８３．前記第２のメトリクスの前記測定値に対する前記完全修飾メトリクス識別子に少なくとも部分的に基づいて、前記測定値を配置するために、複数の論理パーティションのうちのある論理パーティションを選択することと、
メトリクスマッピングレジストリから、前記第２のメトリクスの前記測定値のタイムスタンプに少なくとも部分的に基づいて、前記複数の論理パーティションの複数のメモリ内データストアに対するマッピングを取得することと、
前記論理パーティションからの前記第２のメトリクスの前記測定値を、前記マッピングに少なくとも部分的に基づいて、前記メモリ内データストアを備える対応する集計サブシステムに送信することと、をさらに含む、条項８２に記載のコンピュータにより実装される方法。
【０１９４】
８４．メトリクスマッピングレジストリを更新して、前記判定された１つまたは複数のデータストア内に保存されている前記測定値を受けて、前記測定値が前記期間において信頼できることを示すこと、をさらに含む、条項８２または８３に記載のコンピュータにより実装される方法。
【０１９５】
８５．１つまたは複数のサービスを実装するように構成された少なくとも１つのコンピューティングデバイスを備えるシステムであって、前記１つまたは複数のサービスが、
時間間隔においてメトリクスの測定値データを検索するリクエストを受信し、
前記リクエストの情報に少なくとも部分的に基づいて、前記測定値データが保存されている１つまたは複数のデータストアを判定し、
前記リクエストに対するレスポンスを生成し、
前記リクエストが、前記生成されたレスポンスで信頼できるデータが提供されるべきであることを示している場合、前記生成されたレスポンスは、前記測定値データを信頼できる測定値データに限定し、
前記リクエストが、前記生成されたレスポンスで信頼できるデータが提供されるべきであると示さない場合、前記生成されたレスポンスは、信頼できる測定値データに限定しない、ように構成された、前記システム。
【０１９６】
８６．前記リクエストの前記情報が、検索される前記測定値データは信頼できることを示す情報を含む、条項８５に記載のシステム。
【０１９７】
８７．前記リクエストの前記情報が、検索される測定値データは前記信頼できる測定値データに限定されないことを示す情報を含む、条項８５〜８６に記載のシステム。
【０１９８】
８８．前記リクエストの前記情報が、前記測定値データに対するメトリクス識別子及び時間情報を含み、
前記１つまたは複数のサービスが、さらに、
少なくとも前記時間間隔において、前記測定値データが保存されている前記１つまたは複数のデータストアを示すマッピングを取得し、
前記メトリクス識別子を用いて、前記測定値データが保存されている前記１つまたは複数のデータストアを識別する、ように構成された、条項８５〜８７に記載のシステム。
【０１９９】
８９．前記１つまたは複数のサービスが、さらに、
第２のメトリクスの測定値を保存する第２のリクエストを受信することと、
前記第２のリクエストの情報に少なくとも部分的に基づいて、前記第２のメトリクスの測定値データは時間間隔において信頼できることを判定することであって、前記第２のメトリクスの前記測定値データは、前記第２のメトリクスの前記測定値を含む、前記判定することと、
前記第２のメトリクスの前記測定値を、前記時間間隔において信頼できるものとして、第２のメモリ内データストアに保存すること、を行うように構成された、条項８５〜８８のいずれかに記載のシステム。
【０２００】
９０．前記第２のメトリクスの前記測定値を保存する前記第２のリクエストが、前記第２のメトリクスの前記測定値及び前記第２のメトリクスの前記測定値の属性を指定するメタデータを含み、
前記１つまたは複数のサービスが、さらに、
前記メタデータに少なくとも部分的に基づいて、前記第２のメトリクスの前記測定値に対するメトリクス識別子を生成し、
前記第２のメトリクスの前記測定値に対する前記メトリクス識別子に少なくとも部分的に基づいて、複数の論理パーティションのうちのあるパーティションを、前記第２のメトリクスの前記測定値を配置するために選択し、
前記パーティションからの前記測定値を、前記第２のメモリ内データストアを備える対応する集計システムに送信する、ように構成された、条項８９に記載のシステム。
【０２０１】
９１．前記１つまたは複数のサービスが、さらに、
前記第２のメモリ内データストアから、前記第２のメトリクスの期限切れの測定値を削除し、
前記第２のメトリクスの前記測定値を前記第２のメトリクスの期限切れしていない測定値と、前記第２のメトリクスの前記測定値を保存するために集計する、ように構成された、条項９０に記載のシステム。
【０２０２】
９２．前記１つまたは複数のサービスが、さらに、
前記第２のメトリクスの前記測定値をバイナリシリアライゼーションフォーマットでシリアライズし、
前記バイナリシリアライゼーションフォーマットの前記測定値が、前記メトリクス識別子、前記第２のメトリクスの前記測定値のタイムスタンプ、前記第２のメトリクスの前記測定値の測定の単位及び前記第２のメトリクスの前記測定値自体を含むようにする、ように構成された、条項９０または９１に記載のシステム。
【０２０３】
９３．非一時的なコンピュータ可読ストレージ媒体であって、実行可能な命令を保存し、前記命令は、コンピュータシステムの１つまたは複数のプロセッサによって実行されると、前記コンピュータシステムに、少なくとも、
メトリクスの測定値データを検索するリクエストを受信すること、
前記リクエストの情報に少なくとも部分的に基づいて、前記測定値データが保存されているメモリ内データストアを識別すること、
前記リクエストの前記情報が、信頼できる測定値が提供されるべきであることを示している場合、信頼できる測定値データを提供すること、
前記情報が信頼できる測定値が提供されるべきであると示していない場合、前記測定値データが信頼できるかどうかに関わらず、前記測定値データを提供すること、
を行わせる、前記非一時的なコンピュータ可読ストレージ媒体。
【０２０４】
９４．前記命令は、さらに、前記コンピュータシステムに、
第２のメトリクスの測定値を保存する第２のリクエストを受信することであって、前記第２のリクエストは、前記第２のメトリクスの前記測定値を指定し、時間間隔が経過する前に収集された前記第２のメトリクスの測定値は前記時間間隔において信頼できることを示す情報を有さない、前記第２のリクエストを受信することと、
前記リクエストは前記第２のメトリクスの前記測定値が前記時間間隔において信頼できることを示す情報に欠けていることを受けて、前記第２のメトリクスの前記測定値を、第２のメモリ内データストアに、前記時間間隔において信頼できるものではないものとして保存することと、を行わせる、条項９３に記載の非一時的なコンピュータ可読ストレージ媒体。
【０２０５】
９５．前記リクエストの前記情報が、検索される前記メトリクスの前記測定値データは信頼できる測定値であるべきと示すパラメータを指定する、条項９３または９４に記載の非一時的なコンピュータ可読ストレージ媒体。
【０２０６】
９６．前記命令は、さらに、前記コンピュータシステムに、
前記リクエストの前記情報に少なくとも部分的に基づいて、前記測定値データが保存されている前記メモリ内データストアを示すマッピングを取得することと、
前記リクエストの前記情報を用いて、前記マッピングから、前記測定値データが保存されている前記メモリ内データストアを識別することと、を行わせる、条項９３〜９６のいずれかに記載の非一時的なコンピュータ可読ストレージ媒体。
【０２０７】
９７．前記リクエストの前記情報が、
前記マッピングを取得するのに使用可能な時間情報と、
前記測定値データが保存されている前記メモリ内データストアを、前記マッピングから識別するのに使用可能なメトリクス識別子と、を含む、条項９６に記載の非一時的なコンピュータ可読ストレージ媒体。
【０２０８】
９８．前記命令は、さらに、前記コンピュータシステムに、
第２のメトリクスの測定値を保存する第２のリクエストを受信することであって、前記第２のリクエストは、前記第２のメトリクスの測定値データが時間間隔において信頼できることを示す情報を含む、前記第２のリクエストを受信することと、
前記第２のメトリクスの前記測定値を、第２のメモリ内データストアに、信頼できるものとして保存することであって、前記第２のメトリクスの信頼できる測定値を取得するリクエストに応答して戻す、前記保存することと、を行わせる、条項９３〜９７のいずれかに記載の非一時的なコンピュータ可読ストレージ媒体。
【０２０９】
９９．前記命令は、さらに、前記コンピュータシステムに、
前記第２のリクエストに含まれる前記情報に少なくとも部分的に基づいて、前記第２のメトリクスの前記測定値に対するメトリクス識別子を生成することと、
前記第２のメトリクスの前記測定値に対する前記メトリクス識別子を用いて、前記第２のメトリクスの前記測定値を配置するために、複数のパーティションのうちのあるパーティションを識別することと、
前記パーティションからの前記測定値を前記第２のメモリ内データストアに送信することと、を行わせる、条項９８に記載の非一時的なコンピュータ可読ストレージ媒体。
【０２１０】
１００．前記第２のリクエストに含まれる前記情報が、前記第２のメトリクスの前記測定値のタイムスタンプを指定し、
前記複数のパーティションのうちの前記パーティションの前記識別が、さらに、前記第２のメトリクスの前記測定値の前記タイムスタンプに少なくとも部分的に基づく、条項９９に記載の非一時的なコンピュータ可読ストレージ媒体。
【０２１１】
様々な実施形態はさらに、多種多様な動作環境で実装することができ、場合によっては、１つまたは複数のユーザコンピュータ、コンピューティングデバイスまたは多数のアプリケーションのうちのいずれかを操作するために使用することができる処理デバイスを含み得る。ユーザまたはクライアントデバイスは、標準的なオペレーティングシステムを起動させるデスクトップ型、ラップトップ型、またはタブレットコンピュータ、ならびに、モバイルソフトウェアを起動させ、多数のネットワークおよびメッセージプロトコルをサポートすることが可能な携帯電話、無線、および携帯型デバイスなど、あらゆる数の汎用パーソナルコンピュータを含み得る。かかるシステムは、様々な商用的に入手可能なオペレーティングシステムならびに開発及びデータベース管理などの目的のための他の既知のアプリケーションを稼働させる、いくつかのワークステーションもまた含み得る。これらのデバイスは、ダミー端末、シンクライアント、ゲーム機及びネットワークを介して通信することができる他のデバイスなどの、他の電子デバイスもまた含み得る。これらのデバイスは、仮想マシン、ハイパーバイザー及び、ネットワークを介して通信可能である他の仮想デバイスなどの仮想デバイスも含み得る。
【０２１２】
本開示の様々な実施形態は、伝送制御プロトコル/インターネットプロトコル（「ＴＣＰ/ＩＰ」）、ユーザデータグラムプロトコル（「ＵＤＰ」）、開放型システム間相互接続（「ＯＳＩ」）モデルの各層で動作するプロトコル、ファイル転送プロトコル（「ＦＴＰ」）、ユニバーサルプラグアンドプレイ（「ＵＰＮＰ」）、ネットワークファイルシステム（「ＮＦＳ」）、共通インターネットファイルシステム（「ＣＩＦＳ」）およびＡｐｐｌｅＴａｌｋなどの商用的に入手可能な各種プロトコルのいずれかを用いる通信をサポートするのに、当業者に知られている少なくとも１つのネットワークを利用している。ネットワークは、例えば、ローカルエリアネットワーク、広域ネットワーク、仮想プライベートネットワーク、インターネット、イントラネット、エクストラネット、公衆交換電話網、赤外線ネットワーク、無線ネットワーク、衛星ネットワーク及びそれらの任意の組み合わせであってよい。
【０２１３】
ウェブサーバを利用する実施形態において、ウェブサーバは、ハイパーテキストトランスファープロトコル(「ＨＴＴＰ」)サーバ、ＦＴＰサーバ、コモンゲートウェイインタフェース(「ＣＧＩ」)サーバ、データサーバ、Ｊａｖａ（登録商標）サーバ、Ａｐａｃｈｅサーバ及びビジネスアプリケーションサーバを含む、多様なサーバまたは中間層アプリケーションのうちのいずれかを運用することができる。サーバ（複数可）は、ユーザデバイスからのリクエストに応答して、Ｊａｖａ（登録商標）、Ｃ、Ｃ♯またはＣ＋＋などの任意のプログラミング言語またはＲｕｂｙ、ＰＨＰ、Ｐｅｒｌ、ＰｙｔｈｏｎまたはＴＣＬ及びそれらの組み合わせなどの任意のスクリプト言語で記述された１つまたは複数のスクリプトまたはプログラムとして実装され得る１つまたは複数のウェブアプリケーションを実行することなどによって、プログラムまたはスクリプトも実行可能でもあり得る。サーバ（複数可）は、Ｏｒａｃｌｅ（登録商標）、Ｍｉｃｒｏｓｏｆｔ（登録商標）、Ｓｙｂａｓｅ（登録商標）及びＩＢＭ（登録商標）から市販されているものならびにＭｙＳＱＬ、Ｐｏｓｔｇｒｅｓ、ＳＱＬｉｔｅ、ＭｏｎｇｏＤＢなどのオープンソースサーバ、ならびに保存、検索、構造化または非構造化データにアクセスが可能な任意の他のサーバを、限定することなしに含むデータベースサーバも含み得る。データベースサーバは、テーブルベースのサーバ、ドキュメントベースのサーバ、非構造化サーバ、関係サーバ、非関係サーバ、または、これらの組み合わせ及び／または他のデータベースサーバの組み合わせを含み得る。
【０２１４】
環境は、上述の種々のデータストアおよび他のメモリおよびストレージ媒体を含み得る。これらは、様々な位置、例えば、コンピュータのうちの１つまたは複数にローカル（かつ／またはそこに存在する)の、またはネットワーク上のコンピュータのうちのいくつかまたはすべてからリモートのストレージ媒体上に存在し得る。特定の組の実施形態において、情報は、当業者に既知のストレージエリアネットワーク(「ＳＡＮ」)に存在し得る。同様に、コンピュータ、サーバまたは他のネットワークデバイスによる機能を実行するための任意の必要なファイルは、必要に応じて、ローカルにかつ／またはリモートに保存され得る。システムがコンピュータ化デバイスを含む場合、そのようなデバイスはそれぞれ、バスを介して電気的に連結され得るハードウェア要素を含むことができ、該要素は、例えば、少なくとも１つの中央処理装置（「ＣＰＵ」または「プロセッサ」）、少なくとも１つの入力デバイス（例えば、マウス、キーボード、コントローラ、タッチスクリーンまたはキーパッド）及び少なくとも１つの出力デバイス（例えば、ディスプレイデバイス、プリンタまたはスピーカ）を含む。そのようなシステムは、１つまたは複数のストレージデバイス、例えば、ディスクドライブ、光学式記憶デバイスおよびソリッドステートストレージデバイス、例えば、ランダムアクセスメモリ（「ＲＡＭ」）または読み出し専用メモリ(「ＲＯＭ」)、ならびに取り外し可能な媒体デバイス、メモリカード、フラッシュカードなども含み得る。
【０２１５】
そのような装置はまた、上述のように、コンピュータ可読ストレージ媒体リーダ、通信デバイス（例えば、モデム、ネットワークカード（無線または有線）、赤外線通信デバイスなど）及び作業メモリを含み得る。コンピュータ可読ストレージ媒体リーダは、コンピュータ可読ストレージ媒体と接続され得るか、またはコンピュータ可読ストレージ媒体を受信するよう構成され得、リモート、ローカル、固定及び／または取り外し可能なストレージデバイス、ならびにコンピュータ可読情報を一時的にかつ／またはより恒久的に含有し、保存し、送信し、かつ検索するためのストレージ媒体を表す。システム及び様々なデバイスは、通常、いくつかのソフトウェアアプリケーション、モジュール、サービスまたはオペレーティングシステム及びアプリケーションプログラム、例えば、クライアントアプリケーションまたはウェブブラウザを含む少なくとも１つのワーキングメモリデバイス内で見つけられる他の要素も含む。代替実施形態が、上述のものからの多数の変形を有し得ることを理解されたい。例えば、特製のハードウェアもまた使用可能である、かつ／または特定の要素をハードウェア、ソフトウェア（アプレットなどのポータブルソフトウェアを含む）、もしくはその両方に実装することができる。さらに、ネットワーク入力／出力デバイスなどの他のコンピューティングデバイスへの接続が用いられ得る。
【０２１６】
符号または符号の一部を含むためのストレージ媒体及びコンピュータ可読媒体は、ＲＡＭ、ＲＯＭ、電子的消去可能プログラマブル読出し専用メモリ(「ＥＥＰＲＯＭ」)、フラッシュメモリまたは他のメモリ技術、コンパクトディスク読出し専用メモリ(「ＣＤ−ＲＯＭ」)、デジタルバーサタイルディスク（ＤＶＤ）、もしくは他の光学ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージまたは他の磁気ストレージデバイス、または所望の情報を記憶するために使用することができ、かつシステムデバイスによってアクセスされ得る任意の他の媒体をはじめとする、限定するものではないが、コンピュータ可読命令、データ構造、プログラムモジュールまたは他のデータなどの情報の保存及び／または送信のために任意の方法または技術で実装される揮発性及び非揮発性、可換型及び非可換型媒体などのストレージ媒体及び通信媒体を含む当該術分野において既知の、または使用される任意の適切な媒体を含むことができる。本明細書に提供される本開示及び教示に基づいて、当業者であれば、様々な実施形態を実装する他の様式及び／または方法を理解する。
【０２１７】
したがって、明細書及び図面は、限定する意味ではなくて例示的なものとみなされる。しかしながら、種々の修正及び変更が、特許請求の範囲に記載される本発明のより広範な精神と範囲から逸脱することなく、そこになされ得ることは明らかであろう。
【０２１８】
他の変形例は、本開示の精神の範囲内にある。開示された技術は、様々な修正及び代替構成が可能であるが、特定の例示の実施形態が図面に示され、詳細に上述されている。しかしながら、本発明を特定の形式または開示される形式に限定する意図はなく、しかし、むしろ、添付の特許請求の範囲において定義される本発明の精神及び範囲内に収まる全ての修正、代替構造及び等価物を網羅するところに意図があるということが理解されるべきである。
【０２１９】
開示される実施形態を説明する文脈における（特に以下の特許請求の範囲の文脈における）「ａ」、「ａｎ」及び「ｔｈｅ」という用語ならびに同様の指示語の使用は、本明細書において別段の指示がない限り、または文脈に明らかに矛盾するものでない限り、単数及び複数の双方を網羅すると解釈される。「ｃｏｍｐｒｉｓｉｎｇ（備える）」、「ｈａｖｉｎｇ（有する）」、「ｉｎｃｌｕｄｉｎｇ（含む）」及び「ｃｏｎｔａｉｎｉｎｇ（含有する）」という用語は、特に断りのない限り、オープンエンドの用語（すなわち、「含むが、これらに限定されない」ことを意味する）として解釈されるべきである。修飾されていないかつ物理的な接続を指す用語「ｃｏｎｎｅｃｔｅｄ（接続され）」は、介在するものが存在しても、部分的にまたは全体的に含まれ、付着されもしくは１つに結合することとして解釈されるべきである。本明細書中の値の範囲の列挙は、本明細書において他に示されない限り、単に、範囲内に入るそれぞれ別個の値に個々に言及する速記方法として役立つように意図され、それが個々に本明細書に記載されているかのように、各個別の値は、本明細書に組み込まれる。用語「セット」（例えば、「アイテムのセット」）または「サブセット」の使用は、別段の記載がない限りまたは文脈によって矛盾しない限り、１つまたは複数のメンバーを含む非空コレクションとして解釈されるべきである。さらに、別段の記載がない限りまたは文脈によって矛盾しない限り、対応するセットの「サブセット」という用語は、必ずしも対応するセットの適切なサブセットを意味するものではないが、サブセット及び対応するセットは等価であり得る。
【０２２０】
特に断りのない限り、または文脈によって明らかに矛盾しない限り、「Ａ、Ｂ及びＣの少なくとも１つ」または「Ａ、Ｂ及びＣの少なくとも１つ」の形の句のような接続言語は、項目、用語などがＡまたはＢまたはＣのいずれか、もしくはＡとＢとＣのセットの空でないサブセットのいずれかであり得ることを示すために一般的に使用される文脈で理解される。例えば、３つのメンバーを有するセットの実例では、接続言語「Ａ、Ｂ及びＣの少なくとも１つ」及び「Ａ、Ｂ及びＣの少なくとも１つ」は、以下のセット｛Ａ｝、｛Ｂ｝、｛Ｃ｝、｛Ａ、Ｂ｝、｛Ａ、Ｃ｝、｛Ｂ、Ｃ｝、｛Ａ、Ｂ、Ｃ｝のいずれかを指す。したがって、そのような接続言語は、一般に、ある実施形態が、Ａの少なくとも１つ、Ｂの少なくとも１つ及びＣの少なくとも１つがそれぞれ存在することを必要とすることを含意することは意図していない。
【０２２１】
本明細書に記載される処理の操作は、本明細書において別途指示されない限り、または文脈によって明らかに矛盾しない限り、任意の適切な順序で行うことができる。本明細書に記載された処理（もしくは変形及び／またはその組み合わせ）は、実行可能な命令で構成された１つまたは複数のコンピュータシステムの制御下で実行され得、ハードウェアまたはその組み合わせにより１つまたは複数のプロセッサ上で集合的に実行するコード（例えば、実行可能な命令、１つまたは複数のコンピュータプログラムまたは１つまたは複数のアプリケーション）として実装され得る。コードは、コンピュータ可読ストレージ媒体に、例えば、１つまたは複数のプロセッサによって実行可能な複数の命令を備えるコンピュータプログラムの形で保存され得る。コンピュータ可読ストレージ媒体は、非一時的であり得る。
【０２２２】
本明細書内に提供される任意及びすべての実施例、または例示的言語（例えば、「など」）の使用は、単に本発明の実施形態をより良く明らかにすることが意図され、別段の請求がない限り、本発明の範囲に対して制限を課すものではない。明細書の用語は、本発明の実施に不可欠な任意の非請求の要素を示すものと解釈されるべきではない。
【０２２３】
本発明を実施するために本発明者らに知られている最良の形態を含む本発明の実施形態を本明細書に記載する。これらの好ましい実施形態の変形例は、前述の説明を読めば当業者に明らかになるであろう。本発明者らは、当業者がこのような変形例を適切に使用することを期待しており、本発明者らは、本発明の実施形態が本明細書に具体的に記載されたものとは別の方法で実施されることを意図する。したがって、本発明の範囲は、適用法によって許容されるように、本明細書に添付された特許請求の範囲に記載された主題の全ての改変及び均等物を含む。さらに、本明細書に別段の指示がない限り、または文脈に明らかに矛盾するものでない限り、そのすべての考え得る変形形態での上記要素の任意の組合せが本発明に包含される。
【０２２４】
各文献が個々にかつ具体的に参照により組み込まれることが示され、その全体が本明細書に記載されたかのように本明細書で引用した刊行物、特許出願及び特許を含む全ての参考文献は、本明細書と同程度に、参照により組み込まれる。
【図１】
0006607963.tif 000002
【図２】
0006607963.tif 000003
【図３】
0006607963.tif 000004
【図４】
0006607963.tif 000005
【図５】
0006607963.tif 000006
【図６】
0006607963.tif 000007
【図７】
0006607963.tif 000008
【図８】
0006607963.tif 000009
【図９】
0006607963.tif 000010
【図１０】
0006607963.tif 000011
【図１１】
0006607963.tif 000012
【図１２】
0006607963.tif 000013
【図１３】
0006607963.tif 000014
【図１４】
0006607963.tif 000015