From a1ef2d42d320f075c75e8cef52a879114441c103 Mon Sep 17 00:00:00 2001 From: sunty <1172534965@qq.com> Date: 星期三, 30 十月 2019 15:54:07 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- controllers/es.go | 118 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 113 insertions(+), 5 deletions(-) diff --git a/controllers/es.go b/controllers/es.go index a2c591b..d67a80b 100644 --- a/controllers/es.go +++ b/controllers/es.go @@ -1,11 +1,13 @@ package controllers import ( - "basic.com/dbapi.git" "basic.com/valib/logger.git" + "bytes" + "encoding/json" "fmt" "github.com/gin-gonic/gin" "math/rand" + "os/exec" "strconv" "strings" "webserver/cache" @@ -106,16 +108,14 @@ //浣跨敤es搴曞眰鏈哄埗澶勭悊鍒嗛〉 //璇锋眰澶� localConf, err2 := cache.GetServerInfo() - if err2 !=nil || localConf.AlarmIp == "" { + if err2 !=nil || localConf.AlarmIp == "" || localConf.ServerId == "" { logger.Debug("localConfig is wrong!!!") return nil } url := "http://" + localConf.AlarmIp + ":" + strconv.Itoa(int(localConf.AlarmPort)) + "/" + index + "/_search?search_type=dfs_query_then_fetch" - var setApi dbapi.SysSetApi - _, sysconf := setApi.GetServerInfo() - analyServerFilterStr := "{\"term\":{\"analyServerId\":\"" + sysconf.ServerId + "\"}}," + analyServerFilterStr := "{\"term\":{\"analyServerId\":\"" + localConf.ServerId + "\"}}," //璇锋眰浣� prama := "{\"from\":\"" + esFrom + "\",\"size\":\"" + esSize + "\"," + @@ -156,3 +156,111 @@ } 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 +} + +func AddEsCluster(hosts []string) (string){ + msg := "鍔犲叆澶辫触" + for i,val := range hosts{ + val =val+":9300" + hosts[i] = val + } + verificationHosts := "[\""+strings.Replace(strings.Trim(fmt.Sprint(hosts), "[]"), " ", "\",\"", -1)+"\"]" + for i,val := range hosts{ + val ="\\\""+val+"\\\"" + hosts[i] = val + } + oldUnicastHost := "\\[\\\"0.0.0.0:9300\\\"\\]" + newUnicastHost := strings.Replace(strings.Trim(fmt.Sprint(hosts), ""), " ", ",", -1) + str := "sed -ie 's/discovery.zen.ping.unicast.hosts: "+oldUnicastHost+"/discovery.zen.ping.unicast.hosts: "+newUnicastHost+"/g' /opt/elasticsearch/config/elasticsearch.yml" + fmt.Println(str) + cmd := exec.Command("sh","-c",str) + var out bytes.Buffer + cmd.Stdout = &out + err := cmd.Run() + if err != nil { + + } + res := getUnicastHosts() + fmt.Println("res: ",res) + res1 := "discovery.zen.ping.unicast.hosts: "+verificationHosts+"" + fmt.Println("res1: ",res1) + if res == res1{ + msg = "鍔犲叆鎴愬姛" + } + str2 := "echo \"node.master: true\" >> /opt/elasticsearch/config/elasticsearch.yml" + cmd2 := exec.Command("sh","-c",str2) + var out2 bytes.Buffer + cmd2.Stdout = &out2 + err2 := cmd2.Run() + if err2 != nil { + msg = "鍔犲叆澶辫触" + } + return msg + +} + +func getUnicastHosts() (string){ + str := "cat /opt/elasticsearch/config/elasticsearch.yml | grep discovery.zen.ping.unicast.hosts:" + cmd := exec.Command("sh","-c",str) + var out bytes.Buffer + cmd.Stdout = &out + err := cmd.Run() + if err != nil { + + } + infos := strings.Split(string(out.String()),"\n")[0] + return infos + +} -- Gitblit v1.8.0