update: 初始化代码提交

This commit is contained in:
hamster1963
2023-10-03 15:57:52 +08:00
commit 98a96392fa
46 changed files with 2429 additions and 0 deletions

View File

@ -0,0 +1,73 @@
package server_utils
import (
"context"
"github.com/gogf/gf/v2/encoding/gjson"
"github.com/gogf/gf/v2/frame/g"
"github.com/gogf/gf/v2/os/gcache"
"github.com/gogf/gf/v2/os/gtime"
"github.com/gogf/gf/v2/util/gconv"
"home-network-watcher/manifest"
"math"
)
type uNezha struct{}
var Nezha = &uNezha{}
// GetAllServerInfo
//
// @dc: 获取所有服务器信息
// @author: hamster @date:2023/9/18 14:37:42
func (u *uNezha) GetAllServerInfo(ctx context.Context) (err error) {
// 1. 获取所有服务器信息
//TODO (hamster) 2023/10/3: 优化获取服务器列表序号的方式
serverList := []int{1, 2, 3, 4}
nezhaClient := g.Client().SetHeader("Authorization", manifest.NezhaApiKey)
serverDataList := make([]g.Map, 0)
for _, value := range serverList {
nezhaApi := manifest.NezhaApiUrl + gconv.String(value)
response, err := nezhaClient.Get(ctx, nezhaApi)
if err != nil {
return err
}
// 整理数据
cacheJson := g.Map{}
resJsonData := gjson.New(response.ReadAllString()).Get("result.0").Map()
serverJsonData := gjson.New(resJsonData)
cacheJson["id"] = serverJsonData.Get("id").Int()
cacheJson["name"] = serverJsonData.Get("name").String()
// CPU 占用率保留两位小数
cpuValue := serverJsonData.Get("status.CPU").Float64()
roundedValue := math.Round(cpuValue*100) / 100
cacheJson["cpu"] = roundedValue
// 内存占用率保留两位小数
memoryValue := serverJsonData.Get("host.MemTotal").Float64()
memoryUsedValue := serverJsonData.Get("status.MemUsed").Float64()
memoryUsedPercent := math.Round(memoryUsedValue/memoryValue*10000) / 100
cacheJson["memory"] = memoryUsedPercent
// 磁盘占用率保留两位小数
diskValue := serverJsonData.Get("host.DiskTotal").Float64()
diskUsedValue := serverJsonData.Get("status.DiskUsed").Float64()
diskUsedPercent := math.Round(diskUsedValue/diskValue*10000) / 100
cacheJson["disk"] = diskUsedPercent
// 在线时长,转换为天
uptimeValue := serverJsonData.Get("status.Uptime").Float64()
uptimeDay := math.Round(uptimeValue/86400*100) / 100
cacheJson["uptime"] = uptimeDay
serverDataList = append(serverDataList, cacheJson)
_ = response.Close()
// 在线状态通过last_active判断
lastActiveValue := serverJsonData.Get("last_active").Int64()
if gtime.Now().Unix()-lastActiveValue > 300 {
cacheJson["status"] = "offline"
} else {
cacheJson["status"] = "online"
}
}
err = gcache.Set(ctx, manifest.ServerDataCacheKey, serverDataList, 0)
if err != nil {
return err
}
return
}