diff --git a/Directory.Packages.props b/Directory.Packages.props index a545b84..20b08f8 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -3,7 +3,9 @@ true + + diff --git a/MobileConfiguration/MobileConfiguration.csproj b/MobileConfiguration/MobileConfiguration.csproj index 76b527c..a78210e 100644 --- a/MobileConfiguration/MobileConfiguration.csproj +++ b/MobileConfiguration/MobileConfiguration.csproj @@ -11,7 +11,9 @@ - + + + diff --git a/MobileConfiguration/Program.cs b/MobileConfiguration/Program.cs index 20347f0..0900a04 100644 --- a/MobileConfiguration/Program.cs +++ b/MobileConfiguration/Program.cs @@ -1,4 +1,8 @@ +using HealthChecks.UI.Client; +using HealthMonitoring.Client; +using Microsoft.AspNetCore.Diagnostics.HealthChecks; using Microsoft.EntityFrameworkCore; +using Microsoft.Extensions.Options; using MobileConfiguration.Database; using MobileConfiguration.Repository; using NLog; @@ -10,13 +14,12 @@ using Shared.Logger; using Shared.Logger.TennantContext; using Shared.Middleware; +using Shared.Monitoring; using Shared.Serialisation; using System.ComponentModel; using System.Reflection; using System.Text.Json; -using HealthChecks.UI.Client; -using Microsoft.AspNetCore.Diagnostics.HealthChecks; -using Shared.Monitoring; +using Microsoft.Extensions.Diagnostics.HealthChecks; using ILogger = Microsoft.Extensions.Logging.ILogger; using LogLevel = Microsoft.Extensions.Logging.LogLevel; @@ -28,7 +31,11 @@ .AddJsonFile("/home/txnproc/config/appsettings.json", true, true) .AddJsonFile($"/home/txnproc/config/appsettings.{builder.Environment.EnvironmentName}.json", optional: true) .AddJsonFile($"/home/txnproc/config/appsettings.local.json", optional: true) - .AddEnvironmentVariables().Build(); + .AddEnvironmentVariables() + .AddInMemoryCollection(new Dictionary + { + ["HealthMonitoring:Service:Version"] = Assembly.GetEntryAssembly()?.GetName().Version?.ToString() ?? "0.0.0.0" + }).Build(); ConfigurationReader.Initialise(configuration); @@ -141,8 +148,14 @@ builder.Services.ConfigureHttpJsonOptions(options => { JsonSerializerConfiguration.ConfigureMinimalApi(options.SerializerOptions); }); -builder.Services.AddHealthChecks(); -builder.Services.AddUptimeKuma(); +builder.Services.AddHealthChecks().AddSqlServer( + connectionString: ConfigurationReader.GetConnectionString("ConfigurationDatabase"), + healthQuery: "SELECT 1;", + name: "Config Database Server", + failureStatus: HealthStatus.Degraded, + tags: new[] { "db", "sql", "sqlserver" }); + +builder.Services.AddHealthMonitoringRegistration(configuration); var app = builder.Build(); @@ -184,13 +197,6 @@ InitializeDatabase(app).Wait(CancellationToken.None); -app.Lifetime.ApplicationStarted.Register(() => -{ - app.RegisterWithUptimeKumaAsync() - .GetAwaiter() - .GetResult(); -}); - app.Run(); diff --git a/MobileConfiguration/appsettings.json b/MobileConfiguration/appsettings.json index f52f840..31c6306 100644 --- a/MobileConfiguration/appsettings.json +++ b/MobileConfiguration/appsettings.json @@ -6,11 +6,18 @@ "ConnectionStrings": { "ConfigurationDatabase": "server=192.168.1.163;user id=sa;password=Sc0tland;database=ConfigurationHost;Encrypt=false" }, - "UptimeKuma": { - "Monitor": { + "HealthMonitoring": { + "Service": { + "ServiceId": "mobile-configuration", "Name": "Mobile Configuration", - "Url": "http://localhost:9200/health", - "IntervalInSeconds": 60 - } + "Description": "Mobile Configuration", + "HealthUrl": "http://localhost:9200/healthui" + }, + "Dependencies": [ + { + "DependencyName": "Config Database Server", + "TargetServiceId": "sql-server" + } + ] } }