From f3beb1236a34e14d775970b07fedac7e55fb111e Mon Sep 17 00:00:00 2001 From: Poorna Krishnamoorthy Date: Mon, 7 Dec 2020 16:35:11 -0800 Subject: [PATCH] Add cache usage, total capacity to prometheus metrics (#11026) --- cmd/disk-cache-stats.go | 4 ++++ cmd/disk-cache.go | 4 ++++ cmd/metrics.go | 20 ++++++++++++++++++++ docs/metrics/prometheus/README.md | 2 ++ 4 files changed, 30 insertions(+) diff --git a/cmd/disk-cache-stats.go b/cmd/disk-cache-stats.go index 2cf15fa2d..ff831e13b 100644 --- a/cmd/disk-cache-stats.go +++ b/cmd/disk-cache-stats.go @@ -23,6 +23,10 @@ import ( // CacheDiskStats represents cache disk statistics // such as current disk usage and available. type CacheDiskStats struct { + // used cache size + UsageSize uint64 + // total cache disk capacity + TotalCapacity uint64 // indicates if usage is high or low, if high value is '1', if low its '0' UsageState int32 // indicates the current usage percentage of this cache disk diff --git a/cmd/disk-cache.go b/cmd/disk-cache.go index 97f8b18f7..bb6f59a0b 100644 --- a/cmd/disk-cache.go +++ b/cmd/disk-cache.go @@ -781,6 +781,10 @@ func newServerCacheObjects(ctx context.Context, config cache.Config) (CacheObjec dcache := c.cache[i] cacheDiskStats[i] = CacheDiskStats{} if dcache != nil { + info, err := getDiskInfo(dcache.dir) + logger.LogIf(ctx, err) + cacheDiskStats[i].UsageSize = info.Used + cacheDiskStats[i].TotalCapacity = info.Total cacheDiskStats[i].Dir = dcache.stats.Dir atomic.StoreInt32(&cacheDiskStats[i].UsageState, atomic.LoadInt32(&dcache.stats.UsageState)) atomic.StoreUint64(&cacheDiskStats[i].UsagePercent, atomic.LoadUint64(&dcache.stats.UsagePercent)) diff --git a/cmd/metrics.go b/cmd/metrics.go index 2fbfea177..21d82fef5 100644 --- a/cmd/metrics.go +++ b/cmd/metrics.go @@ -280,6 +280,26 @@ func cacheMetricsPrometheus(ch chan<- prometheus.Metric) { float64(cdStats.UsageState), cdStats.Dir, ) + + ch <- prometheus.MustNewConstMetric( + prometheus.NewDesc( + prometheus.BuildFQName("cache", "usage", "size"), + "Indicates current cache usage in bytes", + []string{"disk"}, nil), + prometheus.GaugeValue, + float64(cdStats.UsageSize), + cdStats.Dir, + ) + + ch <- prometheus.MustNewConstMetric( + prometheus.NewDesc( + prometheus.BuildFQName("cache", "total", "size"), + "Indicates total size of cache disk", + []string{"disk"}, nil), + prometheus.GaugeValue, + float64(cdStats.TotalCapacity), + cdStats.Dir, + ) } } diff --git a/docs/metrics/prometheus/README.md b/docs/metrics/prometheus/README.md index 6b33f99f4..d8ff49033 100644 --- a/docs/metrics/prometheus/README.md +++ b/docs/metrics/prometheus/README.md @@ -198,6 +198,8 @@ MinIO Gateway instances enabled with Disk-Caching expose caching related metrics | `cache_data_served` | Total number of bytes served from cache | #### Per disk cache metrics +| `cache_usage_size` | Total cache usage in bytes | +| `cache_total_capacity` | Total size of cache disk | | `cache_usage_percent` | Total percentage cache usage | | `cache_usage_state` | Indicates cache usage is high or low, relative to current cache 'quota' settings |