本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
發佈自訂指標
您可以使用 AWS CLI 或 API 將自己的指標發佈至 CloudWatch。您可以使用 檢視已發佈指標的統計圖表 AWS Management Console。
CloudWatch 將有關指標的資料儲存為一系列的資料點。每個資料點都有一個關聯的時間戳記。您甚至可以發佈彙總的一組資料點,稱為 statistic set (統計資料集)。
高解析度指標
每個指標皆為下列其中一種:
標準解析度,包含 1 分鐘精細度的資料
高解析度,包含 1 秒鐘精細度的資料
AWS 服務產生的指標預設為標準解析度。當您發佈自訂指標時,可將它定義為標準解析度或高解析度。當您發佈高解析度指標時,CloudWatch 會將它以 1 秒鐘解析度儲存,您可以用 1 秒鐘、5 秒鐘、10 秒鐘、30 秒鐘或 60 秒鐘的任何倍數來讀取及擷取它。
高解析度的指標可讓您以高於分鐘層級的精細度,更即時地深入了解您應用程式的活動。請注意,對自訂指標進行的每個 PutMetricData
呼叫皆需付費,因此經常對高解析度指標呼叫 PutMetricData
將導致更高的費用。如需 CloudWatch 定價的詳細資訊,請參閱 Amazon CloudWatch 定價
如果您在高解析度指標設定警示,您可以指定期間為 10 秒或 30 秒的高解析度警示,或者設定期間為 60 秒的任何倍數的定期警示。期間為 10 或 30 秒的高解析度警示將產生更高的費用。
使用維度
在自訂指標中,--dimensions
參數是很常見的。維度可更進一步釐清指標內容及其存放的資料。指派給一個指標的維度最多可有 30 個,每個維度皆以名值對定義。
當您使用不同的命令時,指定維度的方式也不同。使用 put-metric-data 時,您以 MyName
=MyValue
指定各個維度,而使用 get-metric-statistics 或 put-metric-alarm 時,則使用 Name=
MyName
、Value=
MyValue
格式。例如,以下命令會發佈包含 InstanceId
和 InstanceType
兩個維度的 Buffers
指標。
aws cloudwatch put-metric-data --metric-name Buffers --namespace MyNameSpace --unit Bytes --value 231434333 --dimensions InstanceId=1-23456789,InstanceType=m1.small
此命令擷取相同指標的統計資料。以逗號分隔單一維度的名稱和值部分,但如果您有多個維度,請維度與維度之間使用空格。
aws cloudwatch get-metric-statistics --metric-name Buffers --namespace MyNameSpace --dimensions Name=InstanceId,Value=1-23456789 Name=InstanceType,Value=m1.small --start-time 2016-10-15T04:00:00Z --end-time 2016-10-19T07:00:00Z --statistics Average --period 60
如果單一指標包含多個維度,當您使用 get-metric-statistics 時,您必須為每個維度指定值。例如,Simple Storage Service (Amazon S3) 指標 BucketSizeBytes
包含維度 BucketName
和 StorageType
,因此您必須使用 get-metric-statistics 指定這兩個維度。
aws cloudwatch get-metric-statistics --metric-name BucketSizeBytes --start-time 2017-01-23T14:23:00Z --end-time 2017-01-26T19:30:00Z --period 3600 --namespace AWS/S3 --statistics Maximum --dimensions Name=BucketName,Value=
amzn-s3-demo-bucket
Name=StorageType,Value=StandardStorage --output table
請使用 list-metrics 命令查看針對指標所定義的維度。
發佈單一資料點
若要為新的或現有的指標發佈單一資料點,請使用 put-metric-data 命令與一個值和時間戳記。例如,以下每個動作都會發佈一個資料點。
aws cloudwatch put-metric-data --metric-name
PageViewCount
--namespaceMyService
--value 2 --timestamp2016-10-20T12:00:00.000Z
aws cloudwatch put-metric-data --metric-namePageViewCount
--namespaceMyService
--value 4 --timestamp2016-10-20T12:00:01.000Z
aws cloudwatch put-metric-data --metric-namePageViewCount
--namespaceMyService
--value 5 --timestamp2016-10-20T12:00:02.000Z
如果您以新指標名稱呼叫此命令,CloudWatch 將為您建立指標。否則,CloudWatch 會將您的資料與您指定的現有指標建立關聯。
注意
當您建立指標時,使用 get-metric-statistics 命令擷取新指標的統計資料,最多可能需要 2 分鐘。不過,使用 list-metrics 命令擷取的指標清單可能需要長達 15 分鐘,才會顯示新的指標。
雖然您可以使用千分之一秒精細度的時間戳記來發佈資料點,CloudWatch 仍會以一秒的最低精細度彙總資料。CloudWatch 記錄每個期間收到的值的平均 (所有項目總和除以項目數),以及相同期間的範本數量、最大值及最小值。例如,之前範例的 PageViewCount
指標包含三個資料點,其時間戳記僅相差幾秒。如果您將區間設定為 1 分鐘,CloudWatch 將彙總這三個資料點,因為它們的時間戳記皆在一分鐘的期間內。
您可以使用 get-metric-statistics 命令,根據您發佈的資料點來擷取統計資料。
aws cloudwatch get-metric-statistics --namespace
MyService
--metric-namePageViewCount
\ --statistics "Sum" "Maximum" "Minimum" "Average" "SampleCount" \ --start-time2016-10-20T12:00:00.000Z
--end-time2016-10-20T12:05:00.000Z
--period 60
下列為範例輸出。
{ "Datapoints": [ { "SampleCount": 3.0, "Timestamp": "2016-10-20T12:00:00Z", "Average": 3.6666666666666665, "Maximum": 5.0, "Minimum": 2.0, "Sum": 11.0, "Unit": "None" } ], "Label": "PageViewCount" }
發佈統計資料集
您可以彙總資料,再發佈到 CloudWatch。如果您在每分鐘有多個資料點,彙總資料可大幅減少呼叫 put-metric-data 的次數。例如,您可以使用 --statistic-values
參數,將資料彙總到統計資料集,並以一次呼叫發佈此統計資料集,而非針對 3 秒內發生的三個資料點多次呼叫 put-metric-data。
aws cloudwatch put-metric-data --metric-name PageViewCount --namespace
MyService
--statistic-values Sum=11,Minimum=2,Maximum=5,SampleCount=3 --timestamp2016-10-14T12:00:00.000Z
CloudWatch 需要原始資料點求來計算百分位。如果已用統計資料集發佈資料,除非以下條件之一為 true,否則您就無法擷取此資料的百分位統計資料:
統計資料集的
SampleCount
設定為 1。統計資料集的
Minimum
和Maximum
相等。
發佈零值
當您的資料更為零散,而且您有一些期間沒有關聯的資料,那麼您可以選擇為該期間發佈零值 (0
) 或無值。如果您使用定期呼叫來 PutMetricData
以監控應用程式的狀態,您可能會想要發佈零而非無值。例如,您可以設定 CloudWatch 警示,當您的應用程式無法每 5 分鐘發佈指標時通知您。您希望這類應用程式在無需關聯資料的期間發佈零。
如果您想追蹤資料點的總數,或希望統計資料如最低值和平均值包含 0 值的資料點,那麼您也會希望發佈零。
停止發佈指標
若要停止向 CloudWatch 發佈自訂指標,請變更應用程式或服務的程式碼,以停止使用 PutMetricData。CloudWatch 不會從應用程式中提取指標,只會接收推送給它的內容,因此,若要停止發佈您的指標,必須在來源位置停止這些指標。