mirror of
https://github.com/seaweedfs/seaweedfs.git
synced 2024-01-19 02:48:24 +00:00
collect volume disk usage metrics
This commit is contained in:
parent
289fd7eb39
commit
0fdb1e705d
|
@ -63,6 +63,20 @@ var (
|
||||||
Name: "ecShards",
|
Name: "ecShards",
|
||||||
Help: "Number of EC shards.",
|
Help: "Number of EC shards.",
|
||||||
})
|
})
|
||||||
|
VolumeServerVolumeSizeGauge = prometheus.NewGauge(
|
||||||
|
prometheus.GaugeOpts{
|
||||||
|
Namespace: "SeaweedFS",
|
||||||
|
Subsystem: "volumeServer",
|
||||||
|
Name: "totalVolumeSize",
|
||||||
|
Help: "Actual disk size used by volumes.",
|
||||||
|
})
|
||||||
|
VolumeServerEcShardSizeGauge = prometheus.NewGauge(
|
||||||
|
prometheus.GaugeOpts{
|
||||||
|
Namespace: "SeaweedFS",
|
||||||
|
Subsystem: "volumeServer",
|
||||||
|
Name: "totalEcShardSize",
|
||||||
|
Help: "Actual disk size used by ec shards.",
|
||||||
|
})
|
||||||
)
|
)
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
|
@ -74,6 +88,8 @@ func init() {
|
||||||
VolumeServerGather.MustRegister(VolumeServerRequestHistogram)
|
VolumeServerGather.MustRegister(VolumeServerRequestHistogram)
|
||||||
VolumeServerGather.MustRegister(VolumeServerVolumeCounter)
|
VolumeServerGather.MustRegister(VolumeServerVolumeCounter)
|
||||||
VolumeServerGather.MustRegister(VolumeServerEcShardCounter)
|
VolumeServerGather.MustRegister(VolumeServerEcShardCounter)
|
||||||
|
VolumeServerGather.MustRegister(VolumeServerVolumeSizeGauge)
|
||||||
|
VolumeServerGather.MustRegister(VolumeServerEcShardSizeGauge)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -6,6 +6,7 @@ import (
|
||||||
|
|
||||||
"github.com/chrislusf/seaweedfs/weed/glog"
|
"github.com/chrislusf/seaweedfs/weed/glog"
|
||||||
"github.com/chrislusf/seaweedfs/weed/pb/master_pb"
|
"github.com/chrislusf/seaweedfs/weed/pb/master_pb"
|
||||||
|
"github.com/chrislusf/seaweedfs/weed/stats"
|
||||||
"github.com/chrislusf/seaweedfs/weed/storage/needle"
|
"github.com/chrislusf/seaweedfs/weed/storage/needle"
|
||||||
. "github.com/chrislusf/seaweedfs/weed/storage/types"
|
. "github.com/chrislusf/seaweedfs/weed/storage/types"
|
||||||
"google.golang.org/grpc"
|
"google.golang.org/grpc"
|
||||||
|
@ -161,6 +162,7 @@ func (s *Store) CollectHeartbeat() *master_pb.Heartbeat {
|
||||||
var volumeMessages []*master_pb.VolumeInformationMessage
|
var volumeMessages []*master_pb.VolumeInformationMessage
|
||||||
maxVolumeCount := 0
|
maxVolumeCount := 0
|
||||||
var maxFileKey NeedleId
|
var maxFileKey NeedleId
|
||||||
|
var totalVolumeSize uint64
|
||||||
for _, location := range s.Locations {
|
for _, location := range s.Locations {
|
||||||
maxVolumeCount = maxVolumeCount + location.MaxVolumeCount
|
maxVolumeCount = maxVolumeCount + location.MaxVolumeCount
|
||||||
location.Lock()
|
location.Lock()
|
||||||
|
@ -178,9 +180,12 @@ func (s *Store) CollectHeartbeat() *master_pb.Heartbeat {
|
||||||
glog.V(0).Infoln("volume", v.Id, "is expired.")
|
glog.V(0).Infoln("volume", v.Id, "is expired.")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
fileSize, _, _ := v.FileStat()
|
||||||
|
totalVolumeSize += fileSize
|
||||||
}
|
}
|
||||||
location.Unlock()
|
location.Unlock()
|
||||||
}
|
}
|
||||||
|
stats.VolumeServerVolumeSizeGauge.Set(float64(totalVolumeSize))
|
||||||
|
|
||||||
return &master_pb.Heartbeat{
|
return &master_pb.Heartbeat{
|
||||||
Ip: s.Ip,
|
Ip: s.Ip,
|
||||||
|
|
|
@ -12,6 +12,7 @@ import (
|
||||||
"github.com/chrislusf/seaweedfs/weed/operation"
|
"github.com/chrislusf/seaweedfs/weed/operation"
|
||||||
"github.com/chrislusf/seaweedfs/weed/pb/master_pb"
|
"github.com/chrislusf/seaweedfs/weed/pb/master_pb"
|
||||||
"github.com/chrislusf/seaweedfs/weed/pb/volume_server_pb"
|
"github.com/chrislusf/seaweedfs/weed/pb/volume_server_pb"
|
||||||
|
"github.com/chrislusf/seaweedfs/weed/stats"
|
||||||
"github.com/chrislusf/seaweedfs/weed/storage/erasure_coding"
|
"github.com/chrislusf/seaweedfs/weed/storage/erasure_coding"
|
||||||
"github.com/chrislusf/seaweedfs/weed/storage/needle"
|
"github.com/chrislusf/seaweedfs/weed/storage/needle"
|
||||||
"github.com/klauspost/reedsolomon"
|
"github.com/klauspost/reedsolomon"
|
||||||
|
@ -19,14 +20,21 @@ import (
|
||||||
|
|
||||||
func (s *Store) CollectErasureCodingHeartbeat() *master_pb.Heartbeat {
|
func (s *Store) CollectErasureCodingHeartbeat() *master_pb.Heartbeat {
|
||||||
var ecShardMessages []*master_pb.VolumeEcShardInformationMessage
|
var ecShardMessages []*master_pb.VolumeEcShardInformationMessage
|
||||||
|
var totalEcShardSize int64
|
||||||
for _, location := range s.Locations {
|
for _, location := range s.Locations {
|
||||||
location.ecVolumesLock.RLock()
|
location.ecVolumesLock.RLock()
|
||||||
for _, ecShards := range location.ecVolumes {
|
for _, ecShards := range location.ecVolumes {
|
||||||
ecShardMessages = append(ecShardMessages, ecShards.ToVolumeEcShardInformationMessage()...)
|
ecShardMessages = append(ecShardMessages, ecShards.ToVolumeEcShardInformationMessage()...)
|
||||||
|
|
||||||
|
for _, ecShard := range ecShards.Shards {
|
||||||
|
totalEcShardSize += ecShard.Size()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
location.ecVolumesLock.RUnlock()
|
location.ecVolumesLock.RUnlock()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
stats.VolumeServerEcShardSizeGauge.Set(float64(totalEcShardSize))
|
||||||
|
|
||||||
return &master_pb.Heartbeat{
|
return &master_pb.Heartbeat{
|
||||||
EcShards: ecShardMessages,
|
EcShards: ecShardMessages,
|
||||||
HasNoEcShards: len(ecShardMessages) == 0,
|
HasNoEcShards: len(ecShardMessages) == 0,
|
||||||
|
|
Loading…
Reference in a new issue