Commit f9a22b5b authored by szh's avatar szh

添加服务器状态接口

parent 01ac85bc
...@@ -255,7 +255,28 @@ response ...@@ -255,7 +255,28 @@ response
} }
``` ```
### 获取树莓派服务器相关信息 内网接口
URL /pai/serverstatus
请求方法 post json
|参数|类型|是否必填|说明|
|-|-|-|-|
```
response
{
"code": 200,
"msg": "ok",
"data": {
"disks":[]
"nodeProcesssInfo":{}
"error":
}
}
```
## 节点部署: ## 节点部署:
监控程序代码默认放在/home/pi目录下面 监控程序代码默认放在/home/pi目录下面
......
...@@ -16,6 +16,8 @@ import ( ...@@ -16,6 +16,8 @@ import (
"strings" "strings"
"time" "time"
"io/ioutil" "io/ioutil"
"chain33-pai/pkg/util"
"chain33-pai/pkg/e"
) )
type ProcessInfo struct { type ProcessInfo struct {
...@@ -34,20 +36,21 @@ type updateInfo struct { ...@@ -34,20 +36,21 @@ type updateInfo struct {
type Server struct { type Server struct {
Disks []*Disk //硬盘信息 Disks []*Disk //硬盘信息
NodeProcesssInfo ProcessInfo //节点信息 NodeProcesssInfo ProcessInfo //节点信息
Error error //错误信息 Error string //错误信息
} }
type Disk struct { type Disk struct {
UseP string //硬盘使用率
Filesystem string Filesystem string
Type string //硬盘格式 Type string //硬盘格式
SizeK string //硬盘大小 SizeK string //硬盘大小
Use string
} }
var BityuanFlag bool //true表示有任务在占用,禁止其他重复操作 var BityuanFlag bool //true表示有任务在占用,禁止其他重复操作
var Bityuan ProcessInfo var Bityuan ProcessInfo
var UpdateInfo updateInfo var UpdateInfo updateInfo
var NodeError error var NodeError error
var ServerStatus Server
func getProcessInfo(keyfile string)string{ func getProcessInfo(keyfile string)string{
var buffer bytes.Buffer // var buffer bytes.Buffer //
...@@ -109,6 +112,7 @@ func getWalletInfo()error{ ...@@ -109,6 +112,7 @@ func getWalletInfo()error{
Bityuan.Pid=record[1] Bityuan.Pid=record[1]
Bityuan.Path=record[10] Bityuan.Path=record[10]
Bityuan.PName=path.Base(Bityuan.Path) Bityuan.PName=path.Base(Bityuan.Path)
ServerStatus.NodeProcesssInfo = Bityuan
} }
return nil return nil
} }
...@@ -234,6 +238,25 @@ func MonitorServer() error { ...@@ -234,6 +238,25 @@ func MonitorServer() error {
return err return err
} }
log.Println("MonitorServer",string(content)) 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 return nil
} }
......
...@@ -15,6 +15,7 @@ const ( ...@@ -15,6 +15,7 @@ const (
RM_ERROR = 5008 RM_ERROR = 5008
MV_ERROR = 5009 MV_ERROR = 5009
TRY_LATER = 5010 TRY_LATER = 5010
DF_ERROR = 5011
ERROR_EXIST_TAG = 10001 ERROR_EXIST_TAG = 10001
ERROR_EXIST_TAG_FAIL = 10002 ERROR_EXIST_TAG_FAIL = 10002
ERROR_NOT_EXIST_TAG = 10003 ERROR_NOT_EXIST_TAG = 10003
......
...@@ -10,6 +10,7 @@ var MsgFlags = map[int]string{ ...@@ -10,6 +10,7 @@ var MsgFlags = map[int]string{
RM_ERROR: "删除文件出错", RM_ERROR: "删除文件出错",
MV_ERROR: "移动文件出错", MV_ERROR: "移动文件出错",
TRY_LATER: "其他任务进行中,稍后再试", TRY_LATER: "其他任务进行中,稍后再试",
DF_ERROR: "df命令执行异常",
ERROR_EXIST_TAG: "已存在该标签名称", ERROR_EXIST_TAG: "已存在该标签名称",
ERROR_EXIST_TAG_FAIL: "获取已存在标签失败", ERROR_EXIST_TAG_FAIL: "获取已存在标签失败",
ERROR_NOT_EXIST_TAG: "该标签不存在", ERROR_NOT_EXIST_TAG: "该标签不存在",
......
...@@ -6,6 +6,8 @@ import ( ...@@ -6,6 +6,8 @@ import (
"errors" "errors"
"net/http" "net/http"
"io/ioutil" "io/ioutil"
"strings"
"regexp"
) )
// Setup Initialize the util // Setup Initialize the util
...@@ -51,3 +53,18 @@ func GetExternal() (string,error) { ...@@ -51,3 +53,18 @@ func GetExternal() (string,error) {
content,_ := ioutil.ReadAll(resp.Body) content,_ := ioutil.ReadAll(resp.Body)
return string(content),nil 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) { ...@@ -178,3 +178,8 @@ func GetExternal(c *gin.Context) {
} }
appG.Response(http.StatusOK, e.SUCCESS, ip) 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 { ...@@ -33,7 +33,8 @@ func InitRouter() *gin.Engine {
apiv1.POST("/dpercent",v1.GetDPercent) apiv1.POST("/dpercent",v1.GetDPercent)
//获取外网ip //获取外网ip
apiv1.POST("/external",v1.GetExternal) apiv1.POST("/external",v1.GetExternal)
// //服务器状态
apiv1.POST("/serverstatus",v1.GetServerStatus)
return r 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