diff --git a/.gitignore b/.gitignore index 3c3e7d7..1489dae 100644 --- a/.gitignore +++ b/.gitignore @@ -359,3 +359,4 @@ MigrationBackup/ /TransactionProcessor.SystemSetupTool/Properties/launchSettings.json # Codex implementation worktrees .worktrees/ +/MerchantPosData diff --git a/TransactionProcessing.MerchantFileProcessor/Program.cs b/TransactionProcessing.MerchantFileProcessor/Program.cs index 7fa6f27..64bf25b 100644 --- a/TransactionProcessing.MerchantFileProcessor/Program.cs +++ b/TransactionProcessing.MerchantFileProcessor/Program.cs @@ -1,6 +1,7 @@ using ClientProxyBase; using FileProcessor.Client; using HealthChecks.UI.Client; +using HealthMonitoring.Client; using Microsoft.AspNetCore.Diagnostics.HealthChecks; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Hosting; @@ -10,6 +11,7 @@ using SecurityService.Client; using Shared.Monitoring; using Shared.Serialisation; +using System.Reflection; using TransactionProcessing.MerchantFileProcessor; using TransactionProcessing.MerchantFileProcessor.Clients; using TransactionProcessing.MerchantFileProcessor.Configuration; @@ -17,8 +19,8 @@ using TransactionProcessing.MerchantFileProcessor.Persistence; using TransactionProcessing.MerchantFileProcessor.Reporting; using TransactionProcessing.MerchantFileProcessor.Services; -using SharedLogger = Shared.Logger.Logger; using TransactionProcessor.Client; +using SharedLogger = Shared.Logger.Logger; var environmentName = Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT") ?? Environment.GetEnvironmentVariable("DOTNET_ENVIRONMENT") @@ -49,6 +51,10 @@ .AddJsonFile("/home/txnproc/config/merchant-processing.bootstrap.local.json", optional: true, reloadOnChange: true) .AddJsonFile("hosting.json", optional: true, reloadOnChange: true) .AddEnvironmentVariables() + .AddInMemoryCollection(new Dictionary + { + ["HealthMonitoring:Service:Version"] = Assembly.GetEntryAssembly()?.GetName().Version?.ToString() ?? "0.0.0.0" + }) .AddCommandLine(args); builder.WebHost.UseConfiguration(builder.Configuration); @@ -131,7 +137,7 @@ builder.Services.AddSingleton(); builder.Services.AddHealthChecks(); - builder.Services.AddUptimeKuma(); + builder.Services.AddHealthMonitoringRegistration(builder.Configuration); var app = builder.Build(); @@ -177,14 +183,6 @@ ResponseWriter = UIResponseWriter.WriteHealthCheckUIResponse }); - app.Lifetime.ApplicationStarted.Register(() => - { - app.RegisterWithUptimeKumaAsync() - .GetAwaiter() - .GetResult(); - }); - - await app.RunAsync(); } catch (Exception ex) diff --git a/TransactionProcessing.MerchantFileProcessor/TransactionProcessing.MerchantFileProcessor.csproj b/TransactionProcessing.MerchantFileProcessor/TransactionProcessing.MerchantFileProcessor.csproj index e603ffd..03e7022 100644 --- a/TransactionProcessing.MerchantFileProcessor/TransactionProcessing.MerchantFileProcessor.csproj +++ b/TransactionProcessing.MerchantFileProcessor/TransactionProcessing.MerchantFileProcessor.csproj @@ -9,6 +9,7 @@ + diff --git a/TransactionProcessing.MerchantFileProcessor/appsettings.json b/TransactionProcessing.MerchantFileProcessor/appsettings.json index 7b2ecc3..afc57af 100644 --- a/TransactionProcessing.MerchantFileProcessor/appsettings.json +++ b/TransactionProcessing.MerchantFileProcessor/appsettings.json @@ -9,13 +9,15 @@ "EnableEfCoreCommandTrace": false, "EnableHttpClientTrace": false }, - "UptimeKuma": { - "Monitor": { + "HealthMonitoring": { + "Service": { + "ServiceId": "merchant-file-processor", "Name": "Merchant File Processor", - "Url": "http://localhost:9601/health", - "IntervalInSeconds": 60 + "Description": "Merchant File Processor", + "HealthUrl": "http://localhost:9601/healthui" } }, + "ConnectionStrings": { "MerchantFileProcessor": "" }, diff --git a/TransactionProcessing.MerchantPos/Program.cs b/TransactionProcessing.MerchantPos/Program.cs index ebd2c48..bc75f21 100644 --- a/TransactionProcessing.MerchantPos/Program.cs +++ b/TransactionProcessing.MerchantPos/Program.cs @@ -1,15 +1,17 @@ using ClientProxyBase; +using HealthChecks.UI.Client; using MerchantPos.EF.Persistence; +using Microsoft.AspNetCore.Diagnostics.HealthChecks; using Microsoft.EntityFrameworkCore; using NLog; using NLog.Extensions.Logging; using NLog.Web; using SecurityService.Client; +using Shared.Monitoring; using Shared.Serialisation; +using System.Reflection; using System.Text.Json; -using HealthChecks.UI.Client; -using Microsoft.AspNetCore.Diagnostics.HealthChecks; -using Shared.Monitoring; +using HealthMonitoring.Client; using TransactionProcessing.MerchantPos.Persistence; using TransactionProcessing.MerchantPos.Runtime; using TransactionProcessor.Client; @@ -41,6 +43,10 @@ .AddJsonFile($"appsettings.local.json", optional: true, reloadOnChange: true) .AddJsonFile($"/home/txnproc/config/appsettings.local.json", optional: true, reloadOnChange: true) .AddEnvironmentVariables() + .AddInMemoryCollection(new Dictionary + { + ["HealthMonitoring:Service:Version"] = Assembly.GetEntryAssembly()?.GetName().Version?.ToString() ?? "0.0.0.0" + }) .AddCommandLine(args); builder.Host.UseNLog(); @@ -95,8 +101,8 @@ }); builder.Services.AddHealthChecks(); - builder.Services.AddUptimeKuma(); - + builder.Services.AddHealthMonitoringRegistration(builder.Configuration); + var app = builder.Build(); using (var scope = app.Services.CreateScope()) @@ -134,13 +140,6 @@ ResponseWriter = UIResponseWriter.WriteHealthCheckUIResponse }); - app.Lifetime.ApplicationStarted.Register(() => - { - app.RegisterWithUptimeKumaAsync() - .GetAwaiter() - .GetResult(); - }); - await app.RunAsync(); } catch (Exception ex) diff --git a/TransactionProcessing.MerchantPos/TransactionProcessing.MerchantPos.csproj b/TransactionProcessing.MerchantPos/TransactionProcessing.MerchantPos.csproj index 2b934a5..32844a7 100644 --- a/TransactionProcessing.MerchantPos/TransactionProcessing.MerchantPos.csproj +++ b/TransactionProcessing.MerchantPos/TransactionProcessing.MerchantPos.csproj @@ -8,6 +8,7 @@ + @@ -17,7 +18,7 @@ - + diff --git a/TransactionProcessing.MerchantPos/appsettings.json b/TransactionProcessing.MerchantPos/appsettings.json index b579cef..e21542f 100644 --- a/TransactionProcessing.MerchantPos/appsettings.json +++ b/TransactionProcessing.MerchantPos/appsettings.json @@ -27,12 +27,13 @@ "Microsoft.Hosting.Lifetime": "Information" } }, - "UptimeKuma": { - "Monitor": { + "HealthMonitoring": { + "Service": { + "ServiceId": "merchant-pos", "Name": "Merchant POS", - "Url": "http://localhost:9600/health", - "IntervalInSeconds": 60 - } + "Description": "Merchant POS", + "HealthUrl": "http://localhost:9600/healthui" + } } }