diff --git a/ee/ee_controllers/metrics.go b/ee/ee_controllers/metrics.go index 5479103b..862351a7 100644 --- a/ee/ee_controllers/metrics.go +++ b/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}", logic.SecurityCheck(true, http.HandlerFunc(getNetworkNodesMetrics))).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 @@ -96,8 +96,8 @@ func getNetworkExtMetrics(w http.ResponseWriter, r *http.Request) { return } - networkMetrics := models.NetworkMetrics{} - networkMetrics.Nodes = make(models.MetricsMap) + networkMetrics := models.Metrics{} + networkMetrics.Connectivity = make(map[string]models.Metric) for i := range ingresses { 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 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) 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 diff --git a/logic/metrics.go b/logic/metrics.go index fed3ac75..aff27f48 100644 --- a/logic/metrics.go +++ b/logic/metrics.go @@ -2,7 +2,6 @@ package logic import ( "encoding/json" - "time" "github.com/gravitl/netmaker/database" "github.com/gravitl/netmaker/models" @@ -74,8 +73,7 @@ func CollectServerMetrics(serverID string, networkNodes []models.Node) *models.M for i := range clients { for j := range peers { 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 { newServerMetrics.Connectivity[clients[i].ClientID] = models.Metric{ NodeName: clients[i].ClientID, diff --git a/mq/handlers.go b/mq/handlers.go index 1843c521..e0ec813f 100644 --- a/mq/handlers.go +++ b/mq/handlers.go @@ -238,6 +238,12 @@ func updateNodeMetrics(currentNode *models.Node, newMetrics *models.Metrics) boo // associate ext clients with IDs for i := range attachedClients { 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.IsServer = "no" delete(newMetrics.Connectivity, attachedClients[i].PublicKey)