瀏覽代碼

Fixed #TASK_QT-9810 默认开启注册主机

Carl 1 年之前
父節點
當前提交
821053ae0d

+ 1 - 1
containers/apm_register_app.go

@@ -17,7 +17,7 @@ func (c *Container) RegisterAppInfo(r *Registry, pid uint32) error {
 	originAppId := c.AppInfo.AppIdHash.IntVal
 	originInstanceId := c.AppInfo.InstanceIdHash.IntVal
 	whiteAppName := c.WhiteSettingInfo.AppName
-	reRegFlag := c.checkReRegTime(time.Minute)
+	reRegFlag := c.checkReRegTime(RegisterAppInterval)
 	if originAppName != whiteAppName || reRegFlag {
 		cl := "first "
 		if reRegFlag {

+ 19 - 2
containers/apm_register_host.go

@@ -3,7 +3,9 @@ package containers
 import (
 	"fmt"
 	. "github.com/coroot/coroot-node-agent/utils/modelse"
+	klog "github.com/sirupsen/logrus"
 	"runtime"
+	"time"
 )
 
 func (r *Registry) RegisterHost() error {
@@ -16,13 +18,14 @@ func (r *Registry) RegisterHost() error {
 		LicenseKey:    nodeInfo.LicenseKey,
 		HostId:        nodeInfo.HostID,
 		HostIp:        nodeInfo.HostIp,
-		HostName:      "smartagent",
+		HostName:      nodeInfo.Hostname,
 		HostNameAlias: nodeInfo.Hostname,
 		HostType:      1,
-		Version:       "0.0.1",
+		Version:       nodeInfo.AgentVersion,
 		SysVersion:    runtime.GOOS + " " + runtime.GOARCH,
 		SystemUuid:    nodeInfo.SystemUUID,
 		Ebpf:          true,
+		AgentType:     2020,
 	}
 	err := r.connServer.RegisterHost(req)
 	if err != nil {
@@ -30,3 +33,17 @@ func (r *Registry) RegisterHost() error {
 	}
 	return nil
 }
+
+func (r *Registry) TaskRegisterHost() {
+	gcTicker := time.NewTicker(RegisterHostInterval)
+	defer gcTicker.Stop()
+	for {
+		select {
+		case <-gcTicker.C:
+			err := r.RegisterHost()
+			if err != nil {
+				klog.WithError(err).Error("[task] Failed to register host")
+			}
+		}
+	}
+}

+ 5 - 3
containers/container.go

@@ -34,9 +34,11 @@ import (
 )
 
 var (
-	gcInterval         = 10 * time.Second
-	AllAppInfoInterval = 1 * time.Minute
-	pingTimeout        = 300 * time.Millisecond
+	gcInterval           = 10 * time.Second
+	AllAppInfoInterval   = 1 * time.Minute
+	RegisterAppInterval  = 1 * time.Minute
+	RegisterHostInterval = 10 * time.Minute
+	pingTimeout          = 300 * time.Millisecond
 )
 
 type ContainerID string

+ 1 - 0
containers/registry.go

@@ -163,6 +163,7 @@ func NewRegistry(reg prometheus.Registerer, kernelVersion string, nodeInfo *Node
 			klog.WithError(err).Errorf("Failed Register Host.")
 			return nil, err
 		}
+		try.Go(r.TaskRegisterHost, CatchFn)
 	}
 
 	if err = reg.Register(r); err != nil {

+ 1 - 1
flags/flags.go

@@ -25,7 +25,7 @@ var (
 	EbpfFilePath        = kingpin.Flag("ebpf-path", "Set ebpf file path").Envar("EBPF_FILE").Default("").String()
 	CommonIni           = kingpin.Flag("common.ini", "Set ebpf file path").Envar("COMMON_INI").Default("/opt/cloudwise/omniagent/conf/common.ini").String()
 	ServerPrefix        = kingpin.Flag("server-prefix", "server-prefix").Envar("SERVER_PREFIX").Default("").String()
-	DisableRegisterHost = kingpin.Flag("disable-reg-host", "Disable reg host").Default("true").Envar("DISABLE_REG_HOST").Bool()
+	DisableRegisterHost = kingpin.Flag("disable-reg-host", "Disable reg host").Default("false").Envar("DISABLE_REG_HOST").Bool()
 	// agent
 	DisableE2ETracing   = kingpin.Flag("disable-e2e-tracing", "Disable e2e tracing").Default("true").Envar("DISABLE_E2E_TRACING").Bool()
 	DisableStackTracing = kingpin.Flag("disable-stack-tracing", "Disable stack tracing").Default("true").Envar("DISABLE_STACK_TRACING").Bool()

+ 18 - 18
main.go

@@ -165,7 +165,7 @@ func main() {
 	log.Infoln("kernel version:", kv)
 
 	// 构建节点信息
-	nodeInfo, err := node.NewNodeInfo(hostname, kv)
+	nodeInfo, err := node.NewNodeInfo(hostname, kv, version)
 	if err != nil || nodeInfo == nil {
 		log.Fatalln(err)
 	}
@@ -180,9 +180,9 @@ func main() {
 
 	whitelistNodeExternalNetworks()
 
-	machineId := nodeInfo.GetNodeInfo().SystemUUID
-	tracing.Init(machineId, hostname, version)
-	logs.Init(machineId, hostname, version)
+	SystemUUID := nodeInfo.GetNodeInfo().SystemUUID
+	tracing.Init(SystemUUID, hostname, version)
+	logs.Init(SystemUUID, hostname, version)
 
 	if *flags.RunInContainer {
 		_, err = kube.NewKubeClient()
@@ -192,7 +192,7 @@ func main() {
 	}
 
 	registry := prometheus.NewRegistry()
-	registerer := prometheus.WrapRegistererWith(prometheus.Labels{"machine_id": machineId}, registry)
+	registerer := prometheus.WrapRegistererWith(prometheus.Labels{"system_uuid": SystemUUID}, registry)
 
 	registerer.MustRegister(info("node_agent_info", version))
 
@@ -275,7 +275,7 @@ func main() {
 				metric.GetName() != "process_net_tcp_bytes_sent_total" &&
 				metric.GetName() != "process_net_tcp_data_latency_time" &&
 				metric.GetName() != "process_net_tcp_flow_duration_time" &&
-				metric.GetName() != "process_net_tcp_connection_establish_time"{
+				metric.GetName() != "process_net_tcp_connection_establish_time" {
 				continue
 			}
 
@@ -326,9 +326,9 @@ func main() {
 		// 创建请求
 		urlRoute := "/api/v2/ebpf/receive"
 
-		log.Infoln("send url is ", *flags.DataServer + *flags.ServerPrefix  + urlRoute)
+		log.Infoln("send url is ", *flags.DataServer+*flags.ServerPrefix+urlRoute)
 		// req, err := http.NewRequest("POST", "http://10.0.7.115:18080/api/v2/ebpf/receive", bytes.NewBuffer(jsonData))
-		req, err := http.NewRequest("POST", *flags.DataServer + *flags.ServerPrefix  + urlRoute, bytes.NewBuffer(jsonData))
+		req, err := http.NewRequest("POST", *flags.DataServer+*flags.ServerPrefix+urlRoute, bytes.NewBuffer(jsonData))
 		if err != nil {
 			fmt.Println("Error:", err)
 			return
@@ -353,16 +353,16 @@ func main() {
 		}
 		defer response.Body.Close()
 
-		// 读取响应内容  
-		responseData, err := io.ReadAll(response.Body)  
-		if err != nil {  
-			log.Infoln("Error:", err)  
-			return  
-		}  
+		// 读取响应内容
+		responseData, err := io.ReadAll(response.Body)
+		if err != nil {
+			log.Infoln("Error:", err)
+			return
+		}
 
-		// 输出响应状态码和响应正文  
-		log.Infoln("Status Code:", response.StatusCode)  
-		log.Infoln("Response Body:", string(responseData)) 
+		// 输出响应状态码和响应正文
+		log.Infoln("Status Code:", response.StatusCode)
+		log.Infoln("Response Body:", string(responseData))
 	}
 	sendNetDataDone := make(chan struct{})
 	go func() {
@@ -516,7 +516,7 @@ func main() {
 		fmt.Println("Response Body:", string(responseData))
 	}
 
-	if err := prom.StartAgent(machineId); err != nil {
+	if err := prom.StartAgent(SystemUUID); err != nil {
 		log.Fatalln(err)
 	}
 

+ 5 - 3
node/apm_host_info.go

@@ -12,8 +12,8 @@ import (
 	"strings"
 )
 
-func NewNodeInfo(name, kv string) (*NodeInfoT, error) {
-	ni, err := newNodeInfoFromCommonIni(name, kv)
+func NewNodeInfo(name, kv, version string) (*NodeInfoT, error) {
+	ni, err := newNodeInfoFromCommonIni(name, kv, version)
 	if err != nil {
 		klog.Errorf("Failed to create node info from common ini: %v", err)
 	} else {
@@ -34,13 +34,14 @@ func NewNodeInfo(name, kv string) (*NodeInfoT, error) {
 		HostID:        utils.GetHostID(),
 		AccountID:     utils.GetAccountID(),
 		LicenseKey:    *flags.LicenseKey,
+		AgentVersion:  version,
 	}
 	utils.SaveNodeInfo(n)
 	klog.Infof("run standalone.")
 	return n, nil
 }
 
-func newNodeInfoFromCommonIni(name, kv string) (*NodeInfoT, error) {
+func newNodeInfoFromCommonIni(name, kv, version string) (*NodeInfoT, error) {
 	if *flags.CommonIni != "" {
 		iniData, err := ini.Load(*flags.CommonIni)
 		if err != nil {
@@ -72,6 +73,7 @@ func newNodeInfoFromCommonIni(name, kv string) (*NodeInfoT, error) {
 					HostID:        host_id,
 					AccountID:     accountId,
 					LicenseKey:    *flags.LicenseKey,
+					AgentVersion:  version,
 				}
 				utils.SaveNodeInfo(n)
 				return n, nil

+ 1 - 0
utils/modelse/models.go

@@ -109,6 +109,7 @@ type RegisterHostReq struct {
 	SysVersion    string `json:"sys_version"`
 	SystemUuid    string `json:"system_uuid"`
 	Ebpf          bool   `json:"ebpf"`
+	AgentType     int    `json:"agent_type"`
 }
 
 type RegisterAppReq struct {

+ 1 - 0
utils/modelse/node.go

@@ -17,6 +17,7 @@ type NodeInfoT struct {
 	AccountID     int          `json:"account_id"`
 	LicenseKey    string       `json:"license_key"`
 	Lock          sync.RWMutex `json:"lock,omitempty"`
+	AgentVersion  string       `json:"agent_version"`
 }
 
 type NodeInfoInterface interface {

+ 5 - 5
utils/worker/serverWorker.go

@@ -63,7 +63,7 @@ func (w *ServerHTTPWorker) GetCodeSetting(request CodeSettingReq) (CodeSettingRe
 	}
 	err = json.Unmarshal(result, &response)
 	if err != nil {
-		log.WithError(err).Errorf("[get GetCodeSetting] Failed get request:%v.", utils.ToString(request))
+		log.WithError(err).Errorf("[get GetCodeSetting] Failed GetCodeSetting request:%v.", utils.ToString(request))
 		return response, err
 	}
 	return response, nil
@@ -79,7 +79,7 @@ func (w *ServerHTTPWorker) PullAllAppInfo(request EbpfAppReq) (EbpfAppResp, erro
 	}
 	err = json.Unmarshal(result, &response)
 	if err != nil {
-		log.WithError(err).Errorf("[get all appinfo] Failed get request:%v.", utils.ToString(request))
+		log.WithError(err).Errorf("[get all appinfo] Failed PullAllAppInfo request:%v.", utils.ToString(request))
 		return response, err
 	}
 	return response, nil
@@ -90,7 +90,7 @@ func (w *ServerHTTPWorker) RegisterHost(request RegisterHostReq) error {
 	result, err := w.requestServer("/v2/app/registerHost", request)
 	log.Infof("[server register host] resp:%v.", string(result))
 	if err != nil {
-		log.WithError(err).Errorf("[server register] Failed RegisterApp request:%v.", utils.ToString(request))
+		log.WithError(err).Errorf("[server register] Failed RegisterHost request:%v.", utils.ToString(request))
 		return err
 	}
 	return nil
@@ -117,7 +117,7 @@ func (w *ServerHTTPWorker) WhiteList(request WhiteListReq) (WhiteData, error) {
 	}
 	err = json.Unmarshal(result, &response)
 	if err != nil {
-		log.WithError(err).Errorf("[server whitelist] Failed RegisterApp request:%v.", request.String())
+		log.WithError(err).Errorf("[server whitelist] Failed Pull WhiteList request:%v.", request.String())
 		return response, err
 	}
 	return response, nil
@@ -133,7 +133,7 @@ func (w *ServerHTTPWorker) WhiteListV2(request WhiteListReq) (WhiteDataV2, error
 	}
 	err = json.Unmarshal(result, &response)
 	if err != nil {
-		log.WithError(err).Errorf("[server whitelist] Failed RegisterApp request:%v.", request.String())
+		log.WithError(err).Errorf("[server whitelist] Failed Pull WhiteListV2 request:%v.", request.String())
 		return response, err
 	}
 	return response, nil