我在应用程序中添加了.NET Core运行状况检查。
我想使用标签仅运行一项检查(如果它是基本检查)或运行所有检查以进行更详细的检查。
这就是我所拥有的:
services.AddHealthChecks()
.AddCheck("Check1", () => HealthCheckResult.Healthy("Service Is Healthy!"), tags: new[] { "basic", "full" })
.AddCheck<CheckLogsAreHealthy>("Check2", tags: new[] { "full" })
.AddCheck<CheckLvcConnectionStatus>("Check3", tags: new[] { "full" })
我认为我的网址应如下所示:
http://localhost:4000/api/health?tags=basic
或
http://localhost:4000/api/health?tags=full
但事实并非如此。如何运行每张支票?
答案 0 :(得分:1)
这可能是一个较晚的答案,我希望您已经找到了解决方案,但是调用AddHealthChecks
不会自动为您的健康检查创建URL,而只是注册它们。
要为健康检查创建端点,必须在MapHealthChecks
上调用IEndpointRouteBuilder
方法。此方法还接受带有Predicate
字段的选项,您可以在其中传递谓词以筛选要执行的运行状况检查。例如,以下示例根据标签过滤已注册的健康检查,并创建一个/health/basic
和一个/health/full
端点,每个执行健康检查的端点都具有basic
或full
在他们的标签中。
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
...
app.UseEndpoints(endpoints =>
{
endpoints.MapHealthChecks("/health/basic", new Microsoft.AspNetCore.Diagnostics.HealthChecks.HealthCheckOptions
{
Predicate = registration => registration.Tags.Contains("basic")
});
endpoints.MapHealthChecks("/health/full", new Microsoft.AspNetCore.Diagnostics.HealthChecks.HealthCheckOptions
{
Predicate = registration => registration.Tags.Contains("full")
});
});
...
}