Sfoglia il codice sorgente

Feature #TASK_QT-29889 【印尼-Telkom-POC】向doop注册app信息,临时处理Doop不能展示端到端的问题

Tom 7 mesi fa
parent
commit
64f08578fa

+ 6 - 4
flags/flags.go

@@ -39,10 +39,10 @@ var (
 	DisableL7Tracing  = kingpin.Flag("disable-l7-tracing", "Disable L7 tracing").Default("false").Envar("DISABLE_L7_TRACING").Bool()
 
 	ExternalNetworksWhitelist = kingpin.
-		Flag("track-public-network", "Allow track connections to the specified IP networks, all private networks are allowed by default (e.g., Y.Y.Y.Y/mask)").
-		Envar("TRACK_PUBLIC_NETWORK").
-		Default("0.0.0.0/0").
-		Strings()
+					Flag("track-public-network", "Allow track connections to the specified IP networks, all private networks are allowed by default (e.g., Y.Y.Y.Y/mask)").
+					Envar("TRACK_PUBLIC_NETWORK").
+					Default("0.0.0.0/0").
+					Strings()
 	EphemeralPortRange = kingpin.Flag("ephemeral-port-range", "Destination and Listen TCP ports from this range will be skipped").Default("").Envar("EPHEMERAL_PORT_RANGE").String()
 
 	Provider          = kingpin.Flag("provider", "`provider` label for `node_cloud_info` metric").Envar("PROVIDER").String()
@@ -76,6 +76,8 @@ var (
 	// 端口白名单配置
 	MysqlPortWhitelist   = kingpin.Flag("mysql-ports", "Comma-separated list of ports to identify as MySQL").Envar("MYSQL_PORTS").Default("").String()
 	MariadbPortWhitelist = kingpin.Flag("mariadb-ports", "Comma-separated list of ports to identify as MariaDB").Envar("MARIADB_PORTS").Default("").String()
+	//APP注册到DOOP
+	RegisterAppToDoop = kingpin.Flag("register-app-to-doop", "Register the app-info to the doop").Default("false").Envar("REGISTER_APP_TO_DOOP").Bool()
 )
 
 var AgentName = "euspace"

+ 2 - 0
manifests/amd64/cloudwise-euspace-k8s/cloudwise-euspace-ds.yaml

@@ -82,6 +82,8 @@ spec:
               valueFrom:
                 fieldRef:
                   fieldPath: status.hostIP
+            - name: REGISTER_APP_TO_DOOP
+              value: 'true'
       volumes:
         - name: sys-fs-cgroup
           hostPath:

+ 23 - 2
utils/worker/serverWorker.go

@@ -4,6 +4,7 @@ import (
 	"encoding/json"
 	"fmt"
 	"net/http"
+	"strings"
 	"sync"
 
 	"github.com/coroot/coroot-node-agent/flags"
@@ -23,8 +24,9 @@ const (
 	reportTaskResultModel
 	installReportModel
 
-	urlModel  = "%s/api/ext/gaia/daemon/%s"
-	urlModel_ = "%s/api/ext/gaia/daemon/%s/%s"
+	urlModel       = "%s/api/ext/gaia/daemon/%s"
+	urlModel_      = "%s/api/ext/gaia/daemon/%s/%s"
+	doopUriKeyword = "doop-agent-api"
 )
 
 type ServerWorker interface {
@@ -114,6 +116,25 @@ func (w *ServerHTTPWorker) RegisterApp(request RegisterAppReq) error {
 		log.WithError(err).Errorf("[server register] Failed RegisterApp request:%v.", utils.ToString(request))
 		return err
 	}
+
+	if *flags.RegisterAppToDoop {
+		if len(w.proxyClient.Endpoints) > 0 {
+			endpointUrl := w.proxyClient.Endpoints[0].Url
+			if !strings.Contains(endpointUrl, doopUriKeyword) {
+				doopUriPrefix := "/" + doopUriKeyword
+				if strings.HasSuffix(endpointUrl, "/") {
+					doopUriPrefix = doopUriKeyword
+				}
+				// 再次调用注册接口,向doop注册app信息
+				_, err := w.requestServer(doopUriPrefix+"/v2/app/create", request)
+				if err != nil {
+					log.WithError(err).Errorf("[server register] Failed RegisterApp to DOOP request:%v.", utils.ToString(request))
+					return err
+				}
+			}
+		}
+	}
+
 	return nil
 }