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:
61
client/collector/collector.go
Normal file
61
client/collector/collector.go
Normal file
@@ -0,0 +1,61 @@
|
||||
package collector
|
||||
|
||||
import (
|
||||
"time"
|
||||
)
|
||||
|
||||
type Metrics struct {
|
||||
DeviceID string `json:"device_id"`
|
||||
Timestamp time.Time `json:"timestamp"`
|
||||
|
||||
CPU *CPUInfo `json:"cpu"`
|
||||
Memory *MemoryInfo `json:"memory"`
|
||||
GPU *GPUInfo `json:"gpu"`
|
||||
Disks []DiskInfo `json:"disks"`
|
||||
Net []NetInterface `json:"network"`
|
||||
Power *PowerInfo `json:"power"`
|
||||
}
|
||||
|
||||
func CollectAll() (*Metrics, error) {
|
||||
metrics := &Metrics{
|
||||
Timestamp: time.Now(),
|
||||
}
|
||||
|
||||
// Collect CPU
|
||||
cpuInfo, err := CollectCPU()
|
||||
if err == nil {
|
||||
metrics.CPU = cpuInfo
|
||||
}
|
||||
|
||||
// Collect Memory
|
||||
memInfo, err := CollectMemory()
|
||||
if err == nil {
|
||||
metrics.Memory = memInfo
|
||||
}
|
||||
|
||||
// Collect GPU
|
||||
gpuInfo, err := CollectGPU()
|
||||
if err == nil {
|
||||
metrics.GPU = gpuInfo
|
||||
}
|
||||
|
||||
// Collect Disks
|
||||
disks, err := CollectDisks()
|
||||
if err == nil {
|
||||
metrics.Disks = disks
|
||||
}
|
||||
|
||||
// Collect Network
|
||||
nets, err := CollectNetwork()
|
||||
if err == nil {
|
||||
metrics.Net = nets
|
||||
}
|
||||
|
||||
// Collect Power
|
||||
powerInfo, err := CollectPower()
|
||||
if err == nil {
|
||||
metrics.Power = powerInfo
|
||||
}
|
||||
|
||||
return metrics, nil
|
||||
}
|
||||
Reference in New Issue
Block a user