假设我有N个EC2实例在自动扩展组中,每个实例都正在轮询M个SQS队列。如果可能的话,我如何在所有SQS队列上创建一个基于累计
ApproximateNumberOfMessagesVisible
的警报? ApproximateNumberOfMessagesVisible
的警报?目前还没有可见消息累计计数指标。
以下是解决方法:
创建一个Lambda/cron作业,可以轮询队列,在每个队列上获取ApproximateNumberOfMessages
,并将总消息更新为自定义Cloudwatch指标。
QueueAttributes:
http://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_GetQueueAttributes.html
自定义 Cloudwatch 指标:
http://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/publishingMetrics.html
你可以创建一个Lambda(无服务器),或者如果你想要基于服务器,你可以使用AWS CloudWatch的CLI轮询并更新总计数到自定义CloudWatch指标中。MyDeadLetterQueueAlarm:
Type: AWS::CloudWatch::Alarm
Properties:
AlarmName: my-dlq-alarm
AlarmDescription: 'Alarm when any Dead letter queue has items.'
Metrics:
- Id: summary
Label: Dead Letter Queues Alarm
Expression: IF(dlq1 > 1, 1, 0) OR IF(dlq2 > 1, 1, 0)
ReturnData: true
- Id: dlq1
MetricStat:
Metric:
Namespace: AWS/SQS
MetricName: ApproximateNumberOfMessagesVisible
Dimensions:
- Name: QueueName
Value: !GetAtt
- MyDeadLetterQueue1
- QueueName
Stat: Sum
Period: 300
ReturnData: false
- Id: dlq2
MetricStat:
Metric:
Namespace: AWS/SQS
MetricName: ApproximateNumberOfMessagesVisible
Dimensions:
- Name: QueueName
Value: !GetAtt
- MyDeadLetterQueue2
- QueueName
Stat: Sum
Period: 300
ReturnData: false
EvaluationPeriods: 1
DatapointsToAlarm: 1
Threshold: 0
ComparisonOperator: GreaterThanThreshold
TreatMissingData: notBreaching
AlarmActions:
- !Ref MyTopicArn
我认为你应该将表达式相加以获得累积值。
ApproximateNumberOfMessages
值之和的新指标。 - Ing. Luca Stucchi