SQS Metrics in CSV

This requires an available list of sqs queues.

An example of how to get some

aws sqs list-queues --queue-name-prefix live-environment- | grep https | awk -F'"' '{print $2}'

Once you have a list of queues. Feeding it to this script.

#!/bin/bash

metrics=(
	"NumberOfMessagesSent"
	"NumberOfMessagesDeleted"
	"NumberOfMessagesReceived"
	"NumberOfEmptyReceives"
)

echo -n QueueName,QueryTime
for metric in "${metrics[@]}"
do
	echo -n ","$metric
done
echo ""

while read q
do
	echo -n $q,`date +'%d/%m/%Y %H:%M:%S'`
	for metric in "${metrics[@]}"
	do
		res=$(aws cloudwatch get-metric-statistics --metric-name $metric --start-time `date --iso-8601=seconds --date='2 weeks ago'` --end-time `date --iso-8601=seconds` --period 7200 --namespace AWS/SQS --statistics Sum --dimensions Name=QueueName,Value=$q | jq '.Datapoints | .[] | .Sum' | awk '{n += $1}; END{print n}')
		echo -n ","$res
	done
	echo ""
done < ~/queuenames.txt

I typically run this with tee

./sqs-unused.sh | tee sqs-results.csv