2

ApproximateNumberOfMessagesVisible当两个不同队列上的相同指标 ( ) 的总和超过 100 的值时,我需要触发警报

在 17 年 9 月,这个答案指出,唯一的方法是使用 Lambda 函数获取这两个值并通过 CloudWatch API 将它们相加。

在 19 年 2 月撰写本文时,可以使用“ Metric Math ”,因此不需要 lambda 函数或 EC2 实例。是否可以使用 Metric Math 直接在 CloudFormation 中定义警报?

4

1 回答 1

7

实际上可以直接在 CloudFormation 中实现报警逻辑。

假设有两个扩展策略ECSScaleUpECSScaleDown,警报定义将如下所示:

ECSWorkerSQSCumulativeAlarm:
  Type: AWS::CloudWatch::Alarm
  Properties:
    AlarmName: !Join ['-', [!Ref 'MyService', 'SQSCumulativeAlarm']]
    AlarmDescription: "Trigger ECS Service Scaling based on TWO SQS queues"
    Metrics:
      - Id: e1
        Expression: "fq + sq"
        Label: "Sum of the two Metrics"
      - Id: fq
        MetricStat:
          Metric:
            MetricName: ApproximateNumberOfMessagesVisible
            Namespace: AWS/SQS
            Dimensions:
              - Name: QueueName
                Value: !GetAtt [ FirstQueue, QueueName]
        Period: 60
        Stat: Average
        Unit: Count
        ReturnData: false
      - Id: sq
        MetricStat:
          Metric:
            MetricName: ApproximateNumberOfMessagesVisible
            Namespace: AWS/SQS
            Dimensions:
              - Name: QueueName
                Value: !GetAtt [ SecondQueue, QueueName]
          Period: 60
          Stat: Average
          Unit: Count
        ReturnData: false
    EvaluationPeriods: 2
    Threshold: 100
    ComparisonOperator: GreaterThanThreshold
    AlarmActions:
      - !Ref ECSScaleUp
      - !Ref ECSScaleDown
    OKActions:
      - !Ref ECSScaleUp
      - !Ref ECSScaleDown
于 2019-02-27T14:46:59.113 回答