Тревога AWS CloudWatch не сработала для метрик SQS "NumberOfMessagesReceived"
Я пытаюсь вызвать тревогу, если сообщение отправлено SQS
, Тем не менее, я вижу, что CloudWatch
Метрика показывает, что было сообщение, но не сработало предупреждение.
Тревога в настоящее время в INSUFFICIENT_DATA
состояние также. Для тестирования я отправляю сообщение через boto3
клиент.
Ниже мой шаблон CloudFormation для SQS
а также CloudWatch
тревога
QueueMessageAlarm:
Type: AWS::CloudWatch::Alarm
Condition: AlarmsEnabled
Properties:
AlarmDescription: "Alarm if queue message is greater than 0"
AlarmActions:
- !Ref SampleNotificationTopic
Namespace: "AWS/SQS"
MetricName: "NumberOfMessagesReceived"
Statistic: "Sum"
Period: "900"
EvaluationPeriods: "1"
Threshold: "0"
ComparisonOperator: "GreaterThanThreshold"
Dimensions:
- Name: "QueueName"
- Value:
Fn::GetAtt:
- "KinesisStreamFileQueue"
- "QueueName"
KinesisStreamFileQueue:
Type: AWS::SQS::Queue
Properties:
QueueName: "StreamQueue"
2 ответа
Я выяснил проблему, изменив Dimensions
properties
для ресурса тревоги. Ресурс должен ссылаться на arn
очереди, и это было ранее получение url
из этого
Dimensions:
- Name: QueueName
Value: { "Fn::GetAtt": [ "KinesisStreamFileQueue", "QueueName"] }
Используйте метрику ApproximateNumberOfMessagesVisible вместо любой метрики "Получено".
Недостатком использования метрик "Получено" является то, что если вы постоянно не получаете сообщения, вы, вероятно, застрянете в INSUFFICIENT_DATA
, что приводит к проблемам тревоги.