Add posture checks metrics report (#1603)

This commit is contained in:
Maycon Santos 2024-02-21 15:16:43 +01:00 committed by GitHub
parent 8d9e1fed5f
commit d65602f904
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 65 additions and 25 deletions

View File

@ -157,31 +157,33 @@ func (w *Worker) generatePayload(apiKey string) pushPayload {
func (w *Worker) generateProperties() properties {
var (
uptime float64
accounts int
expirationEnabled int
users int
serviceUsers int
pats int
peers int
peersSSHEnabled int
setupKeysUsage int
ephemeralPeersSKs int
ephemeralPeersSKUsage int
activePeersLastDay int
osPeers map[string]int
userPeers int
rules int
rulesProtocol map[string]int
rulesDirection map[string]int
groups int
routes int
routesWithRGGroups int
nameservers int
uiClient int
version string
peerActiveVersions []string
osUIClients map[string]int
uptime float64
accounts int
expirationEnabled int
users int
serviceUsers int
pats int
peers int
peersSSHEnabled int
setupKeysUsage int
ephemeralPeersSKs int
ephemeralPeersSKUsage int
activePeersLastDay int
osPeers map[string]int
userPeers int
rules int
rulesProtocol map[string]int
rulesDirection map[string]int
rulesWithSrcPostureChecks int
postureChecks int
groups int
routes int
routesWithRGGroups int
nameservers int
uiClient int
version string
peerActiveVersions []string
osUIClients map[string]int
)
start := time.Now()
metricsProperties := make(properties)
@ -219,8 +221,13 @@ func (w *Worker) generateProperties() properties {
rulesDirection["oneway"]++
}
}
if len(policy.SourcePostureChecks) > 0 {
rulesWithSrcPostureChecks++
}
}
postureChecks += len(account.PostureChecks)
for _, user := range account.Users {
if user.IsServiceUser {
serviceUsers++
@ -286,6 +293,8 @@ func (w *Worker) generateProperties() properties {
metricsProperties["active_peers_last_day"] = activePeersLastDay
metricsProperties["user_peers"] = userPeers
metricsProperties["rules"] = rules
metricsProperties["rules_with_src_posture_checks"] = rulesWithSrcPostureChecks
metricsProperties["posture_checks"] = postureChecks
metricsProperties["groups"] = groups
metricsProperties["routes"] = routes
metricsProperties["routes_with_routing_groups"] = routesWithRGGroups

View File

@ -6,6 +6,7 @@ import (
nbdns "github.com/netbirdio/netbird/dns"
"github.com/netbirdio/netbird/management/server"
nbpeer "github.com/netbirdio/netbird/management/server/peer"
"github.com/netbirdio/netbird/management/server/posture"
"github.com/netbirdio/netbird/route"
)
@ -62,6 +63,7 @@ func (mockDatasource) GetAllAccounts() []*server.Account {
Protocol: server.PolicyRuleProtocolTCP,
},
},
SourcePostureChecks: []string{"1"},
},
},
Routes: map[string]*route.Route{
@ -70,6 +72,26 @@ func (mockDatasource) GetAllAccounts() []*server.Account {
PeerGroups: make([]string, 1),
},
},
PostureChecks: []*posture.Checks{
{
ID: "1",
Name: "test",
Checks: posture.ChecksDefinition{
NBVersionCheck: &posture.NBVersionCheck{
MinVersion: "0.0.1",
},
},
},
{
ID: "2",
Name: "tes2",
Checks: posture.ChecksDefinition{
NBVersionCheck: &posture.NBVersionCheck{
MinVersion: "0.0.2",
},
},
},
},
Users: map[string]*server.User{
"1": {
IsServiceUser: true,
@ -246,4 +268,13 @@ func TestGenerateProperties(t *testing.T) {
if properties["store_engine"] != server.FileStoreEngine {
t.Errorf("expected JsonFile, got %s", properties["store_engine"])
}
if properties["rules_with_src_posture_checks"] != 1 {
t.Errorf("expected 1 rules_with_src_posture_checks, got %d", properties["rules_with_src_posture_checks"])
}
if properties["posture_checks"] != 2 {
t.Errorf("expected 1 posture_checks, got %d", properties["posture_checks"])
}
}