Browse Source

Add disk type to prometheus metrics (#4736)

* Add disk type to prometheus metrics

* Del metrics

* Disk type as readable string

---------

Co-authored-by: Dima Mishin <dimm@dimm.dev>
pull/4777/head
Dmitry Mishin 1 year ago
committed by GitHub
parent
commit
9956d93a40
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 8
      weed/stats/metrics.go
  2. 6
      weed/storage/erasure_coding/ec_shard.go
  3. 2
      weed/storage/volume.go
  4. 2
      weed/storage/volume_loading.go
  5. 2
      weed/storage/volume_vacuum.go

8
weed/stats/metrics.go

@ -176,7 +176,7 @@ var (
Subsystem: "volumeServer", Subsystem: "volumeServer",
Name: "volumes", Name: "volumes",
Help: "Number of volumes or shards.", Help: "Number of volumes or shards.",
}, []string{"collection", "type"})
}, []string{"collection", "type", "disk"})
VolumeServerReadOnlyVolumeGauge = prometheus.NewGaugeVec( VolumeServerReadOnlyVolumeGauge = prometheus.NewGaugeVec(
prometheus.GaugeOpts{ prometheus.GaugeOpts{
@ -299,7 +299,6 @@ func JoinHostPort(host string, port int) string {
return net.JoinHostPort(host, portStr) return net.JoinHostPort(host, portStr)
} }
func StartMetricsServer(ip string, port int) { func StartMetricsServer(ip string, port int) {
if port == 0 { if port == 0 {
return return
@ -316,11 +315,10 @@ func SourceName(port uint32) string {
return net.JoinHostPort(hostname, strconv.Itoa(int(port))) return net.JoinHostPort(hostname, strconv.Itoa(int(port)))
} }
// todo - can be changed to DeletePartialMatch when https://github.com/prometheus/client_golang/pull/1013 gets released
func DeleteCollectionMetrics(collection string) { func DeleteCollectionMetrics(collection string) {
VolumeServerDiskSizeGauge.DeleteLabelValues(collection, "normal") VolumeServerDiskSizeGauge.DeleteLabelValues(collection, "normal")
for _, volume_type := range readOnlyVolumeTypes { for _, volume_type := range readOnlyVolumeTypes {
VolumeServerReadOnlyVolumeGauge.DeleteLabelValues(collection, volume_type)
VolumeServerReadOnlyVolumeGauge.DeletePartialMatch(prometheus.Labels{"collection": collection, "type": volume_type})
} }
VolumeServerVolumeCounter.DeleteLabelValues(collection, "volume")
VolumeServerVolumeCounter.DeletePartialMatch(prometheus.Labels{"collection": collection, "type": "volume"})
} }

6
weed/storage/erasure_coding/ec_shard.go

@ -7,6 +7,8 @@ import (
"strconv" "strconv"
"strings" "strings"
"github.com/seaweedfs/seaweedfs/weed/storage/types"
"github.com/seaweedfs/seaweedfs/weed/stats" "github.com/seaweedfs/seaweedfs/weed/stats"
"github.com/seaweedfs/seaweedfs/weed/storage/needle" "github.com/seaweedfs/seaweedfs/weed/storage/needle"
"github.com/seaweedfs/seaweedfs/weed/storage/types" "github.com/seaweedfs/seaweedfs/weed/storage/types"
@ -44,7 +46,7 @@ func NewEcVolumeShard(diskType types.DiskType, dirname string, collection string
} }
v.ecdFileSize = ecdFi.Size() v.ecdFileSize = ecdFi.Size()
stats.VolumeServerVolumeCounter.WithLabelValues(v.Collection, "ec_shards").Inc()
stats.VolumeServerVolumeCounter.WithLabelValues(v.Collection, "ec_shards", string(v.DiskType)).Inc()
return return
} }
@ -88,7 +90,7 @@ func (shard *EcVolumeShard) Close() {
func (shard *EcVolumeShard) Destroy() { func (shard *EcVolumeShard) Destroy() {
os.Remove(shard.FileName() + ToExt(int(shard.ShardId))) os.Remove(shard.FileName() + ToExt(int(shard.ShardId)))
stats.VolumeServerVolumeCounter.WithLabelValues(shard.Collection, "ec_shards").Dec()
stats.VolumeServerVolumeCounter.WithLabelValues(shard.Collection, "ec_shards", string(shard.DiskType)).Dec()
} }
func (shard *EcVolumeShard) ReadAt(buf []byte, offset int64) (int, error) { func (shard *EcVolumeShard) ReadAt(buf []byte, offset int64) (int, error) {

2
weed/storage/volume.go

@ -246,7 +246,7 @@ func (v *Volume) doClose() {
glog.Warningf("Volume Close fail to sync volume %d", v.Id) glog.Warningf("Volume Close fail to sync volume %d", v.Id)
} }
v.DataBackend = nil v.DataBackend = nil
stats.VolumeServerVolumeCounter.WithLabelValues(v.Collection, "volume").Dec()
stats.VolumeServerVolumeCounter.WithLabelValues(v.Collection, "volume", v.DiskType().ReadableString()).Dec()
} }
} }

2
weed/storage/volume_loading.go

@ -201,7 +201,7 @@ func (v *Volume) load(alsoLoadIndex bool, createDatIfMissing bool, needleMapKind
} }
} }
stats.VolumeServerVolumeCounter.WithLabelValues(v.Collection, "volume").Inc()
stats.VolumeServerVolumeCounter.WithLabelValues(v.Collection, "volume", v.DiskType().ReadableString()).Inc()
if err == nil { if err == nil {
hasLoadedVolume = true hasLoadedVolume = true

2
weed/storage/volume_vacuum.go

@ -124,7 +124,7 @@ func (v *Volume) CommitCompact() error {
} }
} }
v.DataBackend = nil v.DataBackend = nil
stats.VolumeServerVolumeCounter.WithLabelValues(v.Collection, "volume").Dec()
stats.VolumeServerVolumeCounter.WithLabelValues(v.Collection, "volume", v.DiskType().ReadableString()).Dec()
var e error var e error
if e = v.makeupDiff(v.FileName(".cpd"), v.FileName(".cpx"), v.FileName(".dat"), v.FileName(".idx")); e != nil { if e = v.makeupDiff(v.FileName(".cpd"), v.FileName(".cpx"), v.FileName(".dat"), v.FileName(".idx")); e != nil {

Loading…
Cancel
Save