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 }