Browse Source

rough draft

0xdcarns 2 years ago
parent
commit
13c3b564a1
3 changed files with 12 additions and 8 deletions
  1. 5 5
      ee/ee_controllers/metrics.go
  2. 1 3
      logic/metrics.go
  3. 6 0
      mq/handlers.go

+ 5 - 5
ee/ee_controllers/metrics.go

@@ -15,7 +15,7 @@ func MetricHandlers(r *mux.Router) {
 	r.HandleFunc("/api/metrics/{network}/{nodeid}", logic.SecurityCheck(true, http.HandlerFunc(getNodeMetrics))).Methods("GET")
 	r.HandleFunc("/api/metrics/{network}/{nodeid}", logic.SecurityCheck(true, http.HandlerFunc(getNodeMetrics))).Methods("GET")
 	r.HandleFunc("/api/metrics/{network}", logic.SecurityCheck(true, http.HandlerFunc(getNetworkNodesMetrics))).Methods("GET")
 	r.HandleFunc("/api/metrics/{network}", logic.SecurityCheck(true, http.HandlerFunc(getNetworkNodesMetrics))).Methods("GET")
 	r.HandleFunc("/api/metrics", logic.SecurityCheck(true, http.HandlerFunc(getAllMetrics))).Methods("GET")
 	r.HandleFunc("/api/metrics", logic.SecurityCheck(true, http.HandlerFunc(getAllMetrics))).Methods("GET")
-	r.HandleFunc("/api/metrics-ext/{network}", logic.SecurityCheck(true, http.HandlerFunc(getAllMetrics))).Methods("GET")
+	r.HandleFunc("/api/metrics-ext/{network}", logic.SecurityCheck(true, http.HandlerFunc(getNetworkExtMetrics))).Methods("GET")
 }
 }
 
 
 // get the metrics of a given node
 // get the metrics of a given node
@@ -96,8 +96,8 @@ func getNetworkExtMetrics(w http.ResponseWriter, r *http.Request) {
 		return
 		return
 	}
 	}
 
 
-	networkMetrics := models.NetworkMetrics{}
-	networkMetrics.Nodes = make(models.MetricsMap)
+	networkMetrics := models.Metrics{}
+	networkMetrics.Connectivity = make(map[string]models.Metric)
 
 
 	for i := range ingresses {
 	for i := range ingresses {
 		id := ingresses[i].ID
 		id := ingresses[i].ID
@@ -115,14 +115,14 @@ func getNetworkExtMetrics(w http.ResponseWriter, r *http.Request) {
 			}
 			}
 			// if metrics for that client have been reported, append them
 			// if metrics for that client have been reported, append them
 			if len(ingressMetrics.Connectivity[clients[j].ClientID].NodeName) > 0 {
 			if len(ingressMetrics.Connectivity[clients[j].ClientID].NodeName) > 0 {
-				networkMetrics.Nodes[clients[j].ClientID] = *ingressMetrics
+				networkMetrics.Connectivity[clients[j].ClientID] = ingressMetrics.Connectivity[clients[j].ClientID]
 			}
 			}
 		}
 		}
 	}
 	}
 
 
 	logger.Log(1, r.Header.Get("user"), "fetched ext client metrics for network", network)
 	logger.Log(1, r.Header.Get("user"), "fetched ext client metrics for network", network)
 	w.WriteHeader(http.StatusOK)
 	w.WriteHeader(http.StatusOK)
-	json.NewEncoder(w).Encode(networkMetrics)
+	json.NewEncoder(w).Encode(networkMetrics.Connectivity)
 }
 }
 
 
 // get Metrics of all nodes on server, lots of data
 // get Metrics of all nodes on server, lots of data

+ 1 - 3
logic/metrics.go

@@ -2,7 +2,6 @@ package logic
 
 
 import (
 import (
 	"encoding/json"
 	"encoding/json"
-	"time"
 
 
 	"github.com/gravitl/netmaker/database"
 	"github.com/gravitl/netmaker/database"
 	"github.com/gravitl/netmaker/models"
 	"github.com/gravitl/netmaker/models"
@@ -74,8 +73,7 @@ func CollectServerMetrics(serverID string, networkNodes []models.Node) *models.M
 				for i := range clients {
 				for i := range clients {
 					for j := range peers {
 					for j := range peers {
 						if clients[i].PublicKey == peers[j].PublicKey.String() {
 						if clients[i].PublicKey == peers[j].PublicKey.String() {
-							if peers[j].LastHandshakeTime.Before(time.Now().Add(-(time.Minute * 3))) &&
-								peers[j].ReceiveBytes > 0 &&
+							if peers[j].ReceiveBytes > 0 &&
 								peers[j].TransmitBytes > 0 {
 								peers[j].TransmitBytes > 0 {
 								newServerMetrics.Connectivity[clients[i].ClientID] = models.Metric{
 								newServerMetrics.Connectivity[clients[i].ClientID] = models.Metric{
 									NodeName:      clients[i].ClientID,
 									NodeName:      clients[i].ClientID,

+ 6 - 0
mq/handlers.go

@@ -238,6 +238,12 @@ func updateNodeMetrics(currentNode *models.Node, newMetrics *models.Metrics) boo
 		// associate ext clients with IDs
 		// associate ext clients with IDs
 		for i := range attachedClients {
 		for i := range attachedClients {
 			extMetric := newMetrics.Connectivity[attachedClients[i].PublicKey]
 			extMetric := newMetrics.Connectivity[attachedClients[i].PublicKey]
+			if len(extMetric.NodeName) == 0 { // cover server clients
+				extMetric = newMetrics.Connectivity[attachedClients[i].ClientID]
+				if extMetric.TotalReceived > 0 && extMetric.TotalSent > 0 {
+					extMetric.Connected = true
+				}
+			}
 			extMetric.NodeName = attachedClients[i].ClientID
 			extMetric.NodeName = attachedClients[i].ClientID
 			extMetric.IsServer = "no"
 			extMetric.IsServer = "no"
 			delete(newMetrics.Connectivity, attachedClients[i].PublicKey)
 			delete(newMetrics.Connectivity, attachedClients[i].PublicKey)