- Client: Go-based Windows hardware monitoring (CPU, GPU, memory, disk, network, power) - Server: Go + Gin + SQLite backend with REST API - Frontend: Vue 3 + Element Plus dashboard - Docker deployment support - Windows service installation script
42 lines
784 B
Go
42 lines
784 B
Go
package collector
|
|
|
|
import (
|
|
"github.com/shirou/gopsutil/v3/cpu"
|
|
"github.com/shirou/gopsutil/v3/host"
|
|
)
|
|
|
|
type CPUInfo struct {
|
|
Usage float64 `json:"usage"`
|
|
Temperature float64 `json:"temperature"`
|
|
CoreUsage []float64 `json:"core_usage"`
|
|
}
|
|
|
|
func CollectCPU() (*CPUInfo, error) {
|
|
info := &CPUInfo{}
|
|
|
|
// Get overall CPU usage
|
|
percent, err := cpu.Percent(0, false)
|
|
if err == nil && len(percent) > 0 {
|
|
info.Usage = percent[0]
|
|
}
|
|
|
|
// Get per-core CPU usage
|
|
perCPU, err := cpu.Percent(0, true)
|
|
if err == nil {
|
|
info.CoreUsage = perCPU
|
|
}
|
|
|
|
// Get CPU temperature
|
|
temps, err := host.SensorsTemperatures()
|
|
if err == nil {
|
|
for _, temp := range temps {
|
|
if temp.Temperature > 0 {
|
|
info.Temperature = temp.Temperature
|
|
break
|
|
}
|
|
}
|
|
}
|
|
|
|
return info, nil
|
|
}
|