123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- package analytic
- import (
- "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
- }
|