From 7c6dbafce9ca943adfd208afcf1846425938959e Mon Sep 17 00:00:00 2001 From: rootdarkarchon Date: Mon, 15 Jan 2024 12:51:16 +0100 Subject: [PATCH] set user agent correctly add statistics fix bug --- .../Hubs/MareHub.Functions.cs | 2 ++ .../MareSynchronosServer/Hubs/MareHub.cs | 4 ++-- .../Metrics/MareMetrics.cs | 21 ++++++++++++++++++- .../Metrics/MetricsAPI.cs | 2 +- .../Services/CachedFileProvider.cs | 2 +- .../ShardClientReadyMessageService.cs | 2 +- 6 files changed, 27 insertions(+), 6 deletions(-) diff --git a/MareSynchronosServer/MareSynchronosServer/Hubs/MareHub.Functions.cs b/MareSynchronosServer/MareSynchronosServer/Hubs/MareHub.Functions.cs index bb2326b..6fe9688 100644 --- a/MareSynchronosServer/MareSynchronosServer/Hubs/MareHub.Functions.cs +++ b/MareSynchronosServer/MareSynchronosServer/Hubs/MareHub.Functions.cs @@ -16,6 +16,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 3db19a2..25e0606 100644 --- a/MareSynchronosServer/MareSynchronosServer/Hubs/MareHub.cs +++ b/MareSynchronosServer/MareSynchronosServer/Hubs/MareHub.cs @@ -93,7 +93,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 { @@ -109,7 +109,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 3add03f..6dd86b5 100644 --- a/MareSynchronosServer/MareSynchronosShared/Metrics/MareMetrics.cs +++ b/MareSynchronosServer/MareSynchronosShared/Metrics/MareMetrics.cs @@ -17,7 +17,10 @@ public class MareMetrics foreach (var gauge in gaugesToServe) { logger.LogInformation($"Creating Metric for Counter {gauge}"); - gauges.Add(gauge, Prometheus.Metrics.CreateGauge(gauge, gauge)); + if (!string.Equals(gauge, MetricsAPI.GaugeConnections, StringComparison.OrdinalIgnoreCase)) + gauges.Add(gauge, Prometheus.Metrics.CreateGauge(gauge, gauge)); + else + gauges.Add(gauge, Prometheus.Metrics.CreateGauge(gauge, gauge, new[] { "continent" })); } } @@ -25,6 +28,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.ContainsKey(gaugeName)) diff --git a/MareSynchronosServer/MareSynchronosShared/Metrics/MetricsAPI.cs b/MareSynchronosServer/MareSynchronosShared/Metrics/MetricsAPI.cs index 0503c10..c19caaf 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"; diff --git a/MareSynchronosServer/MareSynchronosStaticFilesServer/Services/CachedFileProvider.cs b/MareSynchronosServer/MareSynchronosStaticFilesServer/Services/CachedFileProvider.cs index 4fec591..d6d7c5e 100644 --- a/MareSynchronosServer/MareSynchronosStaticFilesServer/Services/CachedFileProvider.cs +++ b/MareSynchronosServer/MareSynchronosStaticFilesServer/Services/CachedFileProvider.cs @@ -34,7 +34,7 @@ public sealed class CachedFileProvider : IDisposable _isDistributionServer = configuration.GetValueOrDefault(nameof(StaticFilesServerConfiguration.IsDistributionNode), false); _basePath = configuration.GetValue(nameof(StaticFilesServerConfiguration.CacheDirectory)); _httpClient = new(); - _httpClient.DefaultRequestHeaders.UserAgent.Add(new ProductInfoHeaderValue("MareSynchronosServer")); + _httpClient.DefaultRequestHeaders.UserAgent.Add(new ProductInfoHeaderValue("MareSynchronosServer", "1.0.0.0")); } public void Dispose() diff --git a/MareSynchronosServer/MareSynchronosStaticFilesServer/Services/ShardClientReadyMessageService.cs b/MareSynchronosServer/MareSynchronosStaticFilesServer/Services/ShardClientReadyMessageService.cs index 9fded2a..295ab2b 100644 --- a/MareSynchronosServer/MareSynchronosStaticFilesServer/Services/ShardClientReadyMessageService.cs +++ b/MareSynchronosServer/MareSynchronosStaticFilesServer/Services/ShardClientReadyMessageService.cs @@ -18,7 +18,7 @@ public class ShardClientReadyMessageService : IClientReadyMessageService _tokenGenerator = tokenGenerator; _configurationService = configurationService; _httpClient = new(); - _httpClient.DefaultRequestHeaders.UserAgent.Add(new ProductInfoHeaderValue("MareSynchronosServer")); + _httpClient.DefaultRequestHeaders.UserAgent.Add(new ProductInfoHeaderValue("MareSynchronosServer", "1.0.0.0")); } public void SendDownloadReady(string uid, Guid requestId)