An AWS RDS exporter for Prometheus. It gets metrics from both basic CloudWatch Metrics and RDS Enhanced Monitoring via CloudWatch Logs.
Create configration file config.yml
:
---
instances:
- region: us-east-1
instance: rds-aurora1
- region: us-east-1
instance: rds-mysql57
aws_access_key: AKIAIOSFODNN7EXAMPLE
aws_secret_key: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
aws_role_arn: arn:aws:iam::76784568345:role/my-role
disable_basic_metrics: true
disable_enhanced_metrics: false
labels:
foo: bar
baz: qux
If aws_role_arn
is present it will assume role otherwise if aws_access_key
and aws_secret_key
are present, they are used for that instance.
Otherwise, default credential provider chain
is used, which includes AWS_ACCESS_KEY_ID
/AWS_ACCESS_KEY
and AWS_SECRET_ACCESS_KEY
/AWS_SECRET_KEY
environment variables, ~/.aws/credentials
file,
and IAM role for EC2.
Returned metrics contain instance
and region
labels set. They also contain extra labels specified in the configuration file.
Start exporter by running:
rds_exporter
To see all flags run:
rds_exporter --help
Configure Prometheus:
---
scrape_configs:
- job_name: rds-basic
scrape_interval: 60s
scrape_timeout: 55s
metrics_path: /basic
honor_labels: true
static_configs:
- targets:
- 127.0.0.1:9042
- job_name: rds-enhanced
scrape_interval: 10s
scrape_timeout: 9s
metrics_path: /enhanced
honor_labels: true
static_configs:
- targets:
- 127.0.0.1:9042
honor_labels: true
is important because exporter returns metrics with instance
label set.
Exporter synthesizes node_exporter-like metrics where possible.
You can see a list of basic monitoring metrics there and a list of enhanced monitoring metrics in text files there.
Amazon charges for every CloudWatch API request, see the current charges.
Every metric retrieved requires one API request, which can include multiple statistics.
If you have 100 API requests every minute, with the price of $10 per million requests (as of Aug 2018), that is around $45 per month.