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"
+ }
+ ]
}
}