api: added network and sensors system info

This commit is contained in:
yusing
2025-02-11 05:26:37 +08:00
parent 3332ce34c5
commit e1ee08361d
4 changed files with 40 additions and 22 deletions

View File

@@ -8,6 +8,8 @@ import (
"github.com/shirou/gopsutil/v4/cpu"
"github.com/shirou/gopsutil/v4/disk"
"github.com/shirou/gopsutil/v4/mem"
"github.com/shirou/gopsutil/v4/net"
"github.com/shirou/gopsutil/v4/sensors"
"github.com/yusing/go-proxy/internal/utils/strutils"
)
@@ -16,6 +18,8 @@ type (
CPUAverage float64
Memory *mem.VirtualMemoryStat
Disk *disk.UsageStat
Network *net.IOCountersStat
Sensors []sensors.TemperatureStat
}
)
@@ -28,16 +32,25 @@ func GetSystemInfo(ctx context.Context) (*SystemInfo, error) {
if err != nil {
return nil, err
}
diskInfo, err := disk.Usage("/")
if err != nil {
return nil, err
}
networkInfo, err := net.IOCounters(false)
if err != nil {
return nil, err
}
sensors, err := sensors.SensorsTemperatures()
if err != nil {
return nil, err
}
return &SystemInfo{
CPUAverage: cpuAverage[0],
Memory: memoryInfo,
Disk: diskInfo,
Network: &networkInfo[0],
Sensors: sensors,
}, nil
}
@@ -58,5 +71,10 @@ func (info *SystemInfo) MarshalJSON() ([]byte, error) {
"free": strutils.FormatByteSize(info.Disk.Free),
"fs_type": info.Disk.Fstype,
},
"network": map[string]interface{}{
"bytes_sent": strutils.FormatByteSize(info.Network.BytesSent),
"bytes_recv": strutils.FormatByteSize(info.Network.BytesRecv),
},
"sensors": info.Sensors,
})
}