fix(storage): remove level=0 from TSM disk bytes metrics.

pull/15248/head
elbehery 2019-09-25 13:42:41 +02:00
parent ff2747a728
commit c0b87c657c
3 changed files with 24 additions and 31 deletions

View File

@ -384,7 +384,7 @@ func TestEngine_InitializeMetrics(t *testing.T) {
files := promtest.MustFindMetric(t, mfs, "storage_tsm_files_total", prometheus.Labels{
"node_id": fmt.Sprint(engine.nodeID),
"engine_id": fmt.Sprint(engine.engineID),
"level": "0",
"level": "1",
})
if m, got, exp := files, files.GetGauge().GetValue(), 0.0; got != exp {
t.Errorf("[%s] got %v, expected %v", m, got, exp)
@ -393,7 +393,7 @@ func TestEngine_InitializeMetrics(t *testing.T) {
bytes := promtest.MustFindMetric(t, mfs, "storage_tsm_files_disk_bytes", prometheus.Labels{
"node_id": fmt.Sprint(engine.nodeID),
"engine_id": fmt.Sprint(engine.engineID),
"level": "0",
"level": "1",
})
if m, got, exp := bytes, bytes.GetGauge().GetValue(), 0.0; got != exp {
t.Errorf("[%s] got %v, expected %v", m, got, exp)

View File

@ -376,6 +376,14 @@ func (t *fileTracker) ClearFileCounts() {
}
}
func (t *fileTracker) ClearDiskSizes() {
labels := t.Labels()
for i := uint64(0); i <= 4; i++ {
labels["level"] = formatLevel(i)
t.metrics.DiskSize.With(labels).Set(float64(0))
}
}
func formatLevel(level uint64) string {
if level >= 4 {
return "4+"
@ -676,9 +684,9 @@ func (f *FileStore) Open(ctx context.Context) error {
}
var lm int64
counts := make(map[int]uint64, 5)
sizes := make(map[int]uint64, 5)
for i := 0; i <= 5; i++ {
counts := make(map[int]uint64, 4)
sizes := make(map[int]uint64, 4)
for i := 1; i <= 4; i++ {
counts[i] = 0
sizes[i] = 0
}
@ -1015,10 +1023,11 @@ func (f *FileStore) replace(oldFiles, newFiles []string, updatedFn func(r []TSMF
f.files = active
sort.Sort(tsmReaders(f.files))
f.tracker.ClearFileCounts()
f.tracker.ClearDiskSizes()
// Recalculate the disk size stat
sizes := make(map[int]uint64, 5)
counts := make(map[int]uint64, 5)
sizes := make(map[int]uint64, 4)
counts := make(map[int]uint64, 4)
for _, file := range f.files {
size := uint64(file.Size())
for _, ts := range file.TombstoneFiles() {

View File

@ -10,8 +10,6 @@ import (
func TestMetrics_Filestore(t *testing.T) {
// metrics to be shared by multiple file stores.
metrics := newFileMetrics(prometheus.Labels{"engine_id": "", "node_id": ""})
t1 := newFileTracker(metrics, prometheus.Labels{"engine_id": "0", "node_id": "0"})
t2 := newFileTracker(metrics, prometheus.Labels{"engine_id": "1", "node_id": "0"})
t3 := newFileTracker(metrics, prometheus.Labels{"engine_id": "2", "node_id": "0"})
@ -19,13 +17,9 @@ func TestMetrics_Filestore(t *testing.T) {
reg.MustRegister(metrics.PrometheusCollectors()...)
// Generate some measurements.
t1.AddBytes(100, 0)
t1.SetFileCount(map[int]uint64{0: 3})
t2.AddBytes(200, 0)
t2.SetFileCount(map[int]uint64{0: 4, 4: 3, 5: 1})
t3.SetBytes(map[int]uint64{0: 300, 1: 500, 4: 100, 5: 100})
t2.AddBytes(200, 1)
t2.SetFileCount(map[int]uint64{1: 4, 4: 3, 5: 1})
t3.SetBytes(map[int]uint64{1: 500, 4: 100, 5: 100})
// Test that all the correct metrics are present.
mfs, err := reg.Gather()
@ -34,22 +28,12 @@ func TestMetrics_Filestore(t *testing.T) {
}
base := namespace + "_" + fileStoreSubsystem + "_"
m1Bytes := promtest.MustFindMetric(t, mfs, base+"disk_bytes", prometheus.Labels{"engine_id": "0", "node_id": "0", "level": "0"})
m2Bytes := promtest.MustFindMetric(t, mfs, base+"disk_bytes", prometheus.Labels{"engine_id": "1", "node_id": "0", "level": "0"})
m1Files := promtest.MustFindMetric(t, mfs, base+"total", prometheus.Labels{"engine_id": "0", "node_id": "0", "level": "0"})
m2Files1 := promtest.MustFindMetric(t, mfs, base+"total", prometheus.Labels{"engine_id": "1", "node_id": "0", "level": "0"})
m2Bytes := promtest.MustFindMetric(t, mfs, base+"disk_bytes", prometheus.Labels{"engine_id": "1", "node_id": "0", "level": "1"})
m2Files1 := promtest.MustFindMetric(t, mfs, base+"total", prometheus.Labels{"engine_id": "1", "node_id": "0", "level": "1"})
m2Files2 := promtest.MustFindMetric(t, mfs, base+"total", prometheus.Labels{"engine_id": "1", "node_id": "0", "level": "4+"})
m3Bytes1 := promtest.MustFindMetric(t, mfs, base+"disk_bytes", prometheus.Labels{"engine_id": "2", "node_id": "0", "level": "0"})
m3Bytes1 := promtest.MustFindMetric(t, mfs, base+"disk_bytes", prometheus.Labels{"engine_id": "2", "node_id": "0", "level": "1"})
m3Bytes2 := promtest.MustFindMetric(t, mfs, base+"disk_bytes", prometheus.Labels{"engine_id": "2", "node_id": "0", "level": "4+"})
if m, got, exp := m1Bytes, m1Bytes.GetGauge().GetValue(), 100.0; got != exp {
t.Errorf("[%s] got %v, expected %v", m, got, exp)
}
if m, got, exp := m1Files, m1Files.GetGauge().GetValue(), 3.0; got != exp {
t.Errorf("[%s] got %v, expected %v", m, got, exp)
}
if m, got, exp := m2Bytes, m2Bytes.GetGauge().GetValue(), 200.0; got != exp {
t.Errorf("[%s] got %v, expected %v", m, got, exp)
}
@ -62,7 +46,7 @@ func TestMetrics_Filestore(t *testing.T) {
t.Errorf("[%s] got %v, expected %v", m, got, exp)
}
if m, got, exp := m3Bytes1, m3Bytes1.GetGauge().GetValue(), 300.0; got != exp {
if m, got, exp := m3Bytes1, m3Bytes1.GetGauge().GetValue(), 500.0; got != exp {
t.Errorf("[%s] got %v, expected %v", m, got, exp)
}
@ -231,4 +215,4 @@ func TestMetrics_Compactions(t *testing.T) {
}
}
}
}
}