Browse Source

Add health check in Ordering.BackgroundTask project

features/migration-dotnet3
ericuss 5 years ago
parent
commit
d29f6c21f9
6 changed files with 93 additions and 35 deletions
  1. +16
    -14
      docker-compose.override.yml
  2. +1
    -1
      src/Services/Ordering/Ordering.BackgroundTasks/Dockerfile
  3. +11
    -7
      src/Services/Ordering/Ordering.BackgroundTasks/Ordering.BackgroundTasks.csproj
  4. +7
    -13
      src/Services/Ordering/Ordering.BackgroundTasks/Program.cs
  5. +57
    -0
      src/Services/Ordering/Ordering.BackgroundTasks/Startup.cs
  6. +1
    -0
      src/_build/dependencies.props

+ 16
- 14
docker-compose.override.yml View File

@ -342,20 +342,22 @@ services:
- HealthChecks-UI__HealthChecks__7__Uri=http://webmarketingapigw/hc - HealthChecks-UI__HealthChecks__7__Uri=http://webmarketingapigw/hc
- HealthChecks-UI__HealthChecks__8__Name=Ordering HTTP Check - HealthChecks-UI__HealthChecks__8__Name=Ordering HTTP Check
- HealthChecks-UI__HealthChecks__8__Uri=http://ordering.api/hc - 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} - ApplicationInsights__InstrumentationKey=${INSTRUMENTATION_KEY}
- OrchestratorType=${ORCHESTRATOR_TYPE} - OrchestratorType=${ORCHESTRATOR_TYPE}
ports: ports:


+ 1
- 1
src/Services/Ordering/Ordering.BackgroundTasks/Dockerfile View File

@ -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 WORKDIR /app
EXPOSE 80 EXPOSE 80


+ 11
- 7
src/Services/Ordering/Ordering.BackgroundTasks/Ordering.BackgroundTasks.csproj View File

@ -9,21 +9,25 @@
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="AspNetCore.HealthChecks.AzureServiceBus" Version="$(AspNetCore_HealthChecks_AzureServiceBus)" />
<PackageReference Include="AspNetCore.HealthChecks.Rabbitmq" Version="$(AspNetCore_HealthChecks_Rabbitmq)" />
<PackageReference Include="AspNetCore.HealthChecks.SqlServer" Version="$(AspNetCore_HealthChecks_SqlServer)" />
<PackageReference Include="AspNetCore.HealthChecks.UI.Client" Version="$(AspNetCore_HealthChecks_UI_Client)" />
<PackageReference Include="Autofac" Version="$(Autofac)" />
<PackageReference Include="Autofac.Extensions.DependencyInjection" Version="$(Autofac_Extensions_DependencyInjection)" />
<PackageReference Include="Dapper" Version="$(Dapper)" />
<PackageReference Include="Microsoft.AspNetCore.App" Version="3.0.0-preview7.19365.7" />
<PackageReference Include="Microsoft.Extensions.Hosting" Version="$(Microsoft_Extensions_Hosting)" /> <PackageReference Include="Microsoft.Extensions.Hosting" Version="$(Microsoft_Extensions_Hosting)" />
<PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="$(Microsoft_VisualStudio_Azure_Containers_Tools_Targets)" /> <PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="$(Microsoft_VisualStudio_Azure_Containers_Tools_Targets)" />
<PackageReference Include="Dapper" Version="$(Dapper)" />
<PackageReference Include="Microsoft.AspNetCore.Diagnostics.HealthChecks" Version="$(Microsoft_AspNetCore_Diagnostics_HealthChecks)" />
<PackageReference Include="Microsoft.AspNetCore.Http.Abstractions" Version="$(Microsoft_AspNetCore_Http_Abstractions_3_0)" />
<PackageReference Include="Serilog.AspNetCore" Version="$(Serilog_AspNetCore)" /> <PackageReference Include="Serilog.AspNetCore" Version="$(Serilog_AspNetCore)" />
<PackageReference Include="Serilog.Enrichers.Environment" Version="$(Serilog_Enrichers_Environment)" /> <PackageReference Include="Serilog.Enrichers.Environment" Version="$(Serilog_Enrichers_Environment)" />
<PackageReference Include="Serilog.Settings.Configuration" Version="$(Serilog_Settings_Configuration)" /> <PackageReference Include="Serilog.Settings.Configuration" Version="$(Serilog_Settings_Configuration)" />
<PackageReference Include="Serilog.Sinks.Console" Version="$(Serilog_Sinks_Console)" /> <PackageReference Include="Serilog.Sinks.Console" Version="$(Serilog_Sinks_Console)" />
<PackageReference Include="Serilog.Sinks.Seq" Version="$(Serilog_Sinks_Seq)" /> <PackageReference Include="Serilog.Sinks.Seq" Version="$(Serilog_Sinks_Seq)" />
<PackageReference Include="Serilog.Sinks.Http" Version="$(Serilog_Sinks_Http)" /> <PackageReference Include="Serilog.Sinks.Http" Version="$(Serilog_Sinks_Http)" />
<PackageReference Include="Autofac" Version="$(Autofac)" />
<PackageReference Include="Autofac.Extensions.DependencyInjection" Version="$(Autofac_Extensions_DependencyInjection)" />
<PackageReference Include="Microsoft.AspNetCore.Diagnostics.HealthChecks" Version="$(Microsoft_AspNetCore_Diagnostics_HealthChecks)" />
<PackageReference Include="AspNetCore.HealthChecks.AzureServiceBus" Version="$(AspNetCore_HealthChecks_AzureServiceBus)" />
<PackageReference Include="AspNetCore.HealthChecks.Rabbitmq" Version="$(AspNetCore_HealthChecks_Rabbitmq)" />
<PackageReference Include="AspNetCore.HealthChecks.SqlServer" Version="$(AspNetCore_HealthChecks_SqlServer)" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>


+ 7
- 13
src/Services/Ordering/Ordering.BackgroundTasks/Program.cs View File

@ -6,6 +6,8 @@ using Ordering.BackgroundTasks.Extensions;
using Ordering.BackgroundTasks.Tasks; using Ordering.BackgroundTasks.Tasks;
using Serilog; using Serilog;
using System.IO; using System.IO;
using Microsoft.AspNetCore;
using Microsoft.AspNetCore.Hosting;
namespace Ordering.BackgroundTasks namespace Ordering.BackgroundTasks
{ {
@ -13,11 +15,11 @@ namespace Ordering.BackgroundTasks
{ {
public static void Main(string[] args) 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) => .ConfigureAppConfiguration((host, builder) =>
{ {
builder.SetBasePath(Directory.GetCurrentDirectory()); builder.SetBasePath(Directory.GetCurrentDirectory());
@ -27,15 +29,7 @@ namespace Ordering.BackgroundTasks
builder.AddCommandLine(args); builder.AddCommandLine(args);
}) })
.ConfigureLogging((host, builder) => builder.UseSerilog(host.Configuration).AddSerilog()) .ConfigureLogging((host, builder) => builder.UseSerilog(host.Configuration).AddSerilog())
.ConfigureServices((host, services) =>
{
services.AddCustomHealthCheck(host.Configuration);
services.Configure<BackgroundTaskSettings>(host.Configuration);
services.AddOptions();
services.AddHostedService<GracePeriodManagerService>();
services.AddEventBus(host.Configuration);
services.AddAutofac(container => container.Populate(services));
})
.UseServiceProviderFactory(new AutofacServiceProviderFactory());
.UseStartup<Startup>()
.Build();
} }
} }

+ 57
- 0
src/Services/Ordering/Ordering.BackgroundTasks/Startup.cs View File

@ -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<BackgroundTaskSettings>(this.Configuration)
.AddOptions()
.AddHostedService<GracePeriodManagerService>()
.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")
});
});
}
}
}

+ 1
- 0
src/_build/dependencies.props View File

@ -58,6 +58,7 @@
<Microsoft_AspNetCore_Diagnostics_HealthChecks>2.2.0</Microsoft_AspNetCore_Diagnostics_HealthChecks> <Microsoft_AspNetCore_Diagnostics_HealthChecks>2.2.0</Microsoft_AspNetCore_Diagnostics_HealthChecks>
<Microsoft_AspNetCore_HealthChecks>1.0.0</Microsoft_AspNetCore_HealthChecks> <Microsoft_AspNetCore_HealthChecks>1.0.0</Microsoft_AspNetCore_HealthChecks>
<Microsoft_AspNetCore_Http_Abstractions>2.2.0</Microsoft_AspNetCore_Http_Abstractions> <Microsoft_AspNetCore_Http_Abstractions>2.2.0</Microsoft_AspNetCore_Http_Abstractions>
<Microsoft_AspNetCore_Http_Abstractions_3_0>3.0.0-preview4-19123-01</Microsoft_AspNetCore_Http_Abstractions_3_0>
<Microsoft_AspNetCore_Mvc_Testing>3.0.0-preview6.19307.2</Microsoft_AspNetCore_Mvc_Testing> <Microsoft_AspNetCore_Mvc_Testing>3.0.0-preview6.19307.2</Microsoft_AspNetCore_Mvc_Testing>
<Microsoft_AspNetCore_TestHost>3.0.0-preview7.19365.7</Microsoft_AspNetCore_TestHost> <Microsoft_AspNetCore_TestHost>3.0.0-preview7.19365.7</Microsoft_AspNetCore_TestHost>
<Microsoft_AspNetCore_Identity_EntityFrameworkCore>3.0.0-preview7.19365.7</Microsoft_AspNetCore_Identity_EntityFrameworkCore> <Microsoft_AspNetCore_Identity_EntityFrameworkCore>3.0.0-preview7.19365.7</Microsoft_AspNetCore_Identity_EntityFrameworkCore>


Loading…
Cancel
Save