func metricsJsonStr()

in internal/remoting/heartbeat.go [123:167]


func metricsJsonStr() string {
	loadAvg, err := load.Avg()
	if err != nil {
		logger.Warnf("Failed to get system load average:" + err.Error())
		return "{}"
	}

	cpus, _ := strconv.Atoi(os.Getenv("SIGMA_MAX_PROCESSORS_LIMIT"))
	if cpus <= 0 {
		cpus = runtime.NumCPU()
	}

	ms, err := mem.VirtualMemory()
	if err != nil {
		logger.Warnf("Failed to get system mem info:" + err.Error())
		return "{}"
	}

	metricsJson := map[string]float64{
		"cpuLoad1":      loadAvg.Load1,
		"cpuLoad5":      loadAvg.Load5,
		"cpuProcessors": float64(cpus),
		"heap1Usage":    ms.UsedPercent / 100,
		"heap1Used":     float64(ms.Used) / 1024 / 1024,
		"heap5Usage":    ms.UsedPercent / 100,
		"heapMax":       float64(ms.Available+ms.Used) / 1024 / 1024,
	}
	diskStat, err := disk.Usage("/")
	if err != nil {
		fmt.Println("Failed to get system disk usage info:" + err.Error())
	} else {
		diskUsed := diskStat.Used / 1024 / 1024
		diskFree := diskStat.Free / 1024 / 1024
		diskMax := float64(diskUsed + diskFree)
		metricsJson["diskUsed"] = float64(diskUsed)
		metricsJson["diskMax"] = diskMax
		metricsJson["diskUsage"] = float64(diskUsed) / diskMax
	}
	ret, err := json.Marshal(metricsJson)
	if err != nil {
		logger.Warnf("Get metric json failed for heartbeat, err=%s", err.Error())
		return "{}"
	}
	return string(ret)
}