Search code examples
amazon-web-servicesamazon-sqsamazon-cloudwatch

Create CloudWatch alarm on multiple SQS queues


Suppose I have N EC2 instances in auto-scaling group, each of them is polling M SQS queues. How would I create an alarm on cumulative ApproximateNumberOfMessagesVisible across all SQS queues if possible?


Solution

  • There is no cumulative count of the visible messages metric available as of now.

    Here is how you can solve it,

    Create a Lambda/ cron job that can poll the queues, get ApproximateNumberOfMessages on each queue and update the total messages to a custom Cloudwatch Metric.

    QueueAttributes:

    http://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_GetQueueAttributes.html

    Custom Cloudwatch Metric:

    http://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/publishingMetrics.html

    You can either create a lambda (serverless) or if you want to server based, you can poll and update total count into a custom cloudwatch metric with cli to AWS cloudwatch.

    Once you have have the cloudwatch metric, you can create an alarm based on those numbers.

    Hope it helps.