From 7a9b05c56d8cca6410f5661a4c9c7f325ace7f22 Mon Sep 17 00:00:00 2001 From: Pascal Fischer Date: Tue, 30 May 2023 16:22:34 +0200 Subject: [PATCH 1/8] add selfhosted metric for pat and service users --- management/server/metrics/selfhosted.go | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/management/server/metrics/selfhosted.go b/management/server/metrics/selfhosted.go index 2c7e943ac..3e02509bc 100644 --- a/management/server/metrics/selfhosted.go +++ b/management/server/metrics/selfhosted.go @@ -158,6 +158,8 @@ func (w *Worker) generateProperties() properties { uptime float64 accounts int users int + serviceUsers int + pats int peers int setupKeysUsage int activePeersLastDay int @@ -182,12 +184,20 @@ func (w *Worker) generateProperties() properties { for _, account := range w.dataSource.GetAllAccounts() { accounts++ - users = users + len(account.Users) rules = rules + len(account.Rules) groups = groups + len(account.Groups) routes = routes + len(account.Routes) nameservers = nameservers + len(account.NameServerGroups) + for _, user := range account.Users { + if user.IsServiceUser { + serviceUsers++ + } else { + users++ + } + pats = +len(user.PATs) + } + for _, key := range account.SetupKeys { setupKeysUsage = setupKeysUsage + key.UsedTimes } @@ -224,6 +234,7 @@ func (w *Worker) generateProperties() properties { metricsProperties["uptime"] = uptime metricsProperties["accounts"] = accounts metricsProperties["users"] = users + metricsProperties["pats"] = pats metricsProperties["peers"] = peers metricsProperties["setup_keys_usage"] = setupKeysUsage metricsProperties["active_peers_last_day"] = activePeersLastDay From 452b045bb023ca3e01c402aff80aaa36683ac289 Mon Sep 17 00:00:00 2001 From: Pascal Fischer Date: Tue, 30 May 2023 16:40:48 +0200 Subject: [PATCH 2/8] expose service users metrics --- management/server/metrics/selfhosted.go | 1 + 1 file changed, 1 insertion(+) diff --git a/management/server/metrics/selfhosted.go b/management/server/metrics/selfhosted.go index 3e02509bc..3a532c534 100644 --- a/management/server/metrics/selfhosted.go +++ b/management/server/metrics/selfhosted.go @@ -234,6 +234,7 @@ func (w *Worker) generateProperties() properties { metricsProperties["uptime"] = uptime metricsProperties["accounts"] = accounts metricsProperties["users"] = users + metricsProperties["service_users"] = serviceUsers metricsProperties["pats"] = pats metricsProperties["peers"] = peers metricsProperties["setup_keys_usage"] = setupKeysUsage From f164fad2c29eb5934c7f19fdf9219e16bbaffb56 Mon Sep 17 00:00:00 2001 From: Pascal Fischer Date: Tue, 30 May 2023 18:49:50 +0200 Subject: [PATCH 3/8] add some more metrics --- management/server/metrics/selfhosted.go | 28 +++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/management/server/metrics/selfhosted.go b/management/server/metrics/selfhosted.go index 3a532c534..2e613c56c 100644 --- a/management/server/metrics/selfhosted.go +++ b/management/server/metrics/selfhosted.go @@ -157,15 +157,19 @@ func (w *Worker) generateProperties() properties { var ( uptime float64 accounts int + expirationEnabled int users int serviceUsers int pats int peers int + peersSSHEnabled int setupKeysUsage int activePeersLastDay int osPeers map[string]int userPeers int rules int + rulesProtocol map[string]int + rulesDirection map[string]int groups int routes int nameservers int @@ -184,11 +188,26 @@ func (w *Worker) generateProperties() properties { for _, account := range w.dataSource.GetAllAccounts() { accounts++ + + if account.Settings.PeerLoginExpirationEnabled { + expirationEnabled++ + } + rules = rules + len(account.Rules) groups = groups + len(account.Groups) routes = routes + len(account.Routes) nameservers = nameservers + len(account.NameServerGroups) + for _, rule := range account.Rules { + policyRule := rule.ToPolicyRule() + rulesProtocol[string(policyRule.Protocol)]++ + if policyRule.Bidirectional { + rulesDirection["bidirectional"]++ + } else { + rulesDirection["oneway"]++ + } + } + for _, user := range account.Users { if user.IsServiceUser { serviceUsers++ @@ -204,6 +223,11 @@ func (w *Worker) generateProperties() properties { for _, peer := range account.Peers { peers++ + + if peer.SSHEnabled { + peersSSHEnabled++ + } + if peer.SetupKey == "" { userPeers++ } @@ -237,10 +261,14 @@ func (w *Worker) generateProperties() properties { metricsProperties["service_users"] = serviceUsers metricsProperties["pats"] = pats metricsProperties["peers"] = peers + metricsProperties["peers_ssh_enabled"] = peersSSHEnabled + metricsProperties["peers_login_expiration_enabled"] = expirationEnabled metricsProperties["setup_keys_usage"] = setupKeysUsage metricsProperties["active_peers_last_day"] = activePeersLastDay metricsProperties["user_peers"] = userPeers metricsProperties["rules"] = rules + metricsProperties["rules_protocol"] = rulesProtocol + metricsProperties["rules_direction"] = rulesDirection metricsProperties["groups"] = groups metricsProperties["routes"] = routes metricsProperties["nameservers"] = nameservers From 51f780dae959648ca0a456cec97a2fff147aacc1 Mon Sep 17 00:00:00 2001 From: Pascal Fischer Date: Tue, 30 May 2023 18:53:23 +0200 Subject: [PATCH 4/8] initialize maps --- management/server/metrics/selfhosted.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/management/server/metrics/selfhosted.go b/management/server/metrics/selfhosted.go index 2e613c56c..f1728ba7c 100644 --- a/management/server/metrics/selfhosted.go +++ b/management/server/metrics/selfhosted.go @@ -182,6 +182,8 @@ func (w *Worker) generateProperties() properties { metricsProperties := make(properties) osPeers = make(map[string]int) osUIClients = make(map[string]int) + rulesProtocol = make(map[string]int) + rulesDirection = make(map[string]int) uptime = time.Since(w.startupTime).Seconds() connections := w.connManager.GetAllConnectedPeers() version = nbversion.NetbirdVersion() From 22e81f493b7f5f75e9f6c20190d0577705c2088c Mon Sep 17 00:00:00 2001 From: Pascal Fischer Date: Tue, 30 May 2023 19:07:00 +0200 Subject: [PATCH 5/8] fix metric creation from maps --- management/server/metrics/selfhosted.go | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/management/server/metrics/selfhosted.go b/management/server/metrics/selfhosted.go index f1728ba7c..6c549fcf7 100644 --- a/management/server/metrics/selfhosted.go +++ b/management/server/metrics/selfhosted.go @@ -269,8 +269,6 @@ func (w *Worker) generateProperties() properties { metricsProperties["active_peers_last_day"] = activePeersLastDay metricsProperties["user_peers"] = userPeers metricsProperties["rules"] = rules - metricsProperties["rules_protocol"] = rulesProtocol - metricsProperties["rules_direction"] = rulesDirection metricsProperties["groups"] = groups metricsProperties["routes"] = routes metricsProperties["nameservers"] = nameservers @@ -278,6 +276,15 @@ func (w *Worker) generateProperties() properties { metricsProperties["min_active_peer_version"] = minActivePeerVersion metricsProperties["max_active_peer_version"] = maxActivePeerVersion metricsProperties["ui_clients"] = uiClient + + for protocol, count := range rulesProtocol { + metricsProperties["rules_protocol_"+protocol] = count + } + + for direction, count := range rulesDirection { + metricsProperties["rules_direction_"+direction] = count + } + for os, count := range osPeers { metricsProperties[os] = count } From 6fd13f563e96f5dc80d09c22b33399d784740cc7 Mon Sep 17 00:00:00 2001 From: Pascal Fischer Date: Tue, 30 May 2023 19:09:16 +0200 Subject: [PATCH 6/8] use new policy-rule object --- management/server/metrics/selfhosted.go | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/management/server/metrics/selfhosted.go b/management/server/metrics/selfhosted.go index 6c549fcf7..2e9be3b94 100644 --- a/management/server/metrics/selfhosted.go +++ b/management/server/metrics/selfhosted.go @@ -200,13 +200,14 @@ func (w *Worker) generateProperties() properties { routes = routes + len(account.Routes) nameservers = nameservers + len(account.NameServerGroups) - for _, rule := range account.Rules { - policyRule := rule.ToPolicyRule() - rulesProtocol[string(policyRule.Protocol)]++ - if policyRule.Bidirectional { - rulesDirection["bidirectional"]++ - } else { - rulesDirection["oneway"]++ + for _, policy := range account.Policies { + for _, rule := range policy.Rules { + rulesProtocol[string(rule.Protocol)]++ + if rule.Bidirectional { + rulesDirection["bidirectional"]++ + } else { + rulesDirection["oneway"]++ + } } } From fe596c38c611a3e655de99c08a8ee65eb7c6df3f Mon Sep 17 00:00:00 2001 From: Pascal Fischer Date: Tue, 30 May 2023 19:36:09 +0200 Subject: [PATCH 7/8] update rules count --- management/server/metrics/selfhosted.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/management/server/metrics/selfhosted.go b/management/server/metrics/selfhosted.go index 2e9be3b94..f8c68f694 100644 --- a/management/server/metrics/selfhosted.go +++ b/management/server/metrics/selfhosted.go @@ -195,13 +195,13 @@ func (w *Worker) generateProperties() properties { expirationEnabled++ } - rules = rules + len(account.Rules) groups = groups + len(account.Groups) routes = routes + len(account.Routes) nameservers = nameservers + len(account.NameServerGroups) for _, policy := range account.Policies { for _, rule := range policy.Rules { + rules++ rulesProtocol[string(rule.Protocol)]++ if rule.Bidirectional { rulesDirection["bidirectional"]++ From 9e045479cc5858eb9c08e46642d3479332925d7e Mon Sep 17 00:00:00 2001 From: Pascal Fischer Date: Tue, 30 May 2023 19:44:40 +0200 Subject: [PATCH 8/8] fix pats counting --- management/server/metrics/selfhosted.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/management/server/metrics/selfhosted.go b/management/server/metrics/selfhosted.go index f8c68f694..b8ce935c2 100644 --- a/management/server/metrics/selfhosted.go +++ b/management/server/metrics/selfhosted.go @@ -217,7 +217,7 @@ func (w *Worker) generateProperties() properties { } else { users++ } - pats = +len(user.PATs) + pats += len(user.PATs) } for _, key := range account.SetupKeys {