AWS Cloudwatch - 在 15 分钟的 lambda 超时时不发送警报邮件

Posted

技术标签:

【中文标题】AWS Cloudwatch - 在 15 分钟的 lambda 超时时不发送警报邮件【英文标题】:AWS Cloudwatch - No Alarm-Mail send on lambda timeout of 15 min 【发布时间】:2021-01-07 05:24:12 【问题描述】:

我有一个奇怪的问题,我不明白。 我创建了一个 cloudwatch 警报,它应该通知我 lambda 执行中的错误(包括超时)。

报警的相关参数如下:

period = "300"
datapoints_to_alarm = "1"
evaluation_periods = "1"
treat_missing_data = "notBreaching"
statistic = "Sum"
threshold = "0"
metric_name = "Errors"
namespace = "AWS/Lambda"
alarm_actions = http:// aws_sns_topic.alarm.arn

当我的 lambda 运行在 15 分钟(最大 Lambda 执行时间)后超时时,不会向我发送任何电子邮件。 当我的 lambda 在 2、6、10 或 14 分钟后超时时,我将按预期收到通知电子邮件。即使在 14 分 30 秒时,也会发送邮件。超过 14:30 分钟,指标不会切换到警报状态。

有人知道为什么会这样吗? 数据点(错误)在指标中正确显示。似乎该点(错误)设置为 lambda 的开始日期。这可能是问题吗?因为自 lambda 开始以来已经过去了 3 个评估期?但是为什么我在 14 分钟后超时运行时收到警报邮件(也是一个以上的评估期)。

已经在AWS Forum 中提出了这个问题,但还没有答案。

谁能建议我做错了什么?

问候汉尼斯

【问题讨论】:

【参考方案1】:

根据有关 Lambda function metrics 的 AWS 文档,指标上的时间戳反映了调用函数的时间。根据执行的持续时间,这可能会在指标发出前几分钟。

例如,如果您的函数有 15 分钟超时,您应该查看过去 15 分钟以上的准确指标。由于 AWS 在绝对时间发送警报之前轮询指标状态,您应该将警报参数 EvaluationPeriods 设置为高于 1,然后设置 DatapointsToAlarmPeriod 参数,具体取决于您的 lambda 超时时间以及您希望在发出通知之前对 CloudWatch 中的警报状态进行采样的频率。有关这些参数的更多详细信息可以找到here。

【讨论】:

以上是关于AWS Cloudwatch - 在 15 分钟的 lambda 超时时不发送警报邮件的主要内容,如果未能解决你的问题,请参考以下文章

是否可以确定在 cloudwatch aws 上发送警报的时间?

AWS Cloudwatch ELB 监控活动连接

如何将 AWS Cloudwatch 资源指标数据点保存在其他数据库中

针对 Auto Scaling 组的每个实例的 AWS Cloudwatch 警报

是否有工具可以使用CloudWatch putMetric API将整个内容从AWS QLDB表发布到Cloudwatch?

实例关闭时触发 AWS Cloudwatch 监控警报