【发布时间】:2019-09-16 13:57:34
【问题描述】:
我开始使用来自 Asp.net Core 的运行状况检查,我喜欢它们,但我找不到一种简单的方法将它与基于租户的路由连接起来,例如支持:
- /health [通用非租户特定检查]
- /{tenant}/health [租户特定检查]
如果我成功地使用了这种方法,我可以使用标签来过滤要使用的健康检查,但不幸的是我未能为请求配置路由。
app.UseEndpointRouting();
app.UseHealthChecks("/{tenant}/health", new HealthCheckOptions
{
ResponseWriter = WriteCustomHealthResponse,
AllowCachingResponses = false,
Predicate = _ => _.Tags.Contains("tenant-specific")
});
上面的代码没有正确路由。 我探索了使用类似以下内容的可能性:
app.MapWhen(context =>
context.Request.Method == HttpMethod.Get.Method &&
context.Request.?ROUTEDATA?.SOMECHECK("/{tenant}/HealthCheck"),
builder => builder.UseHealthChecks());
但在这种情况下,我没有办法检查路由是否正确。
【问题讨论】:
-
你为什么需要这个?运行状况检查是针对整个应用程序的。
-
好吧,我不同意,在我的架构中,我可能会遇到仅影响某些租户的可用性问题,例如,我还有租户特定的数据库,以及各种租户驱动的配置、集成等。我想检查多租户资源(以及更多),但也要检查特定于租户的资源,我不一定知道它们是否存在。也许我正在重载该功能,但这确实让我对系统状态有了很好的了解。
标签: c# asp.net-core health-monitoring