Switch the MINIO scrape pipeline to Metrics V3 and configured bucket metrics
Nobody has claimed this yet.
- Dominant language
- Shell
- Stars
- 5.7k
- Forks
- 384
- Avg merge
- 2h 36m
- Merged PRs (30d)
- 2
Description
Parent: #763
Problem
The public Pigsty scrape configuration still defaults to /minio/v2/metrics/cluster. That endpoint does not cover all node/drive/resource data expected by modern SILO Console widgets, while SILO standardizes on Metrics V3. Bucket metrics also need an explicit per-bucket path.
Proposed baseline
Use the simple, complete topology first:
- scrape
/minio/metrics/v3for every SILO instance; - for every bucket declared in
minio_buckets, also scrape/minio/metrics/v3/bucket/<bucket>; - keep one logical
job="minio"and preservecls,ins,ip,instance, andflavor; - select the per-target bucket path through file-SD/relabel metadata;
- keep existing RustFS health-probe behavior intact;
- make legacy MinIO behavior explicit instead of sending unsupported V3 paths to it accidentally.
This intentionally favors complete coverage and a small configuration surface. For N instances and B managed buckets, the expected scrape-target count is N × (1 + B). Measure the actual series count and duplicated cluster/bucket-wide series before adding a more complex designated-target optimization.
Required validation
- Inventory the V3 metric families and series produced by single-node and distributed SILO.
- Quantify per-bucket series growth and verify that only Pigsty-managed buckets are added by default.
- Identify V3 cluster-wide gauges repeated by each instance; retain the raw data but document the correct dashboard aggregation.
- Verify target uniqueness. Do not manufacture uniqueness by putting a bucket name only in the display-form
instancelabel if another stable label is required for querying. - Verify scrape authentication, TLS, reload, and target health.
Acceptance criteria
- Every SILO instance exposes a healthy V3 root target.
- Every configured bucket exposes a healthy bucket target; no undeclared bucket is scraped by default.
- Series retain stable
job,cls,ins, and bucket identity labels. - Target and series counts are documented for at least 1-node and multi-node test clusters.
- RustFS and any retained legacy MinIO profile do not regress.
- VictoriaMetrics reload succeeds and post-reload queries prove root, node/drive/resource, and bucket families are present.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Locate the public scrape configuration and the handling of minio_buckets, then inspect the existing RustFS health-probe and legacy MinIO profiles. Validate the V3 root and bucket targets on single-node and distributed SILO test clusters, including authentication, TLS, reload, target uniqueness, and series counts. Done means the acceptance checks pass without regressions.
Written by the indexing model from the issue text.
Assessment
- Domain
- infrastructure, observability
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100