Как определить CloudWatch Alarm по сумме двух метрик с CloudFormation? - PullRequest
0 голосов
/ 27 февраля 2019

Мне нужно вызвать тревогу, когда сумма одной и той же метрики (ApproximateNumberOfMessagesVisible) в двух разных очередях превысит значение 100

В сентябре 17 года этот указанный ответединственный способ сделать это - с помощью функции Lambda получить два значения и суммировать их через API CloudWatch.

Во время записи, февраль '19, можно использовать « Metric Math », поэтому нет необходимости иметь лямбда-функцию или экземпляр EC2.Можно ли использовать Metric Math для определения сигнала тревоги непосредственно в CloudFormation?

1 Ответ

0 голосов
/ 27 февраля 2019

Фактически возможно реализовать логику Alarm непосредственно в CloudFormation.

При условии наличия двух политик масштабирования ECSScaleUp и ECSScaleDown определение тревоги будет выглядеть следующим образом:

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
...