rough draft

This commit is contained in:
0xdcarns 2022-10-11 15:30:55 -04:00
parent b7a24b98ba
commit 13c3b564a1
3 changed files with 12 additions and 8 deletions

View file

@ -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

View file

@ -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,

View file

@ -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)