CloudWatch メトリクスでは、GetMetricData または GetMetricStatistics を使用する必要がありますか?

最終更新日: 2020 年 1 月 30 日

Amazon CloudWatch メトリクスからデータポイントを取得シたいと考えています。GetMetricDataGetMetricStatistics のどちらの API を使用すればよいですか?

簡単な説明

GetMetricData を使用すると、大規模なデータをより迅速に取得できるため、GetMetricStatistics の代わりに GetMetricData API を使用することをお勧めします。 GetMetricData はまた、メトリクスの計算もサポートし、順序付けられページ分割された結果を返します。

  呼び出しあたりのメトリクス 呼び出しあたりのデータポイント メトリクスの計算をサポート 順序付けられた結果とページ分割された結果を返します
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 で独自の GetMetricData API 呼び出しを行うための参照として、以下の呼び出し例を使用します。

1.    GetMetricData API 呼び出し用の入力パラメータ (metric-data-queries.json) を作成します。入力パラメータには 2 つのカスタムメトリクス (Invocations Errors)、および 1 つのメトリクス (ErrorRate) があり、こちらは他の 2 つのメトリクス (ErrorRate) の Metric Math によって算出されるます。

$ 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 回の PutMetricData API 呼び出しを使用して、最大 20 個のメトリクスを発行することもできます。そのためには、 PutMetricData 呼び出しで -metric-data オプションを使用します。

3.    入力パラメーターを指定して、aws cloudwatch get-metric-data コマンドを実行します。

4.    出力を確認します。この例では、5 つのデータポイントが Metric Math を使用して計算され、時系列結果として返されます。m1 m2 は応答に含まれないのは、ReturnData は false に設定されているためです。

$ 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"
        }
    ]
}

この記事はお役に立ちましたか?

改善できることはありますか?


さらにサポートが必要な場合