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",
Name: "volumes",
Help: "Number of volumes or shards.",
}, []string{"collection", "type"})
}, []string{"collection", "type", "disk"})
VolumeServerReadOnlyVolumeGauge = prometheus.NewGaugeVec(
prometheus.GaugeOpts{
@ -299,7 +299,6 @@ func JoinHostPort(host string, port int) string {
return net.JoinHostPort(host, portStr)
}
func StartMetricsServer(ip string, port int) {
if port == 0 {
return
@ -316,11 +315,10 @@ func SourceName(port uint32) string {
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) {
VolumeServerDiskSizeGauge.DeleteLabelValues(collection, "normal")
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"
"strings"
"github.com/seaweedfs/seaweedfs/weed/storage/types"
"github.com/seaweedfs/seaweedfs/weed/stats"
"github.com/seaweedfs/seaweedfs/weed/storage/needle"
"github.com/seaweedfs/seaweedfs/weed/storage/types"
@ -44,7 +46,7 @@ func NewEcVolumeShard(diskType types.DiskType, dirname string, collection string
}
v.ecdFileSize = ecdFi.Size()
stats.VolumeServerVolumeCounter.WithLabelValues(v.Collection, "ec_shards").Inc()
stats.VolumeServerVolumeCounter.WithLabelValues(v.Collection, "ec_shards", string(v.DiskType)).Inc()
return
}
@ -88,7 +90,7 @@ func (shard *EcVolumeShard) Close() {
func (shard *EcVolumeShard) Destroy() {
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) {

2
weed/storage/volume.go

@ -246,7 +246,7 @@ func (v *Volume) doClose() {
glog.Warningf("Volume Close fail to sync volume %d", v.Id)
}
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 {
hasLoadedVolume = true

2
weed/storage/volume_vacuum.go

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

Loading…
Cancel
Save