A Prometheus exporter to provide "extended" metrics about a Ceph cluster's running components (e.g., RGW).
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.access_key' # Secret key / "Password radosgw-admin user info --uid extended-ceph-exporter | jq '.keys.secret_key'
Clone the repository:
git clone https://github.com/koor-tech/extended-ceph-exporter cd extended-ceph-exporter
Create a copy of the
.env.examplefile and name it
.env. Configure your RGW credentials and endpoint in the
Configure Prometheus to collect metrics from the exporter from
:9138/metricsendpoint using a static configuration, here's a sample scrape job from the
# 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.
To install the exporter to Kubernetes using Helm, check out the extended-ceph-exporter Helm Chart.
There is varying support for collectors. The tables below list all existing collectors and the required Ceph components.
Enabled by default
||Exposes RGW Bucket Usage and Quota metrics from the Ceph cluster.||RGW|
||Exposes RGW User Quota metrics from the Ceph cluster.||RGW|
- Golang 1.19
- Depending on the module requirements, a Ceph cluster with the respective Ceph components.
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.
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.
go run . - do not work as expected
Today tried to install and I am stuck at "go run ." When I execute it I get error: FATA 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 flag rgw-user not found during lookup
exit status 1
[email protected]:/etc/prometheus/extended-ceph-exporter# go version go version go1.19 linux/amd64
helm: add starter chart
Signed-off-by: Alexander Trost [email protected]