Skip to content

percona/rds_exporter

 
 

Repository files navigation

RDS Exporter

Release Go Report Card CLA assistant codecov.io Code Coverage

An AWS RDS exporter for Prometheus. It gets metrics from both basic CloudWatch Metrics and RDS Enhanced Monitoring via CloudWatch Logs.

Quick start

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.

Metrics

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.

Cost

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.