使用 Amazon CloudWatch 警报 - Amazon CloudWatch
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用 Amazon CloudWatch 警报

您可以同时创建指标警报复合警报CloudWatch。

  • A指标警报监控单个 CloudWatch 指标,或基于 CloudWatch 指标监控数学表达式的结果。警报根据指标或表达式在多个时间段内相对于某阈值的值执行一项或多项操作。操作可以是向 Amazon SNS 主题发送通知、执行 Amazon EC2 操作或自动扩展操作,或在 Systems Manager 中创建 OpsItem 或事件。

  • 复合警报包括一个规则表达式,该表达式考虑您已创建的其他警报的警报状态。只有当规则的所有条件都得到满足时,复合警报才会进入 ALARM(警报)状态。在复合警报的规则表达式中指定的警报可以包括指标警报和其他复合警报。

    使用复合警报可以减少警报噪音。您可以创建多个指标警报,还可以创建复合警报并仅为复合警报设置警报。例如,只有当所有底层指标警报都处于 ALARM(警报)状态时,复合警报才可能进入 ALARM(警报)状态。

    复合警报可以在改变状态时发送 Amazon SNS 通知,并且可以在进入 “警报” 状态时创建 Systems Manager OpsItems 或事件,但无法执行 EC2 操作或 Auto Scaling 操作。

您可以向 CloudWatch 控制面板添加警报,并以可视化方式监控它们。当某个警报位于控制面板上时,如果它处于 ALARM 状态,则会变成红色,便于您主动监控其状态。

只有在警报状态更改时,警报才会调用操作。例外情况是使用 “自动扩展” 操作的警报。对于 Auto Scaling 操作,警报会在警报保持新状态时继续每分钟调用一次操作。

注意

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

指标警报状态

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

  • OK— 指标或表达式在定义的阈值范围内。

  • ALARM— 指标或表达式超出定义的阈值。

  • INSUFFICIENT_DATA— 警报刚刚启动,指标不可用,或指标数据不足以判断警报状态。

评估警报

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

  • Period (时间段) 是为创建警报的各个数据点而对该指标或表达式进行评估的时间长度。它以秒为单位。如果选择一分钟作为周期,则警报每分钟评估一次指标。

  • 评估期是确定警报状态时要评估的最近时间段或数据点的数量。

  • 要警报的数据点是评估期内必须超出阈值才能触发警报进入ALARM状态。超出阈值的数据点不必是连续的,它们只需都在最近的几个(具体数目等于评估期)数据点之内。

在下图中,指标警报的警报阈值设置为三个单位。二者评估期要警报的数据点是 3. 也就是说,在最近三个连续评估期中的所有现有数据点都高于阈值时,警报会变为ALARM状态。在该图中,在第三个到第五个时间段发生了这种情况。在第六个时间段,该值降至阈值以下,因此其中一个时间段被评估为未超出阈值,并且警报状态更改回到OK。在第九个时间段,再次超出阈值,但仅一个时间段超出阈值。因此,警报状态保持为 OK


        触发警报的警报阈值

当您配置评估期要警报的数据点作为不同的值,您将设置 “M (最大为 N)” 警报。要警报的数据点是 (“M”),评估期是(“N”)。评估间隔等于数据点数乘以评估期时长。例如,如果为 1 分钟的评估期配置 4 个数据点( 最大为 5 个数据点),则评估间隔为 5 分钟。如果为 10 分钟的评估期配置 3 个数据点(最大为 3 个数据点),则评估间隔为 30 分钟。

注意

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

警报操作

您可以指定警报在 “正常”、“警报” 和 “不足 _DATA” 状态之间更改状态时所执行的操作。最常见的警报操作类型是通过向亚马逊简单通知服务主题发送消息来通知一人或多人。有关 Amazon SNS 的更多信息,请参阅什么是 Amazon SNS?

基于 EC2 指标的警报也可以执行 EC2 操作,如停止、终止、重启或恢复 EC2 实例。有关更多信息,请参阅Createa拉姆到s上,t除虫,r重新启动,或r通过 EC2 进行电子转换instance

警报也可以执行操作来扩展 Auto Scaling 组。有关更多信息,请参阅 。Amazon EC2 Auto Scaling 的步骤和简单扩展策略

您还可以将警报配置为在 Systems Manager 操作中心中创建 OOpsItems,或在AmazonSystems Manager 事件管理器。只有在警报进入 “警报” 状态时才能执行这些操作。有关更多信息,请参阅 。CloudWatch 配置为通过警报创建 OpsItems 作事件创建

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

有时,并非指标的每个预期数据点都会报告到 CloudWatch。例如,当连接中断、服务器出现故障或指标设计为仅间歇性地报告数据时,可能会发生这种情况。

您可以通过 CloudWatch 指定在评估警报时如何处理缺失的数据点。这可以帮助您配置警报,以便它转到ALARM状态,仅在适合所监控的数据类型时才会显示。您可以在缺失数据不表示出现问题时避免误报。

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

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

  • 超出 (超出阈值)

  • 缺失

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

  • notBreaching— 将缺失数据点视为 “良好”,并在阈值范围内

  • breaching— 将缺失数据点视为 “不好”,并超出阈值

  • ignore— 维持当前警报状态

  • missing— 如果报警评估范围内的所有数据点都丢失,则警报将转换为不足 ENT_DATA。

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

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

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

每当警报评估是否更改状态时,CloudWatch 都会尝试检索比指定数量更多的数据点。评估期。它尝试检索的数据点的确切数量取决于警报期限长度,以及它是基于标准分辨率指标,还是基于高分辨率指标。它尝试检索的数据点的时间范围是评估范围

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

  • 如果评估范围内的数据点没有缺失,CloudWatch 将根据最近收集的数据点来评估警报。评估的数据点数等于评估期的警报。在评估范围内,不需要额外的数据点,因此会被忽略。

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

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

注意

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

下表阐明了警报评估行为的示例。在第一个表格中,要警报的数据点评估期都是 3. CloudWatch 在评估警报时会检索最近的 5 个数据点,以防最近的 3 个数据点中的一些数据点缺失。5 是警报的评估范围。

列 1 显示 5 个最近数据点,因为评估范围为 5。这些数据点将在右侧显示最近的数据点。0 是未超出阈值的数据点,X 是超出阈值的数据点,而-是缺失数据点。

第 2 列显示 3 个必需数据点中有多少个缺失。即使评估了最近的 5 个数据点,也只需要 3 个(Evaluation Periods (评估期间) 的设置)来评估警报状态。第 2 列中的数据点数是必须“填写”的数据点数(使用有关处理丢失数据的方式的设置)。

在第 3-6 列中,列标题是如何处理缺少数据的可能值。这些列中的行显示了为处理丢失数据的每种可能方法设置的警报状态。

数据点 必须填充的数据点数 MISSING IGNORE BREACHING NOT BREACHING

0 - X - X

0

OK

OK

OK

OK

- - - - 0

2

OK

OK

OK

OK

- - - - -

3

INSUFFICIENT_DATA

保留当前状态

ALARM

OK

0 X X - X

0

ALARM

ALARM

ALARM

ALARM

- - X - -

2

ALARM

Retain current state

ALARM

OK

在上表的第二行中,即使将缺失数据视为超出阈值,警报也会保持 OK 状态,因为一个现有的数据点未超出阈值,并且该数据点与两个被视为超出阈值的缺失数据点一起进行评估。下次评估该警报时,如果数据仍缺失,它将变为状态,ALARM,因为该非违反数据点将不再处于评估范围内。

第三行(所有五个最新数据点都缺失)说明了如何处理丢失数据的各种设置如何影响警报状态。如果缺失的数据点被视为突破,警报将进入 ALARARM 状态,而如果它们被视为未突破,则警报进入正常状态。如果忽略缺少的数据点,警报将保留丢失数据点之前的当前状态。如果缺少的数据点被认为是缺失的,那么警报没有足够的最新真实数据来进行评估,并进入 INFULENT_DATA。

在第四行,警报转到ALARM状态,因为三个最近的数据点正在突破,而警报的评估期要警报的数据点都设为 3。在这种情况下,丢失的数据点将被忽略,并且不需要如何评估缺失数据的设置,因为有 3 个实际数据点需要评估。

第 5 行表示警报评估的特殊情况,称为过早警报状态。有关更多信息,请参阅避免过早过渡到警报状态

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

评估范围为 5。这是最近检索到的数据点的最大数目,可以在某些数据点丢失的情况下使用这些数据点。

数据点 缺失数据点数 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

OK

OK

ALARM

OK

- - - - 0

2

OK

OK

ALARM

OK

- - - - X

2

ALARM

保留当前状态

ALARM

OK

在第 1 行和第 2 行中,警报始终处于 “警报” 状态,因为 3 个最近的数据点中有 2 个处于突破状态。在第 2 行中,不需要评估范围内的两个最早的数据点,因为没有 3 个最近的数据点丢失,因此这两个较旧的数据点将被忽略。

在第 3 行和第 4 行中,只有当丢失的数据被视为违反时,警报才会进入 ALARARM 状态,在这种情况下,两个最近丢失的数据点都被视为违反。在第 4 行中,这两个被视为突破的缺失数据点提供了两个必要的突破数据点来触发 ALARARM 状态。

第 5 行表示警报评估的特殊情况,称为过早警报状态。有关更多信息,请参阅以下部分。

避免过早过渡到警报状态

CloudWatch 警报评估包括用于尝试避免错误警报的逻辑,当数据间歇性时,警报会提前进入警报状态。上一节表中的第 5 行中显示的示例说明了这种逻辑。在这些行中,以及在以下示例中,评估期为 3,评估范围为 5 个数据点。要警报的数据点是 3,除了 N 个例子中的 M,其中要警报的数据点为 2。

假设警报的最新数据是- - - - X,其中有四个缺失的数据点,然后一个突破数据点作为最新的数据点。由于下一个数据点可能没有突破,因此当数据处于- - - - X或者- - - X -要警报的数据点是 3。通过这种方式,当下一个数据点未被突破并导致数据- - - X O或者- - X - O

但是,如果最后几个数据点是- - X - -,即使丢失的数据点被视为丢失,警报也会进入 ALARM 状态。这是因为警报被设计为在评估期间最早的可用违反数据点的数据点数至少与要警报的数据点,并且所有其他较新的数据点都被突破或丢失。在这种情况下,即使可用数据点的总数小于 M,警报也会进入 ALARM 状态(要警报的数据点)。

此报警逻辑也适用于 N 个警报中的 M 个。如果在评估期数据点的数量至少与评估期,并且所有最新的数据点要么突破或丢失,则无论 M 值如何,警报都会进入 ALARARM 状态(要警报的数据点)。

高精度警报

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

针对数学表达式的警报

您可以针对基于一个或多个 CloudWatch 指标的数学表达式的结果设置警报。用于警报的数学表达式可以包含多达 10 个指标。每个指标都必须使用相同的时间段。

对于基于数学表达式的警报,您可以指定 CloudWatch 在评估警报时如何处理基础指标的缺失数据点。

基于数学表达式的警报无法执行 Amazon EC2 操作。

有关指标数学表达式和语法的更多信息,请参阅使用m电子math

基于百分比的 CloudWatch 警报和低数据采样

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

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

CloudWatch 视警报的常见功能

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

  • 您最多可以为每个 Amazon 账户在每个区域中创建 5000 个警报。要创建或更新警报,可以使用 CloudWatch 控制台、PutMetricAlarmAPI 操作,或推出指标警报命令Amazon CLI。

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

  • 您可以列出任何或所有目前配置过的警报,并使用 CloudWatch 控制台、DescribeAlarmsAPI 操作,或描述警报命令Amazon CLI。

  • 您可以通过使用 CloudWatch 控制台、DisableAlarmActionsEnableAlarmActionsAPI 操作或禁用警报操作启用警报操作命令Amazon CLI。

  • 您可以使用触发警报的数据点数设置为任意状态,以测试警报。SetAlarmStateAPI 操作或设置警报状态命令Amazon CLI。此短暂状态变更只会持续到下一个警报比较发生之时。

  • 您可以在创建自定义指标之前为该自定义指标创建警报。为了使警报有效,必须在警报定义中包含自定义指标的所有维度以及指标命名空间和指标名称。为此,您可以使用PutMetricAlarmAPI 操作,或推出指标警报命令Amazon CLI。

  • 您可以使用 CloudWatch 控制台、DescribeAlarmHistoryAPI 操作,或描述警报历史命令Amazon CLI。CloudWatch 将警报历史记录保留两周。每个状态转换都标有一个唯一的时间戳。个别情况下,一个状态变更的历史记录可能显示多个通知。通过时间戳可以确认独特的状态变更。

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

注意

一段时间Amazon在特定情况下,资源不会向 CloudWatch 发送指标数据。

例如,Amazon EBS 可能不会发送未连接到 Amazon EC2 实例的可用卷的指标数据,因为该卷没有要监控的指标活动。如果为此类指标设置了一个警报,您可能会注意到其状态变为 INSUFFICIENT_DATA。这可能表示资源处于不活动状态,并不一定表示出现了问题。您可以指定每个警报如何处理丢失数据。有关更多信息,请参阅配置 CloudWatch 警报处理缺少数据的方式