61 lines
1.1 KiB
Go
61 lines
1.1 KiB
Go
|
|
package handler
|
||
|
|
|
||
|
|
import (
|
||
|
|
"github.com/shirou/gopsutil/v3/cpu"
|
||
|
|
"github.com/shirou/gopsutil/v3/mem"
|
||
|
|
"x-agents/server/internal/model"
|
||
|
|
)
|
||
|
|
|
||
|
|
func getCPUPercent() (float64, error) {
|
||
|
|
percent, err := cpu.Percent(0, false)
|
||
|
|
if err != nil {
|
||
|
|
return 0, err
|
||
|
|
}
|
||
|
|
if len(percent) > 0 {
|
||
|
|
return percent[0], nil
|
||
|
|
}
|
||
|
|
return 0, nil
|
||
|
|
}
|
||
|
|
|
||
|
|
func getCPUCoreCount() (int, error) {
|
||
|
|
count, err := cpu.Counts(false)
|
||
|
|
if err != nil {
|
||
|
|
return 0, err
|
||
|
|
}
|
||
|
|
return count, nil
|
||
|
|
}
|
||
|
|
|
||
|
|
func getCPUModelName() (string, error) {
|
||
|
|
info, err := cpu.Info()
|
||
|
|
if err != nil {
|
||
|
|
return "Unknown", err
|
||
|
|
}
|
||
|
|
if len(info) > 0 {
|
||
|
|
return info[0].ModelName, nil
|
||
|
|
}
|
||
|
|
return "Unknown", nil
|
||
|
|
}
|
||
|
|
|
||
|
|
func getMemoryInfo() (*model.MemoryInfo, error) {
|
||
|
|
v, err := mem.VirtualMemory()
|
||
|
|
if err != nil {
|
||
|
|
return nil, err
|
||
|
|
}
|
||
|
|
|
||
|
|
// 计算使用率
|
||
|
|
percent := 0.0
|
||
|
|
if v.Total > 0 {
|
||
|
|
percent = float64(v.Used) / float64(v.Total) * 100
|
||
|
|
}
|
||
|
|
|
||
|
|
return &model.MemoryInfo{
|
||
|
|
Total: v.Total,
|
||
|
|
Used: v.Used,
|
||
|
|
Available: v.Available,
|
||
|
|
Percent: percent,
|
||
|
|
TotalGB: float64(v.Total) / 1024 / 1024 / 1024,
|
||
|
|
UsedGB: float64(v.Used) / 1024 / 1024 / 1024,
|
||
|
|
AvailableGB: float64(v.Available) / 1024 / 1024 / 1024,
|
||
|
|
}, nil
|
||
|
|
}
|