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 }