-
Notifications
You must be signed in to change notification settings - Fork 0
/
sys.go
89 lines (72 loc) · 1.7 KB
/
sys.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
package info
import (
"github.com/shirou/gopsutil/v3/cpu"
"github.com/shirou/gopsutil/v3/disk"
"github.com/shirou/gopsutil/v3/host"
"github.com/shirou/gopsutil/v3/load"
"github.com/shirou/gopsutil/v3/mem"
"github.com/shirou/gopsutil/v3/net"
"time"
)
type CpuCountInfo struct {
Physical int `json:"physical"`
Logical int `json:"logical"`
}
type SysInfo struct {
}
func CpuCounts() (ret CpuCountInfo, err error) {
ret.Physical, err = cpu.Counts(false)
if err != nil {
return
}
ret.Logical, err = cpu.Counts(true)
return
}
func CpuTimes() ([]cpu.TimesStat, error) {
return cpu.Times(true)
}
func Cpu() ([]cpu.InfoStat, error) {
return cpu.Info()
}
func CpuPercent() ([]float64, error) {
return cpu.Percent(1*time.Second, false)
}
func Memory() (*mem.VirtualMemoryStat, error) {
return mem.VirtualMemory()
}
func Host() (*host.InfoStat, error) {
return host.Info()
}
func LoadAvg() (*load.AvgStat, error) {
return load.Avg()
}
func LoadMisc() (*load.MiscStat, error) {
return load.Misc()
}
func NetInterfaces() (net.InterfaceStatList, error) {
return net.Interfaces()
}
func NetConnections() ([]net.ConnectionStat, error) {
return net.Connections("all")
}
func NetIOCounters() ([]net.IOCountersStat, error) {
return net.IOCounters(true)
}
func DiskPartitions() ([]disk.PartitionStat, error) {
return disk.Partitions(false)
}
func DiskUsage() ([]disk.UsageStat, error) {
partitions, err := disk.Partitions(false)
if err != nil {
return nil, err
}
var diskUsageStats []disk.UsageStat
for _, partition := range partitions {
usage, err1 := disk.Usage(partition.Mountpoint)
if err1 != nil {
return nil, err1
}
diskUsageStats = append(diskUsageStats, *usage)
}
return diskUsageStats, nil
}