Add a check if the metric is nil so that collector doesn't collect the

metrics.
This commit is contained in:
Varsha Teratipally
2021-06-30 19:50:16 +00:00
parent 70f79831de
commit ebdd9038b7

View File

@@ -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))
if cc.mSystemProcessesTotal != nil {
cc.mSystemProcessesTotal.Record(map[string]string{}, int64(stats.ProcessCreated))
}
for i, c := range stats.CPU {
tags := map[string]string{}
tags[cpuLabel] = fmt.Sprintf("cpu%d", i)
if cc.mSystemProcsRunning != nil {
cc.mSystemProcsRunning.Record(map[string]string{}, int64(stats.ProcessesRunning))
}
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.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)
}
}
}