發佈自訂指標 - Amazon CloudWatch

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

發佈自訂指標

您可以將自己的指標發 CloudWatch 佈到 AWS CLI 或一個API. 您可以檢視已發佈量度的統計圖表 AWS Management Console.

CloudWatch 將有關量度的資料儲存為一系列資料點。每個資料點都有一個關聯的時間戳記。您甚至可以發佈彙總的一組資料點,稱為 statistic set (統計資料集)。

高解析度指標

每個指標皆為下列其中一種:

  • 標準解析度,包含 1 分鐘精細度的資料

  • 高解析度,包含 1 秒鐘精細度的資料

指標產生 AWS 默認情況下,服務是標準分辨率。當您發佈自訂指標時,可將它定義為標準解析度或高解析度。當您發佈高解析度量時,請以 1 秒的解析度 CloudWatch 儲存該指標,而且您可以讀取和擷取它,時間為 1 秒、5 秒、10 秒、30 秒或 60 秒的任意倍數。

高解析度的指標可讓您以高於分鐘層級的精細度,更即時地深入了解您應用程式的活動。請注意,對自訂指標進行的每個 PutMetricData 呼叫皆需付費,因此經常對高解析度指標呼叫 PutMetricData 將導致更高的費用。如需有關 CloudWatch 定價的詳細資訊,請參閱 Amazon CloudWatch 定價

如果您在高解析度指標設定警示,您可以指定期間為 10 秒或 30 秒的高解析度警示,或者設定期間為 60 秒的任何倍數的定期警示。期間為 10 或 30 秒的高解析度警示將產生更高的費用。

使用維度

在自訂指標中,--dimensions 參數是很常見的。維度可更進一步釐清指標內容及其存放的資料。指派給一個指標的維度最多可有 30 個,每個維度皆以名值對定義。

當您使用不同的命令時,指定維度的方式也不同。使用 put-metric-data,您可以將每個維度指定為 MyName=MyValue,以及get-metric-statisticsput-metric-alarm您使用該格式 Name=MyName, Value=MyValue。 例如,以下指令會發佈具有兩個名為InstanceId和的維度的Buffers量度InstanceType

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。例如,Amazon S3 指標BucketSizeBytes包含維度BucketNameStorageType,因此您必須使用 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=MyBucketName Name=StorageType,Value=StandardStorage --output table

請使用 list-metrics 命令查看針對指標所定義的維度。

發佈單一資料點

若要為新的或現有的量度發佈單一資料點,請使用具有一個值和時間戳記的put-metric-data指令。例如,以下每個動作都會發佈一個資料點。

aws cloudwatch put-metric-data --metric-name PageViewCount --namespace MyService --value 2 --timestamp 2016-10-20T12:00:00.000Z aws cloudwatch put-metric-data --metric-name PageViewCount --namespace MyService --value 4 --timestamp 2016-10-20T12:00:01.000Z aws cloudwatch put-metric-data --metric-name PageViewCount --namespace MyService --value 5 --timestamp 2016-10-20T12:00:02.000Z

如果您使用新的量度名稱呼叫此指令, CloudWatch 會為您建立量度。否則,請 CloudWatch 將您的資料與您指定的現有量度產生關聯。

注意

建立測量結果時,最多可能需要 2 分鐘才能使用get-metric-statistics命令擷取新測量結果的統計資料。不過,使用 list-metrics 命令擷取的指標清單可能需要長達 15 分鐘,才會顯示新的指標。

雖然您可以將時間戳記的資料點發佈為千分之一秒的精細度,但是會將資料 CloudWatch 彙總為 1 秒的最小粒度。 CloudWatch 記錄每個週期收到的值的平均值 (所有項目的總和除以項目數目),以及同一時間週期的樣本數目、最大值和最小值。例如,之前範例的 PageViewCount 指標包含三個資料點,其時間戳記僅相差幾秒。如果您的期間設定為 1 分鐘,則會 CloudWatch 彙總這三個資料點,因為這三個資料點都在 1 分鐘內有時間戳記。

您可以使用 get-metric-statistics 命令,根據您發佈的資料點來擷取統計資料。

aws cloudwatch get-metric-statistics --namespace MyService --metric-name PageViewCount \ --statistics "Sum" "Maximum" "Minimum" "Average" "SampleCount" \ --start-time 2016-10-20T12:00:00.000Z --end-time 2016-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 --timestamp 2016-10-14T12:00:00.000Z

CloudWatch 需要原始資料點來計算百分位數。如果已用統計資料集發佈資料,除非以下條件之一為 true,否則您就無法擷取此資料的百分位統計資料:

  • 統計資料集的 SampleCount 設定為 1。

  • 統計資料集的 MinimumMaximum 相等。

發佈零值

當您的資料更為零散,而且您有一些期間沒有關聯的資料,那麼您可以選擇為該期間發佈零值 (0) 或無值。如果您使用定期呼叫來 PutMetricData 以監控應用程式的狀態,您可能會想要發佈零而非無值。例如,您可以設定 CloudWatch 警示,以便在應用程式無法每五分鐘發佈指標時通知您。您希望這類應用程式在無需關聯資料的期間發佈零。

如果您想追蹤資料點的總數,或希望統計資料如最低值和平均值包含 0 值的資料點,那麼您也會希望發佈零。

停止發佈指標

若要停止發佈自訂指標 CloudWatch,請變更應用程式或服務的程式碼以停止使用PutMetricData。 CloudWatch 不會從應用程式提取指標,它只會接收推送到應用程式的指標,因此若要停止發佈指標,您必須在來源處停止指標。