Browse Source

完善服务器信息状态查询

master
xyiege 5 months ago
parent
commit
cdb44533ef
  1. 2
      aufs/core/dtmem.go
  2. 2
      aufs/core/setting.go
  3. 53
      aufs/core/sysmonitor.go
  4. 21
      aufs/db/servDb.go
  5. BIN
      aufs/ups.db

2
aufs/core/dtmem.go

@ -51,7 +51,7 @@ func Dtmem(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "jsonrpc call faild %v", err)
return
}
fmt.Printf("scs: %v", scs)
fmt.Printf("scs: %v\n", scs)
// fmt.Printf("reply: %v", reply)
//replyJson, err := json.Marshal(reply)

2
aufs/core/setting.go

@ -23,7 +23,7 @@ type ScJson struct {
func Settdb(w http.ResponseWriter, r *http.Request) {
// 数据库初始化
db.Init()
sclst := db.GetlScList()
sclst := db.GetAllServerInfo()
//
scresp := ScJson{
Message: "success",

53
aufs/core/sysmonitor.go

@ -1,12 +1,15 @@
package core
import (
"aufs/db"
"aufs/proto/pb"
"encoding/base64"
"encoding/json"
"fmt"
"log"
"net/http"
"net/rpc/jsonrpc"
"strings"
"time"
"github.com/shirou/gopsutil/v3/cpu"
@ -25,7 +28,57 @@ type SysResp struct {
}
// 系统监控
// 从数据库中读取相关记录并利用jsonrpc 请求结果
func SysMonitor(w http.ResponseWriter, r *http.Request) {
db.Init()
// 查询状态为1的列表
scslist := db.GetlScList(1)
//
var rsdata []string
for _, sc := range scslist {
// for test start
// sc.Addr = "http://" + sc.Addr + ":8080"
// rsdata = append(rsdata, sc.Addr)
// test end
// 利用jsonrpc 请求结果
// 构建访问的链接
ser := sc.Addr + ":" + sc.Port
// 链接服务
client, err := jsonrpc.Dial("tcp", ser)
if err != nil {
log.Fatalf("Dial SysMonitor failed: %v", ser)
return
}
//
defer client.Close()
// 返回的是pb字符串
var resp string
// 调用远程方法 SysmonitorService.GetSysInfo
client.Call("SysmonitorService.GetSysInfo", nil, &resp)
// 添加到rsdata
rsdata = append(rsdata, resp)
}
// 合并为一个字符串
strdata := strings.Join(rsdata, ",")
// scc := util.Bas64end(strdata)
// encdata := base64.StdEncoding.EncodeToString(hdinfo)
// 生成json数据
sysresp := SysResp{
Status: 0,
Message: "success",
Data: strdata,
}
// 增加跨域
uCorsHadler(w, r)
json.NewEncoder(w).Encode(sysresp)
}
// 系统监控
func SysMonitorOd(w http.ResponseWriter, r *http.Request) {
// 磁盘容量信息
diskInfo, err := disk.Usage("/")

21
aufs/db/servDb.go

@ -43,12 +43,12 @@ func AddServerInfo(info *StServerInfo) error {
}
// 查询所有的记录
func GetlScList() (sclist []StServerInfo) {
func GetlScList(status int) (sclist []StServerInfo) {
// 结果集
sclist = make([]StServerInfo, 0)
// 查询语句
rows, err := db.Query("SELECT * FROM sc_server")
rows, err := db.Query("SELECT * FROM sc_server WHERE status = ?", status)
//
if err != nil {
@ -144,35 +144,34 @@ func DeleteServerInfo(id string) error {
}
// 获取所有服务器信息
func GetAllServerInfo() ([]*StServerInfo, error) {
func GetAllServerInfo() (infos []StServerInfo) {
// 查询语句
stmt, err := db.Prepare("SELECT id, addr, port, token FROM s_info")
stmt, err := db.Prepare("SELECT id, scname, addr, port, token FROM sc_server")
if err != nil {
return nil, err
return nil
}
defer stmt.Close()
// 执行查询语句
rows, err := stmt.Query()
if err != nil {
return nil, err
return nil
}
defer rows.Close()
// 定义一个结构体变量
var info StServerInfo
// 定义一个切片变量
var infos []*StServerInfo
// 遍历查询结果
for rows.Next() {
// 扫描查询结果
err = rows.Scan(&info.Id, &info.Addr, &info.Port, &info.Token)
if err != nil {
return nil, err
return nil
}
// 追加到切片变量
infos = append(infos, &info)
infos = append(infos, info)
}
// 返回切片变量
return infos, nil
return infos
}
// 检查服务器是否存在

BIN
aufs/ups.db

Binary file not shown.
Loading…
Cancel
Save