123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117 |
- 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"`
- }
- //@author: [SliverHorn](https://github.com/SliverHorn)
- //@function: InitCPU
- //@description: OS信息
- //@return: o Os, err error
- 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
- }
- //@author: [SliverHorn](https://github.com/SliverHorn)
- //@function: InitCPU
- //@description: CPU信息
- //@return: c Cpu, err error
- 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
- }
- //@author: [SliverHorn](https://github.com/SliverHorn)
- //@function: InitRAM
- //@description: ARM信息
- //@return: r Rrm, err error
- 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
- }
- //@author: [SliverHorn](https://github.com/SliverHorn)
- //@function: InitDisk
- //@description: 硬盘信息
- //@return: d Disk, err error
- 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
- }
|