對於 CloudWatch 指標,使用 GetMetricData 還是 GetMetricStatistics 比較好?
我想知道,從 Amazon CloudWatch 指標擷取資料點時,使用 GetMetricData 還是 GetMetricStatistics API 操作會比較好。
簡短說明
由於 GetMetricData 在大規模擷取資料時速度更快,因此最佳實務是使用 GetMetricData API 作業,而不是 GetMetricStatistics。GetMetricData 支援指標數學,並會傳回排序後的分頁結果。
以下是 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 中完成以下步驟:
-
為您的 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/> 在上述作業中,輸入參數包含 Invocations 與 Errors 自訂指標。CloudWatch 會透過其他兩個指標的指標數學來計算 ErrorRate 指標。
-
使用 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。
-
執行以下 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,因此回應中不包含 m1 與 m2。
- 語言
- 中文 (繁體)
