diff --git a/MareSynchronosServer/MareSynchronosServer/Hubs/MareHub.Functions.cs b/MareSynchronosServer/MareSynchronosServer/Hubs/MareHub.Functions.cs index 831ca94..f1c3128 100644 --- a/MareSynchronosServer/MareSynchronosServer/Hubs/MareHub.Functions.cs +++ b/MareSynchronosServer/MareSynchronosServer/Hubs/MareHub.Functions.cs @@ -17,6 +17,8 @@ public partial class MareHub public string UserUID => Context.User?.Claims?.SingleOrDefault(c => string.Equals(c.Type, MareClaimTypes.Uid, StringComparison.Ordinal))?.Value ?? throw new Exception("No UID in Claims"); + public string Continent => Context.User?.Claims?.SingleOrDefault(c => string.Equals(c.Type, MareClaimTypes.Continent, StringComparison.Ordinal))?.Value ?? "UNK"; + private async Task DeleteUser(User user) { var ownPairData = await DbContext.ClientPairs.Where(u => u.User.UID == user.UID).ToListAsync().ConfigureAwait(false); diff --git a/MareSynchronosServer/MareSynchronosServer/Hubs/MareHub.cs b/MareSynchronosServer/MareSynchronosServer/Hubs/MareHub.cs index 1c90849..9e15f00 100644 --- a/MareSynchronosServer/MareSynchronosServer/Hubs/MareHub.cs +++ b/MareSynchronosServer/MareSynchronosServer/Hubs/MareHub.cs @@ -132,7 +132,7 @@ public partial class MareHub : Hub, IMareHub [Authorize(Policy = "Authenticated")] public override async Task OnConnectedAsync() { - _mareMetrics.IncGauge(MetricsAPI.GaugeConnections); + _mareMetrics.IncGaugeWithLabels(MetricsAPI.GaugeConnections, labels: Continent); try { @@ -148,7 +148,7 @@ public partial class MareHub : Hub, IMareHub [Authorize(Policy = "Authenticated")] public override async Task OnDisconnectedAsync(Exception exception) { - _mareMetrics.DecGauge(MetricsAPI.GaugeConnections); + _mareMetrics.DecGaugeWithLabels(MetricsAPI.GaugeConnections, labels: Continent); try { diff --git a/MareSynchronosServer/MareSynchronosShared/Metrics/MareMetrics.cs b/MareSynchronosServer/MareSynchronosShared/Metrics/MareMetrics.cs index 2fe916e..fee744e 100644 --- a/MareSynchronosServer/MareSynchronosShared/Metrics/MareMetrics.cs +++ b/MareSynchronosServer/MareSynchronosShared/Metrics/MareMetrics.cs @@ -25,6 +25,22 @@ public class MareMetrics private readonly Dictionary _gauges = new(StringComparer.Ordinal); + public void IncGaugeWithLabels(string gaugeName, double value = 1.0, params string[] labels) + { + if (_gauges.TryGetValue(gaugeName, out Gauge gauge)) + { + gauge.WithLabels(labels).Inc(value); + } + } + + public void DecGaugeWithLabels(string gaugeName, double value = 1.0, params string[] labels) + { + if (_gauges.TryGetValue(gaugeName, out Gauge gauge)) + { + gauge.WithLabels(labels).Dec(value); + } + } + public void SetGaugeTo(string gaugeName, double value) { if (_gauges.TryGetValue(gaugeName, out Gauge gauge)) diff --git a/MareSynchronosServer/MareSynchronosShared/Metrics/MetricsAPI.cs b/MareSynchronosServer/MareSynchronosShared/Metrics/MetricsAPI.cs index 180bde9..e0141e3 100644 --- a/MareSynchronosServer/MareSynchronosShared/Metrics/MetricsAPI.cs +++ b/MareSynchronosServer/MareSynchronosShared/Metrics/MetricsAPI.cs @@ -3,7 +3,7 @@ public class MetricsAPI { public const string CounterInitializedConnections = "mare_initialized_connections"; - public const string GaugeConnections = "mare_unauthorized_connections"; + public const string GaugeConnections = "mare_connections"; public const string GaugeAuthorizedConnections = "mare_authorized_connections"; public const string GaugeAvailableWorkerThreads = "mare_available_threadpool"; public const string GaugeAvailableIOWorkerThreads = "mare_available_threadpool_io";