翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Performance Insights API によるメトリクスの取得
Performance Insights が有効になっている場合、API はインスタンスのパフォーマンスを可視化します。Amazon CloudWatch Logs は、 AWS サービスの供給モニタリングメトリクスの信頼できるソースを提供します。
Performance Insightsは、平均アクティブ・セッション(AAS)として測定されるデータベースロードのドメイン固有のビューを提供します。このメトリクスはAPI利用者には2次元時系列データセットのように見えます。データの時間ディメンションは、クエリされた時間範囲内の各時点のDBロード・データを提供します。各時点で、その時点で計測された Query、Wait-state、Application、Host などのリクエストされたディメンションに関するロード全体が分解されます。
Amazon DocumentDB Performance Insights では、Amazon DocumentDB DB インスタンスをモニタリングし、データベースパフォーマンスの分析とトラブルシューティングを行うことができます。Performance Insights は、 AWS Management Consoleで表示することができます。また、Performance Insights では独自のデータをクエリできるように、パブリック API も提供されています。API を使用して、次を実行できます。
-
データベースにデータをオフロードする
-
Performance Insights データを既存のモニタリングダッシュボードに追加する
-
モニタリングツールを構築する
Performance Insights API を使用するには、いずれかの Amazon DocumentDB インスタンスで Performance Insights を有効にします。Performance Insights の有効化については、「Performance Insights の有効化と無効化」を参照してください。Performance Insights API の詳細については、「 Performance Insights API リファレンス」を参照してください。
Performance Insights API は、以下のオペレーションを提供します。
|
Performance Insights でのアクション |
AWS CLI コマンド |
説明 |
|---|---|---|
|
特定の期間に、メトリクスの上位 N 個のディメンションキーを取得します。 |
||
|
DB インスタンスまたはデータソースの指定されたディメンショングループの属性を取得します。例えば、クエリ ID を指定し、ディメンションの詳細が使用可能な場合、 |
||
GetResourceMetadata |
さまざまな機能に関するメタデータを取得します。例えば、メタデータにより、特定の DB インスタンスで何等かの機能が有効化されているか無効化されているかを、示すことができます。 |
|
|
期間中、データソースのセットに Performance Insights のメトリクスを取得します。特定のディメンショングループおよびディメンションを提供し、各グループの集約とフィルタリング条件を提供することができます。 |
||
ListAvailableResourceDimensions |
指定したインスタンスで、指定したメトリクスタイプごとにクエリできるディメンションを取得します。 |
|
ListAvailableResourceMetrics |
DB インスタンスを指定しながら、指定されたメトリクスタイプでクエリが可能なメトリクスをすべて取得します。 |
AWS CLI Performance Insights 用
Performance Insights は、 AWS CLIを使用して表示することができます。Performance Insights の AWS CLI コマンドのヘルプを表示するには、コマンドラインで次のように入力します。
aws pi help
AWS CLI がインストールされていない場合は、「 ユーザーガイド」の AWS 「 コマンドラインインターフェイスのインストール」を参照してください。 AWS CLI
時系列メトリクスの取得
GetResourceMetrics オペレーションでは、1 つ以上の時系列メトリクスを Performance Insights データから取得します。GetResourceMetrics には、メトリクスおよび期間が必要であり、データポイントのリストを含むレスポンスが返ります。
たとえば、次の図に示すように、 は AWS Management Console を使用してカウンターメトリクスグラフとデータベースロードグラフGetResourceMetricsを入力します。
GetResourceMetrics によって返るメトリクスはすべて、db.load の例外を除き、スタンダードの時系列メトリクスです。このメトリクスは、[データベースロード] グラフに表示されます。この db.load メトリクスは、ディメンションと呼ばれるサブコンポーネントに分割できるため、他の時系列メトリクスとは異なります。前のイメージでは、db.load は分割され、db.load を構成する待機状態によってグループ化されています。
注記
GetResourceMetrics は、db.sampleload メトリクスを返すこともできますが、通常 db.load メトリクスが適切です。
GetResourceMetrics により返されるカウンターメトリクスに関する情報は、「カウンターメトリクス用の Performance Insights」を参照してください。
以下の計算は、メトリクスにサポートされています。
-
平均 - 期間中のメトリクスの平均値。
.avgをメトリクス名に追加します。 -
最小 - 期間中のメトリクスの最小値。
.minをメトリクス名に追加します。 -
最大 - 期間中のメトリクスの最大値。
.maxをメトリクス名に追加します。 -
合計 - 期間中のメトリクス値の合計。
.sumをメトリクス名に追加します。 -
サンプル数 - 期間中にメトリクスが収集された回数。
.sample_countをメトリクス名に追加します。
例えば、メトリクスが 300 秒 (5 分) 収集され、メトリクスが 1 分に 1 回収集されたものと見なします。毎分の値は、1、2、3、4、5 です。この場合、以下の計算が返されます。
-
平均 - 3
-
最小 - 1
-
最大 - 5
-
合計 - 15
-
サンプル数 - 5
get-resource-metrics AWS CLI コマンドの使用の詳細については、「」を参照してくださいget-resource-metrics。
--metric-queries オプションでは、結果を取得する 1 つ以上のクエリを指定します。各クエリは、必須の Metric と、オプションの GroupBy および Filter パラメータから構成されます。--metric-queries オプションの指定の例を次に示します。
{ "Metric": "string", "GroupBy": { "Group": "string", "Dimensions": ["string", ...], "Limit": integer }, "Filter": {"string": "string" ...}
AWS CLI Performance Insights の例
次の例は、Performance Insights AWS CLI に を使用する方法を示しています。
カウンターメトリクスの取得
以下のスクリーンショットは、 AWS Management Consoleにおける 2 つのカウンターメトリクスグラフを示します。
以下の例では、2 つのカウンターメトリクスグラフを生成するために AWS Management Console で使用するデータと同じデータを生成する方法を示します。
Linux、macOS、Unix の場合:
aws pi get-resource-metrics \ --service-type DOCDB \ --identifier db-ID\ --start-time2022-03-13T8:00:00Z\ --end-time2022-03-13T9:00:00Z\ --period-in-seconds60\ --metric-queries '[{"Metric": "os.cpuUtilization.user.avg" }, {"Metric": "os.cpuUtilization.idle.avg"}]'
Windows の場合:
aws pi get-resource-metrics ^ --service-type DOCDB ^ --identifier db-ID^ --start-time2022-03-13T8:00:00Z^ --end-time2022-03-13T9:00:00Z^ --period-in-seconds60^ --metric-queries '[{"Metric": "os.cpuUtilization.user.avg" }, {"Metric": "os.cpuUtilization.idle.avg"}]'
また、コマンドを作成しやすくするために、--metrics-query オプションにファイルを指定します。以下の例では、このオプション用に query.json と呼ばれるファイルを使用します。ファイルの内容は次のとおりです。
[ { "Metric": "os.cpuUtilization.user.avg" }, { "Metric": "os.cpuUtilization.idle.avg" } ]
ファイルを使用するには、次のコマンドを実行します。
Linux、macOS、Unix の場合:
aws pi get-resource-metrics \ --service-type DOCDB \ --identifier db-ID\ --start-time2022-03-13T8:00:00Z\ --end-time2022-03-13T9:00:00Z\ --period-in-seconds60\ --metric-queries file://query.json
Windows の場合:
aws pi get-resource-metrics ^ --service-type DOCDB ^ --identifier db-ID^ --start-time2022-03-13T8:00:00Z^ --end-time2022-03-13T9:00:00Z^ --period-in-seconds60^ --metric-queries file://query.json
前述の例では、各オプションに次の値を指定します。
-
--service-type: Amazon DocumentDB のDOCDB -
--identifier- DB インスタンスのリソース ID -
--start-timeおよび--end-time- クエリを実行する期間の ISO 8601DateTime値 (サポートされている複数の形式)
クエリは 1 時間の範囲で実行されます。
-
--period-in-seconds-60(1 分ごとのクエリ) -
--metric-queries- 2 つのクエリの配列。それぞれ 1 つのメトリクスに対して使用されます。メトリクス名ではドットを使用してメトリクスを有用なカテゴリに分類します。最終の要素は関数になります。この例では、関数は、クエリの
avgです。Amazon CloudWatch と同様に、サポートされている関数は、min、max、total、およびavgです。
レスポンスは次の例のようになります。
{ "AlignedStartTime": "2022-03-13T08:00:00+00:00", "AlignedEndTime": "2022-03-13T09:00:00+00:00", "Identifier": "db-NQF3TTMFQ3GTOKIMJODMC3KQQ4", "MetricList": [ { "Key": { "Metric": "os.cpuUtilization.user.avg" }, "DataPoints": [ { "Timestamp": "2022-03-13T08:01:00+00:00", //Minute1 "Value": 3.6 }, { "Timestamp": "2022-03-13T08:02:00+00:00", //Minute2 "Value": 2.6 }, //.... 60 datapoints for the os.cpuUtilization.user.avg metric { "Key": { "Metric": "os.cpuUtilization.idle.avg" }, "DataPoints": [ { "Timestamp": "2022-03-13T08:01:00+00:00", "Value": 92.7 }, { "Timestamp": "2022-03-13T08:02:00+00:00", "Value": 93.7 }, //.... 60 datapoints for the os.cpuUtilization.user.avg metric ] } ] //end of MetricList } //end of response
レスポンスには、Identifier、AlignedStartTime、AlignedEndTime があります。--period-in-seconds 値が 60 の場合、スタート時間および終了時間は、時間 (分) に調整されます。--period-in-seconds が 3600 の場合、スタート時間および終了時間は、時間 (時) に調整されます。
レスポンスの MetricList には、多数のエントリを含み、それぞれに Key および DataPoints エントリがあります。DataPoint にはそれぞれ、Timestamp および Value を含みます。クエリは 1 分ごとのデータが 1 時間以上実行されるため、Datapoints の各リストには、60 個のデータポイントがあります。これには、Timestamp1/Minute1 や Timestamp2/Minute2 から、Timestamp60/Minute60 まで含まれます。
クエリは 2 つの異なるカウンターメトリクスを対象としているため、レスポンス MetricList には 2 つの要素があります。
上位の待機状態に関する DB 平均ロードの取得
次の例は、 が積み上げ面折れ線グラフの生成 AWS Management Console に使用するクエリと同じです。この例では、上位 7 つの待機状態に応じてロードを分割し、最後の 1 時間で db.load.avg を取得します。コマンドは カウンターメトリクスの取得 と同じコマンドです。ただし、query.json ファイルには、次の内容が含まれます。
[ { "Metric": "db.load.avg", "GroupBy": { "Group": "db.wait_state", "Limit": 7 } } ]
次のコマンドを実行します。
Linux、macOS、Unix の場合:
aws pi get-resource-metrics \ --service-type DOCDB \ --identifier db-ID\ --start-time2022-03-13T8:00:00Z\ --end-time2022-03-13T9:00:00Z\ --period-in-seconds60\ --metric-queries file://query.json
Windows の場合:
aws pi get-resource-metrics ^ --service-type DOCDB ^ --identifier db-ID^ --start-time2022-03-13T8:00:00Z^ --end-time2022-03-13T9:00:00Z^ --period-in-seconds60^ --metric-queries file://query.json
この例では、上位 7 つの待機状態のうち db.load.avg と GroupBy のメトリクスを指定しています。この例の有効な値の詳細については、Performance Insights の API リファレンスの「DimensionGroup」を参照してください。
レスポンスは次の例のようになります。
{ "AlignedStartTime": "2022-04-04T06:00:00+00:00", "AlignedEndTime": "2022-04-04T06:15:00+00:00", "Identifier": "db-NQF3TTMFQ3GTOKIMJODMC3KQQ4", "MetricList": [ {//A list of key/datapoints "Key": { //A Metric with no dimensions. This is the total db.load.avg "Metric": "db.load.avg" }, "DataPoints": [ //Each list of datapoints has the same timestamps and same number of items { "Timestamp": "2022-04-04T06:01:00+00:00",//Minute1 "Value": 0.0 }, { "Timestamp": "2022-04-04T06:02:00+00:00",//Minute2 "Value": 0.0 }, //... 60 datapoints for the total db.load.avg key ] }, { "Key": { //Another key. This is db.load.avg broken down by CPU "Metric": "db.load.avg", "Dimensions": { "db.wait_state.name": "CPU" } }, "DataPoints": [ { "Timestamp": "2022-04-04T06:01:00+00:00",//Minute1 "Value": 0.0 }, { "Timestamp": "2022-04-04T06:02:00+00:00",//Minute2 "Value": 0.0 }, //... 60 datapoints for the CPU key ] },//... In total we have 3 key/datapoints entries, 1) total, 2-3) Top Wait States ] //end of MetricList } //end of response
このレスポンスでは、MetricList の 3 つのエントリがあります。合計の db.load.avg のエントリが 1 つあり、上位 3 つの待機イベントのいずれかに従って分割された db.load.avg のエントリが 3 つあります。(最初の例とは異なり) グループ化ディメンションがあったため、メトリクスのグループ化ごとに 1 つのキーが必要です。基本的なカウンターメトリクスのユースケースのように、メトリクスごとに 1 つのキーのみ使用することはできません。
上位のクエリに関する DB 平均ロードの取得
以下の例では、上位 10 個のクエリステートメント別に db.wait_state をグループ化します。クエリステートメントには 2 つの異なるグループがあります。
-
db.query- フルクエリステートメント (例:{"find":"customers","filter":{"FirstName":"Jesse"},"sort":{"key":{"$numberInt":"1"}}}) -
db.query_tokenized- トークン化されたクエリステートメント (例:{"find":"customers","filter":{"FirstName":"?"},"sort":{"key":{"$numberInt":"?"}},"limit":{"$numberInt":"?"}})
データベースのパフォーマンスを分析するときは、パラメータが異なるだけのクエリステートメントを 1 つの論理的な項目として検討すると便利です。そのため、クエリを実行する際、db.query_tokenized を使用することができます。ただし、特に explain() に関心がある場合は、パラメータ付きのフルクエリステートメントを調べる方が便利な場合があります。トークン化されたクエリと完全クエリの間には親子関係があり、複数の完全クエリ (子) が同じトークン化されたクエリ (親) の下にグループ化されています。
この例のコマンドは、上位の待機状態に関する DB 平均ロードの取得 のコマンドに似ています。ただし、query.json ファイルには、次の内容が含まれます。
[ { "Metric": "db.load.avg", "GroupBy": { "Group": "db.query_tokenized", "Limit": 10 } } ]
次の例では db.query_tokenized を使用しています。
Linux、macOS、Unix の場合:
aws pi get-resource-metrics \ --service-type DOCDB \ --identifier db-ID\ --start-time2022-03-13T8:00:00Z\ --end-time2022-03-13T9:00:00Z\ --period-in-seconds3600\ --metric-queries file://query.json
Windows の場合:
aws pi get-resource-metrics ^ --service-type DOCDB ^ --identifier db-ID^ --start-time2022-03-13T8:00:00Z^ --end-time2022-03-13T9:00:00Z^ --period-in-seconds3600^ --metric-queries file://query.json
この例では、1 分の間隔 (秒単位) で 1 時間以上のクエリを実行します。
この例では、上位 7 つの待機状態のうち db.load.avg と GroupBy のメトリクスを指定しています。この例の有効な値の詳細については、Performance Insights の API リファレンスの「DimensionGroup」を参照してください。
レスポンスは次の例のようになります。
{ "AlignedStartTime": "2022-04-04T06:00:00+00:00", "AlignedEndTime": "2022-04-04T06:15:00+00:00", "Identifier": "db-NQF3TTMFQ3GTOKIMJODMC3KQQ4", "MetricList": [ {//A list of key/datapoints "Key": { "Metric": "db.load.avg" }, "DataPoints": [ //... 60 datapoints for the total db.load.avg key ] }, { "Key": {//Next key are the top tokenized queries "Metric": "db.load.avg", "Dimensions": { "db.query_tokenized.db_id": "pi-1064184600", "db.query_tokenized.id": "77DE8364594EXAMPLE", "db.query_tokenized.statement": "{\"find\":\"customers\",\"filter\":{\"FirstName\":\"?\"},\"sort\":{\"key\":{\"$numberInt\":\"?\"}},\"limit\" :{\"$numberInt\":\"?\"},\"$db\":\"myDB\",\"$readPreference\":{\"mode\":\"primary\"}}" } }, "DataPoints": [ //... 60 datapoints ] }, // In total 11 entries, 10 Keys of top tokenized queries, 1 total key ] //End of MetricList } //End of response
このレスポンスの MetricList には 11 のエントリがあり (合計が 1 つと、トークン化された上位 10 項目のクエリ)、各エントリには、1 時間あたり 24 の DataPoints があります。
トークン化されたクエリの場合は、各ディメンションリストに 3 つのエントリがあります。
-
db.query_tokenized.statement: トークン化されたクエリステートメント。 -
db.query_tokenized.db_id: Performance Insights が生成する合成 ID。この例では、pi-1064184600合成 ID が返ります。 -
db.query_tokenized.id- Performance Insights 内のクエリの ID。では AWS Management Console、この ID はサポート ID と呼ばれます。ID は、データベースに関する問題のトラブルシューティングに役立つように AWS Support が調査できるデータであるため、この名前が付けられます。 はデータのセキュリティとプライバシーを非常に真剣に AWS 受け止め、ほぼすべてのデータが で暗号化されて保存されます AWS KMS key。したがって、内部の誰もこのデータを見る AWS ことはできません。前の例では、
tokenized.statementとtokenized.db_idの両方が暗号化されて保存されます。データベースに問題がある場合は、 AWS サポート ID を参照してサポートにお問い合わせください。
クエリを実行する際、Group で GroupBy を指定した方が便利な場合があります。ただし、返るデータを詳細に制御できるように、ディメンションのリストを指定します。例えば、必要なデータが db.query_tokenized.statement のみの場合は、Dimensions 属性を query.json ファイルに追加することができます。
[ { "Metric": "db.load.avg", "GroupBy": { "Group": "db.query_tokenized", "Dimensions":["db.query_tokenized.statement"], "Limit": 10 } } ]
クエリによってフィルタリングされた平均 DB ロードの取得
この例に対応する API クエリは、上位のクエリに関する DB 平均ロードの取得 のコマンドに似ています。ただし、query.json ファイルには、次の内容が含まれます。
[ { "Metric": "db.load.avg", "GroupBy": { "Group": "db.wait_state", "Limit": 5 }, "Filter": { "db.query_tokenized.id": "AKIAIOSFODNN7EXAMPLE" } } ]
このレスポンスでは、query.json ファイルで指定されているトークン化されたクエリAKIAIOSFODNN7EXAMPLE の割合に従って、値はすべてフィルタリングされます。キーは、フィルタなしのクエリとは異なる順序で表示されることもあります。これは、フィルタ処理されたクエリに影響を与えるのは上位 5 つの待機クエリであるためです。