sunty
2019-10-29 aa6a107abc0e321f2adb454116286c66e893ebff
add es cluster manger
1个文件已修改
56 ■■■■■ 已修改文件
controllers/es.go 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
controllers/es.go
@@ -2,9 +2,12 @@
import (
    "basic.com/valib/logger.git"
    "bytes"
    "encoding/json"
    "fmt"
    "github.com/gin-gonic/gin"
    "math/rand"
    "os/exec"
    "strconv"
    "strings"
    "webserver/cache"
@@ -153,3 +156,56 @@
    }
    return dataSource
}
func GetEsClusterInfo(ip string) ([]map[string]interface{}, error){
    serverIp := ""
    if ip != "" {
        serverIp = ip
    } else {
        localConf, err2 := cache.GetServerInfo()
        if err2 !=nil || localConf.ServerIp == "" {
            logger.Debug("localConfig is wrong!!!")
            return nil,err2
        }
        serverIp = localConf.ServerIp
    }
    str := "curl "+serverIp+":9200/_cat/nodes?v"
    cmd := exec.Command("sh","-c",str)
    var out bytes.Buffer
    cmd.Stdout = &out
    err := cmd.Run()
    if err != nil {
        return nil,err
    }
    infos := strings.Split(string(out.String()),"\n")
    totalNodes := len(infos)-1
    var nodeInfos []map[string]interface{}
    for i:=1;i<totalNodes ;i++  {
        nodeInfo :=  make(map[string]interface{})
        context := strings.Fields(infos[i])
        nodeIp := context[0]
        Type := context[8]
        var nodeType string
        if Type == "*"{
            nodeType = "主节点"
        }
        if Type == "-"{
            nodeType = "从节点"
        }
        nodeInfo["ip"] = nodeIp
        nodeInfo["nodeType"] = nodeType
        url := "http://"+nodeIp+":9200"
        buf := esutil.httpGet(url)
        var info interface{}
        json.Unmarshal(buf,&info)
        tmpInfo := info.(map[string]interface{})
        tmpName := tmpInfo["name"].(string)
        versinInfo := tmpInfo["version"].(map[string]interface{})
        buildDate := versinInfo["build_date"].(string)
        nodeInfo["name"] = tmpName
        nodeInfo["buildDate"] = buildDate
        nodeInfos = append(nodeInfos, nodeInfo)
    }
    return nodeInfos,nil
}