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:
672
2026-05-17 01:29:44 +08:00
commit 0e8c9f7bff
49 changed files with 3291 additions and 0 deletions

41
client/collector/cpu.go Normal file
View 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
}