zhangzengfei
2019-10-22 862415f6ba294ad678e3dd0e66695d7594f856ae
feat: add system summary information api
1个文件已添加
2个文件已修改
82 ■■■■■ 已修改文件
controllers/syssetcont.go 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
extend/sys/sysinfo.go 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
main.go 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
controllers/syssetcont.go
@@ -334,3 +334,15 @@
    util.ResponseFormat(c, code.UpdateSuccess, "配置成功")
}
// @Summary 查询系统运行信息
// @Description 获取当前系统的运行状态,CPU, GPU, 内存等
// @Produce json
// @Tags sysset
// @Success 200 {string} json "{"code":200, msg:"目录结构数据", success:true}"
// @Failure 500 {string} json "{"code":500,  msg:"返回错误信息", success:false}"
// @Router /data/api-v/sysset/sysinfo [GET]
func (sset SysSetController) GetSysInfo(c *gin.Context) {
    info := sys.GetSysInfo()
    util.ResponseFormat(c, code.UpdateSuccess, info)
}
extend/sys/sysinfo.go
New file
@@ -0,0 +1,59 @@
package sys
import (
    "sort"
    "time"
    "webserver/extend/util"
    "basic.com/valib/gogpu.git"
    "github.com/shirou/gopsutil/cpu"
    "github.com/shirou/gopsutil/disk"
    "github.com/shirou/gopsutil/mem"
)
type SummaryInfo struct {
    Cpu  []float64             `json:"cpu" example:"cpu使用率"`
    Gpu  []gogpu.GpuUnitInfo   `json:"gpu" example:"gpu使用率"`
    Mem  mem.VirtualMemoryStat `json:"mem" example:"内存使用率"`
    Disk disk.UsageStat        `json:"disk" example:"磁盘空间"`
}
const Interval time.Duration = time.Second * 60
var Stat = &SummaryInfo{}
func GatherStat() {
    for range time.Tick(Interval) {
        // Cpu
        if cpuUsedPercent, err := cpu.Percent(time.Second, true); err == nil {
            Stat.Cpu = Stat.Cpu[0:0]
            for _, v := range cpuUsedPercent {
                Stat.Cpu = append(Stat.Cpu, v)
            }
        }
        // Memory
        if meminfo, err := mem.VirtualMemory(); err == nil {
            Stat.Mem = *meminfo
        }
        // Disk
        if disk, err := disk.Usage("/"); err == nil {
            Stat.Disk = *disk
        }
        // Gpu
        if gpuInfo, err := gogpu.Info(); err == nil {
            sort.Sort(gogpu.GPURank(gpuInfo.Info))
            Stat.Gpu = Stat.Gpu[0:0]
            for _, v := range gpuInfo.Info {
                Stat.Gpu = append(Stat.Gpu, v)
            }
        }
    }
}
func GetSysInfo() map[string]interface{} {
    return util.Struct2Map(Stat)
}
main.go
@@ -1,14 +1,16 @@
package main
import (
    "basic.com/dbapi.git"
    "basic.com/valib/logger.git"
    "flag"
    "github.com/spf13/viper"
    "strconv"
    "webserver/cache"
    "webserver/extend/config"
    "webserver/extend/sys"
    "webserver/router"
    "basic.com/dbapi.git"
    "basic.com/valib/logger.git"
    "github.com/spf13/viper"
)
var envirment = flag.String("e", "dev", "")
@@ -59,6 +61,9 @@
    go cache.Init(initchan, *dbIp, *surveyPort,*pubPort)
    logger.Debug("heartBeat with db done!",<-initchan)
    // 统计系统运行状态
    go sys.GatherStat()
    r := router.NewRouter()
    r.Run("0.0.0.0:8000")
}