[agent-go] [status] add status module
This commit is contained in:
49
agent-go/status/CPU.go
Normal file
49
agent-go/status/CPU.go
Normal file
@@ -0,0 +1,49 @@
|
||||
package status
|
||||
|
||||
import (
|
||||
"github.com/shirou/gopsutil/v3/cpu"
|
||||
"github.com/shirou/gopsutil/v3/load"
|
||||
)
|
||||
|
||||
type CPUStatus struct {
|
||||
NumCores int
|
||||
CPUInfo []cpu.InfoStat
|
||||
CPUPercent float64
|
||||
CPULoads *load.AvgStat
|
||||
SystemLoads *load.AvgStat
|
||||
}
|
||||
|
||||
func GetCPUStatus() (*CPUStatus, error) {
|
||||
numCores, err := cpu.Counts(true)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
cpuInfo, err := cpu.Info()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
cpuPercent, err := cpu.Percent(0, false)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
cpuLoads, err := load.Avg()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
systemLoads, err := load.Avg()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return &CPUStatus{
|
||||
NumCores: numCores,
|
||||
CPUInfo: cpuInfo,
|
||||
CPUPercent: cpuPercent[0],
|
||||
CPULoads: cpuLoads,
|
||||
SystemLoads: systemLoads,
|
||||
}, nil
|
||||
}
|
||||
Reference in New Issue
Block a user