diff --git a/weed/stats/metrics.go b/weed/stats/metrics.go index 13ab3bae1..3f5d851a4 100644 --- a/weed/stats/metrics.go +++ b/weed/stats/metrics.go @@ -101,6 +101,14 @@ var ( Help: "Actual disk size used by volumes.", }, []string{"collection", "type"}) + VolumeServerResourceGauge = prometheus.NewGaugeVec( + prometheus.GaugeOpts{ + Namespace: "SeaweedFS", + Subsystem: "volumeServer", + Name: "resource", + Help: "Resource usage", + }, []string{"name", "type"}) + S3RequestCounter = prometheus.NewCounterVec( prometheus.CounterOpts{ Namespace: "SeaweedFS", @@ -132,6 +140,7 @@ func init() { Gather.MustRegister(VolumeServerMaxVolumeCounter) Gather.MustRegister(VolumeServerReadOnlyVolumeGauge) Gather.MustRegister(VolumeServerDiskSizeGauge) + Gather.MustRegister(VolumeServerResourceGauge) Gather.MustRegister(S3RequestCounter) Gather.MustRegister(S3RequestHistogram) diff --git a/weed/storage/disk_location.go b/weed/storage/disk_location.go index c309b3f92..ed57aa54b 100644 --- a/weed/storage/disk_location.go +++ b/weed/storage/disk_location.go @@ -305,6 +305,9 @@ func (l *DiskLocation) CheckDiskSpace() { for { if dir, e := filepath.Abs(l.Directory); e == nil { s := stats.NewDiskStatus(dir) + stats.VolumeServerResourceGauge.WithLabelValues(l.Directory, "all").Set(float64(s.All)) + stats.VolumeServerResourceGauge.WithLabelValues(l.Directory, "used").Set(float64(s.Used)) + stats.VolumeServerResourceGauge.WithLabelValues(l.Directory, "free").Set(float64(s.Free)) if (s.PercentFree < l.MinFreeSpacePercent) != l.isDiskSpaceLow { l.isDiskSpaceLow = !l.isDiskSpaceLow }