A Prometheus metrics exporter for AWS SQS queues
A few words of Thanks: Most of the code in this repo is borrowed from ashiddo11/sqs-exporter with bundle of thanks and love 🙏 ❤️. I didn't submit this as a pull request to the original repository, since I have added Prometheus client. Whereas, some users of the original repository may not be using Prometheus at all.
Metric | Labels | Description |
---|---|---|
sqs_messages_visible | Queue Name | Number of messages available |
sqs_messages_delayed | Queue Name | Number of messages delayed |
sqs_messages_not_visible | Queue Name | Number of messages in flight |
For more information see the AWS SQS Documentation
Credentials to AWS are provided in the following order:
- Environment variables (AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY)
- Shared credentials file (~/.aws/credentials)
- IAM role for Amazon EC2
For more information see the AWS SDK Documentation
The app needs sqs list and read access to the sqs policies
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"sqs:ListQueues",
"sqs:GetQueueUrl",
"sqs:ListDeadLetterSourceQueues",
"sqs:ReceiveMessage",
"sqs:GetQueueAttributes",
"sqs:ListQueueTags"
],
"Resource": "*"
}
]
}
Variable | Default Value | Description |
---|---|---|
PORT | 9434 | The port for metrics server |
INTERVAL | 1 | The interval in minutes to get the status of SQS queues |
ENDPOINT | metrics | The metrics endpoint |
KEEP_RUNNING | true | The flag to terminate the service in case of monitoring error |
docker run -e INTERVAL=5 -e KEEP_RUNNING=false -d -p 9434:9434 nadeemjamali/sqs-prometheus-exporter
You can provide the AWS credentials as environment variables depending upon your security rules configured in AWS;
docker run -d -p 9384:9384 -e AWS_ACCESS_KEY_ID=<access_key> -e AWS_SECRET_ACCESS_KEY=<secret_key> -e AWS_REGION=<region> nadeemjamali/sqs-prometheus-exporter