From d29f6c21f9dab43d4837e6cac436be74b909335c Mon Sep 17 00:00:00 2001 From: ericuss Date: Wed, 7 Aug 2019 15:45:23 +0200 Subject: [PATCH] Add health check in Ordering.BackgroundTask project --- docker-compose.override.yml | 30 +++++----- .../Ordering.BackgroundTasks/Dockerfile | 2 +- .../Ordering.BackgroundTasks.csproj | 18 +++--- .../Ordering.BackgroundTasks/Program.cs | 20 +++---- .../Ordering.BackgroundTasks/Startup.cs | 57 +++++++++++++++++++ src/_build/dependencies.props | 1 + 6 files changed, 93 insertions(+), 35 deletions(-) create mode 100644 src/Services/Ordering/Ordering.BackgroundTasks/Startup.cs diff --git a/docker-compose.override.yml b/docker-compose.override.yml index 24b0cf9a8..60f2efb45 100644 --- a/docker-compose.override.yml +++ b/docker-compose.override.yml @@ -342,20 +342,22 @@ services: - HealthChecks-UI__HealthChecks__7__Uri=http://webmarketingapigw/hc - HealthChecks-UI__HealthChecks__8__Name=Ordering HTTP Check - HealthChecks-UI__HealthChecks__8__Uri=http://ordering.api/hc - - HealthChecks-UI__HealthChecks__10__Name=Basket HTTP Check - - HealthChecks-UI__HealthChecks__10__Uri=http://basket.api/hc - - HealthChecks-UI__HealthChecks__11__Name=Catalog HTTP Check - - HealthChecks-UI__HealthChecks__11__Uri=http://catalog.api/hc - - HealthChecks-UI__HealthChecks__12__Name=Identity HTTP Check - - HealthChecks-UI__HealthChecks__12__Uri=http://identity.api/hc - - HealthChecks-UI__HealthChecks__13__Name=Marketing HTTP Check - - HealthChecks-UI__HealthChecks__13__Uri=http://marketing.api/hc - - HealthChecks-UI__HealthChecks__14__Name=Locations HTTP Check - - HealthChecks-UI__HealthChecks__14__Uri=http://locations.api/hc - - HealthChecks-UI__HealthChecks__15__Name=Payments HTTP Check - - HealthChecks-UI__HealthChecks__15__Uri=http://payment.api/hc - - HealthChecks-UI__HealthChecks__16__Name=Ordering SignalRHub HTTP Check - - HealthChecks-UI__HealthChecks__16__Uri=http://ordering.signalrhub/hc + - HealthChecks-UI__HealthChecks__9__Name=Basket HTTP Check + - HealthChecks-UI__HealthChecks__9__Uri=http://basket.api/hc + - HealthChecks-UI__HealthChecks__10__Name=Catalog HTTP Check + - HealthChecks-UI__HealthChecks__10__Uri=http://catalog.api/hc + - HealthChecks-UI__HealthChecks__11__Name=Identity HTTP Check + - HealthChecks-UI__HealthChecks__11__Uri=http://identity.api/hc + - HealthChecks-UI__HealthChecks__12__Name=Marketing HTTP Check + - HealthChecks-UI__HealthChecks__12__Uri=http://marketing.api/hc + - HealthChecks-UI__HealthChecks__13__Name=Locations HTTP Check + - HealthChecks-UI__HealthChecks__13__Uri=http://locations.api/hc + - HealthChecks-UI__HealthChecks__14__Name=Payments HTTP Check + - HealthChecks-UI__HealthChecks__14__Uri=http://payment.api/hc + - HealthChecks-UI__HealthChecks__15__Name=Ordering SignalRHub HTTP Check + - HealthChecks-UI__HealthChecks__15__Uri=http://ordering.signalrhub/hc + - HealthChecks-UI__HealthChecks__16__Name=Ordering HTTP Background Check + - HealthChecks-UI__HealthChecks__16__Uri=http://ordering.backgroundtasks/hc - ApplicationInsights__InstrumentationKey=${INSTRUMENTATION_KEY} - OrchestratorType=${ORCHESTRATOR_TYPE} ports: diff --git a/src/Services/Ordering/Ordering.BackgroundTasks/Dockerfile b/src/Services/Ordering/Ordering.BackgroundTasks/Dockerfile index 1aeaaafc0..820f8d4b1 100644 --- a/src/Services/Ordering/Ordering.BackgroundTasks/Dockerfile +++ b/src/Services/Ordering/Ordering.BackgroundTasks/Dockerfile @@ -1,4 +1,4 @@ -FROM mcr.microsoft.com/dotnet/core/runtime:3.0-buster-slim AS base +FROM mcr.microsoft.com/dotnet/core/aspnet:3.0-buster-slim AS base WORKDIR /app EXPOSE 80 diff --git a/src/Services/Ordering/Ordering.BackgroundTasks/Ordering.BackgroundTasks.csproj b/src/Services/Ordering/Ordering.BackgroundTasks/Ordering.BackgroundTasks.csproj index 50c756633..5168760a9 100644 --- a/src/Services/Ordering/Ordering.BackgroundTasks/Ordering.BackgroundTasks.csproj +++ b/src/Services/Ordering/Ordering.BackgroundTasks/Ordering.BackgroundTasks.csproj @@ -9,21 +9,25 @@ + + + + + + + + - + + + - - - - - - diff --git a/src/Services/Ordering/Ordering.BackgroundTasks/Program.cs b/src/Services/Ordering/Ordering.BackgroundTasks/Program.cs index 6d4e72ded..152cd79a7 100644 --- a/src/Services/Ordering/Ordering.BackgroundTasks/Program.cs +++ b/src/Services/Ordering/Ordering.BackgroundTasks/Program.cs @@ -6,6 +6,8 @@ using Ordering.BackgroundTasks.Extensions; using Ordering.BackgroundTasks.Tasks; using Serilog; using System.IO; +using Microsoft.AspNetCore; +using Microsoft.AspNetCore.Hosting; namespace Ordering.BackgroundTasks { @@ -13,11 +15,11 @@ namespace Ordering.BackgroundTasks { public static void Main(string[] args) { - CreateHostBuilder(args).Build().Run(); + CreateHostBuilder(args).Run(); } - public static IHostBuilder CreateHostBuilder(string[] args) => - Host.CreateDefaultBuilder(args) + public static IWebHost CreateHostBuilder(string[] args) => + WebHost.CreateDefaultBuilder(args) .ConfigureAppConfiguration((host, builder) => { builder.SetBasePath(Directory.GetCurrentDirectory()); @@ -27,15 +29,7 @@ namespace Ordering.BackgroundTasks builder.AddCommandLine(args); }) .ConfigureLogging((host, builder) => builder.UseSerilog(host.Configuration).AddSerilog()) - .ConfigureServices((host, services) => - { - services.AddCustomHealthCheck(host.Configuration); - services.Configure(host.Configuration); - services.AddOptions(); - services.AddHostedService(); - services.AddEventBus(host.Configuration); - services.AddAutofac(container => container.Populate(services)); - }) - .UseServiceProviderFactory(new AutofacServiceProviderFactory()); + .UseStartup() + .Build(); } } diff --git a/src/Services/Ordering/Ordering.BackgroundTasks/Startup.cs b/src/Services/Ordering/Ordering.BackgroundTasks/Startup.cs new file mode 100644 index 000000000..1f35b711c --- /dev/null +++ b/src/Services/Ordering/Ordering.BackgroundTasks/Startup.cs @@ -0,0 +1,57 @@ +namespace Ordering.BackgroundTasks +{ + using Autofac; + using Autofac.Extensions.DependencyInjection; + using Microsoft.AspNetCore.Builder; + using Microsoft.AspNetCore.Diagnostics.HealthChecks; + using Microsoft.Extensions.Configuration; + using Microsoft.Extensions.DependencyInjection; + using Microsoft.Extensions.Logging; + using Ordering.BackgroundTasks.Extensions; + using Ordering.BackgroundTasks.Tasks; + using System; + using HealthChecks.UI.Client; + + public class Startup + { + public Startup(IConfiguration configuration) + { + Configuration = configuration; + } + + public IConfiguration Configuration { get; } + + public virtual IServiceProvider ConfigureServices(IServiceCollection services) + { + services.AddCustomHealthCheck(this.Configuration) + .Configure(this.Configuration) + .AddOptions() + .AddHostedService() + .AddEventBus(this.Configuration) + .AddAutofac(container => container.Populate(services)); + + var container = new ContainerBuilder(); + container.Populate(services); + + return new AutofacServiceProvider(container.Build()); + } + + + public void Configure(IApplicationBuilder app, ILoggerFactory loggerFactory) + { + app.UseRouting(); + app.UseEndpoints(endpoints => + { + endpoints.MapHealthChecks("/hc", new HealthCheckOptions() + { + Predicate = _ => true, + ResponseWriter = UIResponseWriter.WriteHealthCheckUIResponse + }); + endpoints.MapHealthChecks("/liveness", new HealthCheckOptions + { + Predicate = r => r.Name.Contains("self") + }); + }); + } + } +} diff --git a/src/_build/dependencies.props b/src/_build/dependencies.props index dceb4edd2..5ea99f10c 100644 --- a/src/_build/dependencies.props +++ b/src/_build/dependencies.props @@ -58,6 +58,7 @@ 2.2.0 1.0.0 2.2.0 + 3.0.0-preview4-19123-01 3.0.0-preview6.19307.2 3.0.0-preview7.19365.7 3.0.0-preview7.19365.7