diff --git a/src/AgileConfig.Server.Apisite/Controllers/api/ConfigController.cs b/src/AgileConfig.Server.Apisite/Controllers/api/ConfigController.cs index f7042dd0..59c1f277 100644 --- a/src/AgileConfig.Server.Apisite/Controllers/api/ConfigController.cs +++ b/src/AgileConfig.Server.Apisite/Controllers/api/ConfigController.cs @@ -24,7 +24,7 @@ public class ConfigController : Controller private readonly IUserService _userService; private readonly IMemoryCache _cacheMemory; private readonly ITinyEventBus _tinyEventBus; - private readonly MeterService _meterService; + private readonly IMeterService _meterService; public ConfigController( IConfigService configService, @@ -32,7 +32,7 @@ public ConfigController( IUserService userService, IMemoryCache cacheMemory, ITinyEventBus tinyEventBus, - MeterService meterService + IMeterService meterService ) { _configService = configService; @@ -95,7 +95,7 @@ public async Task>> GetAppConfig(string appId, [F .SetAbsoluteExpiration(TimeSpan.FromSeconds(5)); _cacheMemory?.Set(cacheKey, vms, cacheOp); - _meterService.PullAppConfigCounter.Add(1, new("appId", appId), new("env", env)); + _meterService.PullAppConfigCounter?.Add(1, new("appId", appId), new("env", env)); return vms; } diff --git a/src/AgileConfig.Server.Apisite/InitService.cs b/src/AgileConfig.Server.Apisite/InitService.cs index 5ffd055a..3fec6521 100644 --- a/src/AgileConfig.Server.Apisite/InitService.cs +++ b/src/AgileConfig.Server.Apisite/InitService.cs @@ -22,7 +22,7 @@ public class InitService : IHostedService private readonly IServiceScope _localServiceScope; public InitService(IServiceScopeFactory serviceScopeFactory, ISystemInitializationService systemInitializationService, - MeterService meterService, + IMeterService meterService, ILogger logger) { _logger = logger; diff --git a/src/AgileConfig.Server.Apisite/Metrics/IMeterService.cs b/src/AgileConfig.Server.Apisite/Metrics/IMeterService.cs new file mode 100644 index 00000000..120456fd --- /dev/null +++ b/src/AgileConfig.Server.Apisite/Metrics/IMeterService.cs @@ -0,0 +1,16 @@ +using System.Diagnostics.Metrics; + +namespace AgileConfig.Server.Apisite.Metrics +{ + public interface IMeterService + { + ObservableGauge AppGauge { get; } + ObservableGauge ClientGauge { get; } + ObservableGauge ConfigGauge { get; } + ObservableGauge NodeGauge { get; } + Counter PullAppConfigCounter { get; } + ObservableGauge ServiceGauge { get; } + + void Start(); + } +} \ No newline at end of file diff --git a/src/AgileConfig.Server.Apisite/Metrics/MeterService.cs b/src/AgileConfig.Server.Apisite/Metrics/MeterService.cs index 943c3941..d734660d 100644 --- a/src/AgileConfig.Server.Apisite/Metrics/MeterService.cs +++ b/src/AgileConfig.Server.Apisite/Metrics/MeterService.cs @@ -6,7 +6,7 @@ namespace AgileConfig.Server.Apisite.Metrics { - public class MeterService + public class MeterService : IMeterService { public const string MeterName = "AgileConfigMeter"; diff --git a/src/AgileConfig.Server.Apisite/Startup.cs b/src/AgileConfig.Server.Apisite/Startup.cs index 238aa422..151b058a 100644 --- a/src/AgileConfig.Server.Apisite/Startup.cs +++ b/src/AgileConfig.Server.Apisite/Startup.cs @@ -92,7 +92,7 @@ public void ConfigureServices(IServiceCollection services) services.AddOIDC(); - services.AddSingleton(); + services.AddSingleton(); services.AddOpenTelemetry() .ConfigureResource(resource => resource.AddService(Program.AppName)) diff --git a/test/ApiSiteTests/TestApiConfigController.cs b/test/ApiSiteTests/TestApiConfigController.cs index 4624cf29..22593b05 100644 --- a/test/ApiSiteTests/TestApiConfigController.cs +++ b/test/ApiSiteTests/TestApiConfigController.cs @@ -9,6 +9,7 @@ using Microsoft.Extensions.Caching.Memory; using AgileConfig.Server.Apisite.Controllers.api.Models; using AgileConfig.Server.Common.EventBus; +using AgileConfig.Server.Apisite.Metrics; namespace ApiSiteTests; @@ -64,12 +65,15 @@ List newConfigs() var appBasicAuthService = new Mock(); var userSErvice = new Mock(); var eventBus = new Mock(); + var meterService = new Mock(); var ctrl = new ConfigController( configService.Object, appService.Object, userSErvice.Object, - memoryCache, eventBus.Object); + memoryCache, eventBus.Object, + meterService.Object + ); var act = await ctrl.GetAppConfig("001", "DEV"); Assert.IsNotNull(act); @@ -91,7 +95,9 @@ App newApp1() configService.Object, appService.Object, userSErvice.Object, - memoryCache, eventBus.Object); + memoryCache, eventBus.Object, + meterService.Object + ); act = await ctrl.GetAppConfig("001", "DEV"); Assert.IsNotNull(act);