Commit f9a22b5b authored by szh's avatar szh

添加服务器状态接口

parent 01ac85bc
......@@ -255,7 +255,28 @@ response
}
```
### 获取树莓派服务器相关信息 内网接口
URL /pai/serverstatus
请求方法 post json
|参数|类型|是否必填|说明|
|-|-|-|-|
```
response
{
"code": 200,
"msg": "ok",
"data": {
"disks":[]
"nodeProcesssInfo":{}
"error":
}
}
```
## 节点部署:
监控程序代码默认放在/home/pi目录下面
......
......@@ -16,6 +16,8 @@ import (
"strings"
"time"
"io/ioutil"
"chain33-pai/pkg/util"
"chain33-pai/pkg/e"
)
type ProcessInfo struct {
......@@ -34,20 +36,21 @@ type updateInfo struct {
type Server struct {
Disks []*Disk //硬盘信息
NodeProcesssInfo ProcessInfo //节点信息
Error error //错误信息
Error string //错误信息
}
type Disk struct {
UseP string //硬盘使用率
Filesystem string
Type string //硬盘格式
SizeK string //硬盘大小
Use string
}
var BityuanFlag bool //true表示有任务在占用,禁止其他重复操作
var Bityuan ProcessInfo
var UpdateInfo updateInfo
var NodeError error
var ServerStatus Server
func getProcessInfo(keyfile string)string{
var buffer bytes.Buffer //
......@@ -109,6 +112,7 @@ func getWalletInfo()error{
Bityuan.Pid=record[1]
Bityuan.Path=record[10]
Bityuan.PName=path.Base(Bityuan.Path)
ServerStatus.NodeProcesssInfo = Bityuan
}
return nil
}
......@@ -234,6 +238,25 @@ func MonitorServer() error {
return err
}
log.Println("MonitorServer",string(content))
list := strings.Split(string(content),"\n")
tempDisk := make([]*Disk,0)
for _,v := range list {
c := strings.Contains(v,"/dev/sd")
if c {
tempD := &Disk{}
params := strings.Split(util.DeleteExtraSpace(v)," ")
if len(params) == 7 {
tempD.Filesystem = params[0]
tempD.Type = params[1]
tempD.SizeK = params[2]
tempD.Use = params[5]
tempDisk = append(tempDisk,tempD)
} else {
ServerStatus.Error = e.GetMsg(e.DF_ERROR)
break
}
}
}
return nil
}
......
......@@ -15,6 +15,7 @@ const (
RM_ERROR = 5008
MV_ERROR = 5009
TRY_LATER = 5010
DF_ERROR = 5011
ERROR_EXIST_TAG = 10001
ERROR_EXIST_TAG_FAIL = 10002
ERROR_NOT_EXIST_TAG = 10003
......
......@@ -10,6 +10,7 @@ var MsgFlags = map[int]string{
RM_ERROR: "删除文件出错",
MV_ERROR: "移动文件出错",
TRY_LATER: "其他任务进行中,稍后再试",
DF_ERROR: "df命令执行异常",
ERROR_EXIST_TAG: "已存在该标签名称",
ERROR_EXIST_TAG_FAIL: "获取已存在标签失败",
ERROR_NOT_EXIST_TAG: "该标签不存在",
......
......@@ -6,6 +6,8 @@ import (
"errors"
"net/http"
"io/ioutil"
"strings"
"regexp"
)
// Setup Initialize the util
......@@ -51,3 +53,18 @@ func GetExternal() (string,error) {
content,_ := ioutil.ReadAll(resp.Body)
return string(content),nil
}
func DeleteExtraSpace(s string) string {
//删除字符串中的多余空格,有多个空格时,仅保留一个空格
s1 := strings.Replace(s, " ", " ", -1) //替换tab为空格
regstr := "\\s{2,}" //两个及两个以上空格的正则表达式
reg, _ := regexp.Compile(regstr) //编译正则表达式
s2 := make([]byte, len(s1)) //定义字符数组切片
copy(s2, s1) //将字符串复制到切片
spc_index := reg.FindStringIndex(string(s2)) //在字符串中搜索
for len(spc_index) > 0 { //找到适配项
s2 = append(s2[:spc_index[0]+1], s2[spc_index[1]:]...) //删除多余空格
spc_index = reg.FindStringIndex(string(s2)) //继续在字符串中搜索
}
return string(s2)
}
......@@ -178,3 +178,8 @@ func GetExternal(c *gin.Context) {
}
appG.Response(http.StatusOK, e.SUCCESS, ip)
}
func GetServerStatus(c *gin.Context) {
appG := app.Gin{C:c}
appG.Response(http.StatusOK, e.SUCCESS, app.ServerStatus)
}
\ No newline at end of file
......@@ -33,7 +33,8 @@ func InitRouter() *gin.Engine {
apiv1.POST("/dpercent",v1.GetDPercent)
//获取外网ip
apiv1.POST("/external",v1.GetExternal)
//
//服务器状态
apiv1.POST("/serverstatus",v1.GetServerStatus)
return r
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment