You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AWS CloudWatch复合告警:单告警持续超时长触发告警配置咨询

AWS CloudWatch复合告警扩展规则实现方案

核心问题直接结论

  • 该需求无需强制依赖Lambda函数实现,CloudWatch原生能力即可完整覆盖所有规则要求
  • 如果选择Lambda实现,Lambda完全支持追踪单个告警处于In Alarm状态的持续时长,逻辑可落地

优先推荐:零代码原生实现方案

你已经配置完成的「3个告警中任意2个触发即触发复合告警」的规则可以直接保留,只需要补充少量配置即可满足新增的单告警持续时长判断逻辑:

  • 为现有的3个基础告警分别创建1个同指标、同触发阈值的副本告警,不要给这3个副本告警绑定任何通知动作。将副本告警的评估参数设置为你需要的单告警持续触发阈值:比如你要求单告警持续15分钟处于告警状态才触发,就将副本告警设为连续15个1分钟评估周期都满足触发条件才进入In Alarm状态,同时保证副本告警的缺失数据处理策略和原基础告警完全一致,避免判断偏差。
  • 修改原有复合告警的规则表达式,在原有双告警触发的逻辑基础上,追加3个副本告警的触发判断,示例规则结构如下:
    # 假设原有3个基础告警命名为alarm1、alarm2、alarm3,对应的长周期副本为alarm1_long、alarm2_long、alarm3_long
    (ALARM(alarm1) AND ALARM(alarm2))
    OR (ALARM(alarm1) AND ALARM(alarm3))
    OR (ALARM(alarm2) AND ALARM(alarm3))
    OR ALARM(alarm1_long)
    OR ALARM(alarm2_long)
    OR ALARM(alarm3_long)
    
  • 规则匹配验证:
    • 任意时间周期内2个及以上基础告警触发:直接命中前三个逻辑分支,复合告警立即触发,符合第一条规则要求
    • 仅1个基础告警触发、持续时长低于设定阈值:对应的长周期副本不会进入In Alarm状态,前三个双告警分支也不满足,复合告警不触发,符合第二条规则要求
    • 仅1个基础告警触发、持续时长超过设定阈值:对应的长周期副本进入In Alarm状态,命中后续逻辑分支,复合告警触发,符合第三条规则要求

该方案无额外代码运维成本,稳定性和原生告警完全一致,是首选实现方式。


Lambda实现方案说明

如果你有额外的自定义逻辑需求(比如持续时长阈值需要动态调整、需要加自定义过滤逻辑等),也可以用Lambda实现,单告警持续时长的追踪完全可实现:

  • 触发方式可以二选一:要么通过EventBridge监听3个基础告警的状态变更事件触发Lambda,要么设置定时任务每分钟触发Lambda轮询告警状态
  • 持续时长计算逻辑:调用CloudWatch的DescribeAlarmsAPI获取目标告警的状态信息,通过StateUpdatedTimestamp字段(告警最后一次状态变更的时间戳)和当前时间做差,即可算出告警连续处于In Alarm状态的时长
  • 逻辑判断:每次计算完时长后,按你的规则判断是否满足触发条件,满足时直接发送通知,或者将一个专门用于标记单告警超时的辅助告警置为In Alarm状态,纳入原有复合告警规则统一管理即可
  • 注意要同步处理告警切回OK状态的逻辑,及时重置时长计算标记,避免误报

内容的提问来源于stack exchange,提问作者john4ster

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 05:24:28