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: quxIf 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:9042honor_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.