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
This commit is contained in:
41
client/collector/cpu.go
Normal file
41
client/collector/cpu.go
Normal file
@@ -0,0 +1,41 @@
|
||||
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
|
||||
}
|
||||
Reference in New Issue
Block a user