mirror of
https://github.com/minio/minio.git
synced 2025-11-07 12:52:58 -05:00
Add system memory metrics in v3 (#19486)
Following memory metrics will be added under /system/memory - available - buffers - cache - free - shared - total - used - used_perc
This commit is contained in:
@@ -34,6 +34,7 @@ type metricsCache struct {
|
||||
dataUsageInfo *cachevalue.Cache[DataUsageInfo]
|
||||
esetHealthResult *cachevalue.Cache[HealthResult]
|
||||
driveMetrics *cachevalue.Cache[storageMetrics]
|
||||
memoryMetrics *cachevalue.Cache[madmin.MemInfo]
|
||||
clusterDriveMetrics *cachevalue.Cache[storageMetrics]
|
||||
nodesUpDown *cachevalue.Cache[nodesOnline]
|
||||
}
|
||||
@@ -43,6 +44,7 @@ func newMetricsCache() *metricsCache {
|
||||
dataUsageInfo: newDataUsageInfoCache(),
|
||||
esetHealthResult: newESetHealthResultCache(),
|
||||
driveMetrics: newDriveMetricsCache(),
|
||||
memoryMetrics: newMemoryMetricsCache(),
|
||||
clusterDriveMetrics: newClusterStorageInfoCache(),
|
||||
nodesUpDown: newNodesUpDownCache(),
|
||||
}
|
||||
@@ -198,6 +200,31 @@ func newDriveMetricsCache() *cachevalue.Cache[storageMetrics] {
|
||||
loadDriveMetrics)
|
||||
}
|
||||
|
||||
func newMemoryMetricsCache() *cachevalue.Cache[madmin.MemInfo] {
|
||||
loadMemoryMetrics := func() (v madmin.MemInfo, err error) {
|
||||
var types madmin.MetricType = madmin.MetricsMem
|
||||
|
||||
m := collectLocalMetrics(types, collectMetricsOpts{
|
||||
hosts: map[string]struct{}{
|
||||
globalLocalNodeName: {},
|
||||
},
|
||||
})
|
||||
|
||||
for _, hm := range m.ByHost {
|
||||
if hm.Mem != nil && len(hm.Mem.Info.Addr) > 0 {
|
||||
v = hm.Mem.Info
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
return cachevalue.NewFromFunc(1*time.Minute,
|
||||
cachevalue.Opts{ReturnLastGood: true},
|
||||
loadMemoryMetrics)
|
||||
}
|
||||
|
||||
func newClusterStorageInfoCache() *cachevalue.Cache[storageMetrics] {
|
||||
loadStorageInfo := func() (v storageMetrics, err error) {
|
||||
objLayer := newObjectLayerFn()
|
||||
|
||||
Reference in New Issue
Block a user