Amazon CloudWatch
用户指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 Amazon AWS 入门

创建 Amazon CloudWatch 警报

您可以创建监控单个指标的 CloudWatch 警报。该警报根据相对于某个阈值的指标的值在很多个时间段内执行一项或多项操作。该操作可以是 Amazon EC2 操作、Amazon EC2 Auto Scaling 操作或发送到 Amazon SNS 主题的通知。您也可以向 CloudWatch 控制面板添加警报,并以可视化方式监控它们。当某个警报位于控制面板上时,如果它处于 ALARM 状态,则会变成红色,便于您主动监控其状态。

警报仅在出现持续状态变化时才会调用操作。CloudWatch 警报将不会仅因为其处于特定状态而调用操作;该状态必须已改变并在指定的若干个时间段内保持不变。

因为状态改变而导致警报调用操作后,其后续行为取决于您关联到警报的操作类型。对于 Amazon EC2 Auto Scaling 操作,警报会在警报保持新状态的每个时间段中继续调用操作。对于 Amazon SNS 通知,不会调用额外操作。

注意

CloudWatch 不会测试或验证您指定的操作,也不会检测因试图调用不存在的操作而导致的任何 Amazon EC2 Auto Scaling 或 Amazon SNS 错误。请确保您的操作存在。

警报状态

警报可能具有以下几种状态:

  • OK — 指标位于规定的阈值范围内。

  • ALARM — 指标在规定的阈值范围外。

  • INSUFFICIENT_DATA — 警报刚刚开始;指标不可用;或指标数据不足以判断警报状态。

评估警报

创建警报时,您指定三个设置,以支持 CloudWatch 评估何时更改警报状态:

  • Period (时间段) 是为创建指标的各个数据点而对该指标进行评估的时间长度。它以秒为单位。如果您选择一分钟作为时间段,则每分钟具有一个数据点。

  • Evaluation Period (评估期) 是确定警报状态时要评估的最近数据点的数量。

  • Datapoints to Alarm (触发警报的数据点数) 是评估期内必须超出阈值才能触发警报进入 ALARM 状态的数据点数量。超出阈值的数据点不必是连续的,只是必须全部在等于 Evaluation Period (评估期) 的上一个数据点数量之内。

在下图中,警报阈值设为 3 个单位。警报配置为进入 ALARM 状态,并且 Evaluation Period (评估期)Datapoints to Alarm (触发警报的数据点数) 均为 3。也就是说,当最近三个连续时间段内的所有三个数据点均超出阈值时,警报会进入 ALARM 状态。在该图中,在第三个到第五个时间段发生了这种情况。在第六个时间段,数值降至阈值以下,因此其中一个时间段被评估为未超出阈值,且警报状态更改为 OK。在第九个时间段,再次超出阈值,但仅一个时间段超出阈值。因此,警报状态保持为 OK


        触发警报的警报阈值

当将 Evaluation Period (评估期)Datapoints to Alarm (触发警报的数据点数) 配置为不同的值时,您将设置“M out of N”警报。Datapoints to Alarm (触发警报的数据点数) 为 (“M”),而 Evaluation Period (评估期) 为 (“N”)。评估间隔是数据点数乘以时间段。例如,如果为 1 分钟时间段配置 5 个数据点中的 4 个数据点,则评估间隔为 5 分钟。如果为 10 分钟时间段配置 3 个数据点中的 3 个数据点,则评估间隔为 30 分钟。

配置 CloudWatch 警报处理缺失数据的方式

有时,带警报的指标的一些数据点不会报告给 CloudWatch。例如,当连接中断、服务器出现故障或指标设计为仅间歇性地报告数据时,可能会发生这种情况。

您可以通过 CloudWatch 指定在评估警报时如何处理缺失的数据点。这可帮助您对警报进行配置,使其在适合所监控的数据类型时进入 ALARM 状态。您可以在缺失数据并不表示出现问题时避免误报。

与每个警报始终处于三种状态之一类似,向 CloudWatch 报告的每个特定数据点将属于以下三个类别之一:

  • 未超出 (在阈值范围内)

  • 超出 (超出阈值)

  • 缺失

对于每个警报,您可以指定 CloudWatch 将缺失数据点视为以下任一项:

  • missing — 该警报在评估是否更改状态时不考虑缺失数据点

  • notBreaching — 缺失数据点视为未超出阈值

  • breaching — 缺失数据点视为超出阈值

  • ignore — 维持当前警报状态

最佳选择取决于指标的类型。对于持续报告数据的指标 (如实例的 CPUUtilization),您可能应将缺失数据点视为 breaching,因为它们可能表示存在错误。但对于仅在错误发生时生成数据点的指标(如 Amazon DynamoDB 中的 ThrottledRequests),应将缺失数据视为 notBreaching。默认行为是 missing

为您的警报选择最佳选项可防止不必要和误导性的警报条件更改,还可以更准确地指示您的系统的运行状况。

当数据缺失时如何评估警报状态

无论您针对如何处理缺失数据设置什么值,当警报评估是否更改状态时,CloudWatch 都会尝试检索比 Evaluation Periods (评估期) 指定数量更多的数据点。它尝试检索的数据点的确切数量取决于警报期限长度,以及它是基于标准分辨率指标,还是基于高分辨率指标。它尝试检索的数据点的时间段为评估范围

一旦 CloudWatch 检索这些数据点,便会发生以下情况:

  • 如果评估范围内的数据点没有缺失,CloudWatch 将根据最近收集的数据点来评估警报。

  • 如果评估范围内的一些数据点缺失,但是检索的现有数据点的数量等于或超过警报的 Evaluation Periods (评估期),则 CloudWatch 将根据已成功检索的最近现有数据点来评估警报状态。在此情况下,您针对如何处理缺失数据而设置的值便没有必要,并且将被忽略。

  • 如果评估范围内的一些数据点缺失,并且检索的现有数据点数量少于评估期的警报数量,则 CloudWatch 将在缺失数据点中填写您针对如何处理缺失数据而指定的结果,然后评估该警报。但是,评估范围内的任何实时数据点(无论何时报告)都包含在评估中。CloudWatch 尽可能少地使用缺失数据点。

在所有这些情况下,评估的数据点数量等于 Evaluation Periods (评估期) 的值。如果少于 Datapoints to Alarm (触发警报的数据点数) 的值超出阈值,则警报状态设置为“正常”。否则,状态设置为“警报”。

注意

此行为的特定情况是,CloudWatch 警报可能会在指标流停止后的一段时间内反复重新评估最后一组数据点。此重新评估可能会导致警报更改状态并重新执行操作 (如果它在指标流停止前已更改状态)。要缓解此行为,请使用较短时间段。

下表阐明了警报评估行为的示例。在第一个表中,Datapoints to Alarm (触发警报的数据点数)Evaluation Periods (评估期) 均为 3。CloudWatch 在评估警报时会检索最近的 5 个数据点。

列 2 显示了 5 个数据点中有多少数据点缺失并可能需要使用针对如何处理缺失数据的设置填入。列 3-6 显示了针对应如何处理缺失数据的每项设置而设定的警报状态,如每列顶部所示。在数据点列中,0 是未超出阈值的数据点,X 是超出阈值的数据点,而 - 是缺失数据点。

数据点 缺失数据点数 MISSING IGNORE BREACHING NOT BREACHING

0 - X - X

0

确定

确定

确定

确定

0 - - - -

2

确定

确定

确定

确定

- - - - -

3

数据不足

保留当前状态

ALARM

确定

0 X X - X

0

ALARM

ALARM

ALARM

ALARM

- - - - X

2

数据不足

保留当前状态

ALARM

确定

在上表第二行中,警报将保持“正常”状态 (即使缺失数据被视为超出阈值),因为一个现有数据点未超出阈值,并且这是随两个被视为超出阈值的缺失数据点一起评估。下次评估此警报时,如果数据仍然缺失,它将进入“警报”状态,因为未超出阈值的数据点将不再是检索的 5 个最近数据点当中的一个。在第四行,警报将在所有情况下进入“警报”状态,因为有足够的实时数据点,所以不需要考虑针对如何处理缺失数据的设置。

在下一个表中,Period (时间段) 再次设置为 5 分钟,并且 Datapoints to Alarm (触发警报的数据点数) 为 2,而 Evaluation Periods (评估期) 为 3。这是“M out of N”警报,其中 M 为 2,N 为 3。

数据点 缺失数据点数 MISSING IGNORE BREACHING NOT BREACHING

0 - X - X

0

ALARM

ALARM

ALARM

ALARM

0 0 X 0 X

0

ALARM

ALARM

ALARM

ALARM

0 - X - -

1

确定

确定

ALARM

确定

- - - - 0

2

确定

确定

ALARM

确定

- - - - X

2

数据不足

保留当前状态

ALARM

确定

如果创建警报后不久便有数据点缺失,并且该指标在您创建警报之前便已报告给 CloudWatch,则 CloudWatch 在评估警报时会检索从创建警报之前算起的最近数据点。

高精度警报

如果对高精度指标设置警报,您可以指定 10 秒或 30 秒时间段的高精度警报,也可以设置 60 秒的任意倍数时间段的定期警报。高精度警报的费用较高。有关高精度指标的更多信息,请参阅发布自定义指标

基于百分位数的 CloudWatch 警报和小数据样本

当您将某个百分位数设置为某个警报的统计数据时,您可以指定在没有数量足以进行有效的统计评估的数据时执行什么操作。您仍然可以选择让警报评估统计数据,并可以更改警报状态。或者,您也可以让警报在样本大小过小时忽略指标,并等到有足够的数据来实现统计显着性时对样本进行评估。

对于介于 0.5 和 1.00 之间的百分位数,将在评估期内数据点数量少于 10/(1 个百分位) 个时使用此设置。例如,如果 p99 百分位上某个警报的样本数少于 1000 个,则会使用此设置。对于 0 和 0.5 之间的百分位数,当数据点数量少于 10/百分位数个时,将使用此设置。

CloudWatch 警报的常见功能

以下功能适用于所有 CloudWatch 警报:

  • 每个 AWS 账户的每个区域可以创建最多 5000 个警报。要创建或更新警报,可以使用 PutMetricAlarm API 操作 (mon-put-metric-alarm 命令)。

  • 警报名称必须仅包含 ASCII 字符。

  • 使用 DescribeAlarms (mon-describe-alarms) 可以列出任何或所有目前配置过的警报以及处于特定状态的任何警报。可以根据时间范围对列表进行进一步筛选。

  • 使用 DisableAlarmActionsEnableAlarmActions (mon-disable-alarm-actionsmon-enable-alarm-actions) 可以禁用和启用警报。

  • 使用 SetAlarmState (mon-set-alarm-state) 可以将警报设为任意状态对其进行测试。此短暂状态变更只会持续到下一个警报比较发生之时。

  • 您可以在创建自定义指标之前使用 PutMetricAlarm (mon-put-metric-alarm) 创建警报。为了使警报有效,必须在警报定义中包含自定义指标的所有维度以及指标命名空间和指标名称。

  • 您可以使用 DescribeAlarmHistory (mon-describe-alarm-history) 查看警报的历史记录。CloudWatch 会将警报历史记录保存两个星期。每个状态转换都标有一个唯一的时间戳。个别情况下,一个状态变更的历史记录可能显示多个通知。通过时间戳可以确定唯一的状态变更。

  • 警报的评估期数乘以每个评估期的长度不能超过一天。

注意

在特定条件下,一些 AWS 资源不会将指标数据发送到 CloudWatch。

例如,Amazon EBS 不会发送未连接到 Amazon EC2 实例的可用卷的指标数据,因为该卷没有要监控的指标活动。如果您对此类指标设置了警报,您可能会注意到其状态更改为“数据不足”。这可能表示您的资源处于不活动状态,并不一定表示出现了问题。