From 8e58072ff6aab7098a74055e11920c2211d565ff Mon Sep 17 00:00:00 2001 From: Holger Obermaier <40787752+ho-ob@users.noreply.github.com> Date: Wed, 6 May 2026 13:22:02 +0200 Subject: [PATCH] Use NewMetric to create a new metric --- collectors/beegfsmetaMetric.go | 3 +- collectors/beegfsstorageMetric.go | 3 +- collectors/cpufreqCpuinfoMetric.go | 2 +- collectors/cpufreqMetric.go | 2 +- collectors/cpustatMetric.go | 11 ++---- collectors/diskstatMetric.go | 31 ++--------------- collectors/ipmiMetric.go | 10 +++--- collectors/loadavgMetric.go | 4 +-- collectors/memstatMetric.go | 4 +-- collectors/netstatMetric.go | 4 +-- collectors/nfsMetric.go | 13 ++++--- collectors/nfsiostatMetric.go | 11 ++---- collectors/raplMetric.go | 7 +--- collectors/rocmsmiMetric.go | 54 ++++++++++-------------------- collectors/tempMetric.go | 24 ++----------- collectors/topprocsMetric.go | 10 +----- 16 files changed, 52 insertions(+), 141 deletions(-) diff --git a/collectors/beegfsmetaMetric.go b/collectors/beegfsmetaMetric.go index 13afa60..0a58dbf 100644 --- a/collectors/beegfsmetaMetric.go +++ b/collectors/beegfsmetaMetric.go @@ -227,8 +227,7 @@ func (m *BeegfsMetaCollector) Read(interval time.Duration, output chan lp.CCMess for key, data := range m.matches { value, _ := strconv.ParseFloat(data, 32) - y, err := lp.NewMessage(key, m.tags, m.meta, map[string]any{"value": value}, time.Now()) - if err == nil { + if y, err := lp.NewMetric(key, m.tags, m.meta, value, time.Now()); err == nil { output <- y } } diff --git a/collectors/beegfsstorageMetric.go b/collectors/beegfsstorageMetric.go index 2990a02..17abe65 100644 --- a/collectors/beegfsstorageMetric.go +++ b/collectors/beegfsstorageMetric.go @@ -218,8 +218,7 @@ func (m *BeegfsStorageCollector) Read(interval time.Duration, output chan lp.CCM for key, data := range m.matches { value, _ := strconv.ParseFloat(data, 32) - y, err := lp.NewMessage(key, m.tags, m.meta, map[string]any{"value": value}, time.Now()) - if err == nil { + if y, err := lp.NewMetric(key, m.tags, m.meta, value, time.Now()); err == nil { output <- y } } diff --git a/collectors/cpufreqCpuinfoMetric.go b/collectors/cpufreqCpuinfoMetric.go index b302c70..4163436 100644 --- a/collectors/cpufreqCpuinfoMetric.go +++ b/collectors/cpufreqCpuinfoMetric.go @@ -171,7 +171,7 @@ func (m *CPUFreqCpuInfoCollector) Read(interval time.Duration, output chan lp.CC fmt.Sprintf("Read(): Failed to convert cpu MHz '%s' to float64: %v", lineSplit[1], err)) return } - if y, err := lp.NewMessage("cpufreq", t.tagSet, m.meta, map[string]any{"value": value}, now); err == nil { + if y, err := lp.NewMetric("cpufreq", t.tagSet, m.meta, value, now); err == nil { output <- y } } diff --git a/collectors/cpufreqMetric.go b/collectors/cpufreqMetric.go index 116731e..225739c 100644 --- a/collectors/cpufreqMetric.go +++ b/collectors/cpufreqMetric.go @@ -129,7 +129,7 @@ func (m *CPUFreqCollector) Read(interval time.Duration, output chan lp.CCMessage continue } - if y, err := lp.NewMessage("cpufreq", t.tagSet, m.meta, map[string]any{"value": cpuFreq}, now); err == nil { + if y, err := lp.NewMetric("cpufreq", t.tagSet, m.meta, cpuFreq, now); err == nil { output <- y } } diff --git a/collectors/cpustatMetric.go b/collectors/cpustatMetric.go index 36f3c4a..809bdd6 100644 --- a/collectors/cpustatMetric.go +++ b/collectors/cpustatMetric.go @@ -141,7 +141,7 @@ func (m *CpustatCollector) parseStatLine(linefields []string, tags map[string]st sum := float64(0) for name, value := range values { sum += value - y, err := lp.NewMessage(name, tags, m.meta, map[string]any{"value": value * 100}, now) + y, err := lp.NewMetric(name, tags, m.meta, value*100, now) if err == nil { y.AddTag("unit", "Percent") output <- y @@ -149,7 +149,7 @@ func (m *CpustatCollector) parseStatLine(linefields []string, tags map[string]st } if v, ok := values["cpu_idle"]; ok { sum -= v - y, err := lp.NewMessage("cpu_used", tags, m.meta, map[string]any{"value": sum * 100}, now) + y, err := lp.NewMetric("cpu_used", tags, m.meta, sum*100, now) if err == nil { y.AddTag("unit", "Percent") output <- y @@ -191,12 +191,7 @@ func (m *CpustatCollector) Read(interval time.Duration, output chan lp.CCMessage } } - num_cpus_metric, err := lp.NewMessage("num_cpus", - m.nodetags, - m.meta, - map[string]any{"value": num_cpus}, - now, - ) + num_cpus_metric, err := lp.NewMetric("num_cpus", m.nodetags, m.meta, num_cpus, now) if err == nil { output <- num_cpus_metric } diff --git a/collectors/diskstatMetric.go b/collectors/diskstatMetric.go index 4d757f8..5f133b7 100644 --- a/collectors/diskstatMetric.go +++ b/collectors/diskstatMetric.go @@ -128,30 +128,14 @@ mountLoop: tags := map[string]string{"type": "node", "device": linefields[0]} total := (stat.Blocks * uint64(stat.Bsize)) / uint64(1000_000_000) if m.allowedMetrics["disk_total"] { - y, err := lp.NewMessage( - "disk_total", - tags, - m.meta, - map[string]any{ - "value": total, - }, - time.Now()) - if err == nil { + if y, err := lp.NewMetric("disk_total", tags, m.meta, total, time.Now()); err == nil { y.AddMeta("unit", "GBytes") output <- y } } free := (stat.Bfree * uint64(stat.Bsize)) / uint64(1000_000_000) if m.allowedMetrics["disk_free"] { - y, err := lp.NewMessage( - "disk_free", - tags, - m.meta, - map[string]any{ - "value": free, - }, - time.Now()) - if err == nil { + if y, err := lp.NewMetric("disk_free", tags, m.meta, free, time.Now()); err == nil { y.AddMeta("unit", "GBytes") output <- y } @@ -164,16 +148,7 @@ mountLoop: } } if m.allowedMetrics["part_max_used"] { - y, err := lp.NewMessage( - "part_max_used", - map[string]string{ - "type": "node", - }, - m.meta, - map[string]any{ - "value": int(part_max_used), - }, - time.Now()) + y, err := lp.NewMetric("part_max_used", map[string]string{"type": "node"}, m.meta, int(part_max_used), time.Now()) if err == nil { y.AddMeta("unit", "percent") output <- y diff --git a/collectors/ipmiMetric.go b/collectors/ipmiMetric.go index 5316df0..3740f4c 100644 --- a/collectors/ipmiMetric.go +++ b/collectors/ipmiMetric.go @@ -28,9 +28,9 @@ type IpmiCollector struct { metricCollector config struct { - IpmitoolPath string `json:"ipmitool_path"` - IpmisensorsPath string `json:"ipmisensors_path"` - Sudo bool `json:"use_sudo"` + IpmitoolPath string `json:"ipmitool_path"` + IpmisensorsPath string `json:"ipmisensors_path"` + Sudo bool `json:"use_sudo"` } ipmitool string @@ -157,7 +157,7 @@ func (m *IpmiCollector) readIpmiTool(output chan lp.CCMessage) error { unit = "Watts" } - y, err := lp.NewMessage(name, map[string]string{"type": "node"}, m.meta, map[string]any{"value": v}, time.Now()) + y, err := lp.NewMetric(name, map[string]string{"type": "node"}, m.meta, v, time.Now()) if err != nil { cclog.ComponentErrorf(m.name, "Failed to create message: %v", err) continue @@ -209,7 +209,7 @@ func (m *IpmiCollector) readIpmiSensors(output chan lp.CCMessage) error { continue } name := strings.ToLower(strings.ReplaceAll(lv[1], " ", "_")) - y, err := lp.NewMessage(name, map[string]string{"type": "node"}, m.meta, map[string]any{"value": v}, time.Now()) + y, err := lp.NewMetric(name, map[string]string{"type": "node"}, m.meta, v, time.Now()) if err != nil { cclog.ComponentErrorf(m.name, "Failed to create message: %v", err) continue diff --git a/collectors/loadavgMetric.go b/collectors/loadavgMetric.go index 2c008ea..774254d 100644 --- a/collectors/loadavgMetric.go +++ b/collectors/loadavgMetric.go @@ -109,7 +109,7 @@ func (m *LoadavgCollector) Read(interval time.Duration, output chan lp.CCMessage if m.load_skips[i] { continue } - y, err := lp.NewMessage(name, m.tags, m.meta, map[string]any{"value": x}, now) + y, err := lp.NewMetric(name, m.tags, m.meta, x, now) if err == nil { output <- y } @@ -128,7 +128,7 @@ func (m *LoadavgCollector) Read(interval time.Duration, output chan lp.CCMessage if m.proc_skips[i] { continue } - y, err := lp.NewMessage(name, m.tags, m.meta, map[string]any{"value": x}, now) + y, err := lp.NewMetric(name, m.tags, m.meta, x, now) if err == nil { output <- y } diff --git a/collectors/memstatMetric.go b/collectors/memstatMetric.go index 5bb7f5a..4ab4ec8 100644 --- a/collectors/memstatMetric.go +++ b/collectors/memstatMetric.go @@ -213,7 +213,7 @@ func (m *MemstatCollector) Read(interval time.Duration, output chan lp.CCMessage } } - y, err := lp.NewMessage(name, tags, m.meta, map[string]any{"value": value}, time.Now()) + y, err := lp.NewMetric(name, tags, m.meta, value, time.Now()) if err == nil { if len(unit) > 0 { y.AddMeta("unit", unit) @@ -252,7 +252,7 @@ func (m *MemstatCollector) Read(interval time.Duration, output chan lp.CCMessage } } } - y, err := lp.NewMessage("mem_used", tags, m.meta, map[string]any{"value": memUsed}, time.Now()) + y, err := lp.NewMetric("mem_used", tags, m.meta, memUsed, time.Now()) if err == nil { if len(unit) > 0 { y.AddMeta("unit", unit) diff --git a/collectors/netstatMetric.go b/collectors/netstatMetric.go index b8b5b06..8be9c5b 100644 --- a/collectors/netstatMetric.go +++ b/collectors/netstatMetric.go @@ -262,14 +262,14 @@ func (m *NetstatCollector) Read(interval time.Duration, output chan lp.CCMessage continue } if m.config.SendAbsoluteValues { - if y, err := lp.NewMessage(metric.name, metric.tags, metric.meta, map[string]any{"value": v}, now); err == nil { + if y, err := lp.NewMetric(metric.name, metric.tags, metric.meta, v, now); err == nil { output <- y } } if m.config.SendDerivedValues { if metric.lastValue >= 0 { rate := float64(v-metric.lastValue) / timeDiff - if y, err := lp.NewMessage(metric.name+"_bw", metric.tags, metric.meta_rates, map[string]any{"value": rate}, now); err == nil { + if y, err := lp.NewMetric(metric.name+"_bw", metric.tags, metric.meta_rates, rate, now); err == nil { output <- y } } diff --git a/collectors/nfsMetric.go b/collectors/nfsMetric.go index a836aab..3bc9f15 100644 --- a/collectors/nfsMetric.go +++ b/collectors/nfsMetric.go @@ -146,14 +146,13 @@ func (m *nfsCollector) Read(interval time.Duration, output chan lp.CCMessage) { continue } - valueMap := make(map[string]any) if data.current >= 0 && data.last >= 0 { - valueMap["value"] = data.current - data.last - } - y, err := lp.NewMessage(fmt.Sprintf("%s_%s", prefix, name), m.tags, m.meta, valueMap, timestamp) - if err == nil { - y.AddMeta("version", m.version) - output <- y + value := data.current - data.last + y, err := lp.NewMetric(fmt.Sprintf("%s_%s", prefix, name), m.tags, m.meta, value, timestamp) + if err == nil { + y.AddMeta("version", m.version) + output <- y + } } } } diff --git a/collectors/nfsiostatMetric.go b/collectors/nfsiostatMetric.go index e9052bb..44551a7 100644 --- a/collectors/nfsiostatMetric.go +++ b/collectors/nfsiostatMetric.go @@ -145,14 +145,7 @@ func (m *NfsIOStatCollector) Read(interval time.Duration, output chan lp.CCMessa if old, ok := m.data[mntpoint]; ok { for name, newVal := range values { if m.config.SendAbsoluteValues { - msg, err := lp.NewMessage( - "nfsio_"+name, - m.tags, - m.meta, - map[string]any{ - "value": newVal, - }, - now) + msg, err := lp.NewMetric("nfsio_"+name, m.tags, m.meta, newVal, now) if err == nil { msg.AddTag("stype", "filesystem") msg.AddTag("stype-id", mntpoint) @@ -161,7 +154,7 @@ func (m *NfsIOStatCollector) Read(interval time.Duration, output chan lp.CCMessa } if m.config.SendDerivedValues { rate := float64(newVal-old[name]) / timeDiff - msg, err := lp.NewMessage(fmt.Sprintf("nfsio_%s_bw", name), m.tags, m.meta, map[string]any{"value": rate}, now) + msg, err := lp.NewMetric(fmt.Sprintf("nfsio_%s_bw", name), m.tags, m.meta, rate, now) if err == nil { if strings.HasPrefix(name, "page") { msg.AddMeta("unit", "4K_pages/s") diff --git a/collectors/raplMetric.go b/collectors/raplMetric.go index 8afe23a..3d459df 100644 --- a/collectors/raplMetric.go +++ b/collectors/raplMetric.go @@ -242,12 +242,7 @@ func (m *RAPLCollector) Read(interval time.Duration, output chan lp.CCMessage) { timeDiff := energyTimestamp.Sub(p.energyTimestamp) averagePower := float64(energyDiff) / float64(timeDiff.Microseconds()) - y, err := lp.NewMessage( - "rapl_average_power", - p.tags, - m.meta, - map[string]any{"value": averagePower}, - energyTimestamp) + y, err := lp.NewMetric("rapl_average_power", p.tags, m.meta, averagePower, energyTimestamp) if err == nil { output <- y } diff --git a/collectors/rocmsmiMetric.go b/collectors/rocmsmiMetric.go index c801d29..ca4ef70 100644 --- a/collectors/rocmsmiMetric.go +++ b/collectors/rocmsmiMetric.go @@ -158,128 +158,110 @@ func (m *RocmSmiCollector) Read(interval time.Duration, output chan lp.CCMessage if !dev.excludeMetrics["rocm_gfx_util"] { value := metrics.Average_gfx_activity - y, err := lp.NewMessage("rocm_gfx_util", dev.tags, dev.meta, map[string]any{"value": value}, timestamp) - if err == nil { + if y, err := lp.NewMetric("rocm_gfx_util", dev.tags, dev.meta, value, timestamp); err == nil { output <- y } } if !dev.excludeMetrics["rocm_umc_util"] { value := metrics.Average_umc_activity - y, err := lp.NewMessage("rocm_umc_util", dev.tags, dev.meta, map[string]any{"value": value}, timestamp) - if err == nil { + if y, err := lp.NewMetric("rocm_umc_util", dev.tags, dev.meta, value, timestamp); err == nil { output <- y } } if !dev.excludeMetrics["rocm_mm_util"] { value := metrics.Average_mm_activity - y, err := lp.NewMessage("rocm_mm_util", dev.tags, dev.meta, map[string]any{"value": value}, timestamp) - if err == nil { + if y, err := lp.NewMetric("rocm_mm_util", dev.tags, dev.meta, value, timestamp); err == nil { output <- y } } if !dev.excludeMetrics["rocm_avg_power"] { value := metrics.Average_socket_power - y, err := lp.NewMessage("rocm_avg_power", dev.tags, dev.meta, map[string]any{"value": value}, timestamp) - if err == nil { + if y, err := lp.NewMetric("rocm_avg_power", dev.tags, dev.meta, value, timestamp); err == nil { output <- y } } if !dev.excludeMetrics["rocm_temp_mem"] { value := metrics.Temperature_mem - y, err := lp.NewMessage("rocm_temp_mem", dev.tags, dev.meta, map[string]any{"value": value}, timestamp) - if err == nil { + if y, err := lp.NewMetric("rocm_temp_mem", dev.tags, dev.meta, value, timestamp); err == nil { output <- y } } if !dev.excludeMetrics["rocm_temp_hotspot"] { value := metrics.Temperature_hotspot - y, err := lp.NewMessage("rocm_temp_hotspot", dev.tags, dev.meta, map[string]any{"value": value}, timestamp) - if err == nil { + if y, err := lp.NewMetric("rocm_temp_hotspot", dev.tags, dev.meta, value, timestamp); err == nil { output <- y } } if !dev.excludeMetrics["rocm_temp_edge"] { value := metrics.Temperature_edge - y, err := lp.NewMessage("rocm_temp_edge", dev.tags, dev.meta, map[string]any{"value": value}, timestamp) - if err == nil { + if y, err := lp.NewMetric("rocm_temp_edge", dev.tags, dev.meta, value, timestamp); err == nil { output <- y } } if !dev.excludeMetrics["rocm_temp_vrgfx"] { value := metrics.Temperature_vrgfx - y, err := lp.NewMessage("rocm_temp_vrgfx", dev.tags, dev.meta, map[string]any{"value": value}, timestamp) - if err == nil { + if y, err := lp.NewMetric("rocm_temp_vrgfx", dev.tags, dev.meta, value, timestamp); err == nil { output <- y } } if !dev.excludeMetrics["rocm_temp_vrsoc"] { value := metrics.Temperature_vrsoc - y, err := lp.NewMessage("rocm_temp_vrsoc", dev.tags, dev.meta, map[string]any{"value": value}, timestamp) - if err == nil { + if y, err := lp.NewMetric("rocm_temp_vrsoc", dev.tags, dev.meta, value, timestamp); err == nil { output <- y } } if !dev.excludeMetrics["rocm_temp_vrmem"] { value := metrics.Temperature_vrmem - y, err := lp.NewMessage("rocm_temp_vrmem", dev.tags, dev.meta, map[string]any{"value": value}, timestamp) - if err == nil { + if y, err := lp.NewMetric("rocm_temp_vrmem", dev.tags, dev.meta, value, timestamp); err == nil { output <- y } } if !dev.excludeMetrics["rocm_gfx_clock"] { value := metrics.Average_gfxclk_frequency - y, err := lp.NewMessage("rocm_gfx_clock", dev.tags, dev.meta, map[string]any{"value": value}, timestamp) - if err == nil { + if y, err := lp.NewMetric("rocm_gfx_clock", dev.tags, dev.meta, value, timestamp); err == nil { output <- y } } if !dev.excludeMetrics["rocm_soc_clock"] { value := metrics.Average_socclk_frequency - y, err := lp.NewMessage("rocm_soc_clock", dev.tags, dev.meta, map[string]any{"value": value}, timestamp) - if err == nil { + if y, err := lp.NewMetric("rocm_soc_clock", dev.tags, dev.meta, value, timestamp); err == nil { output <- y } } if !dev.excludeMetrics["rocm_u_clock"] { value := metrics.Average_uclk_frequency - y, err := lp.NewMessage("rocm_u_clock", dev.tags, dev.meta, map[string]any{"value": value}, timestamp) - if err == nil { + if y, err := lp.NewMetric("rocm_u_clock", dev.tags, dev.meta, value, timestamp); err == nil { output <- y } } if !dev.excludeMetrics["rocm_v0_clock"] { value := metrics.Average_vclk0_frequency - y, err := lp.NewMessage("rocm_v0_clock", dev.tags, dev.meta, map[string]any{"value": value}, timestamp) - if err == nil { + if y, err := lp.NewMetric("rocm_v0_clock", dev.tags, dev.meta, value, timestamp); err == nil { output <- y } } if !dev.excludeMetrics["rocm_v1_clock"] { value := metrics.Average_vclk1_frequency - y, err := lp.NewMessage("rocm_v1_clock", dev.tags, dev.meta, map[string]any{"value": value}, timestamp) - if err == nil { + if y, err := lp.NewMetric("rocm_v1_clock", dev.tags, dev.meta, value, timestamp); err == nil { output <- y } } if !dev.excludeMetrics["rocm_d0_clock"] { value := metrics.Average_dclk0_frequency - y, err := lp.NewMessage("rocm_d0_clock", dev.tags, dev.meta, map[string]any{"value": value}, timestamp) - if err == nil { + if y, err := lp.NewMetric("rocm_d0_clock", dev.tags, dev.meta, value, timestamp); err == nil { output <- y } } if !dev.excludeMetrics["rocm_d1_clock"] { value := metrics.Average_dclk1_frequency - y, err := lp.NewMessage("rocm_d1_clock", dev.tags, dev.meta, map[string]any{"value": value}, timestamp) - if err == nil { + if y, err := lp.NewMetric("rocm_d1_clock", dev.tags, dev.meta, value, timestamp); err == nil { output <- y } } if !dev.excludeMetrics["rocm_temp_hbm"] { for i := range rocm_smi.NUM_HBM_INSTANCES { value := metrics.Temperature_hbm[i] - y, err := lp.NewMessage("rocm_temp_hbm", dev.tags, dev.meta, map[string]any{"value": value}, timestamp) - if err == nil { + if y, err := lp.NewMetric("rocm_temp_hbm", dev.tags, dev.meta, value, timestamp); err == nil { y.AddTag("stype", "device") y.AddTag("stype-id", strconv.Itoa(i)) output <- y diff --git a/collectors/tempMetric.go b/collectors/tempMetric.go index 4aa170a..ffae7ff 100644 --- a/collectors/tempMetric.go +++ b/collectors/tempMetric.go @@ -201,26 +201,14 @@ func (m *TempCollector) Read(interval time.Duration, output chan lp.CCMessage) { continue } x /= 1000 - y, err := lp.NewMessage( - sensor.metricName, - sensor.tags, - m.meta, - map[string]any{"value": x}, - time.Now(), - ) + y, err := lp.NewMetric(sensor.metricName, sensor.tags, m.meta, x, time.Now()) if err == nil { output <- y } // max temperature if m.config.ReportMaxTemp && sensor.maxTemp != 0 { - y, err := lp.NewMessage( - sensor.maxTempName, - sensor.tags, - m.meta, - map[string]any{"value": sensor.maxTemp}, - time.Now(), - ) + y, err := lp.NewMetric(sensor.maxTempName, sensor.tags, m.meta, sensor.maxTemp, time.Now()) if err == nil { output <- y } @@ -228,13 +216,7 @@ func (m *TempCollector) Read(interval time.Duration, output chan lp.CCMessage) { // critical temperature if m.config.ReportCriticalTemp && sensor.critTemp != 0 { - y, err := lp.NewMessage( - sensor.critTempName, - sensor.tags, - m.meta, - map[string]any{"value": sensor.critTemp}, - time.Now(), - ) + y, err := lp.NewMetric(sensor.critTempName, sensor.tags, m.meta, sensor.critTemp, time.Now()) if err == nil { output <- y } diff --git a/collectors/topprocsMetric.go b/collectors/topprocsMetric.go index 847c974..eba833c 100644 --- a/collectors/topprocsMetric.go +++ b/collectors/topprocsMetric.go @@ -86,15 +86,7 @@ func (m *TopProcsCollector) Read(interval time.Duration, output chan lp.CCMessag lines := strings.Split(string(stdout), "\n") for i := 1; i < m.config.Num_procs+1; i++ { name := fmt.Sprintf("topproc%d", i) - y, err := lp.NewMessage( - name, - m.tags, - m.meta, - map[string]any{ - "value": lines[i], - }, - time.Now()) - if err == nil { + if y, err := lp.NewMetric(name, m.tags, m.meta, lines[i], time.Now()); err == nil { output <- y } }