CloudWatch メトリクスには GetMetricData と GetMetricStatistics のどちらを使用するべきですか?

所要時間3分
0

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

簡単な説明

GetMetricStatistics ではなく GetMetricData API を使用するのがベストプラクティスです。その理由は、GetMetricData を使用すると、データをより高速かつ大規模に取得できるからです。GetMetricData はまた、メトリクス計算をサポートしているほか、順序付けされページ分割された結果を返します。この機能の違いは、各サービスのコストに反映されます。GetMetricStatistics は CloudWatch の無料利用枠に含まれており、最大 100 万件の API リクエストに対応していますが、GetMetricData は含まれていません。下の表と CloudWatch の料金表を参照して、どの API がより適切かを確認してください。

1 コールあたりのメトリクス数1 コールあたりのデータポイント数メトリクス計算をサポート順序付けされページ分割された結果を返す無料利用枠の****制限に含まれる
GetMetricData500100,800はいはい*いいえ
GetMetricStatistics11,440いいえいいえはい

\ *次のデータポイントセットを返すには、応答で提供される NextToken (--next-token) を使用してデータを反復処理する必要があります。

GetMetricData API の Service Quotas は次のとおりです。

  • 1 秒あたり 50 件のトランザクション (TPS)。
  • 1 秒あたり 180,000 個のデータポイント (DPS) (API リクエストの StartTime が現在時刻から 3 時間以内の場合)。
  • StartTime が現在時刻から 3 時間超離れている場合は 396,000 DPS。

解決策

**注:**AWS コマンドラインインターフェイス (AWS CLI) コマンドの実行中にエラーが発生した場合は、最新バージョンの AWS CLI を使用していることを確認してください

AWS CLI で独自の GetMetricData API コールを行うには、次のコール例を参考にしてください。

1.    GetMetricData API コール用の入力パラメーター (metric-data-queries.json) を作成します。入力パラメータには、2 つのカスタムメトリクス (呼び出しエラー) と、他の 2 つのメトリクス (ErrorRate) のメトリクス計算によって計算された 1 つのメトリクス (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 回の PutMetricData API コールを使用して最大 20 のメトリクスを公開することもできます。そのためには、PutMetricData 呼び出しで --metric-data オプションを使用します。

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

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

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

関連情報

get-metric-data AWS CLI リファレンス

get-metric-statistics AWS CLI リファレンス

AWS公式
AWS公式更新しました 2年前
コメントはありません