问题描述
我正在构建一个云监视警报,以便在 5 分钟内未调用 lambda 函数时发送电子邮件
CloudWatchAlarm:
Type: AWS::CloudWatch::Alarm
Properties:
AlarmActions:
- !Ref SNSTopic
AlarmDescription: Send email if lambda function was not called within 5 minutes
Dimensions:
-
Name: "FunctionName"
Value: "my-lambda"
Comparisonoperator: LessthanThreshold
EvaluationPeriods: 1
MetricName: Invocations
Namespace: AWS/Lambda
Period: 300
Statistic: Sum
Threshold: 1
TreatMissingData: breaching
DatapointsToAlarm: 1
因此,当调用该函数时,调用指标变为 1,警报进入 OK 状态。但是,当超过 5 分钟没有调用该函数时,警报不会恢复到 ALARM 状态。实际上,进入 ALARM 状态大约需要 15 分钟。
如果我设置了一个小周期,它会花费更少的时间回到 ALARM 状态。我不明白经期到底是如何运作的。
有谁知道这种配置在Cloud Watch Alarm中是否真的可行?我应该如何确定时间和评估时间才能在 5 分钟内收到电子邮件?
解决方法
这可能是因为警报状态不是使用 Period
来评估的,而是使用所谓的 evaluation range 来评估的,它的周期可能要长得多。更何况你不控制评价范围。
CW 延迟的类似问题在,例如:
来自链接:
在这种情况下,对于警报未转换为正常状态的时间,它使用评估范围内的先前数据点来评估其状态,正如预期的那样。
因此,在您的情况下,评估范围似乎达到了 15 分钟前。