Skip to content

CandisIO/sqs-prometheus-exporter

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

28 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

AWS SQS Prometheus Exporter

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 🙏 ❤️.

We didn't submit this as a pull request to the original repository, since:

  1. we have added Prometheus client. Whereas, some users of the original repository may not be using Prometheus at all.
  2. the owner of the original repository seems to be no longer actively maintaining the repo, and we needed the change as soon as possible.

Metrics

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

Configuration

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

AWS IAM permissions

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": "*"
        }
    ]
}

Environment Variables

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

Running

docker run -e INTERVAL=5 -e KEEP_RUNNING=false -d -p 9434:9434 candisio/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> candisio/sqs-prometheus-exporter