system.go 1.29 KB
Newer Older
liming6's avatar
liming6 committed
1
2
3
4
5
6
7
8
9
10
11
12
13
package utils

import (
	"github.com/shirou/gopsutil/v4/cpu"
	"github.com/shirou/gopsutil/v4/load"
	"github.com/shirou/gopsutil/v4/mem"
)

/*
	获取系统相关信息
*/

type SysInfo struct {
14
15
16
17
18
19
20
21
22
23
	CPUPercent       float64 // CPU使用率
	LoadAverage1     float64 // 1分钟内平均负载
	LoadAverage5     float64 // 5分钟平均负载
	LoadAverage15    float64 // 15分钟平均负载
	MemTotal         uint64  // 总内存
	SwapTotal        uint64  // 总swap
	MemUsage         uint64  // 已使用内存
	SwapUsage        uint64  // 已使用swap
	MemUsagePercent  float64 // 已使用内存百分比
	SwapUsagePercent float64 // 已使用swap百分比
liming6's avatar
liming6 committed
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
}

func GetSysInfo() (*SysInfo, error) {
	result := SysInfo{}
	l, err := load.Avg()
	if err != nil {
		return nil, err
	}
	c, err := cpu.Percent(0, false)
	if err != nil {
		return nil, err
	}
	result.CPUPercent = c[0]
	result.LoadAverage1 = l.Load1
	result.LoadAverage5 = l.Load5
	result.LoadAverage15 = l.Load15
	sm, err := mem.SwapMemory()
	if err != nil {
		return nil, err
	}
	result.SwapTotal = sm.Total
	result.SwapUsage = sm.Used
	result.SwapUsagePercent = sm.UsedPercent
	vm, err := mem.VirtualMemory()
	if err != nil {
		return nil, err
	}
	result.MemTotal = vm.Total
	result.MemUsage = vm.Used
	result.MemUsagePercent = vm.UsedPercent
	return &result, nil
}