Per-Interval Bucket Metrics & Health
Storage metrics move from smoothed 24h rolling sums to true per-interval deltas, with first-class error-rate, latency, and bucket-health panels.
What's changed
- Per-interval request counts, egress bytes, and HTTP status breakdown (2xx / 4xx / 5xx) derived from Prometheus recording rules fed by an Alloy log-to-metric pipeline
- Latency histograms with p50 / p95 / mean per bucket
- 4xx and 5xx rate charts split into separate series — 4xx surfaces client 404s/403s, 5xx surfaces real server-side incidents
- Bucket Health card surfaces pending multipart uploads (reclaimable bytes) and deleted-version size via a sharded hourly probe against the Ceph RGW admin API
- Freshness badge (fresh / lagging / stale) on the Metrics tab so you always know how recent the data is
- New /metrics endpoint fields: requests_24h_by_status, error_rate_24h, latency_24h_ms, ingress_bytes_24h, freshness, source
- New API endpoints: /metrics/trend, /metrics/top-objects, /metrics/health (session + API v1)
- Hourly rollup table so 30-day trend queries scan ~720 rows per bucket instead of ~43k