跳至內容

對於 CloudWatch 指標,使用 GetMetricData 還是 GetMetricStatistics 比較好?

3 分的閱讀內容
0

我想知道,從 Amazon CloudWatch 指標擷取資料點時,使用 GetMetricData 還是 GetMetricStatistics API 操作會比較好。

簡短說明

由於 GetMetricData 在大規模擷取資料時速度更快,因此最佳實務是使用 GetMetricData API 作業,而不是 GetMetricStatisticsGetMetricData 支援指標數學,並會傳回排序後的分頁結果。

以下是 GetMetricData API 作業的服務配額:

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

**注意:**GetMetricData 的定價與 GetMetricStatistics 的定價不同。如需更多資訊,請在 Amazon CloudWatch 定價頁面中,選取 Paid tier (付費方案) 區段的 Metrics (指標) 索引標籤。

解決方法

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

若要使用 GetMetricData API 作業獲取資料點,請在 AWS CLI 中完成以下步驟:

  1. 為您的 GetMetricData API 作業建立輸入參數。<br id=hardline_break/> 範例作業:

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

    **注意:**將 MyApplication 替換為您的應用程式名稱。<br id=hardline_break/> 在上述作業中,輸入參數包含 InvocationsErrors 自訂指標。CloudWatch 會透過其他兩個指標的指標數學來計算 ErrorRate 指標。

  2. 使用 PutMetricData 將範例指標資料發佈為自訂指標。<br id=hardline_break/> 範例作業:

    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 作業中新增 --metric-data 選項,然後執行 API。

  3. 執行以下 get-metric-data AWS CLI 命令:

    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

    **注意:**將 //./metric-data-queries.json 替換為您的 JSON 檔案,2018-06-19T04:00:00Z 替換為您的開始時間,並將 2018-06-19T04:30:00Z 替換為您的結束時間。<br id=hardline_break/> 範例輸出:

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

    **注意:**在上述範例輸出中,CloudWatch 透過指標數學計算出五個資料點,並依時間排序傳回結果。由於 ReturnData 設為 false,因此回應中不包含 m1m2

AWS 官方已更新 4 個月前