mirror of
https://github.com/kubernetes/node-problem-detector.git
synced 2026-03-02 17:50:34 +00:00
Add a check if the metric is nil so that collector doesn't collect the
metrics.
This commit is contained in:
@@ -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)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user