diff --git a/MareSynchronosServer/MareSynchronosServer/Startup.cs b/MareSynchronosServer/MareSynchronosServer/Startup.cs index feaaf53..d7c1ace 100644 --- a/MareSynchronosServer/MareSynchronosServer/Startup.cs +++ b/MareSynchronosServer/MareSynchronosServer/Startup.cs @@ -24,6 +24,7 @@ using System.Net.Http; using MareSynchronosServer.Utils; using MareSynchronosServer.RequirementHandlers; using MareSynchronosShared.Services; +using Microsoft.Extensions.Logging; namespace MareSynchronosServer; @@ -71,7 +72,7 @@ public class Startup RetryPolicy = null }; - services.AddSingleton(new MareMetrics(new List + services.AddSingleton(m => new MareMetrics(m.GetService>(), new List { MetricsAPI.CounterInitializedConnections, MetricsAPI.CounterUserPushData, diff --git a/MareSynchronosServer/MareSynchronosServices/Startup.cs b/MareSynchronosServer/MareSynchronosServices/Startup.cs index 71691bb..2d5e62d 100644 --- a/MareSynchronosServer/MareSynchronosServices/Startup.cs +++ b/MareSynchronosServer/MareSynchronosServices/Startup.cs @@ -9,6 +9,7 @@ using Microsoft.Extensions.DependencyInjection; using Prometheus; using System.Collections.Generic; using MareSynchronosServices.Identity; +using Microsoft.Extensions.Logging; namespace MareSynchronosServices; @@ -32,11 +33,7 @@ public class Startup options.EnableThreadSafetyChecks(false); }, Configuration.GetValue("DbContextPoolSize", 1024)); - services.AddSingleton(new MareMetrics(new List { - MetricsAPI.CounterAuthenticationRequests, - MetricsAPI.CounterAuthenticationFailures, - MetricsAPI.CounterAuthenticationCacheHits, - MetricsAPI.CounterAuthenticationSuccesses + services.AddSingleton(m => new MareMetrics(m.GetService>(), new List { }, new List { MetricsAPI.GaugeUsersRegistered diff --git a/MareSynchronosServer/MareSynchronosShared/Authentication/SecretKeyAuthenticatorService.cs b/MareSynchronosServer/MareSynchronosShared/Authentication/SecretKeyAuthenticatorService.cs index 171a176..d7a6ee8 100644 --- a/MareSynchronosServer/MareSynchronosShared/Authentication/SecretKeyAuthenticatorService.cs +++ b/MareSynchronosServer/MareSynchronosShared/Authentication/SecretKeyAuthenticatorService.cs @@ -11,7 +11,7 @@ namespace MareSynchronosShared.Authentication; public class SecretKeyAuthenticatorService { - private readonly MareMetrics metrics; + private readonly MareMetrics _metrics; private readonly IServiceScopeFactory _serviceScopeFactory; private readonly ILogger _logger; private readonly ConcurrentDictionary _cachedPositiveResponses = new(StringComparer.Ordinal); @@ -34,17 +34,17 @@ public class SecretKeyAuthenticatorService logger.LogInformation("Whitelisted IP: " + ip); } - this.metrics = metrics; + _metrics = metrics; _serviceScopeFactory = serviceScopeFactory; } internal async Task AuthorizeAsync(string ip, string secretKey) { - metrics.IncCounter(MetricsAPI.CounterAuthenticationRequests); + _metrics.IncCounter(MetricsAPI.CounterAuthenticationRequests); if (_cachedPositiveResponses.TryGetValue(secretKey, out var cachedPositiveResponse)) { - metrics.IncCounter(MetricsAPI.CounterAuthenticationCacheHits); + _metrics.IncCounter(MetricsAPI.CounterAuthenticationCacheHits); return cachedPositiveResponse; } @@ -75,7 +75,7 @@ public class SecretKeyAuthenticatorService if (reply.Success) { - metrics.IncCounter(MetricsAPI.CounterAuthenticationSuccesses); + _metrics.IncCounter(MetricsAPI.CounterAuthenticationSuccesses); _cachedPositiveResponses[secretKey] = reply; _ = Task.Run(async () => @@ -95,7 +95,7 @@ public class SecretKeyAuthenticatorService private SecretKeyAuthReply AuthenticationFailure(string ip) { - metrics.IncCounter(MetricsAPI.CounterAuthenticationFailures); + _metrics.IncCounter(MetricsAPI.CounterAuthenticationFailures); _logger.LogWarning("Failed authorization from {ip}", ip); if (!_whitelistedIps.Any(w => ip.Contains(w, StringComparison.OrdinalIgnoreCase))) diff --git a/MareSynchronosServer/MareSynchronosShared/Metrics/MareMetrics.cs b/MareSynchronosServer/MareSynchronosShared/Metrics/MareMetrics.cs index 695b630..563df9b 100644 --- a/MareSynchronosServer/MareSynchronosShared/Metrics/MareMetrics.cs +++ b/MareSynchronosServer/MareSynchronosShared/Metrics/MareMetrics.cs @@ -1,18 +1,22 @@ -using Prometheus; +using Microsoft.Extensions.Logging; +using Prometheus; namespace MareSynchronosShared.Metrics; public class MareMetrics { - public MareMetrics(List countersToServe, List gaugesToServe) + public MareMetrics(ILogger logger, List countersToServe, List gaugesToServe) { - foreach(var counter in countersToServe) + logger.LogInformation("Initializing MareMetrics"); + foreach (var counter in countersToServe) { + logger.LogInformation($"Creating Metric for Counter {counter}"); counters.Add(counter, Prometheus.Metrics.CreateCounter(counter, counter)); } - foreach(var gauge in gaugesToServe) + foreach (var gauge in gaugesToServe) { + logger.LogInformation($"Creating Metric for Counter {gauge}"); gauges.Add(gauge, Prometheus.Metrics.CreateGauge(gauge, gauge)); } } diff --git a/MareSynchronosServer/MareSynchronosStaticFilesServer/Startup.cs b/MareSynchronosServer/MareSynchronosStaticFilesServer/Startup.cs index 748e3af..18b878f 100644 --- a/MareSynchronosServer/MareSynchronosStaticFilesServer/Startup.cs +++ b/MareSynchronosServer/MareSynchronosStaticFilesServer/Startup.cs @@ -10,6 +10,7 @@ using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.FileProviders; +using Microsoft.Extensions.Logging; using Prometheus; using System; using System.Collections.Generic; @@ -31,9 +32,9 @@ public class Startup services.AddTransient(_ => Configuration); - var mareSettings = Configuration.GetRequiredSection("MareSynchronos"); + services.AddLogging(); - bool isSecondary = mareSettings.GetValue("IsSecondaryInstance", false); + var mareSettings = Configuration.GetRequiredSection("MareSynchronos"); //services.AddControllers(); @@ -50,21 +51,18 @@ public class Startup } }; - if (!isSecondary) + services.AddSingleton(m => new MareMetrics(m.GetService>(), new List { - services.AddSingleton(new MareMetrics(new List - { - MetricsAPI.CounterAuthenticationCacheHits, - MetricsAPI.CounterAuthenticationFailures, - MetricsAPI.CounterAuthenticationRequests, - MetricsAPI.CounterAuthenticationSuccesses - }, new List - { - MetricsAPI.GaugeFilesTotalSize, - MetricsAPI.GaugeFilesTotal - })); - services.AddHostedService(); - } + MetricsAPI.CounterAuthenticationCacheHits, + MetricsAPI.CounterAuthenticationFailures, + MetricsAPI.CounterAuthenticationRequests, + MetricsAPI.CounterAuthenticationSuccesses + }, new List + { + MetricsAPI.GaugeFilesTotalSize, + MetricsAPI.GaugeFilesTotal + })); + services.AddHostedService(); services.AddSingleton(); services.AddDbContextPool(options => @@ -91,17 +89,12 @@ public class Startup public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { - bool isSecondary = Configuration.GetSection("MareSynchronos").GetValue("IsSecondaryInstance", false); - app.UseHttpLogging(); app.UseRouting(); - if (!isSecondary) - { - var metricServer = new KestrelMetricServer(4981); - metricServer.Start(); - } + var metricServer = new KestrelMetricServer(4981); + metricServer.Start(); app.UseAuthentication(); app.UseAuthorization(); @@ -111,16 +104,13 @@ public class Startup FileProvider = new PhysicalFileProvider(Configuration.GetRequiredSection("MareSynchronos")["CacheDirectory"]), RequestPath = "/cache", ServeUnknownFileTypes = true, - + }); - if (!isSecondary) + app.UseEndpoints(e => { - app.UseEndpoints(e => - { - e.MapGrpcService(); - //e.MapControllers(); - }); - } + e.MapGrpcService(); + //e.MapControllers(); + }); } } \ No newline at end of file