mirror of
https://github.com/gravitl/netmaker.git
synced 2025-09-06 05:04:27 +08:00
rough draft
This commit is contained in:
parent
b7a24b98ba
commit
13c3b564a1
3 changed files with 12 additions and 8 deletions
|
@ -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
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Add table
Reference in a new issue