Files
pc-monitor/client/collector/cpu.go
672 0e8c9f7bff feat: init pc-monitor project
- 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
2026-05-17 01:29:44 +08:00

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
}