Change endpoint format for per-bucket metrics (#19655)

Per-bucket metrics endpoints always start with /bucket and the bucket
name is appended to the path. e.g. if the collector path is /bucket/api,
the endpoint for the bucket "mybucket" would be
/minio/metrics/v3/bucket/api/mybucket

Change the existing bucket api endpoint accordingly from /api/bucket to
/bucket/api
This commit is contained in:
Shireesh Anjal
2024-05-02 23:07:57 +05:30
committed by GitHub
parent 4a60a7794d
commit 04f92f1291
3 changed files with 23 additions and 22 deletions

View File

@@ -221,18 +221,15 @@ func (h *metricsV3Server) ServeHTTP(w http.ResponseWriter, r *http.Request) {
pathComponents := mux.Vars(r)["pathComps"]
isListingRequest := r.Form.Has("list")
// Parse optional buckets query parameter.
bucketsParam := r.Form["buckets"]
buckets := make([]string, 0, len(bucketsParam))
for _, bp := range bucketsParam {
bp = strings.TrimSpace(bp)
if bp == "" {
continue
}
splits := strings.Split(bp, ",")
for _, split := range splits {
buckets = append(buckets, strings.TrimSpace(split))
}
buckets := []string{}
if strings.HasPrefix(pathComponents, "/bucket/") {
// bucket specific metrics, extract the bucket name from the path.
// it's the last part of the path. e.g. /bucket/api/<bucket-name>
bucketIdx := strings.LastIndex(pathComponents, "/")
buckets = append(buckets, pathComponents[bucketIdx+1:])
// remove bucket from pathComponents as it is dyanamic and
// hence not included in the collector path.
pathComponents = pathComponents[:bucketIdx]
}
innerHandler := h.handle(pathComponents, isListingRequest, buckets)