我的 Amazon CloudWatch "GetMetricStatistics" API 呼叫沒有傳回任何資料點。不過,這些資料點可以在 CloudWatch 主控台上找到。
解決方法
**注意:**如果您在執行 AWS Command Line Interface (AWS CLI) 命令時收到錯誤訊息,請確認您使用的是最新的 AWS CLI 版本。
CloudWatch 是一項區域服務,因此請確定 API 呼叫使用正確的 AWS 區域。CloudWatch 會使用多個引數發出 GetMetricStatistics API 呼叫,而這些引數必須與指標的屬性相符。這些引數區分大小寫,因此請確保名稱和大小寫在 CloudWatch 主控台設定中相符。錯誤通常是引數不正確的結果。
維度
如果指標是使用多個維度建立的,則只有在指定所有已設定的維度時,才能擷取該資料點。例如,假設您在 DataCenterMetric 命名空間中發佈名為 ServerStats 的指標,並具有下列屬性:
Dimensions: Server=Prod, Domain=Frankfurt, Unit: Count, Timestamp: 2016-10-31T12:30:00Z, Value: 105
若要擷取此指標的資料點,請指定下列維度:
Server=Prod,Domain=Frankfurt
但是,如果只指定兩個維度中的一個,則無法檢索資料點。請參閱以下範例:
Server=Prod
使用 AWS CLI 時,在 get-metric-statistics 命令中指定維度的格式與 put-metric-data 命令不同。請務必使用類似下列的格式:
"Name"=string, "Value"=string
**注意:**在這種情況下,Name=Value 的格式不成功。
請參閱下列 get-metric-statistics 呼叫的範例:
aws cloudwatch get-metric-statistics --metric-name "MyMetric" --start-time 2018-04-08T23:18:00Z --end-time 2018-04-09T23:18:00Z --period 3600 --namespace "MyNamespace" --statistics Maximum --dimensions Name=Server,Value=Prod
請參閱下列 put-metric-data 呼叫的範例:
aws cloudwatch put-metric-data --namespace "MyNamespace" --metric-name "MyMetric" --dimensions Server=Prod --value 10
期間
如果未針對指定的期間值推送指標,則不會傳回任何資料點。
例如,如果您啟用執行個體的基本監控,則 Amazon Elastic Compute Cloud (Amazon EC2) 會每五分鐘推送一次資料點。例如,假設 Amazon EC2 在時間戳記 12:00、12:05、12:10(依此類推)推送資料點。您的開始時間和結束時間是 12:01 和 12:04,然後您嘗試以 60 秒的時間擷取資料點。在此情況下,您看不到任何資料點。最佳實務是讓您的開始時間和結束時間延伸到指標所提供的最小細微性以外。(對於此使用案例,細微性為 5 分鐘。) 或者,使用大於或等於指標所提供之最小細微性的期間。
統計資料
若要擷取指標的百分位數統計資料,請使用 ExtendedStatistic。
CloudWatch 使用原始資料點來計算百分位數。使用統計資料集發佈資料時,只有在下列其中一個條件成立時,才能擷取此資料的百分位數統計資料:
- 統計資料集的樣本計數為 1。
- 統計資料集的最小值和最大值相等。
单位
- 如果指定的單位與為指標設定的單位不同,則不會傳回任何資料點。
- 如果未指定單位引數,則會傳回所有單位的資料點。
開始時間和結束時間
**注意:**具有 24 小時前或更長時間的時間戳記的資料點至少需要 48 小時才可用於 get-metric-statistics。如需詳細資訊,請參閱 put-metric-data。
相關資訊
發佈 CloudWatch 指標的 AWS 服務