| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 | package analyticimport (	"github.com/shirou/gopsutil/v4/cpu"	"github.com/shirou/gopsutil/v4/load"	"github.com/shirou/gopsutil/v4/net"	"github.com/uozi-tech/cosy/logger"	"math"	"runtime"	"time")func GetNodeStat() (data NodeStat) {	memory, err := GetMemoryStat()	if err != nil {		logger.Error(err)		return	}	cpuTimesBefore, _ := cpu.Times(false)	time.Sleep(1000 * time.Millisecond)	cpuTimesAfter, _ := cpu.Times(false)	threadNum := runtime.GOMAXPROCS(0)	cpuUserUsage := (cpuTimesAfter[0].User - cpuTimesBefore[0].User) / (float64(1000*threadNum) / 1000)	cpuSystemUsage := (cpuTimesAfter[0].System - cpuTimesBefore[0].System) / (float64(1000*threadNum) / 1000)	loadAvg, err := load.Avg()	if err != nil {		logger.Error(err)		return	}	diskStat, err := GetDiskStat()	if err != nil {		logger.Error(err)		return	}	netIO, err := net.IOCounters(false)	if err != nil {		logger.Error(err)		return	}	var network net.IOCountersStat	if len(netIO) > 0 {		network = netIO[0]	}	return NodeStat{		AvgLoad:       loadAvg,		CPUPercent:    math.Min((cpuUserUsage+cpuSystemUsage)*100, 100),		MemoryPercent: memory.Pressure,		DiskPercent:   diskStat.Percentage,		Network:       network,	}}
 |