diff --git a/TransactionProcessing.MerchantFileProcessor/Program.cs b/TransactionProcessing.MerchantFileProcessor/Program.cs index 5447ed8..01d0397 100644 --- a/TransactionProcessing.MerchantFileProcessor/Program.cs +++ b/TransactionProcessing.MerchantFileProcessor/Program.cs @@ -1,11 +1,14 @@ using ClientProxyBase; using FileProcessor.Client; +using HealthChecks.UI.Client; +using Microsoft.AspNetCore.Diagnostics.HealthChecks; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Logging; using NLog; using NLog.Extensions.Logging; using SecurityService.Client; +using Shared.Monitoring; using Shared.Serialisation; using TransactionProcessing.MerchantFileProcessor; using TransactionProcessing.MerchantFileProcessor.Clients; @@ -42,6 +45,7 @@ .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true) .AddJsonFile($"appsettings.{builder.Environment.EnvironmentName}.json", optional: true, reloadOnChange: true) .AddJsonFile("merchant-processing.bootstrap.json", optional: true, reloadOnChange: true) + .AddJsonFile("C:\\home\\txnproc\\config\\merchant-processing.bootstrap.local.json", optional: true, reloadOnChange: true) .AddJsonFile("hosting.json", optional: true, reloadOnChange: true) .AddEnvironmentVariables() .AddCommandLine(args); @@ -125,6 +129,9 @@ builder.Services.AddSingleton(serialiserSettings); builder.Services.AddSingleton(); + builder.Services.AddHealthChecks(); + builder.Services.AddUptimeKuma(); + var app = builder.Build(); using (var scope = app.Services.CreateScope()) @@ -156,6 +163,27 @@ app.MapConfigurationManagementEndpoints(); app.MapRazorComponents(); + app.MapHealthChecks("health", + new HealthCheckOptions + { + Predicate = _ => true, + ResponseWriter = Shared.HealthChecks.HealthCheckMiddleware.WriteResponse + }); + app.MapHealthChecks("healthui", + new HealthCheckOptions + { + Predicate = _ => true, + 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 73b8be4..e603ffd 100644 --- a/TransactionProcessing.MerchantFileProcessor/TransactionProcessing.MerchantFileProcessor.csproj +++ b/TransactionProcessing.MerchantFileProcessor/TransactionProcessing.MerchantFileProcessor.csproj @@ -8,16 +8,17 @@ - - - - + + + + - - - - - + + + + + + diff --git a/TransactionProcessing.MerchantFileProcessor/appsettings.json b/TransactionProcessing.MerchantFileProcessor/appsettings.json index ba0fb90..7b2ecc3 100644 --- a/TransactionProcessing.MerchantFileProcessor/appsettings.json +++ b/TransactionProcessing.MerchantFileProcessor/appsettings.json @@ -9,8 +9,15 @@ "EnableEfCoreCommandTrace": false, "EnableHttpClientTrace": false }, + "UptimeKuma": { + "Monitor": { + "Name": "Merchant File Processor", + "Url": "http://localhost:9601/health", + "IntervalInSeconds": 60 + } + }, "ConnectionStrings": { - "MerchantFileProcessor": "merchant-file-processor.db" + "MerchantFileProcessor": "" }, "ApiConfiguration": { } diff --git a/TransactionProcessing.MerchantFileProcessor/merchant-processing.bootstrap.json b/TransactionProcessing.MerchantFileProcessor/merchant-processing.bootstrap.json index f025412..c7dcc95 100644 --- a/TransactionProcessing.MerchantFileProcessor/merchant-processing.bootstrap.json +++ b/TransactionProcessing.MerchantFileProcessor/merchant-processing.bootstrap.json @@ -2,7 +2,7 @@ "MerchantProcessing": { "Authentication": { "ClientId": "serviceClient", - "ClientSecret": "" + "ClientSecret": "Test" }, "FileProcessing": { "UserId": "a51791a8-2731-490c-a8ac-639461f2a41f" @@ -124,18 +124,6 @@ } ] } - ], - "Merchants": [ - { - "Name": "Test Merchant 1", - "EstateId": "435613ac-a468-47a3-ac4f-649d89764c22", - "MerchantId": "ab1c99fb-1c6c-4694-9a32-b71be5d1da33", - "RunTimesUtc": [ - "09:02:00", - "15:02:00" - ], - "Enabled": true - } ] } } diff --git a/TransactionProcessing.MerchantPos/Program.cs b/TransactionProcessing.MerchantPos/Program.cs index 3fea643..ebd2c48 100644 --- a/TransactionProcessing.MerchantPos/Program.cs +++ b/TransactionProcessing.MerchantPos/Program.cs @@ -7,6 +7,9 @@ using SecurityService.Client; using Shared.Serialisation; using System.Text.Json; +using HealthChecks.UI.Client; +using Microsoft.AspNetCore.Diagnostics.HealthChecks; +using Shared.Monitoring; using TransactionProcessing.MerchantPos.Persistence; using TransactionProcessing.MerchantPos.Runtime; using TransactionProcessor.Client; @@ -92,7 +95,8 @@ }); builder.Services.AddHealthChecks(); - + builder.Services.AddUptimeKuma(); + var app = builder.Build(); using (var scope = app.Services.CreateScope()) @@ -117,7 +121,25 @@ Results.Json(await factory.BuildAsync())); app.MapRazorPages(); - app.MapHealthChecks("/health"); + app.MapHealthChecks("health", + new HealthCheckOptions + { + Predicate = _ => true, + ResponseWriter = Shared.HealthChecks.HealthCheckMiddleware.WriteResponse + }); + app.MapHealthChecks("healthui", + new HealthCheckOptions + { + Predicate = _ => true, + ResponseWriter = UIResponseWriter.WriteHealthCheckUIResponse + }); + + app.Lifetime.ApplicationStarted.Register(() => + { + app.RegisterWithUptimeKumaAsync() + .GetAwaiter() + .GetResult(); + }); await app.RunAsync(); } diff --git a/TransactionProcessing.MerchantPos/TransactionProcessing.MerchantPos.csproj b/TransactionProcessing.MerchantPos/TransactionProcessing.MerchantPos.csproj index ecc1821..2b934a5 100644 --- a/TransactionProcessing.MerchantPos/TransactionProcessing.MerchantPos.csproj +++ b/TransactionProcessing.MerchantPos/TransactionProcessing.MerchantPos.csproj @@ -8,15 +8,16 @@ - - - + + + - - - - - + + + + + + diff --git a/TransactionProcessing.MerchantPos/appsettings.json b/TransactionProcessing.MerchantPos/appsettings.json index 59ffac6..b579cef 100644 --- a/TransactionProcessing.MerchantPos/appsettings.json +++ b/TransactionProcessing.MerchantPos/appsettings.json @@ -26,6 +26,13 @@ "Microsoft": "Warning", "Microsoft.Hosting.Lifetime": "Information" } + }, + "UptimeKuma": { + "Monitor": { + "Name": "Merchant POS", + "Url": "http://localhost:9600/health", + "IntervalInSeconds": 60 + } } }