diff --git a/Directory.Packages.props b/Directory.Packages.props index ea6e4044..af76f821 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -11,6 +11,7 @@ + diff --git a/EstateManagementUI.BlazorServer/Common/BoostrapperExtensions.cs b/EstateManagementUI.BlazorServer/Common/BoostrapperExtensions.cs index d4d283e2..54e8c628 100644 --- a/EstateManagementUI.BlazorServer/Common/BoostrapperExtensions.cs +++ b/EstateManagementUI.BlazorServer/Common/BoostrapperExtensions.cs @@ -1,11 +1,13 @@ using ClientProxyBase; using EstateManagementUI.BlazorServer.Permissions; +using EstateManagementUI.BlazorServer.Testing; using EstateManagementUI.BlazorServer.TokenManagement; using EstateManagementUI.BlazorServer.UIServices; using EstateManagementUI.BusinessLogic.BackendAPI; using EstateManagementUI.BusinessLogic.Client; using EstateManagementUI.BusinessLogic.RequestHandlers; using EstateManagementUI.BusinessLogic.Services; +using FileProcessor.Client; using MediatR; using Microsoft.AspNetCore.Authentication; using Microsoft.AspNetCore.Authentication.Cookies; @@ -16,10 +18,9 @@ using Shared.Serialisation; using System.Data.SqlTypes; using System.Net; +using System.Reflection; using System.Security.Cryptography.X509Certificates; -using FileProcessor.Client; using TransactionProcessor.Client; -using EstateManagementUI.BlazorServer.Testing; namespace EstateManagementUI.BlazorServer.Common; @@ -119,7 +120,10 @@ public static WebApplicationBuilder LoadConfiguration(this WebApplicationBuilder .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true) .AddJsonFile($"appsettings.{builder.Environment.EnvironmentName}.json", optional: true, reloadOnChange: true) .AddJsonFile($"/home/txnproc/config/appsettings.local.json", optional: true) - .AddEnvironmentVariables(); + .AddEnvironmentVariables().AddInMemoryCollection(new Dictionary + { + ["HealthMonitoring:Service:Version"] = Assembly.GetEntryAssembly()?.GetName().Version?.ToString() ?? "0.0.0.0" + }); ConfigurationReader.Initialise(builder.Configuration); return builder; diff --git a/EstateManagementUI.BlazorServer/EstateManagementUI.BlazorServer.csproj b/EstateManagementUI.BlazorServer/EstateManagementUI.BlazorServer.csproj index 10e4ef21..dbfe14f4 100644 --- a/EstateManagementUI.BlazorServer/EstateManagementUI.BlazorServer.csproj +++ b/EstateManagementUI.BlazorServer/EstateManagementUI.BlazorServer.csproj @@ -12,6 +12,7 @@ + diff --git a/EstateManagementUI.BlazorServer/Program.cs b/EstateManagementUI.BlazorServer/Program.cs index 2186f7f5..4399e580 100644 --- a/EstateManagementUI.BlazorServer/Program.cs +++ b/EstateManagementUI.BlazorServer/Program.cs @@ -1,18 +1,19 @@ using EstateManagementUI.BlazorServer.Common; using EstateManagementUI.BlazorServer.Components; +using EstateManagementUI.BlazorServer.Testing; using HealthChecks.UI.Client; +using HealthMonitoring.Client; +using Microsoft.AspNetCore.Components.Server; +using Microsoft.AspNetCore.DataProtection; using Microsoft.AspNetCore.Diagnostics.HealthChecks; -using EstateManagementUI.BlazorServer.Testing; using Sentry.Extensibility; using Shared.Extensions; using Shared.General; +using Shared.Monitoring; using Shared.Serialisation; using Spectre.Console; using System.IdentityModel.Tokens.Jwt; using System.Reflection; -using Microsoft.AspNetCore.DataProtection; -using Microsoft.AspNetCore.Components.Server; -using Shared.Monitoring; WebApplicationBuilder builder = WebApplication.CreateBuilder(args).LoadConfiguration().ConfigureKestrel(); @@ -96,7 +97,7 @@ builder.RegisterUIServices().RegisterSerialiser(); -builder.Services.AddUptimeKuma(); +builder.Services.AddHealthMonitoringRegistration(builder.Configuration); // Add Health Checks - read URLs from configuration var estateReportingApiUrl = builder.Configuration.GetValue("AppSettings:EstateReportingApi") ?? "http://localhost:5011"; @@ -190,13 +191,6 @@ Uri ValidateAndCreateUri(string url, string configKey) ResponseWriter = UIResponseWriter.WriteHealthCheckUIResponse }); -app.Lifetime.ApplicationStarted.Register(() => -{ - app.RegisterWithUptimeKumaAsync() - .GetAwaiter() - .GetResult(); -}); - app.Run(); diff --git a/EstateManagementUI.BlazorServer/appsettings.json b/EstateManagementUI.BlazorServer/appsettings.json index 60c74755..6f611a67 100644 --- a/EstateManagementUI.BlazorServer/appsettings.json +++ b/EstateManagementUI.BlazorServer/appsettings.json @@ -39,5 +39,32 @@ "Url": "http://localhost:5004/health", "IntervalInSeconds": 60 } + }, + "HealthMonitoring": { + "Service": { + "ServiceId": "estate-management-ui", + "Name": "Estate Management UI", + "Description": "Estate Management UI", + "HealthUrl": "https://localhost:5004/healthui", + "IgnoreCertificateErrors": true + }, + "Dependencies": [ + { + "DependencyName": "Security Service", + "TargetServiceId": "security-service" + }, + { + "DependencyName": "Estate Reporting API", + "TargetServiceId": "estate-reporting-api" + }, + { + "DependencyName": "Transaction Processor Service", + "TargetServiceId": "transaction-processor" + }, + { + "DependencyName": "File Processor Service", + "TargetServiceId": "file-processor" + } + ] } }