func()

in pkg/systemstatsmonitor/cpu_collector_linux.go [54:113]


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 {
		glog.Errorf("Failed to retrieve cpu/process stats: %v", err)
		return
	}

	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)
		}
	}
}