針對 CloudWatch 指標應該使用 GetMetricData 還是 GetMetricStatistics?

3 分的閱讀內容
0

我想知道應該使用 GetMetricData 還是 GetMetricStatistics API 從 Amazon CloudWatch 指標中擷取資料點。

簡短描述

由於 GetMetricData 可更快地大規模擷取資料,因此最佳實務是使用 GetMetricData API,而不是使用 GetMetricStatistics。此外,GetMetricData 亦支援指標數學,且會傳回排序的分頁結果。您不需要付費在 CloudWatch 中使用 GetMetricStatistics 處理多達 100 萬個 API 請求。但是,您需要付費在 CloudWatch 中使用 GetMetricData

下列為 GetMetricData API 的 Service Quotas:

  • 50 筆交易/秒 (TPS)。
  • 180,000 個資料點/秒 (DPS) (當 API 請求中的 StartTime 距目前時間小於或等於三小時)。
  • 396,000 DPS (當 StartTime 距目前時間超過 3 小時)。

解決方法

**注意:**如果您在執行 AWS Command Line Interface (AWS CLI) 命令時收到錯誤訊息,請參閱 Troubleshoot AWS CLI errors。此外,請確認您使用的是最新的 AWS CLI 版本

若要在 AWS CLI 中呼叫 GetMetricData API,請完成下列步驟:

  1. 針對您的 GetMetricData API 呼叫建立輸入參數。
    範例呼叫:

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

    **注意:**在上述呼叫中,輸入參數具有 InvocationsErrors 自訂指標。ErrorRate 指標是透過其他兩個指標的指標數學所計算。

  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

    **注意:**若要發佈最多 20 個指標,請在相同命名空間下使用單一 PutMetricData API 呼叫。若要在相同的命名空間下執行單一 PutMetricData API 呼叫,請在 PutMetricData 呼叫中使用 --metric-data 選項。

  3. 使用輸入參數執行 get-metric-data 命令:

    $ 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
  4. 檢閱輸出結果。
    範例輸出結果:

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

    **注意:**在上述範例輸出結果中,五個資料點皆使用指標數學計算,並以時間順序結果傳回。由於 ReturnData 設定為 False,因此 m1m2 不包含在回應中。

相關資訊

get-metric-statistics

AWS 官方
AWS 官方已更新 8 個月前