mirror of
https://github.com/minio/minio.git
synced 2025-11-23 02:57:42 -05:00
Add data usage collect with its new admin API (#8553)
Admin data usage info API returns the following (Only FS & XL, for now) - Number of buckets - Number of objects - The total size of objects - Objects histogram - Bucket sizes
This commit is contained in:
39
cmd/xl-v1.go
39
cmd/xl-v1.go
@@ -20,6 +20,7 @@ import (
|
||||
"context"
|
||||
"sort"
|
||||
"strings"
|
||||
"sync"
|
||||
|
||||
"github.com/minio/minio/cmd/logger"
|
||||
"github.com/minio/minio/pkg/bpool"
|
||||
@@ -206,3 +207,41 @@ func (xl xlObjects) GetMetrics(ctx context.Context) (*Metrics, error) {
|
||||
logger.LogIf(ctx, NotImplemented{})
|
||||
return &Metrics{}, NotImplemented{}
|
||||
}
|
||||
|
||||
func (xl xlObjects) crawlAndGetDataUsage(ctx context.Context, endCh <-chan struct{}) DataUsageInfo {
|
||||
var randomDisks []StorageAPI
|
||||
for _, d := range xl.getLoadBalancedDisks() {
|
||||
if d == nil || !d.IsOnline() {
|
||||
continue
|
||||
}
|
||||
if len(randomDisks) > 3 {
|
||||
break
|
||||
}
|
||||
randomDisks = append(randomDisks, d)
|
||||
}
|
||||
|
||||
var dataUsageResults = make([]DataUsageInfo, len(randomDisks))
|
||||
|
||||
var wg sync.WaitGroup
|
||||
for i := 0; i < len(randomDisks); i++ {
|
||||
wg.Add(1)
|
||||
go func(index int, disk StorageAPI) {
|
||||
defer wg.Done()
|
||||
var err error
|
||||
dataUsageResults[index], err = disk.CrawlAndGetDataUsage(endCh)
|
||||
if err != nil {
|
||||
logger.LogIf(ctx, err)
|
||||
}
|
||||
}(i, randomDisks[i])
|
||||
}
|
||||
wg.Wait()
|
||||
|
||||
var dataUsageInfo DataUsageInfo
|
||||
for i := 0; i < len(dataUsageResults); i++ {
|
||||
if dataUsageResults[i].ObjectsCount > dataUsageInfo.ObjectsCount {
|
||||
dataUsageInfo = dataUsageResults[i]
|
||||
}
|
||||
}
|
||||
|
||||
return dataUsageInfo
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user