View a markdown version of this page

警报操作 - Amazon CloudWatch

警报操作

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

要过渡到这三种状态中的每一种,大多数操作都可以设置。除自动扩缩操作外,这些操作仅在状态转换时会发生,如果该情况持续数小时或数天,则不会再次执行。

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

  • 通过使用 Amazon Simple Notification Service 主题通知一个或多个订阅用户。订阅用户既可以是应用程序,也可以是个人。

  • 调用 Lambda 函数。这是在警报状态变化时自动执行自定义操作的最简单方法。

  • 基于 EC2 指标的警报还可以执行 EC2 操作,例如停止、终止、重启或恢复 EC2 实例。

  • 警报还可以执行操作来扩展自动扩缩组。

  • 警报可以在 Systems Manager Ops Center 中创建 OpsItems,或在 AWS Systems Manager Incident Manager 中创建事件。只有在警报进入“ALARM(警报)”状态时才能执行这些操作。

  • 警报进入 ALARM 状态时可启动调查。

警报还会在更改状态时向 Amazon EventBridge 发出事件,您可以将 Amazon EventBridge 设置为针对这些状态更改触发其他操作。

警报操作和通知

下表显示了针对各类警报所执行的操作及其在多个时间序列(或贡献者)警报情况下的表现:

操作类型 Metrics Insights 多时间序列警报支持 PromQL 警报支持 更多信息
SNS 通知 影响因素级别 影响因素级别 Amazon SNS event destinations
EC2 操作(停止、终止、重启、恢复) 不支持 不支持 停止、终止、重启或恢复 EC2 实例
Auto Scaling 操作 不支持 警报级别1 Amazon EC2 Auto Scaling 的阶梯式扩展策略与简单扩展策略
Systems Manager OpsItem 创建 警报级别 不支持 Configure CloudWatch alarms to create OpsItems
Systems Manager Incident Manager 事件 警报级别 不支持 Creating incidents automatically with CloudWatch alarms
Lambda 函数调用 影响因素级别 影响因素级别 从警报中调用 Lambda 函数
CloudWatch 调查功能调查 警报级别 不支持 从警报启动 CloudWatch 调查

1 PromQL 警报仅支持 Application Auto Scaling 操作。

警报通知的内容因警报类型而异:

  • 单指标警报通知内容同时包含状态原因和详细的状态原因数据,会显示导致状态变化的具体数据点。

  • Metrics Insights 多时间序列警报会为每个贡献者提供简化的状态原因,不会包含详细状态原因数据块。

  • PromQL 警报的通知中不包含状态原因或状态原因数据。

例通知内容示例

单指标警报通知包含详细的数据:

{ "stateReason": "Threshold Crossed: 3 out of the last 3 datapoints [32.6 (03/07/25 08:29:00), 33.8 (03/07/25 08:24:00), 41.0 (03/07/25 08:19:00)] were greater than the threshold (31.0)...", "stateReasonData": { "version": "1.0", "queryDate": "2025-07-03T08:34:06.300+0000", "startDate": "2025-07-03T08:19:00.000+0000", "statistic": "Average", "period": 300, "recentDatapoints": [41, 33.8, 32.6], "threshold": 31, "evaluatedDatapoints": [ { "timestamp": "2025-07-03T08:29:00.000+0000", "sampleCount": 5, "value": 32.6 } // Additional datapoints... ] } }

多时间序列 Metrics Insights 警报 SNS 通知(以贡献者为例):

{ "AlarmName": "DynamoDBInsightsAlarm", "NewStateValue": "ALARM", "NewStateReason": "Threshold Crossed: 1 datapoint was less than the threshold (1.0). The most recent datapoint which crossed the threshold: [0.0 (01/12/25 13:34:00)].", "StateChangeTime": "2025-12-01T13:42:04.919+0000", "OldStateValue": "OK", "AlarmContributorId": "6d442278dba546f6", "AlarmContributorAttributes": { "TableName": "example-dynamodb-table-name" } // Additional information... }

贡献者的 PromQL 警报 SNS 通知示例:

{ "AlarmName": "HighCPUUsageAlarm", "NewStateValue": "ALARM", "StateChangeTime": "2025-12-01T13:42:04.919+0000", "OldStateValue": "OK", "AlarmContributorId": "1d502278dcd546a1", "AlarmContributorAttributes": { "team": "example-team-name" } // Additional information... }

将警报操作静音

警报静音规则使您能够在预定义的时间窗口(例如维护期间或发生操作事件时)内自动将警报操作静音。CloudWatch 继续监控警报状态,同时阻止不必要的通知。有关更多信息,请参阅 告警静音规则

静音规则与禁用警报操作

警报静音规则会在预定时间段内暂时将操作静音,并在窗口结束时自动取消静音。相比之下,DisableAlarmActions API 会永久禁用警报操作,直到您手动调用 EnableAlarmActionsEnableAlarmActions API 不会将由活动静音规则静音的警报取消静音。

注意

将警报静音并不会阻止 CloudWatch 向亚 Amazon EventBridge 发送警报创建、更新、删除和状态更改的警报事件。