New user sign up using AWS Builder ID
New user sign up using AWS Builder ID is currently unavailable on re:Post. To sign up, please use the AWS Management Console instead.
針對 CloudWatch 指標應該使用 GetMetricData 還是 GetMetricStatistics?
我想知道應該使用 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,請完成下列步驟:
-
針對您的 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 } ]
**注意:**在上述呼叫中,輸入參數具有 Invocations 和 Errors 自訂指標。ErrorRate 指標是透過其他兩個指標的指標數學所計算。
-
若要將範例指標資料發佈為自訂指標,請使用 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 選項。
-
使用輸入參數執行 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
-
檢閱輸出結果。
範例輸出結果:$ 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,因此 m1 和 m2 不包含在回應中。
相關資訊

相關內容
- 已提問 4 個月前lg...
- 已提問 4 個月前lg...
- AWS 官方已更新 8 個月前
- AWS 官方已更新 9 個月前
- AWS 官方已更新 2 年前
- AWS 官方已更新 2 年前