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

使用 Amazon CloudWatch 告警

您可以在 Amazon CloudWatch 中创建指标复合警报。

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

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

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

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

注意

您可以在您的 Amazon 账户中创建任意数量的警报。

您可以为控制面板添加警报,以便监控与接收跨多个区域的 Amazon 资源和应用程序的提醒。为控制面板添加警报以后,该警报会在处于 INSUFFICIENT_DATA 状态时变成灰色,在 ALARM 状态时变成红色。当处于 OK 状态时,警报没有颜色显示。

您还可以在 CloudWatch 控制台的导航面板中通过 Favorites and recents(收藏夹和最近记录)选项收藏最近访问过的警报。Favorites and recents(收藏夹和最近记录)选项中有对应的列,分别显示您收藏的警报和最近访问过的警报。

告警仅在告警状态更改时才会调用操作。使用 Auto Scaling 操作的告警除外。对于 Auto Scaling 操作,告警会在告警保持新状态时以每分钟一次的频率持续调用操作。

告警可以在同一账户中监视指标。如果您在 CloudWatch 控制台中启用了跨账户功能,则还可以创建告警,以监视其他 Amazon 账户。不支持创建跨账户复合告警。支持创建使用数学表达式的跨账户告警,但跨账户告警不支持 ANOMALY_DETECTION_BANDINSIGHT_RULESERVICE_QUOTA 函数。

注意

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

指标告警状态

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

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

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

  • INSUFFICIENT_DATA(数据不足) – 告警刚刚启动,指标不可用,或者指标没有足够的数据以确定告警状态。

评估告警

创建告警时,请指定三个设置,以启用 CloudWatch 评估在何时更改告警状态:

  • 时间段是为了创建警报的各个数据点,而评估指标或表达式所用的时间长度。它以秒为单位。

  • Evaluation Periods(评估期)是确定告警状态时要评估的最近时间段或数据点的数量。

  • Datapoints to Alarm(触发告警的数据点数)是评估期内必须违例才能触发告警变为 ALARM(告警)状态的数据点数量。超出阈值的数据点不必是连续的,但它们必须全部在等于 Evaluation Period(评估期)的最近几个数据点范围内。

对于任何一分钟或更长的时间段,每分钟评估一次告警,评估基于周期评估周期定义的时段。例如,如果周期为 5 分钟(300 秒),评估周期为 1,则在第 5 分钟结束时,告警将根据从 1 到 5 分钟的数据进行评估。然后,在第 6 分钟结束时,根据第 2 分钟到 6 分钟的数据对告警进行评估。

如果告警周期为 10 秒或 30 秒,则每 10 秒评估一次告警。

在下图中,指标告警的阈值设置为三个单位。Evaluation Periods(评估期)Datapoints to Alarm(触发告警的数据点数)均为 3。也就是说,在最近三个连续评估期中的所有现有数据点都高于阈值时,告警就会变为 ALARM(告警)状态。在该图中,在第三个到第五个时间段发生了这种情况。在第六个时间段,数值降至阈值以下,因此其中一个时间段被评估为未违例,且告警状态恢复为 OK(正常)。在第九个时间段,再次超出阈值,但仅一个时间段超出阈值。因此,告警状态保持为 OK(正常)。


        触发告警的阈值

在将 Evaluation Periods(评估期)Datapoints to Alarm(触发告警的数据点数)配置为不同的值时,您将设置“M(最大为 N)”告警。Datapoints to Alarm(触发告警的数据点数)为(“M”),而 Evaluation Periods(评估期)为(“N”)。评估间隔等于评估期数量乘以评估期时长。例如,如果为 1 分钟的评估期配置 4 个数据点(最大为 5 个数据点),则评估间隔为 5 分钟。如果为 10 分钟的评估期配置 3 个数据点(最大为 3 个数据点),则评估间隔为 30 分钟。

注意

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

告警操作

您可以指定告警在“OK(正常)”、“ALARM(告警)”和“INSUFFICIENT_DATA(数据不足)”状态之间更改状态时所执行的操作。

要过渡到这三种状态中的每一种,大多数操作都可以设置。除自动扩缩操作外,这些操作仅在状态转换时会发生,如果该情况持续数小时或数天,则不会再次执行。您可以利用允许告警进行多次操作这一事实,在超过阈值时发送一封电子邮件,然后在超出条件结束时发送另一封电子邮件。这可以帮助您验证扩展或恢复操作是否在预期时间触发,并按预期工作。

以下是受支持的警报操作。

Lambda 警报操作

CloudWatch 警报可保证在给定状态变化时异步调用 Lambda 函数,但以下情况除外:

  • 当该函数不存在时。

  • 当 CloudWatch 未被授权调用该 Lambda 函数时。

如果 CloudWatch 无法访问 Lambda 服务或消息因其他原因被拒绝,CloudWatch 会不断重试,直到调用成功。Lambda 将消息加入队列并处理执行重试。有关这种执行模式的更多信息,包括有关 Lambda 如何处理错误的信息,请参阅《Amazon Lambda 开发人员指南》中的 Asynchronous invocation

可以调用同一账户中的 Lambda 函数,也可以调用其他 Amazon 账户中的 Lambda 函数。

当您指定一个警报以调用 Lambda 函数作为警报操作时,您可以选择指定函数名称、函数别名或函数的特定版本。

当您将一个 Lambda 函数指定为警报操作时,必须为该函数创建一个资源策略,以允许 CloudWatch 服务主体调用该函数。

一种方法是使用 Amazon CLI,如下例所示:

aws lambda add-permission \ --function-name my-function-name \ --statement-id AlarmAction \ --action 'lambda:InvokeFunction' \ --principal lambda.alarms.cloudwatch.amazonaws.com \ --source-account 111122223333 \ --source-arn arn:aws:cloudwatch:us-east-1:111122223333:alarm:alarm-name

或者,您可以创建一个类似于以下示例之一的策略,然后将其分配给该函数。

以下示例指定警报所在的账户,因此只有该账户(111122223333)中的警报才能调用该函数。

{ "Version": "2012-10-17", "Id": "default", "Statement": [ { "Sid": "AlarmAction", "Effect": "Allow", "Principal": { "Service": "lambda.alarms.cloudwatch.amazonaws.com" }, "Action": "lambda:InvokeFunction", "Resource": "arn:aws:lambda:us-east-1:444455556666:function:function-name", "Condition": { "StringEquals": { "AWS:SourceAccount": "111122223333" } } } }

以下示例的范围较窄,仅允许指定账户中的指定警报调用该函数。

{ "Version": "2012-10-17", "Id": "default", "Statement": [ { "Sid": "AlarmAction", "Effect": "Allow", "Principal": { "Service": "lambda.alarms.cloudwatch.amazonaws.com" }, "Action": "lambda:InvokeFunction", "Resource": "arn:aws:lambda:us-east-1:444455556666:function:function-name", "Condition": { "StringEquals": { "AWS:SourceAccount": "111122223333", "AWS:SourceArn": "arn:aws:cloudwatch:us-east-1:111122223333:alarm:alarm-name" } } } }

我们不建议创建未指定来源账户的策略,因为此类策略容易受到混淆代理问题的影响。

从 CloudWatch 发送到 Lambda 的事件对象

当您将一个 Lambda 函数配置为警报操作时,CloudWatch 会在调用 Lambda 函数时向该函数传送一个 JSON 有效负载。此 JSON 有效负载用作函数的事件对象。您可以从此 JSON 对象中提取数据并将其用于您的函数。以下是指标警报中事件对象的示例。

{ 'source': 'aws.cloudwatch', 'alarmArn': 'arn:aws:cloudwatch:us-east-1:444455556666:alarm:lambda-demo-metric-alarm', 'accountId': '444455556666', 'time': '2023-08-04T12:36:15.490+0000', 'region': 'us-east-1', 'alarmData': { 'alarmName': 'lambda-demo-metric-alarm', 'state': { 'value': 'ALARM', 'reason': 'test', 'timestamp': '2023-08-04T12:36:15.490+0000' }, 'previousState': { 'value': 'INSUFFICIENT_DATA', 'reason': 'Insufficient Data: 5 datapoints were unknown.', 'reasonData': '{"version":"1.0","queryDate":"2023-08-04T12:31:29.591+0000","statistic":"Average","period":60,"recentDatapoints":[],"threshold":5.0,"evaluatedDatapoints":[{"timestamp":"2023-08-04T12:30:00.000+0000"},{"timestamp":"2023-08-04T12:29:00.000+0000"},{"timestamp":"2023-08-04T12:28:00.000+0000"},{"timestamp":"2023-08-04T12:27:00.000+0000"},{"timestamp":"2023-08-04T12:26:00.000+0000"}]}', 'timestamp': '2023-08-04T12:31:29.595+0000' }, 'configuration': { 'description': 'Metric Alarm to test Lambda actions', 'metrics': [ { 'id': '1234e046-06f0-a3da-9534-EXAMPLEe4c', 'metricStat': { 'metric': { 'namespace': 'AWS/Logs', 'name': 'CallCount', 'dimensions': { 'InstanceId': 'i-12345678' } }, 'period': 60, 'stat': 'Average', 'unit': 'Percent' }, 'returnData': True } ] } } }

以下是复合警报中事件对象的示例。

{ 'source': 'aws.cloudwatch', 'alarmArn': 'arn:aws:cloudwatch:us-east-1:111122223333:alarm:SuppressionDemo.Main', 'accountId': '111122223333', 'time': '2023-08-04T12:56:46.138+0000', 'region': 'us-east-1', 'alarmData': { 'alarmName': 'CompositeDemo.Main', 'state': { 'value': 'ALARM', 'reason': 'arn:aws:cloudwatch:us-east-1:111122223333:alarm:CompositeDemo.FirstChild transitioned to ALARM at Friday 04 August, 2023 12:54:46 UTC', 'reasonData': '{"triggeringAlarms":[{"arn":"arn:aws:cloudwatch:us-east-1:111122223333:alarm:CompositeDemo.FirstChild","state":{"value":"ALARM","timestamp":"2023-08-04T12:54:46.138+0000"}}]}', 'timestamp': '2023-08-04T12:56:46.138+0000' }, 'previousState': { 'value': 'ALARM', 'reason': 'arn:aws:cloudwatch:us-east-1:111122223333:alarm:CompositeDemo.FirstChild transitioned to ALARM at Friday 04 August, 2023 12:54:46 UTC', 'reasonData': '{"triggeringAlarms":[{"arn":"arn:aws:cloudwatch:us-east-1:111122223333:alarm:CompositeDemo.FirstChild","state":{"value":"ALARM","timestamp":"2023-08-04T12:54:46.138+0000"}}]}', 'timestamp': '2023-08-04T12:54:46.138+0000', 'actionsSuppressedBy': 'WaitPeriod', 'actionsSuppressedReason': 'Actions suppressed by WaitPeriod' }, 'configuration': { 'alarmRule': 'ALARM(CompositeDemo.FirstChild) OR ALARM(CompositeDemo.SecondChild)', 'actionsSuppressor': 'CompositeDemo.ActionsSuppressor', 'actionsSuppressorWaitPeriod': 120, 'actionsSuppressorExtensionPeriod': 180 } } }

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

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

您可以通过 CloudWatch 指定在评估告警时如何处理缺失的数据点。这可帮助您对告警进行配置,使其仅在适合所监控的数据类型时变为 ALARM(告警)状态。您可以避免在缺失数据没有指示问题时进行误报。

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

  • 未违例(在阈值范围内)

  • 违例(超出阈值)

  • 缺失

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

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

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

  • ignore(忽略)– 保持当前告警状态

  • missing(缺失)– 如果告警评估范围内的所有数据点都缺失,则告警将转变为“INSUFFICIENT_DATA(数据不足)”状态。

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

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

重要

评估 AWS/DynamoDB 命名空间中的指标的告警,始终会忽略缺失的数据,即便您为告警应该如何处理缺失的数据选择了不同的选项也是如此。当 AWS/DynamoDB 指标包含缺失数据时,评估该指标的告警仍将保持其当前状态。

在数据缺失时如何评估告警状态

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

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

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

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

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

注意

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

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

由于评估范围为 5,因此第 1 列显示最近的 5 个数据点。数据点显示为:右侧为最近的数据点,0 是未违例数据点,X 是违例数据点,而 - 是缺失数据点。

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

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

数据点 必须填写的数据点数 缺失 忽略 违例 未违例

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

保留当前状态

ALARM

OK

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

第三行(所有五个最新数据点都缺失)说明了缺失数据处理方式的各种设置对告警状态的影响。如果缺失的数据点被视为违例,告警将进入“ALARM(告警)”状态,而如果它们被视为未违例,则告警进入“OK(正常)”状态。如果忽略缺少的数据点,告警将保留缺失数据点之前的当前状态。如果缺少的数据点被认为已缺失,则告警没有足够的最新真实数据来进行评估,并变为“INSUFFICIENT_DATA(数据不足)”状态。

在第四行,告警转到 ALARM(告警)状态,因为三个最近的数据点违例,而告警的 Evaluation Periods(评估期)Datapoints to Alarm(触发告警的数据点数)都设为 3。在这种情况下,缺失的数据点将被忽略,并且不需要缺失数据评估方式的设置,因为有 3 个实际数据点需要评估。

第 5 行表示告警评估的特殊情况,称为提前告警状态。有关更多信息,请参阅避免提前转换到告警状态

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

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

数据点 缺失数据点数 缺失 忽略 违例 未违例

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 行中,告警始终处于“ALARM(告警)”状态,因为 3 个最近的数据点中有 2 个违例。在第 2 行中,不需要评估范围内的两个最早的数据点,因为 3 个最近的数据点中无一缺失,因此这两个较旧的数据点将被忽略。

在第 3 行和第 4 行中,只有当缺失的数据被视为违例时,告警才会进入“ALARM(告警)”状态,在这种情况下,两个最近丢失的数据点都被视为违例。在第 4 行中,这两个被视为违例的缺失数据点提供了两个触发“ALARM(告警)”状态所必要的违例数据点。

第 5 行表示告警评估的特殊情况,称为提前告警状态。有关更多信息,请参阅以下 章节。

避免提前转换到告警状态

CloudWatch 告警评估包括用于尝试避免误报的逻辑,当数据出现间歇性时,告警会提前进入告警状态。上一节表中的第 5 行中显示的示例说明了这种逻辑。在这些行中,以及在以下示例中,Evaluation Periods(评估期)为 3,评估范围为 5 个数据点。Datapoints to Alarm(触发告警的数据点数)为 3,M(最大为 N)示例除外,其中 Datapoints to Alarm(触发告警的数据点数)为 2。

假设告警的最新数据是 - - - - X,其中有四个缺失的数据点,然后一个违例数据点作为最新的数据点。由于下一个数据点可能未违例,因此当数据处于 - - - - X 或者 - - - X -,且 Datapoints to Alarm(触发告警的数据点数)为 3 时,告警不会立即进入“ALARM(告警)”状态。这样,当下一个数据点未违例并导致数据为 - - - X O 或者 - - X - O 时,误报得以避免。

但是,如果最后几个数据点是 - - X - -,即使缺失的数据点被视为缺失,告警也会进入“ALARM(告警)”状态。这是因为根据告警的设计,当在数据点数量 Evaluation Periods(评估期)间最早的可用的违例数据点至少与 Datapoints to Alarm(触发告警的数据点数)的值同样早,并且所有其他较新的数据点都违例或缺失时,告警都会进入“ALARM(告警)”状态。在这种情况下,即使可用数据点的总数小于 M(Datapoints to Alarm(触发告警的数据点数)),告警也会进入“ALARM(告警)”状态。

此告警逻辑也适用于 M(最大为 N)告警。如果评估范围内最早的违例数据点至少与 Datapoints to Alarm(触发告警的数据点数)的值同样早,并且所有最新的数据点均违例或缺失,则无论 M 值(Datapoints to Alarm(触发告警的数据点数))如何,告警都会进入“ALARM(告警)”状态。

高精度告警

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

针对数学表达式的告警

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

对于基于数学表达式的告警,您可以指定您希望 CloudWatch 如何对待缺失数据点。在这种情况下,如果数学表达式没有返回该数据点的值,则认为该数据点缺失。

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

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

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

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

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

CloudWatch 告警的常见功能

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

  • 您可以创建的告警数量没有限制。要创建或更新告警,请使用 CloudWatch 控制台、PutMetricAlarm API 操作,或 Amazon CLI 中的 put-metric-alarm 命令。

  • 告警名称必须仅包含 UTF-8 字符,并且不能包含 ASCII 控制字符

  • 您可以使用 CloudWatch 控制台、DescribeAlarms API 操作,或 Amazon CLI 中的 describle-alarms 命令来列出任何或所有当前已配置的告警和列出任意特定状态的告警。

  • 您可以使用 DisableAlarmActionsEnableAlarmActions API 操作或 Amazon CLI 中的 disable-alarm-actionsenable-alarm-actions 命令来禁用或启用告警。

  • 您可以使用 SetAlarmState API 操作或 Amazon CLI 中的 set-alarm-state 命令将告警设为任意状态,以对其进行测试。此短暂状态变更只会持续到下一个告警比较发生之时。

  • 您可以在创建自定义指标之前为该自定义指标创建告警。为了使告警有效,必须在告警定义中包含自定义指标的所有维度以及指标命名空间和指标名称。要执行此操作,您可以使用 PutMetricAlarm API 操作,或 Amazon CLI 中的 put-metric-alarm命令。

  • 您可以使用 CloudWatch 控制台、DescribeAlarmHistory API 操作,或 Amazon CLI 中的 describe-alarm-history 命令查看告警的历史记录。CloudWatch 可将告警历史记录保存两个星期。每个状态转换都标有一个唯一的时间戳。个别情况下,一个状态变更的历史记录可能显示多个通知。通过时间戳可以确认独特的状态变更。

  • 您可以在 CloudWatch 控制台的导航面板中通过 Favorites and recents(收藏夹和最近记录)选项收藏最近访问过的警报,具体方法为:将鼠标悬停在您想要收藏的警报上方,然后选择它旁边的星号。

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

注意

在特定情况下,某些 Amazon 资源不会向 CloudWatch 发送指标数据。

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