mirror of
https://github.com/gravitl/netmaker.git
synced 2025-09-08 14:15:25 +08:00
fix(NET-1009): fix client connectivity metrics data (#2858)
This commit is contained in:
parent
76a6ee7434
commit
4871a0dd1c
2 changed files with 13 additions and 21 deletions
|
@ -2,9 +2,11 @@ package controllers
|
|||
|
||||
import (
|
||||
"encoding/json"
|
||||
proLogic "github.com/gravitl/netmaker/pro/logic"
|
||||
"net/http"
|
||||
|
||||
proLogic "github.com/gravitl/netmaker/pro/logic"
|
||||
"golang.org/x/exp/slog"
|
||||
|
||||
"github.com/gorilla/mux"
|
||||
"github.com/gravitl/netmaker/database"
|
||||
"github.com/gravitl/netmaker/logger"
|
||||
|
@ -122,12 +124,13 @@ func getNetworkExtMetrics(w http.ResponseWriter, r *http.Request) {
|
|||
continue
|
||||
}
|
||||
// if metrics for that client have been reported, append them
|
||||
if len(ingressMetrics.Connectivity[clients[j].ClientID].NodeName) > 0 {
|
||||
if _, ok := ingressMetrics.Connectivity[clients[j].ClientID]; ok {
|
||||
networkMetrics.Connectivity[clients[j].ClientID] = ingressMetrics.Connectivity[clients[j].ClientID]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
slog.Debug("sending collected client metrics", "metrics", networkMetrics.Connectivity)
|
||||
logger.Log(1, r.Header.Get("user"), "fetched ext client metrics for network", network)
|
||||
w.WriteHeader(http.StatusOK)
|
||||
json.NewEncoder(w).Encode(networkMetrics.Connectivity)
|
||||
|
|
|
@ -104,7 +104,6 @@ func MQUpdateMetrics(client mqtt.Client, msg mqtt.Message) {
|
|||
}
|
||||
|
||||
func updateNodeMetrics(currentNode *models.Node, newMetrics *models.Metrics) {
|
||||
|
||||
oldMetrics, err := logic.GetMetrics(currentNode.ID.String())
|
||||
if err != nil {
|
||||
slog.Error("error finding old metrics for node", "id", currentNode.ID, "error", err)
|
||||
|
@ -121,21 +120,13 @@ func updateNodeMetrics(currentNode *models.Node, newMetrics *models.Metrics) {
|
|||
if newMetrics.Connectivity == nil {
|
||||
newMetrics.Connectivity = make(map[string]models.Metric)
|
||||
}
|
||||
if len(attachedClients) > 0 {
|
||||
// associate ext clients with IDs
|
||||
for i := range attachedClients {
|
||||
extMetric := newMetrics.Connectivity[attachedClients[i].PublicKey]
|
||||
if len(extMetric.NodeName) == 0 &&
|
||||
len(newMetrics.Connectivity[attachedClients[i].ClientID].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
|
||||
delete(newMetrics.Connectivity, attachedClients[i].PublicKey)
|
||||
newMetrics.Connectivity[attachedClients[i].ClientID] = extMetric
|
||||
}
|
||||
for i := range attachedClients {
|
||||
slog.Debug("[metrics] processing attached client", "client", attachedClients[i].ClientID, "public key", attachedClients[i].PublicKey)
|
||||
clientMetric := newMetrics.Connectivity[attachedClients[i].PublicKey]
|
||||
clientMetric.NodeName = attachedClients[i].ClientID
|
||||
newMetrics.Connectivity[attachedClients[i].ClientID] = clientMetric
|
||||
delete(newMetrics.Connectivity, attachedClients[i].PublicKey)
|
||||
slog.Debug("[metrics] attached client metric", "metric", clientMetric)
|
||||
}
|
||||
|
||||
// run through metrics for each peer
|
||||
|
@ -168,7 +159,5 @@ func updateNodeMetrics(currentNode *models.Node, newMetrics *models.Metrics) {
|
|||
|
||||
}
|
||||
|
||||
for k := range oldMetrics.Connectivity { // cleanup any left over data, self healing
|
||||
delete(newMetrics.Connectivity, k)
|
||||
}
|
||||
slog.Debug("[metrics] node metrics data", "node ID", currentNode.ID, "metrics", newMetrics)
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue