amazon-web-services - 只要评估间隔持续,AWS CloudWatch 警报就会一直发送邮件

标签 amazon-web-services amazon-cloudwatch alarm

我已经使用以下参数设置了 AWS CloudWatch 警报:

ActionsEnabled: true
AlarmActions: "some SNS topic"
AlarmDescription: "Too many HTTP 5xx errors"
ComparisonOperator: GreaterThanOrEqualToThreshold
DatapointsToAlarm: 1
Dimensions:
  - Name: ApiName
    Value: "some API"
EvaluationPeriods: 20
MetricName: 5XXError
Namespace: AWS/ApiGateway
Period: 300
Statistic: Average
Threshold: 0.1
TreatMissingData: ignore

想法是在 HTTP 500 错误过多时接收邮件。我相信上面给了我一个评估 5 分钟(300 秒)时间段的警报。如果 20 个数据点中有 1 个超过限制(请求的 10%),我应该会收到一封电子邮件。

这行得通。我收到了电子邮件。但即使错误数量再次下降到阈值以下,我似乎仍在继续收到电子邮件。在整个评估间隔期间(1 小时 40 分钟 = 20 x 5 分钟)似乎或多或少。另外,我每 5 分钟收到一次这些邮件,这让我觉得一定与我的配置有关。

This question暗示这不应该发生,这对我来说似乎合乎逻辑。事实上,我希望至少在 1 小时 40 分钟(20 x 5 分钟)内不会收到电子邮件,即使再次违反阈值也是如此。

这是我的指标/警报图表: AWS CloudWatch Alarm

更正:我实际上收到了 22 封邮件。

我的配置有误吗?

更新 我可以看到状态从 OK 设置为 Alarm 3 分钟后从 Alarm 设置为 OK:

Alarm state changes

最佳答案

这是我们发现的问题以及我们如何修复它。

因此,我们正在评估 5 分钟的 block 并取错误数量的平均值。但是 AWS 以比 5 分钟更快的间隔进行评估。你的错误分布可能是这样的,在给定的时间点,一个 5 分钟的 block 平均有 12%。但稍后,这个 block 可以一分为二,给你两个具有不同平均值的 block ,可能低于阈值。

这就是我们相信正在发生的事情。

我们通过将 Period 更改为 60s 并更改 DatapointsToAlarm 和 EvaluationPeriods 设置来修复它。

关于amazon-web-services - 只要评估间隔持续,AWS CloudWatch 警报就会一直发送邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58934522/

相关文章:

android - 在运行时从 scada 系统获取关于 android 应用程序的信息

wordpress - 如何在 AWS EC2 WordPress 站点上安装 SSL

java - AWS SES 在 Spring Boot Java 中实现,无需使用凭证

amazon-web-services - AWS CloudWatch 指标数学与 30 分钟前的累积指标值以显示变化率

amazon-web-services - 提供来自 aws CloudWatch 警报的错误消息

javascript - 带 'German Time' 选项的闹钟 - 在 JavaScript 中

email - 如何让 CloudWatch 在每次超过阈值时发送警报?

amazon-web-services - 查找 S3 存储桶所有者

amazon-web-services - 您能否使用 Javascript 以外的语言使用 Lambda@Edge 修改 AWS CloudFront 事件上的 URI?

amazon-web-services - 使用 terraform 创建 Auto Scaling 组的 StatusCheckFailed Cloud Watch 警报后仍处于 INSUFFICIENT_DATA 状态