|
|
package utils
import ( "github.com/shirou/gopsutil/cpu" "github.com/shirou/gopsutil/disk" "github.com/shirou/gopsutil/mem" "runtime" "time" )
const ( B = 1 KB = 1024 * B MB = 1024 * KB GB = 1024 * MB )
type Server struct { Os Os `json:"os"` Cpu Cpu `json:"cpu"` Rrm Rrm `json:"ram"` Disk Disk `json:"disk"` }
type Os struct { GOOS string `json:"goos"` NumCPU int `json:"numCpu"` Compiler string `json:"compiler"` GoVersion string `json:"goVersion"` NumGoroutine int `json:"numGoroutine"` }
type Cpu struct { Cpus []float64 `json:"cpus"` Cores int `json:"cores"` }
type Rrm struct { UsedMB int `json:"usedMb"` TotalMB int `json:"totalMb"` UsedPercent int `json:"usedPercent"` }
type Disk struct { UsedMB int `json:"usedMb"` UsedGB int `json:"usedGb"` TotalMB int `json:"totalMb"` TotalGB int `json:"totalGb"` UsedPercent int `json:"usedPercent"` }
// InitOS OS信息
func InitOS() (o Os) { o.GOOS = runtime.GOOS o.NumCPU = runtime.NumCPU() o.Compiler = runtime.Compiler o.GoVersion = runtime.Version() o.NumGoroutine = runtime.NumGoroutine() return o }
// InitCPU CPU信息
func InitCPU() (c Cpu, err error) { if cores, err := cpu.Counts(false); err != nil { return c, err } else { c.Cores = cores } if cpus, err := cpu.Percent(time.Duration(200)*time.Millisecond, true); err != nil { return c, err } else { c.Cpus = cpus } return c, nil }
// InitRAM ARM信息
func InitRAM() (r Rrm, err error) { if u, err := mem.VirtualMemory(); err != nil{ return r, err }else { r.UsedMB = int(u.Used) / MB r.TotalMB = int(u.Total) / MB r.UsedPercent = int(u.UsedPercent) } return r, nil }
// InitDisk 硬盘信息
func InitDisk() (d Disk, err error) { if u, err := disk.Usage("/"); err != nil{ return d, err } else { d.UsedMB = int(u.Used) / MB d.UsedGB = int(u.Used) / GB d.TotalMB = int(u.Total) / MB d.TotalGB = int(u.Total) / GB d.UsedPercent = int(u.UsedPercent) } return d, nil }
|