如何监控定时执行的AWS Lambda并在未执行时触发CloudWatch告警?
实现Lambda定时执行的CloudWatch告警方案
方案一:基于Invocations指标+EventBridge定时检查
完全依托AWS原生服务实现,无需额外编写Lambda代码:
创建基础CloudWatch指标告警
- 进入CloudWatch控制台,选择「告警」>「创建告警」
- 选择目标Lambda的
Invocations指标:- 命名空间选
AWS/Lambda,指标名称选Invocations,维度选择FunctionName并指定你的Lambda函数
- 命名空间选
- 配置指标统计规则:
- 统计类型选
Sum,周期设为5分钟 - 数据点选择
1个数据点(精准覆盖4:00-4:05的执行窗口)
- 统计类型选
- 设置告警触发条件:当
Sum(Invocations) 等于 0时触发告警 - 先保存告警(比如命名为
Lambda-Missing-Invocation),暂时不配置通知
用EventBridge定时触发告警通知
- 进入EventBridge控制台,选择「规则」>「创建规则」
- 规则类型选「计划」,配置cron表达式:若使用UTC时区,对应每周一、周三16:05的表达式为
5 16 ? * MON,WED *;如果是中国时区(UTC+8),需转换为UTC时间的8:05,表达式为5 8 ? * MON,WED * - 目标选择「CloudWatch告警」>「设置告警状态」
- 配置目标参数:选择刚才创建的
Lambda-Missing-Invocation告警,状态设置为「ALARM」 - 回到CloudWatch告警配置页面,添加通知目标(比如SNS主题,用于发送邮件/短信提醒)
这样只有在每周一、周三的4:05,EventBridge会检查指标状态,若过去5分钟内Lambda无调用记录,就会触发告警并推送通知。
方案二:基于CloudWatch日志自定义指标+告警
如果你的Lambda会打印特定执行标识(比如[START] Lambda execution),可基于日志创建自定义指标实现告警:
创建日志指标过滤器
- 进入CloudWatch控制台,找到你的Lambda日志组
- 创建指标过滤器:
- 过滤模式输入Lambda打印的执行开始标识(比如
[START]) - 命名空间设为
Lambda-Custom,指标名称设为ExecutionStartCount,值设为1
- 过滤模式输入Lambda打印的执行开始标识(比如
- 保存后,该指标会统计每分钟内匹配到的执行开始日志数量
配置CloudWatch告警
- 选择自定义的
ExecutionStartCount指标 - 统计类型选
Sum,周期设为5分钟,评估窗口设为1个数据点 - 告警条件:
Sum(ExecutionStartCount) 等于 0 - 同样结合EventBridge的定时规则,在每周一、周三4:05触发告警检查;或者给告警添加抑制规则,仅允许在16:00-16:10之间发送通知,避免非目标时间的误告警
- 选择自定义的
关键注意事项
- 时区转换:AWS cron表达式默认使用UTC时间,需将本地时间转换为UTC后配置
- 统计窗口精准性:必须设置为5分钟,确保覆盖Lambda计划执行的时间区间
- 通知有效性:确保SNS主题已订阅接收通知的渠道,且订阅状态为已确认
内容的提问来源于stack exchange,提问作者Kylian Rey
相关产品推荐
相关产品推荐

