- 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
62 lines
1.0 KiB
Go
62 lines
1.0 KiB
Go
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
|
|
}
|