GetMetricData または GetMetricStatistics のどちらを CloudWatch メトリクスに使用すればよいですか?
Amazon CloudWatch メトリクスからデータポイントを取得したいのですが。GetMetricData と GetMetricStatistics のどちらの API を使用すればよいですか?
簡単な説明
GetMetricStatistics ではなく GetMetricData API を使用するのがベストプラクティスです。なぜなら、GetMetricData を使用すると、大規模かつより高速にデータを取得できるからです。また、GetMetricData は Metric Math をサポートしているほか、順番付けされページ分割された結果を返します。この機能の違いは、各サービスのコストに反映されます。GetMetricStatistics は CloudWatch の無料利用枠に含まれており、最大 100 万件の API リクエストに対応していますが、GetMetricData は含まれていません。下の表と CloudWatch 料金表を参照して、どの API がより適しているかを確認してください。
1 コールあたりのメトリクス数 | 1 コールあたりのデータポイント数 | Metric Math のサポート | 順番付けされページ分割された結果の返信 | 無料利用枠の制限に含まれる | |
GetMetricData | 500 | 100,800 | あり | あり* | なし |
GetMetricStatistics | 1 | 1,440 | なし | なし | あり |
* 次のデータポイントのセットを返すには、レスポンスで提供されている NextToken (--next-token) を使用してデータを反復処理する必要があります。
GetMetricData API のサービスのクォータは次のとおりです。
- 毎秒 50 回のトランザクション (TPS)。
- API リクエストの StartTime が現在の時刻から 3 時間以内である場合は、180,000 データポイント/秒 (DPS)。
- StartTime が現在の時刻から 3 時間を超えている場合は、396,000 DPS。
解決方法
注: AWS コマンドラインインターフェイス (AWS CLI) コマンドの実行中にエラーが発生した場合は、AWS CLI の最新バージョンを使用していることを確認してください。
次のサンプルコールをリファレンスとして、AWS CLI で独自の GetMetricData API コールを実行します。
1. GetMetricData API コールの入力パラメータを作成します (metric-data-queries.json)。入力パラメータには 2 つのカスタムメトリクス (Invocations と Errors)、それら 2 つのメトリクスの Metric Math が計算した 1 つのメトリクス (ErrorRate) が含まれています (ErrorRate)。
$ cat metric-data-queries.json [ { "Id": "e1", "Expression": "m1 / m2", "Label": "ErrorRate" }, { "Id": "m1", "MetricStat": { "Metric": { "Namespace": "MyApplication", "MetricName": "Errors", "Dimensions": [ { "Name": "FunctionName", "Value": "MyFunc" } ] }, "Period": 300, "Stat": "Sum", "Unit": "Count" }, "ReturnData": false }, { "Id": "m2", "MetricStat": { "Metric": { "Namespace": "MyApplication", "MetricName": "Invocations", "Dimensions": [ { "Name": "FunctionName", "Value": "MyFunc" } ] }, "Period": 300, "Stat": "Sum", "Unit": "Count" }, "ReturnData": false } ]
2. PutMetricData を使用して、サンプルメトリクスデータをカスタムメトリクスとしてパブリッシュします。例:
$ aws cloudwatch put-metric-data --namespace MyApplication --metric-name Invocations --dimensions FunctionName=MyFunc --value 10 --unit Count --timestamp 2018-06-19T04:00:00Z $ aws cloudwatch put-metric-data --namespace MyApplication --metric-name Invocations --dimensions FunctionName=MyFunc --value 10 --unit Count --timestamp 2018-06-19T04:05:00Z $ aws cloudwatch put-metric-data --namespace MyApplication --metric-name Invocations --dimensions FunctionName=MyFunc --value 10 --unit Count --timestamp 2018-06-19T04:10:00Z $ aws cloudwatch put-metric-data --namespace MyApplication --metric-name Invocations --dimensions FunctionName=MyFunc --value 10 --unit Count --timestamp 2018-06-19T04:15:00Z $ aws cloudwatch put-metric-data --namespace MyApplication --metric-name Invocations --dimensions FunctionName=MyFunc --value 10 --unit Count --timestamp 2018-06-19T04:20:00Z $ aws cloudwatch put-metric-data --namespace MyApplication --metric-name Errors --dimensions FunctionName=MyFunc --value 3 --unit Count --timestamp 2018-06-19T04:00:00Z $ aws cloudwatch put-metric-data --namespace MyApplication --metric-name Errors --dimensions FunctionName=MyFunc --value 6 --unit Count --timestamp 2018-06-19T04:05:00Z $ aws cloudwatch put-metric-data --namespace MyApplication --metric-name Errors --dimensions FunctionName=MyFunc --value 2 --unit Count --timestamp 2018-06-19T04:10:00Z $ aws cloudwatch put-metric-data --namespace MyApplication --metric-name Errors --dimensions FunctionName=MyFunc --value 9 --unit Count --timestamp 2018-06-19T04:15:00Z $ aws cloudwatch put-metric-data --namespace MyApplication --metric-name Errors --dimensions FunctionName=MyFunc --value 1 --unit Count --timestamp 2018-06-19T04:20:00Z
注意: 1 つの名前空間において、1 回の PutMetricData API コールで最大 20 のメトリクスをパブリッシュすることができます。それには、PutMetricData コールで --metric-data オプションを使用します。
3. 入力パラメーターを指定して、aws cloudwatch get-metric-data コマンドを実行します。
4. 出力を確認します。この例では、Metric Math で計算した 5 個のデータポイントが、時間順に整列された結果として返されています。ReturnData が false に設定されているため、m1 および m2 はレスポンスに含まれていません。
$ aws cloudwatch get-metric-data --metric-data-queries file://./metric-data-queries.json --start-time 2018-06-19T04:00:00Z --end-time 2018-06-19T04:30:00Z { "MetricDataResults": [ { "Timestamps": [ "2018-06-19T04:20:00Z", "2018-06-19T04:15:00Z", "2018-06-19T04:10:00Z", "2018-06-19T04:05:00Z", "2018-06-19T04:00:00Z" ], "StatusCode": "Complete", "Values": [ 0.1, 0.9, 0.2, 0.6, 0.3 ], "Id": "e1", "Label": "ErrorRate" } ] }
関連情報

関連するコンテンツ
- 質問済み 3年前lg...
- 質問済み 5年前lg...
- 質問済み 3ヶ月前lg...
- 質問済み 3年前lg...
- 質問済み 2ヶ月前lg...
- AWS公式更新しました 23日前
- AWS公式更新しました 18日前
- AWS公式更新しました 7ヶ月前
- AWS公式更新しました 8ヶ月前