Cloud Watch Alarm 中的“Period”如何真正起作用?

问题描述

我正在构建一个云监视警报,以便在 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 分钟前。