Autorefresh on healthchecks with config timeout

This commit is contained in:
Eduard Tomas 2017-05-09 13:54:45 +02:00
parent 44ac659e32
commit 95af2d9a02
9 changed files with 64 additions and 25 deletions

View File

@ -50,7 +50,12 @@
services.AddHealthChecks(checks => services.AddHealthChecks(checks =>
{ {
checks.AddSqlCheck("CatalogDb", Configuration["ConnectionString"]); var minutes = 1;
if (int.TryParse(Configuration["HealthCheck:Timeout"], out var minutesParsed))
{
minutes = minutesParsed;
}
checks.AddSqlCheck("CatalogDb", Configuration["ConnectionString"], TimeSpan.FromMinutes(minutes));
}); });
services.AddMvc(options => services.AddMvc(options =>

View File

@ -66,7 +66,12 @@ namespace eShopOnContainers.Identity
services.AddHealthChecks(checks => services.AddHealthChecks(checks =>
{ {
checks.AddSqlCheck("Identity_Db", Configuration.GetConnectionString("DefaultConnection")); var minutes = 1;
if (int.TryParse(Configuration["HealthCheck:Timeout"], out var minutesParsed))
{
minutes = minutesParsed;
}
checks.AddSqlCheck("Identity_Db", Configuration.GetConnectionString("DefaultConnection"), TimeSpan.FromMinutes(minutes));
}); });
services.AddTransient<IEmailSender, AuthMessageSender>(); services.AddTransient<IEmailSender, AuthMessageSender>();

View File

@ -61,7 +61,12 @@
services.AddHealthChecks(checks => services.AddHealthChecks(checks =>
{ {
checks.AddSqlCheck("OrderingDb", Configuration["ConnectionString"]); var minutes = 1;
if (int.TryParse(Configuration["HealthCheck:Timeout"], out var minutesParsed))
{
minutes = minutesParsed;
}
checks.AddSqlCheck("OrderingDb", Configuration["ConnectionString"], TimeSpan.FromMinutes(minutes));
}); });
services.AddEntityFrameworkSqlServer() services.AddEntityFrameworkSqlServer()

View File

@ -54,16 +54,21 @@ namespace Microsoft.eShopOnContainers.WebMVC
services.AddHealthChecks(checks => services.AddHealthChecks(checks =>
{ {
checks.AddUrlCheck(Configuration["CatalogUrl"]); var minutes = 1;
checks.AddUrlCheck(Configuration["OrderingUrl"]); if (int.TryParse(Configuration["HealthCheck:Timeout"], out var minutesParsed))
checks.AddUrlCheck(Configuration["BasketUrl"]); {
checks.AddUrlCheck(Configuration["IdentityUrl"]); minutes = minutesParsed;
}
checks.AddUrlCheck(Configuration["CatalogUrl"], TimeSpan.FromMinutes(minutes));
checks.AddUrlCheck(Configuration["OrderingUrl"], TimeSpan.FromMinutes(minutes));
checks.AddUrlCheck(Configuration["BasketUrl"], TimeSpan.FromMinutes(minutes));
checks.AddUrlCheck(Configuration["IdentityUrl"], TimeSpan.FromMinutes(minutes));
}); });
// Add application services. // Add application services.
services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>(); services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();
services.AddTransient<ICatalogService, CatalogService>(); services.AddTransient<ICatalogService, CatalogService>();
services.AddTransient<IOrderingService, OrderingService>(); services.AddTransient<IOrderingService, OrderingService>();
services.AddTransient<IBasketService, BasketService>(); services.AddTransient<IBasketService, BasketService>();
services.AddTransient<IIdentityParser<ApplicationUser>, IdentityParser>(); services.AddTransient<IIdentityParser<ApplicationUser>, IdentityParser>();
@ -76,7 +81,7 @@ namespace Microsoft.eShopOnContainers.WebMVC
{ {
services.AddSingleton<IHttpClient, StandardHttpClient>(); services.AddSingleton<IHttpClient, StandardHttpClient>();
} }
} }
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline. // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
@ -113,10 +118,10 @@ namespace Microsoft.eShopOnContainers.WebMVC
AuthenticationScheme = "oidc", AuthenticationScheme = "oidc",
SignInScheme = "Cookies", SignInScheme = "Cookies",
Authority = identityUrl.ToString(), Authority = identityUrl.ToString(),
PostLogoutRedirectUri = callBackUrl.ToString(), PostLogoutRedirectUri = callBackUrl.ToString(),
ClientId = "mvc", ClientId = "mvc",
ClientSecret = "secret", ClientSecret = "secret",
ResponseType = "code id_token", ResponseType = "code id_token",
SaveTokens = true, SaveTokens = true,
GetClaimsFromUserInfoEndpoint = true, GetClaimsFromUserInfoEndpoint = true,
RequireHttpsMetadata = false, RequireHttpsMetadata = false,

View File

@ -45,10 +45,16 @@ namespace eShopConContainers.WebSPA
{ {
services.AddHealthChecks(checks => services.AddHealthChecks(checks =>
{ {
checks.AddUrlCheck(Configuration["CatalogUrl"]); var minutes = 1;
checks.AddUrlCheck(Configuration["OrderingUrl"]); if (int.TryParse(Configuration["HealthCheck:Timeout"], out var minutesParsed))
checks.AddUrlCheck(Configuration["BasketUrl"]); {
checks.AddUrlCheck(Configuration["IdentityUrl"]); minutes = minutesParsed;
}
checks.AddUrlCheck(Configuration["CatalogUrl"], TimeSpan.FromMinutes(minutes));
checks.AddUrlCheck(Configuration["OrderingUrl"], TimeSpan.FromMinutes(minutes));
checks.AddUrlCheck(Configuration["BasketUrl"], TimeSpan.FromMinutes(minutes));
checks.AddUrlCheck(Configuration["IdentityUrl"], TimeSpan.FromMinutes(minutes));
}); });
services.Configure<AppSettings>(Configuration); services.Configure<AppSettings>(Configuration);

View File

@ -28,6 +28,7 @@ namespace WebStatus.Controllers
data.AddResult(checkResult.Key, checkResult.Value); data.AddResult(checkResult.Key, checkResult.Value);
} }
ViewBag.RefreshSeconds = 60;
return View(data); return View(data);
} }

View File

@ -8,11 +8,11 @@ namespace WebStatus.Extensions
{ {
public static class HealthCheckBuilderExtensions public static class HealthCheckBuilderExtensions
{ {
public static HealthCheckBuilder AddUrlCheckIfNotNull(this HealthCheckBuilder builder, string url) public static HealthCheckBuilder AddUrlCheckIfNotNull(this HealthCheckBuilder builder, string url, TimeSpan cacheDuration)
{ {
if (!string.IsNullOrEmpty(url)) if (!string.IsNullOrEmpty(url))
{ {
builder.AddUrlCheck(url); builder.AddUrlCheck(url, cacheDuration);
} }
return builder; return builder;

View File

@ -32,12 +32,18 @@ namespace WebStatus
// Add framework services. // Add framework services.
services.AddHealthChecks(checks => services.AddHealthChecks(checks =>
{ {
checks.AddUrlCheckIfNotNull(Configuration["OrderingUrl"]); var minutes = 1;
checks.AddUrlCheckIfNotNull(Configuration["BasketUrl"]); if (int.TryParse(Configuration["HealthCheck:Timeout"], out var minutesParsed))
checks.AddUrlCheckIfNotNull(Configuration["CatalogUrl"]); {
checks.AddUrlCheckIfNotNull(Configuration["IdentityUrl"]); minutes = minutesParsed;
checks.AddUrlCheckIfNotNull(Configuration["mvc"]); }
checks.AddUrlCheckIfNotNull(Configuration["spa"]);
checks.AddUrlCheckIfNotNull(Configuration["OrderingUrl"], TimeSpan.FromMinutes(minutes));
checks.AddUrlCheckIfNotNull(Configuration["BasketUrl"], TimeSpan.FromMinutes(minutes));
checks.AddUrlCheckIfNotNull(Configuration["CatalogUrl"], TimeSpan.FromMinutes(minutes));
checks.AddUrlCheckIfNotNull(Configuration["IdentityUrl"], TimeSpan.FromMinutes(minutes));
checks.AddUrlCheckIfNotNull(Configuration["mvc"], TimeSpan.FromMinutes(minutes));
checks.AddUrlCheckIfNotNull(Configuration["spa"], TimeSpan.FromMinutes(minutes));
}); });
services.AddMvc(); services.AddMvc();
} }

View File

@ -16,6 +16,12 @@
asp-fallback-test-class="sr-only" asp-fallback-test-property="position" asp-fallback-test-value="absolute" /> asp-fallback-test-class="sr-only" asp-fallback-test-property="position" asp-fallback-test-value="absolute" />
<link rel="stylesheet" href="~/css/site.min.css" asp-append-version="true" /> <link rel="stylesheet" href="~/css/site.min.css" asp-append-version="true" />
</environment> </environment>
@if (ViewBag.RefreshSeconds != null && ViewBag.RefreshSeconds > 0)
{
<meta http-equiv="refresh" content="@ViewBag.RefreshSeconds">
}
@Html.Raw(JavaScriptSnippet.FullScript) @Html.Raw(JavaScriptSnippet.FullScript)
</head> </head>
<body> <body>