只要评估间隔持续,AWS CloudWatch 警报就会一直发送邮件
AWS CloudWatch alarm keeps sending mails for as long as evaluation interval lasts
我已经使用以下参数设置了 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 分钟就会收到这些邮件,这让我觉得一定与我的配置有关。
暗示这不应该发生,这对我来说似乎合乎逻辑。事实上,我希望至少在 1 小时 40 分钟(20 x 5 分钟)内不会收到电子邮件,即使再次违反阈值也是如此。
这是我的 metric/alarm 的图表:
更正:我实际上收到了 22 封邮件。
我的配置有误吗?
更新
我可以看到状态从 OK 设置为 Alarm 3 分钟后从 Alarm 设置为 OK:
这是我们发现的问题以及解决方法。
所以我们正在评估 5 分钟的块并取错误数量的平均值。但是 AWS 以比 5 分钟更快的间隔进行评估。你的错误分布可能是这样的,在给定的时间点,一个 5 分钟的块平均有 12%。但稍后,这个块可以一分为二,给你两个具有不同平均值的块,可能低于阈值。
这就是我们相信正在发生的事情。
我们已通过将 Period 更改为 60s 并更改 DatapointsToAlarm 和 EvaluationPeriods 设置来修复它。
我已经使用以下参数设置了 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 分钟就会收到这些邮件,这让我觉得一定与我的配置有关。
这是我的 metric/alarm 的图表:
更正:我实际上收到了 22 封邮件。
我的配置有误吗?
更新 我可以看到状态从 OK 设置为 Alarm 3 分钟后从 Alarm 设置为 OK:
这是我们发现的问题以及解决方法。
所以我们正在评估 5 分钟的块并取错误数量的平均值。但是 AWS 以比 5 分钟更快的间隔进行评估。你的错误分布可能是这样的,在给定的时间点,一个 5 分钟的块平均有 12%。但稍后,这个块可以一分为二,给你两个具有不同平均值的块,可能低于阈值。
这就是我们相信正在发生的事情。
我们已通过将 Period 更改为 60s 并更改 DatapointsToAlarm 和 EvaluationPeriods 设置来修复它。