package collector import ( "github.com/shirou/gopsutil/v3/disk" ) type DiskInfo struct { MountPoint string `json:"mount_point"` Total uint64 `json:"total"` Used uint64 `json:"used"` Usage float64 `json:"usage"` FileSystem string `json:"file_system"` } func CollectDisks() ([]DiskInfo, error) { partitions, err := disk.Partitions(false) if err != nil { return nil, err } var disks []DiskInfo for _, p := range partitions { usage, err := disk.Usage(p.Mountpoint) if err != nil { continue } disks = append(disks, DiskInfo{ MountPoint: p.Mountpoint, Total: usage.Total, Used: usage.Used, Usage: usage.UsedPercent, FileSystem: p.Fstype, }) } return disks, nil }