Volume Metrics Dashboard¶
The Volume Metrics dashboard provides cloud administrators with a real-time
overview of Cinder block storage resources across the deployment. It is
accessible under Admin > Telemetry > Volume Metrics and requires the
openstack.roles.admin permission.
All metrics originate from Ceilometer
volume pollster data, stored in Prometheus via the
sg-core telemetry pipeline, and
queried through the Aetos
observability proxy (service_type: metric-storage).
Ceilometer meters follow a naming convention when exposed as Prometheus
metrics: dots are replaced with underscores and a ceilometer_ prefix is
added (e.g. volume.size becomes ceilometer_volume_size).
Panels¶
Summary Cards¶
Four metric cards displayed at the top of the dashboard, auto-refreshing every 10 seconds.
Card |
Ceilometer Meter |
PromQL |
|---|---|---|
Total Storage (GiB) |
|
|
Allocated Storage (GiB) |
|
|
Total Volumes |
|
|
Total Snapshots |
|
|
Total Storage and Allocated Storage aggregate the capacity reported by the Cinder volume backend(s) (e.g. LVM, Ceph) across all storage pools. Total Volumes and Total Snapshots count the number of distinct Ceilometer samples, which corresponds to the number of active volumes and snapshots in the deployment.
Volume and Snapshot Distribution (Doughnut Chart)¶
A Chart.js doughnut chart showing the proportion of volumes to snapshots.
Rendered on initial page load from the same count() queries used by the
summary cards.
Segment |
Ceilometer Meter |
PromQL |
|---|---|---|
Volumes |
|
|
Snapshots |
|
|
This chart gives a quick visual ratio of how storage objects are distributed between volumes and snapshots.
Storage Pools¶
A per-pool breakdown with capacity bars and a detailed table. Rendered on initial page load.
The dashboard first discovers all pools by querying the raw (un-aggregated)
capacity total metric, then fetches per-pool details by filtering on the
resource label, which contains the Cinder pool name.
Metric |
Ceilometer Meter |
PromQL |
|---|---|---|
Total capacity |
|
|
Allocated capacity |
|
|
Free capacity |
|
|
Provisioned capacity |
|
|
Each pool is displayed with:
A capacity bar showing the percentage of allocated vs. total capacity.
A detail row with free and provisioned values.
A collapsible table with all numeric values and a color-coded usage percentage label (green < 75%, yellow 75-89%, red >= 90%).
All values are in GiB, matching the units reported by Cinder’s volume backend statistics.
Capacity Forecast¶
A prediction table that forecasts when each storage pool will run out of free space, auto-refreshing every 60 seconds.
Metric |
Ceilometer Meter |
PromQL |
|---|---|---|
Current free capacity |
|
|
Predicted free in 30 days |
|
|
The predict_linear() function uses linear regression over the last
7 days of free capacity samples to project the value 30 days into
the future. If the predicted value is negative, the dashboard computes the
estimated number of days until the pool reaches zero free capacity using
linear interpolation:
decline_per_day = (current_free - predicted_value) / 30
days_until_full = current_free / decline_per_day
Status labels:
Full in N days (red) — predicted free capacity drops below zero within 30 days.
Declining (yellow) — free capacity is decreasing but will not reach zero within 30 days.
Healthy (green) — free capacity is stable or increasing.
Insufficient data (grey) — not enough historical data for
predict_linear()to produce a result (requires at least 2 data points over the 7-day window).
Note
Predictions require at least 7 days of continuous Ceilometer data collection. On a fresh deployment, this panel will show “Insufficient data” until enough history accumulates.
Data Pipeline¶
The metrics flow through the following pipeline:
Cinder → Ceilometer pollster → sg-core (STF) → Prometheus → Aetos → Horizon
Ceilometer polls Cinder every 600 seconds (default) for volume and pool statistics.
sg-core receives Ceilometer samples over AMQP/TCP and writes them as Prometheus metrics.
Prometheus stores the time-series data and serves PromQL queries.
Aetos acts as a Keystone-authenticated proxy to Prometheus, registered in the service catalog as
metric-storage.Horizon (grian-ui) queries Aetos using
python-observabilityclientand renders the results.