Beispiel #1
0
// Fetch fetches CPU metrics from the OS.
func (m *MetricSet) Fetch() (common.MapStr, error) {

	stat, err := system.GetCpuTimes()
	if err != nil {
		return nil, errors.Wrap(err, "cpu times")
	}
	m.cpu.AddCpuPercentage(stat)

	loadStat, err := system.GetSystemLoad()
	if err != nil {
		return nil, errors.Wrap(err, "load statistics")
	}

	cpuStat := common.MapStr{
		"user": common.MapStr{
			"pct": stat.UserPercent,
		},
		"system": common.MapStr{
			"pct": stat.SystemPercent,
		},
		"idle": common.MapStr{
			"pct": stat.IdlePercent,
		},
		"iowait": common.MapStr{
			"pct": stat.IOwaitPercent,
		},
		"irq": common.MapStr{
			"pct": stat.IrqPercent,
		},
		"nice": common.MapStr{
			"pct": stat.NicePercent,
		},
		"softirq": common.MapStr{
			"pct": stat.SoftIrqPercent,
		},
		"steal": common.MapStr{
			"pct": stat.StealPercent,
		},
	}

	if m.cpu.CpuTicks {
		cpuStat["user"].(common.MapStr)["ticks"] = stat.User
		cpuStat["system"].(common.MapStr)["ticks"] = stat.Sys
		cpuStat["nice"].(common.MapStr)["ticks"] = stat.Nice
		cpuStat["idle"].(common.MapStr)["ticks"] = stat.Idle
		cpuStat["iowait"].(common.MapStr)["ticks"] = stat.Wait
		cpuStat["irq"].(common.MapStr)["ticks"] = stat.Irq
		cpuStat["softirq"].(common.MapStr)["ticks"] = stat.SoftIrq
		cpuStat["steal"].(common.MapStr)["ticks"] = stat.Stolen
	}

	cpuStat["load"] = common.MapStr{
		"1":  loadStat.Load1,
		"5":  loadStat.Load5,
		"15": loadStat.Load15,
	}

	return cpuStat, nil
}
Beispiel #2
0
// Fetch fetches CPU metrics from the OS.
func (m *MetricSet) Fetch() (common.MapStr, error) {

	cpuStat, err := system.GetCpuTimes()
	if err != nil {
		return nil, errors.Wrap(err, "cpu times")
	}
	m.cpu.AddCpuPercentage(cpuStat)

	loadStat, err := system.GetSystemLoad()
	if err != nil {
		return nil, errors.Wrap(err, "load statistics")
	}

	event := system.GetCpuStatEvent(cpuStat)
	event["load"] = loadStat

	return event, nil
}