From ebdd9038b727a30904b16fff7503905e53dff67f Mon Sep 17 00:00:00 2001 From: Varsha Teratipally Date: Wed, 30 Jun 2021 19:50:16 +0000 Subject: [PATCH] Add a check if the metric is nil so that collector doesn't collect the metrics. --- pkg/systemstatsmonitor/cpu_collector_linux.go | 100 ++++++++++++------ 1 file changed, 65 insertions(+), 35 deletions(-) diff --git a/pkg/systemstatsmonitor/cpu_collector_linux.go b/pkg/systemstatsmonitor/cpu_collector_linux.go index 9e3460bd1..0d10887a6 100644 --- a/pkg/systemstatsmonitor/cpu_collector_linux.go +++ b/pkg/systemstatsmonitor/cpu_collector_linux.go @@ -25,7 +25,9 @@ import ( ) func (cc *cpuCollector) recordLoad() { - if cc.mRunnableTaskCount == nil { + // don't collect the load metrics if the configs are not present. + if cc.mRunnableTaskCount == nil && + cc.mCpuLoad15m == nil && cc.mCpuLoad1m == nil && cc.mCpuLoad5m == nil { return } @@ -35,14 +37,29 @@ func (cc *cpuCollector) recordLoad() { return } - cc.mRunnableTaskCount.Record(map[string]string{}, loadAvg.Load1) - - cc.mCpuLoad1m.Record(map[string]string{}, loadAvg.Load1) - cc.mCpuLoad5m.Record(map[string]string{}, loadAvg.Load5) - cc.mCpuLoad15m.Record(map[string]string{}, loadAvg.Load15) + if cc.mRunnableTaskCount != nil { + cc.mRunnableTaskCount.Record(map[string]string{}, loadAvg.Load1) + } + if cc.mCpuLoad1m != nil { + cc.mCpuLoad1m.Record(map[string]string{}, loadAvg.Load1) + } + if cc.mCpuLoad5m != nil { + cc.mCpuLoad5m.Record(map[string]string{}, loadAvg.Load5) + } + if cc.mCpuLoad15m != nil { + cc.mCpuLoad15m.Record(map[string]string{}, loadAvg.Load15) + } } func (cc *cpuCollector) recordSystemStats() { + + // don't collect the load metrics if the configs are not present. + if cc.mSystemCPUStat == nil && cc.mSystemInterruptsTotal == nil && + cc.mSystemProcessesTotal == nil && cc.mSystemProcsBlocked == nil && + cc.mSystemProcsRunning == nil { + return + } + fs, err := procfs.NewFS("/proc") stats, err := fs.Stat() if err != nil { @@ -50,34 +67,47 @@ func (cc *cpuCollector) recordSystemStats() { return } - cc.mSystemProcessesTotal.Record(map[string]string{}, int64(stats.ProcessCreated)) - cc.mSystemProcsRunning.Record(map[string]string{}, int64(stats.ProcessesRunning)) - cc.mSystemProcsBlocked.Record(map[string]string{}, int64(stats.ProcessesBlocked)) - cc.mSystemInterruptsTotal.Record(map[string]string{}, int64(stats.IRQTotal)) - - for i, c := range stats.CPU { - tags := map[string]string{} - tags[cpuLabel] = fmt.Sprintf("cpu%d", i) - - tags[stageLabel] = "user" - cc.mSystemCPUStat.Record(tags, c.User) - tags[stageLabel] = "nice" - cc.mSystemCPUStat.Record(tags, c.Nice) - tags[stageLabel] = "system" - cc.mSystemCPUStat.Record(tags, c.System) - tags[stageLabel] = "idle" - cc.mSystemCPUStat.Record(tags, c.Idle) - tags[stageLabel] = "iowait" - cc.mSystemCPUStat.Record(tags, c.Iowait) - tags[stageLabel] = "iRQ" - cc.mSystemCPUStat.Record(tags, c.IRQ) - tags[stageLabel] = "softIRQ" - cc.mSystemCPUStat.Record(tags, c.SoftIRQ) - tags[stageLabel] = "steal" - cc.mSystemCPUStat.Record(tags, c.Steal) - tags[stageLabel] = "guest" - cc.mSystemCPUStat.Record(tags, c.Guest) - tags[stageLabel] = "guestNice" - cc.mSystemCPUStat.Record(tags, c.GuestNice) + if cc.mSystemProcessesTotal != nil { + cc.mSystemProcessesTotal.Record(map[string]string{}, int64(stats.ProcessCreated)) + } + + if cc.mSystemProcsRunning != nil { + cc.mSystemProcsRunning.Record(map[string]string{}, int64(stats.ProcessesRunning)) + } + + if cc.mSystemProcsBlocked != nil { + cc.mSystemProcsBlocked.Record(map[string]string{}, int64(stats.ProcessesBlocked)) + } + + if cc.mSystemInterruptsTotal != nil { + cc.mSystemInterruptsTotal.Record(map[string]string{}, int64(stats.IRQTotal)) + } + + if cc.mSystemCPUStat != nil { + for i, c := range stats.CPU { + tags := map[string]string{} + tags[cpuLabel] = fmt.Sprintf("cpu%d", i) + + tags[stageLabel] = "user" + cc.mSystemCPUStat.Record(tags, c.User) + tags[stageLabel] = "nice" + cc.mSystemCPUStat.Record(tags, c.Nice) + tags[stageLabel] = "system" + cc.mSystemCPUStat.Record(tags, c.System) + tags[stageLabel] = "idle" + cc.mSystemCPUStat.Record(tags, c.Idle) + tags[stageLabel] = "iowait" + cc.mSystemCPUStat.Record(tags, c.Iowait) + tags[stageLabel] = "iRQ" + cc.mSystemCPUStat.Record(tags, c.IRQ) + tags[stageLabel] = "softIRQ" + cc.mSystemCPUStat.Record(tags, c.SoftIRQ) + tags[stageLabel] = "steal" + cc.mSystemCPUStat.Record(tags, c.Steal) + tags[stageLabel] = "guest" + cc.mSystemCPUStat.Record(tags, c.Guest) + tags[stageLabel] = "guestNice" + cc.mSystemCPUStat.Record(tags, c.GuestNice) + } } }