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.