| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 | package analyticimport (	"fmt"	"github.com/dustin/go-humanize"	"github.com/pkg/errors"	"github.com/shirou/gopsutil/v4/disk"	"github.com/shirou/gopsutil/v4/mem"	"github.com/spf13/cast"	"math")type MemStat struct {	Total       string  `json:"total"`	Used        string  `json:"used"`	Cached      string  `json:"cached"`	Free        string  `json:"free"`	SwapUsed    string  `json:"swap_used"`	SwapTotal   string  `json:"swap_total"`	SwapCached  string  `json:"swap_cached"`	SwapPercent float64 `json:"swap_percent"`	Pressure    float64 `json:"pressure"`}type DiskStat struct {	Total      string        `json:"total"`	Used       string        `json:"used"`	Percentage float64       `json:"percentage"`	Writes     Usage[uint64] `json:"writes"`	Reads      Usage[uint64] `json:"reads"`}func GetMemoryStat() (MemStat, error) {	memoryStat, err := mem.VirtualMemory()	if err != nil {		return MemStat{}, errors.Wrap(err, "error analytic getMemoryStat")	}	return MemStat{		Total:      humanize.Bytes(memoryStat.Total),		Used:       humanize.Bytes(memoryStat.Used),		Cached:     humanize.Bytes(memoryStat.Cached),		Free:       humanize.Bytes(memoryStat.Free),		SwapUsed:   humanize.Bytes(memoryStat.SwapTotal - memoryStat.SwapFree),		SwapTotal:  humanize.Bytes(memoryStat.SwapTotal),		SwapCached: humanize.Bytes(memoryStat.SwapCached),		SwapPercent: cast.ToFloat64(fmt.Sprintf("%.2f",			100*float64(memoryStat.SwapTotal-memoryStat.SwapFree)/math.Max(float64(memoryStat.SwapTotal), 1))),		Pressure: cast.ToFloat64(fmt.Sprintf("%.2f", memoryStat.UsedPercent)),	}, nil}func GetDiskStat() (DiskStat, error) {	diskUsage, err := disk.Usage(".")	if err != nil {		return DiskStat{}, errors.Wrap(err, "error analytic getDiskStat")	}	return DiskStat{		Used:       humanize.Bytes(diskUsage.Used),		Total:      humanize.Bytes(diskUsage.Total),		Percentage: cast.ToFloat64(fmt.Sprintf("%.2f", diskUsage.UsedPercent)),		Writes:     DiskWriteRecord[len(DiskWriteRecord)-1],		Reads:      DiskReadRecord[len(DiskReadRecord)-1],	}, nil}
 |