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