Amazon CloudWatch
用户指南
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。点 击 Getting Started with Amazon AWS to see specific differences applicable to the China (Beijing) Region.

发布自定义指标

您可使用 AWS CLI 或 API 将自己的指标发送到 CloudWatch。您可使用 AWS 管理控制台查看所发布指标的统计信息图表。

CloudWatch 会将关于指标的数据储存为一系列数据点。每个数据点包含一个相关联的时间戳。您甚至可以发布被称为统计数据集 的聚合数据点集。

使用维度

在发布自定义指标时,通常使用 --dimensions 参数。维度进一步阐明了指标是什么以及指标存储什么数据。一个指标中最多可包含 10 个维度,每个维度由一个名称和值对定义。

请注意,当使用不同的命令时,指定维度的方式也不同。使用 put-metric-data 时,您将每个维度指定为 MyName=MyValue 格式,而使用 get-metric-statisticsput-metric-alarm 时,您将使用格式 Name=MyNameValue=MyValue。例如,以下命令将发布一个包含两个维度 (分别名为 InstanceId 和 InstanceType) 的“缓冲区”指标。

Copy
aws cloudwatch put-metric-data --metric-name Buffers --namespace MyNameSpace --unit Bytes --value 231434333 --dimensions InstanceId=1-23456789,InstanceType=m1.small

此命令随后将检索同一指标的统计数据。请注意,应使用逗号分隔一个维度的名称部分和值部分,但如果有多个维度,则应使用空格分隔一个维度和下一个维度。

Copy
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 指定这两个维度。

Copy
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 命令。例如,下列每项操作会发布一个数据点:

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

如果使用新的指标名称调用此命令,CloudWatch 将为您创建一个指标。否则,CloudWatch 会将您的数据与您指定的现有指标关联。

注意

当您创建指标时,可能需要两分钟时间,然后才能使用 get-metric-statistics 命令检索新指标的统计数据。但是,这可能需要最多 15 分钟时间,然后新指标才会出现在使用 list-metrics 命令检索的指标列表中。

尽管您能够以粒度为千分之一秒的时间戳来发布数据点,CloudWatch 还是会将数据聚合至一分钟的最小粒度。CloudWatch 会记录每 1 分钟时间段所接收的值的平均值 (所有值的总和除以值的数目) 以及同一时间段内的样点数、最大值和最小值。例如,之前示例中的 PageViewCount 指标包含三个以若干秒为分隔的时间戳的数据点。CloudWatch 会聚合这三个数据点,因为这些数据点的时间戳全部在一分钟范围内。

CloudWatch 在聚合数据点时以一分钟为边界。例如,CloudWatch 从之前的示例中聚合数据点,因为全部三个数据点均在一分钟范围内,开始于 2016-10-20T12:00:00.000Z 结束于 2016-10-20T12:01:00.000Z

您可使用 get-metric-statistics 命令,基于已发布的数据点来检索统计数据。

Copy
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

下面是示例输出:

Copy
{ "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 的数量降至最少。例如,与其为彼此相隔不超过三秒的三个数据点调用 put-metric-data 多次,不如使用 --statistic-values 参数将数据聚合到以一次调用发布的统计数据集中:

Copy
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 需要原始数据点来计算百分位数。如果您改用统计数据集发布数据,则无法检索此数据的百分位数统计数据,除非满足以下条件之一:

  • 统计数据集的 SampleCount 为 1

  • 统计数据集的最小值和最大值相等

发布零值

如果数据比较分散并有一些包含无关联数据的时间段,则可以选择为该时间段发布值零 (0) 或者无任何值。如果对 PutMetricData 使用周期性调用以监控应用程序的运行状况,则可能需要发布零值代替无值。例如,可以设置一个当应用程序发布指标失败时每隔五分钟向您发送通知的 CloudWatch 警报。您想让这样的应用程序为不含任何关联数据的时间段发布零值。

如果想要追踪数据点的总数或需要最小和平均等统计信息包含 0 值数据点,也可以发布零值。