From 3c0d001f6a9c1a7a16e01b1371ce0c7da3d55a59 Mon Sep 17 00:00:00 2001 From: Khushi Jain Date: Mon, 18 Aug 2025 19:41:23 +0530 Subject: [PATCH 01/13] Remove global logger usage --- metric/system/cgroup/cgstats.go | 5 +++-- metric/system/cpu/cpu.go | 8 +++++--- metric/system/numcpu/numcpu.go | 6 +++--- metric/system/numcpu/numcpu_test.go | 3 ++- metric/system/process/helpers.go | 3 ++- report/report.go | 12 +++++++----- report/setup.go | 2 +- 7 files changed, 23 insertions(+), 16 deletions(-) diff --git a/metric/system/cgroup/cgstats.go b/metric/system/cgroup/cgstats.go index a1e83c5ee3..f8817adfc2 100644 --- a/metric/system/cgroup/cgstats.go +++ b/metric/system/cgroup/cgstats.go @@ -21,6 +21,7 @@ import ( "fmt" "time" + "github.com/elastic/elastic-agent-libs/logp" "github.com/elastic/elastic-agent-libs/mapstr" "github.com/elastic/elastic-agent-libs/opt" "github.com/elastic/elastic-agent-libs/transform/typeconv" @@ -73,7 +74,7 @@ func (stat *StatsV1) FillPercentages(prev CGStats, curTime, prevTime time.Time) if len(stat.CPUAccounting.UsagePerCPU) > 0 { cpuCount = len(stat.CPUAccounting.UsagePerCPU) } else { - cpuCount = numcpu.NumCPU() + cpuCount = numcpu.NumCPU(logp.NewLogger("")) } // if you look at the raw cgroup stats, the following normalized value is literally an average of per-cpu numbers. @@ -129,7 +130,7 @@ func (stat *StatsV2) FillPercentages(prev CGStats, curTime, prevTime time.Time) pct := float64(totalCPUDeltaNanos) / float64(timeDeltaNanos) - cpuCount := numcpu.NumCPU() + cpuCount := numcpu.NumCPU(logp.NewLogger("")) // if you look at the raw cgroup stats, the following normalized value is literally an average of per-cpu numbers. normalizedPct := pct / float64(cpuCount) diff --git a/metric/system/cpu/cpu.go b/metric/system/cpu/cpu.go index fe2b855816..3503a6dbe2 100644 --- a/metric/system/cpu/cpu.go +++ b/metric/system/cpu/cpu.go @@ -23,24 +23,26 @@ package cpu import ( "github.com/shirou/gopsutil/v4/load" + "github.com/elastic/elastic-agent-libs/logp" "github.com/elastic/elastic-agent-system-metrics/metric" "github.com/elastic/elastic-agent-system-metrics/metric/system/numcpu" ) // Load returns CPU load information for the previous 1, 5, and 15 minute // periods. -func Load() (*LoadMetrics, error) { +func Load(logger *logp.Logger) (*LoadMetrics, error) { avg, err := load.Avg() if err != nil { return nil, err } - return &LoadMetrics{avg}, nil + return &LoadMetrics{avg, logger}, nil } // LoadMetrics stores the sampled load average values of the host. type LoadMetrics struct { sample *load.AvgStat + logger *logp.Logger } // LoadAverages stores the values of load averages of the last 1, 5 and 15 minutes. @@ -63,7 +65,7 @@ func (m *LoadMetrics) Averages() LoadAverages { // NormalizedAverages return the CPU load averages normalized by the NumCPU. // These values should range from 0 to 1. func (m *LoadMetrics) NormalizedAverages() LoadAverages { - cpus := numcpu.NumCPU() + cpus := numcpu.NumCPU(m.logger) return LoadAverages{ OneMinute: metric.Round(m.sample.Load1 / float64(cpus)), FiveMinute: metric.Round(m.sample.Load5 / float64(cpus)), diff --git a/metric/system/numcpu/numcpu.go b/metric/system/numcpu/numcpu.go index b9dd1287f9..a986797b9a 100644 --- a/metric/system/numcpu/numcpu.go +++ b/metric/system/numcpu/numcpu.go @@ -31,14 +31,14 @@ import ( // this number will not reflect the system config. // Because this is drop-in, it will not return an error. // if it can't fetch the CPU count the "correct" way, it'll fallback to runtime.NumCPU(). -func NumCPU() int { +func NumCPU(logger *logp.Logger) int { count, exists, err := getCPU() if err != nil { - logp.L().Debugf("Error fetching CPU count: %s", err) + logger.Debugf("Error fetching CPU count: %v", err) return runtime.NumCPU() } if !exists { - logp.L().Debugf("Accurate CPU counts not available on platform, falling back to runtime.NumCPU for metrics") + logger.Debugf("Accurate CPU counts not available on platform, falling back to runtime.NumCPU for metrics") return runtime.NumCPU() } diff --git a/metric/system/numcpu/numcpu_test.go b/metric/system/numcpu/numcpu_test.go index b22fb043c0..9b0bb71bdc 100644 --- a/metric/system/numcpu/numcpu_test.go +++ b/metric/system/numcpu/numcpu_test.go @@ -20,6 +20,7 @@ package numcpu import ( "testing" + "github.com/elastic/elastic-agent-libs/logp" "github.com/stretchr/testify/assert" ) @@ -36,7 +37,7 @@ func TestGetCPU(t *testing.T) { } func TestNumCPU(t *testing.T) { - cpuCount := NumCPU() + cpuCount := NumCPU(logp.NewNopLogger()) assert.NotEqual(t, -1, cpuCount) t.Logf("CPU Count: %d", cpuCount) } diff --git a/metric/system/process/helpers.go b/metric/system/process/helpers.go index 0b75465654..bcae4c624e 100644 --- a/metric/system/process/helpers.go +++ b/metric/system/process/helpers.go @@ -21,6 +21,7 @@ import ( "math" "time" + "github.com/elastic/elastic-agent-libs/logp" "github.com/elastic/elastic-agent-libs/opt" "github.com/elastic/elastic-agent-libs/transform/typeconv" "github.com/elastic/elastic-agent-system-metrics/metric" @@ -90,7 +91,7 @@ func GetProcCPUPercentage(s0, s1 ProcState) ProcState { if math.IsNaN(pct) { return s1 } - normalizedPct := pct / float64(numcpu.NumCPU()) + normalizedPct := pct / float64(numcpu.NumCPU(logp.NewLogger(""))) s1.CPU.Total.Norm.Pct = opt.FloatWith(metric.Round(normalizedPct)) s1.CPU.Total.Pct = opt.FloatWith(metric.Round(pct)) diff --git a/report/report.go b/report/report.go index 300e2bcc0e..f81eddbb56 100644 --- a/report/report.go +++ b/report/report.go @@ -133,7 +133,7 @@ func ReportSystemLoadAverage(logger *logp.Logger) func(monitoring.Mode, monitori V.OnRegistryStart() defer V.OnRegistryFinished() - load, err := cpu.Load() + load, err := cpu.Load(logger) if err != nil { logger.Errorf("Error retrieving load average: %v", err) return @@ -152,11 +152,13 @@ func ReportSystemLoadAverage(logger *logp.Logger) func(monitoring.Mode, monitori } } -func ReportSystemCPUUsage(_ monitoring.Mode, V monitoring.Visitor) { - V.OnRegistryStart() - defer V.OnRegistryFinished() +func ReportSystemCPUUsage(logger *logp.Logger) func(monitoring.Mode, monitoring.Visitor) { + return func(m monitoring.Mode, V monitoring.Visitor) { + V.OnRegistryStart() + defer V.OnRegistryFinished() - monitoring.ReportInt(V, "cores", int64(numcpu.NumCPU())) + monitoring.ReportInt(V, "cores", int64(numcpu.NumCPU(logger))) + } } func ReportRuntime(_ monitoring.Mode, V monitoring.Visitor) { diff --git a/report/setup.go b/report/setup.go index 93c764c8e1..2986e962c5 100644 --- a/report/setup.go +++ b/report/setup.go @@ -41,7 +41,7 @@ const monitoringCgroupsHierarchyOverride = "LIBBEAT_MONITORING_CGROUPS_HIERARCHY // SetupMetrics creates a basic suite of metrics handlers for monitoring, including build info and system resources func SetupMetrics(logger *logp.Logger, name, version, ephemeralID string, systemMetrics *monitoring.Registry, processMetrics *monitoring.Registry) error { - monitoring.NewFunc(systemMetrics, "cpu", ReportSystemCPUUsage, monitoring.Report) + monitoring.NewFunc(systemMetrics, "cpu", ReportSystemCPUUsage(logger), monitoring.Report) name = processName(name) processStats = &process.Stats{ From f4ddeb37c7df0fdd08ae87e28bc004a4319130a9 Mon Sep 17 00:00:00 2001 From: Khushi Jain Date: Mon, 18 Aug 2025 19:55:51 +0530 Subject: [PATCH 02/13] fix linux build --- metric/system/diskio/diskstat_linux.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/metric/system/diskio/diskstat_linux.go b/metric/system/diskio/diskstat_linux.go index 3a19d95d41..91ffff573c 100644 --- a/metric/system/diskio/diskstat_linux.go +++ b/metric/system/diskio/diskstat_linux.go @@ -27,6 +27,7 @@ import ( "github.com/shirou/gopsutil/v4/cpu" "github.com/shirou/gopsutil/v4/disk" + "github.com/elastic/elastic-agent-libs/logp" "github.com/elastic/elastic-agent-system-metrics/metric" "github.com/elastic/elastic-agent-system-metrics/metric/system/numcpu" ) @@ -95,7 +96,7 @@ func (stat *IOStat) CalcIOStatistics(counter disk.IOCountersStat) (IOMetric, err } // calculate the delta ms between the CloseSampling and OpenSampling - deltams := 1000.0 * (float64(uint64(total(stat.curCPU)) - uint64(total(stat.lastCPU)))) / float64(numcpu.NumCPU()) + deltams := 1000.0 * (float64(uint64(total(stat.curCPU)) - uint64(total(stat.lastCPU)))) / float64(numcpu.NumCPU(logp.NewLogger(""))) if deltams <= 0 { return IOMetric{}, errors.New("the delta cpu time between close sampling and open sampling is less or equal to 0") } From ec96e2f603eb491a0287a5deaa65f90cbc0c3170 Mon Sep 17 00:00:00 2001 From: Khushi Jain Date: Mon, 18 Aug 2025 19:59:20 +0530 Subject: [PATCH 03/13] fix lint --- metric/system/numcpu/numcpu_test.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/metric/system/numcpu/numcpu_test.go b/metric/system/numcpu/numcpu_test.go index 9b0bb71bdc..1be6dabe49 100644 --- a/metric/system/numcpu/numcpu_test.go +++ b/metric/system/numcpu/numcpu_test.go @@ -20,8 +20,9 @@ package numcpu import ( "testing" - "github.com/elastic/elastic-agent-libs/logp" "github.com/stretchr/testify/assert" + + "github.com/elastic/elastic-agent-libs/logp" ) func TestGetCPU(t *testing.T) { From f1c628e017664c90db45e5b22dbaa66e734bccfb Mon Sep 17 00:00:00 2001 From: Khushi Jain Date: Wed, 20 Aug 2025 17:11:22 +0530 Subject: [PATCH 04/13] address review comments --- metric/system/numcpu/numcpu_test.go | 4 ++-- report/setup.go | 14 +++++++------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/metric/system/numcpu/numcpu_test.go b/metric/system/numcpu/numcpu_test.go index 1be6dabe49..d9584ae1e8 100644 --- a/metric/system/numcpu/numcpu_test.go +++ b/metric/system/numcpu/numcpu_test.go @@ -22,7 +22,7 @@ import ( "github.com/stretchr/testify/assert" - "github.com/elastic/elastic-agent-libs/logp" + "github.com/elastic/elastic-agent-libs/logp/logptest" ) func TestGetCPU(t *testing.T) { @@ -38,7 +38,7 @@ func TestGetCPU(t *testing.T) { } func TestNumCPU(t *testing.T) { - cpuCount := NumCPU(logp.NewNopLogger()) + cpuCount := NumCPU(logptest.NewTestingLogger(t, "")) assert.NotEqual(t, -1, cpuCount) t.Logf("CPU Count: %d", cpuCount) } diff --git a/report/setup.go b/report/setup.go index 5b1f47b8bf..58fd48ccf9 100644 --- a/report/setup.go +++ b/report/setup.go @@ -55,11 +55,11 @@ func SetupMetrics(logger *logp.Logger, name, version string) error { // SetupMetricsOptions performs creation of metrics handlers using specified options. func SetupMetricsOptions(opts MetricOptions) error { - log := logp.NewLogger("") - if opts.Logger != nil { - log = opts.Logger + if opts.Logger == nil { + opts.Logger = logp.NewLogger("") } - monitoring.NewFunc(opts.SystemMetrics, "cpu", ReportSystemCPUUsage(log), monitoring.Report) + + monitoring.NewFunc(opts.SystemMetrics, "cpu", ReportSystemCPUUsage(opts.Logger), monitoring.Report) opts.Name = processName(opts.Name) processStats = &process.Stats{ @@ -76,12 +76,12 @@ func SetupMetricsOptions(opts MetricOptions) error { return fmt.Errorf("failed to init process stats for agent: %w", err) } - monitoring.NewFunc(opts.ProcessMetrics, "memstats", MemStatsReporter(log, processStats), monitoring.Report) - monitoring.NewFunc(opts.ProcessMetrics, "cpu", InstanceCPUReporter(log, processStats), monitoring.Report) + monitoring.NewFunc(opts.ProcessMetrics, "memstats", MemStatsReporter(opts.Logger, processStats), monitoring.Report) + monitoring.NewFunc(opts.ProcessMetrics, "cpu", InstanceCPUReporter(opts.Logger, processStats), monitoring.Report) monitoring.NewFunc(opts.ProcessMetrics, "runtime", ReportRuntime, monitoring.Report) monitoring.NewFunc(opts.ProcessMetrics, "info", infoReporter(opts.Name, opts.Version, opts.EphemeralID), monitoring.Report) - setupPlatformSpecificMetrics(log, processStats, opts.SystemMetrics, opts.ProcessMetrics) + setupPlatformSpecificMetrics(opts.Logger, processStats, opts.SystemMetrics, opts.ProcessMetrics) return nil } From 9fcd9a2ea17fd38c63de4fe7b706b2663e739c11 Mon Sep 17 00:00:00 2001 From: Khushi Jain Date: Thu, 21 Aug 2025 11:27:26 +0530 Subject: [PATCH 05/13] add logger for other OS's --- metric/system/diskio/diskstat_linux.go | 2 +- metric/system/diskio/diskstat_other.go | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/metric/system/diskio/diskstat_linux.go b/metric/system/diskio/diskstat_linux.go index 91ffff573c..d78c6363e0 100644 --- a/metric/system/diskio/diskstat_linux.go +++ b/metric/system/diskio/diskstat_linux.go @@ -40,7 +40,7 @@ func GetCLKTCK() uint32 { } // IOCounters should map functionality to disk package for linux os. -func IOCounters(names ...string) (map[string]disk.IOCountersStat, error) { +func IOCounters(_ *logp.Logger, names ...string) (map[string]disk.IOCountersStat, error) { return disk.IOCounters(names...) } diff --git a/metric/system/diskio/diskstat_other.go b/metric/system/diskio/diskstat_other.go index 758b8ad32c..9565eb72a0 100644 --- a/metric/system/diskio/diskstat_other.go +++ b/metric/system/diskio/diskstat_other.go @@ -23,6 +23,7 @@ package diskio import ( "errors" + "github.com/elastic/elastic-agent-libs/logp" "github.com/shirou/gopsutil/v4/disk" ) @@ -47,6 +48,6 @@ func (stat *IOStat) CalcIOStatistics(rcounter disk.IOCountersStat) (IOMetric, er func (stat *IOStat) CloseSampling() {} // IOCounters should map functionality to disk package for linux os. -func IOCounters(names ...string) (map[string]disk.IOCountersStat, error) { +func IOCounters(_ *logp.Logger, names ...string) (map[string]disk.IOCountersStat, error) { return disk.IOCounters(names...) } From 5706d6c02ca3bbe19d690b2f8d414d0a4b42a8be Mon Sep 17 00:00:00 2001 From: Khushi Jain Date: Thu, 21 Aug 2025 11:30:09 +0530 Subject: [PATCH 06/13] add disk stat --- metric/system/diskio/diskstat_other.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/metric/system/diskio/diskstat_other.go b/metric/system/diskio/diskstat_other.go index 9565eb72a0..600e85d007 100644 --- a/metric/system/diskio/diskstat_other.go +++ b/metric/system/diskio/diskstat_other.go @@ -23,8 +23,9 @@ package diskio import ( "errors" - "github.com/elastic/elastic-agent-libs/logp" "github.com/shirou/gopsutil/v4/disk" + + "github.com/elastic/elastic-agent-libs/logp" ) // NewDiskIOStat :init DiskIOStat object. From 0bbf012c117d0e304a94e8bfa5751bd0b7589b5d Mon Sep 17 00:00:00 2001 From: Khushi Jain Date: Thu, 21 Aug 2025 16:42:10 +0530 Subject: [PATCH 07/13] use local version of a method --- metric/system/cgroup/cgstats.go | 5 ++--- metric/system/cpu/cpu.go | 2 +- metric/system/numcpu/numcpu.go | 7 ++++++- metric/system/numcpu/numcpu_test.go | 4 +--- metric/system/process/helpers.go | 3 +-- report/report.go | 2 +- 6 files changed, 12 insertions(+), 11 deletions(-) diff --git a/metric/system/cgroup/cgstats.go b/metric/system/cgroup/cgstats.go index f8817adfc2..a1e83c5ee3 100644 --- a/metric/system/cgroup/cgstats.go +++ b/metric/system/cgroup/cgstats.go @@ -21,7 +21,6 @@ import ( "fmt" "time" - "github.com/elastic/elastic-agent-libs/logp" "github.com/elastic/elastic-agent-libs/mapstr" "github.com/elastic/elastic-agent-libs/opt" "github.com/elastic/elastic-agent-libs/transform/typeconv" @@ -74,7 +73,7 @@ func (stat *StatsV1) FillPercentages(prev CGStats, curTime, prevTime time.Time) if len(stat.CPUAccounting.UsagePerCPU) > 0 { cpuCount = len(stat.CPUAccounting.UsagePerCPU) } else { - cpuCount = numcpu.NumCPU(logp.NewLogger("")) + cpuCount = numcpu.NumCPU() } // if you look at the raw cgroup stats, the following normalized value is literally an average of per-cpu numbers. @@ -130,7 +129,7 @@ func (stat *StatsV2) FillPercentages(prev CGStats, curTime, prevTime time.Time) pct := float64(totalCPUDeltaNanos) / float64(timeDeltaNanos) - cpuCount := numcpu.NumCPU(logp.NewLogger("")) + cpuCount := numcpu.NumCPU() // if you look at the raw cgroup stats, the following normalized value is literally an average of per-cpu numbers. normalizedPct := pct / float64(cpuCount) diff --git a/metric/system/cpu/cpu.go b/metric/system/cpu/cpu.go index 3503a6dbe2..7a04932233 100644 --- a/metric/system/cpu/cpu.go +++ b/metric/system/cpu/cpu.go @@ -65,7 +65,7 @@ func (m *LoadMetrics) Averages() LoadAverages { // NormalizedAverages return the CPU load averages normalized by the NumCPU. // These values should range from 0 to 1. func (m *LoadMetrics) NormalizedAverages() LoadAverages { - cpus := numcpu.NumCPU(m.logger) + cpus := numcpu.NumCPUWithLogger(m.logger) return LoadAverages{ OneMinute: metric.Round(m.sample.Load1 / float64(cpus)), FiveMinute: metric.Round(m.sample.Load5 / float64(cpus)), diff --git a/metric/system/numcpu/numcpu.go b/metric/system/numcpu/numcpu.go index a986797b9a..5d9818b751 100644 --- a/metric/system/numcpu/numcpu.go +++ b/metric/system/numcpu/numcpu.go @@ -31,7 +31,12 @@ import ( // this number will not reflect the system config. // Because this is drop-in, it will not return an error. // if it can't fetch the CPU count the "correct" way, it'll fallback to runtime.NumCPU(). -func NumCPU(logger *logp.Logger) int { +// Deprecated: use NumCPUWithLogger +func NumCPU() int { + return NumCPUWithLogger(logp.NewLogger("")) +} + +func NumCPUWithLogger(logger *logp.Logger) int { count, exists, err := getCPU() if err != nil { logger.Debugf("Error fetching CPU count: %v", err) diff --git a/metric/system/numcpu/numcpu_test.go b/metric/system/numcpu/numcpu_test.go index d9584ae1e8..b22fb043c0 100644 --- a/metric/system/numcpu/numcpu_test.go +++ b/metric/system/numcpu/numcpu_test.go @@ -21,8 +21,6 @@ import ( "testing" "github.com/stretchr/testify/assert" - - "github.com/elastic/elastic-agent-libs/logp/logptest" ) func TestGetCPU(t *testing.T) { @@ -38,7 +36,7 @@ func TestGetCPU(t *testing.T) { } func TestNumCPU(t *testing.T) { - cpuCount := NumCPU(logptest.NewTestingLogger(t, "")) + cpuCount := NumCPU() assert.NotEqual(t, -1, cpuCount) t.Logf("CPU Count: %d", cpuCount) } diff --git a/metric/system/process/helpers.go b/metric/system/process/helpers.go index bcae4c624e..0b75465654 100644 --- a/metric/system/process/helpers.go +++ b/metric/system/process/helpers.go @@ -21,7 +21,6 @@ import ( "math" "time" - "github.com/elastic/elastic-agent-libs/logp" "github.com/elastic/elastic-agent-libs/opt" "github.com/elastic/elastic-agent-libs/transform/typeconv" "github.com/elastic/elastic-agent-system-metrics/metric" @@ -91,7 +90,7 @@ func GetProcCPUPercentage(s0, s1 ProcState) ProcState { if math.IsNaN(pct) { return s1 } - normalizedPct := pct / float64(numcpu.NumCPU(logp.NewLogger(""))) + normalizedPct := pct / float64(numcpu.NumCPU()) s1.CPU.Total.Norm.Pct = opt.FloatWith(metric.Round(normalizedPct)) s1.CPU.Total.Pct = opt.FloatWith(metric.Round(pct)) diff --git a/report/report.go b/report/report.go index b0e605dda1..35367087c0 100644 --- a/report/report.go +++ b/report/report.go @@ -157,7 +157,7 @@ func ReportSystemCPUUsage(logger *logp.Logger) func(monitoring.Mode, monitoring. V.OnRegistryStart() defer V.OnRegistryFinished() - monitoring.ReportInt(V, "cores", int64(numcpu.NumCPU(logger))) + monitoring.ReportInt(V, "cores", int64(numcpu.NumCPUWithLogger(logger))) } } From 99a440724a3f717f2a2a95c23480a8041b0a2cb5 Mon Sep 17 00:00:00 2001 From: Khushi Jain Date: Thu, 21 Aug 2025 16:43:31 +0530 Subject: [PATCH 08/13] deprecate --- metric/system/numcpu/numcpu.go | 1 + 1 file changed, 1 insertion(+) diff --git a/metric/system/numcpu/numcpu.go b/metric/system/numcpu/numcpu.go index 5d9818b751..70ec9544ba 100644 --- a/metric/system/numcpu/numcpu.go +++ b/metric/system/numcpu/numcpu.go @@ -31,6 +31,7 @@ import ( // this number will not reflect the system config. // Because this is drop-in, it will not return an error. // if it can't fetch the CPU count the "correct" way, it'll fallback to runtime.NumCPU(). +// // Deprecated: use NumCPUWithLogger func NumCPU() int { return NumCPUWithLogger(logp.NewLogger("")) From d3d0327874ab2ace434e4c2feb00b2805554bc5a Mon Sep 17 00:00:00 2001 From: Khushi Jain Date: Thu, 21 Aug 2025 16:45:24 +0530 Subject: [PATCH 09/13] fix ci --- metric/system/diskio/diskstat_linux.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/metric/system/diskio/diskstat_linux.go b/metric/system/diskio/diskstat_linux.go index d78c6363e0..912bf72ece 100644 --- a/metric/system/diskio/diskstat_linux.go +++ b/metric/system/diskio/diskstat_linux.go @@ -96,7 +96,7 @@ func (stat *IOStat) CalcIOStatistics(counter disk.IOCountersStat) (IOMetric, err } // calculate the delta ms between the CloseSampling and OpenSampling - deltams := 1000.0 * (float64(uint64(total(stat.curCPU)) - uint64(total(stat.lastCPU)))) / float64(numcpu.NumCPU(logp.NewLogger(""))) + deltams := 1000.0 * (float64(uint64(total(stat.curCPU)) - uint64(total(stat.lastCPU)))) / float64(numcpu.NumCPUWithLogger(logp.NewLogger(""))) if deltams <= 0 { return IOMetric{}, errors.New("the delta cpu time between close sampling and open sampling is less or equal to 0") } From b28b1bdbe6e3d80f915d697c5589a0f178da891e Mon Sep 17 00:00:00 2001 From: Khushi Jain Date: Thu, 21 Aug 2025 16:46:31 +0530 Subject: [PATCH 10/13] fix ci --- metric/system/diskio/diskstat_linux.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/metric/system/diskio/diskstat_linux.go b/metric/system/diskio/diskstat_linux.go index 912bf72ece..f2dc6f4467 100644 --- a/metric/system/diskio/diskstat_linux.go +++ b/metric/system/diskio/diskstat_linux.go @@ -96,7 +96,7 @@ func (stat *IOStat) CalcIOStatistics(counter disk.IOCountersStat) (IOMetric, err } // calculate the delta ms between the CloseSampling and OpenSampling - deltams := 1000.0 * (float64(uint64(total(stat.curCPU)) - uint64(total(stat.lastCPU)))) / float64(numcpu.NumCPUWithLogger(logp.NewLogger(""))) + deltams := 1000.0 * (float64(uint64(total(stat.curCPU)) - uint64(total(stat.lastCPU)))) / float64(numcpu.NumCPU()) if deltams <= 0 { return IOMetric{}, errors.New("the delta cpu time between close sampling and open sampling is less or equal to 0") } From 4857b600c105af72628233ceb03f68d1358c6569 Mon Sep 17 00:00:00 2001 From: Khushi Jain Date: Thu, 21 Aug 2025 16:53:18 +0530 Subject: [PATCH 11/13] fix lint --- metric/system/diskio/diskstat_linux.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/metric/system/diskio/diskstat_linux.go b/metric/system/diskio/diskstat_linux.go index f2dc6f4467..912bf72ece 100644 --- a/metric/system/diskio/diskstat_linux.go +++ b/metric/system/diskio/diskstat_linux.go @@ -96,7 +96,7 @@ func (stat *IOStat) CalcIOStatistics(counter disk.IOCountersStat) (IOMetric, err } // calculate the delta ms between the CloseSampling and OpenSampling - deltams := 1000.0 * (float64(uint64(total(stat.curCPU)) - uint64(total(stat.lastCPU)))) / float64(numcpu.NumCPU()) + deltams := 1000.0 * (float64(uint64(total(stat.curCPU)) - uint64(total(stat.lastCPU)))) / float64(numcpu.NumCPUWithLogger(logp.NewLogger(""))) if deltams <= 0 { return IOMetric{}, errors.New("the delta cpu time between close sampling and open sampling is less or equal to 0") } From d599775cbd8714fe63ec6c2134d32115df89feec Mon Sep 17 00:00:00 2001 From: Khushi Jain Date: Fri, 22 Aug 2025 14:51:54 +0530 Subject: [PATCH 12/13] address review comments --- metric/system/cpu/cpu.go | 12 ++++++++++++ report/report.go | 2 +- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/metric/system/cpu/cpu.go b/metric/system/cpu/cpu.go index 7a04932233..dae82da0d2 100644 --- a/metric/system/cpu/cpu.go +++ b/metric/system/cpu/cpu.go @@ -30,12 +30,24 @@ import ( // Load returns CPU load information for the previous 1, 5, and 15 minute // periods. +// Deprecated: use LoadWithLogger func Load(logger *logp.Logger) (*LoadMetrics, error) { avg, err := load.Avg() if err != nil { return nil, err } + return &LoadMetrics{avg, logp.NewLogger("")}, nil +} + +// LoadWithLogger returns CPU load information for the previous 1, 5, and 15 minute +// periods. +func LoadWithLogger(logger *logp.Logger) (*LoadMetrics, error) { + avg, err := load.Avg() + if err != nil { + return nil, err + } + return &LoadMetrics{avg, logger}, nil } diff --git a/report/report.go b/report/report.go index 35367087c0..8489b6eb24 100644 --- a/report/report.go +++ b/report/report.go @@ -133,7 +133,7 @@ func ReportSystemLoadAverage(logger *logp.Logger) func(monitoring.Mode, monitori V.OnRegistryStart() defer V.OnRegistryFinished() - load, err := cpu.Load(logger) + load, err := cpu.LoadWithLogger(logger) if err != nil { logger.Errorf("Error retrieving load average: %v", err) return From bf0ffe3eb1a1164c8a38d8e4cfcbd2fe1d3987b7 Mon Sep 17 00:00:00 2001 From: Khushi Jain Date: Fri, 22 Aug 2025 14:53:02 +0530 Subject: [PATCH 13/13] address review comments --- metric/system/cpu/cpu.go | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/metric/system/cpu/cpu.go b/metric/system/cpu/cpu.go index dae82da0d2..f7852de30f 100644 --- a/metric/system/cpu/cpu.go +++ b/metric/system/cpu/cpu.go @@ -31,13 +31,8 @@ import ( // Load returns CPU load information for the previous 1, 5, and 15 minute // periods. // Deprecated: use LoadWithLogger -func Load(logger *logp.Logger) (*LoadMetrics, error) { - avg, err := load.Avg() - if err != nil { - return nil, err - } - - return &LoadMetrics{avg, logp.NewLogger("")}, nil +func Load() (*LoadMetrics, error) { + return LoadWithLogger(logp.NewLogger("")) } // LoadWithLogger returns CPU load information for the previous 1, 5, and 15 minute