A Prometheus exporter to provide "extended" metrics about a Ceph cluster's running components (e.g., RGW).

  • By Koor Technologies, Inc.
  • Last update: Nov 9, 2022
  • Comments: 3

extended-ceph-exporter

A Prometheus exporter to provide "extended" metrics about a Ceph cluster's running components (e.g., RGW).

Ceph - RGW Bucket Usage Overview Grafana Dashboard Screenshot

Requirements

  • Needs a Ceph cluster up and running.

  • Needs an admin user

    radosgw-admin user create --uid extended-ceph-exporter --display-name "extended-ceph-exporter admin user" --caps "buckets=read;users=read;usage=read;metadata=read;zone=read"
    # Access key / "Username"
    radosgw-admin user info --uid extended-ceph-exporter | jq '.keys[0].access_key'
    # Secret key / "Password
    radosgw-admin user info --uid extended-ceph-exporter | jq '.keys[0].secret_key'
    

Quickstart

  • Clone the repository:

    git clone https://github.com/koor-tech/extended-ceph-exporter
    cd extended-ceph-exporter
  • Create a copy of the .env.example file and name it .env. Configure your RGW credentials and endpoint in the .env file.

  • Configure Prometheus to collect metrics from the exporter from :9138/metrics endpoint using a static configuration, here's a sample scrape job from the prometheus.yml:

    # For more information on Prometheus scrape_configs:
    # https://prometheus.io/docs/prometheus/latest/configuration/configuration/#scrape_config
    scrape_configs:
    
      - job_name: "extended-ceph-metrics"
    
        # Override the global default and scrape targets from this job every 30 seconds.
        scrape_interval: 30s
    
        static_configs:
          # Please change the ip address `127.0.0.1` to target the exporter is running
          - targets: ['127.0.0.1:9138']
  • To run the exporter locally, run go run .

  • Should you have Grafana running for metrics visulization, check out the Grafana dashboards.

Helm

To install the exporter to Kubernetes using Helm, check out the extended-ceph-exporter Helm Chart.

Collectors

There is varying support for collectors. The tables below list all existing collectors and the required Ceph components.

Enabled by default

Name Description Ceph Component
rgw_buckets Exposes RGW Bucket Usage and Quota metrics from the Ceph cluster. RGW
rgw_user_quota Exposes RGW User Quota metrics from the Ceph cluster. RGW

Development

Requirements

  • Golang 1.19
  • Depending on the module requirements, a Ceph cluster with the respective Ceph components.

Debugging

A VSCode debug config is available to run and debug the project.

To make the exporter talk with a Ceph RGW S3 endpoint, create a copy of the .env.example file and name it .env. Be sure ot add your Ceph RGW S3 endpoint and credentials in it.

Download

extended-ceph-exporter.zip

Comments(3)

  • 1

    Add go dot env extension

    And fix .env.example.

    The previous code relied on vscode to load the .env file, but running go run . directly would fail because the environment variables are not read. This PR adds the library godotenv, which reads the .env file.

  • 2

    go run . - do not work as expected

    Hi,

    Today tried to install and I am stuck at "go run ." When I execute it I get error: FATA[0000] required flag rgw-host not set
    exit status 1

    Tried also by using flags. Example below go run . --rgw-host "here-comes-my-rgw-url" --rgw-access-key "here-comes-my-access-key" --rgw-secret-key "here-comes-my-secret"

    and I get this time error this: FATA[0000] flag rgw-user not found during lookup
    exit status 1

    root@prometheus:/etc/prometheus/extended-ceph-exporter# go version go version go1.19 linux/amd64

    Help please!

  • 3

    helm: add starter chart

    Signed-off-by: Alexander Trost [email protected]

    • [x] Add installation instructions either to repo readme or the helm chart readme
    • [x] Get CI to test, build and push the exporter as an image and binary on release - done in #6