运行 某些 .NET Core 健康检查取决于标签
Run certain .NET Core health checks depending on tags
我在我的应用程序中添加了 .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" })
我认为我的 URL 应该是这样的:
http://localhost:4000/api/health?tags=basic
或
http://localhost:4000/api/health?tags=full
不过好像不是这样的。我如何 运行 每次检查?
这可能是一个迟到的答案,我希望你已经找到了你的解决方案,但是调用 AddHealthChecks
不会自动为你的健康检查创建一个 URL,它只是注册它们。
要为您的健康检查创建端点,您必须在 IEndpointRouteBuilder
上调用 MapHealthChecks
方法。此方法还接受带有 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")
});
});
...
}
我在我的应用程序中添加了 .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" })
我认为我的 URL 应该是这样的:
http://localhost:4000/api/health?tags=basic
或
http://localhost:4000/api/health?tags=full
不过好像不是这样的。我如何 运行 每次检查?
这可能是一个迟到的答案,我希望你已经找到了你的解决方案,但是调用 AddHealthChecks
不会自动为你的健康检查创建一个 URL,它只是注册它们。
要为您的健康检查创建端点,您必须在 IEndpointRouteBuilder
上调用 MapHealthChecks
方法。此方法还接受带有 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")
});
});
...
}