使用健康检查与地图健康检查

问题描述 投票:0回答:2

我四处查看,但我假设这是一种较旧的做事方式,但是将运行状况检查端点添加到中间件是否有更深层的区别?

In Startup.Configure()..

app.UseEndpoints(endpoints =>
{
    endpoints.MapHealthChecks("/health");
});

app.UseHealthChecks("/health")
c# asp.net-core health-check
2个回答
26
投票

UseHealthChecks
MapHealthChecks
有细微的差别,
UseHealthChecks
允许您在使用null或空PathString时捕获端口上的任何端点,
MapHealthChecks
不允许这样做,使用null会抛出异常,空字符串是相当于
/

它们都在幕后使用相同的中间件

HealthCheckMiddleware
MapHealthChecks
IEndpointRouteBuilder
上的扩展方法,而
UseHealthChecks
IApplicationBuilder
上的扩展方法。

这里附上源码供参考。

https://github.com/dotnet/aspnetcore/tree/main/src/Middleware/HealthChecks/src/Builder

如果您查看源代码,您会发现

UseHealthChecks
使用
MapWhen()
,其中
MapHealthChecks
使用
Map()


0
投票

复制自文档

UseHealthChecks 与 MapHealthChecks

有两种方法可以让调用者进行健康检查:

  • UseHealthChecks 注册中间件以在中间件管道中处理运行状况检查请求。
  • MapHealthChecks 注册运行状况检查端点。该端点与应用程序中的其他端点一起匹配并执行。

MapHealthChecks
相比,使用
UseHealthChecks
的优点是能够使用端点感知中间件(例如授权),并对匹配策略进行更细粒度的控制。与
UseHealthChecks
相比,使用
MapHealthChecks
的主要优点是准确控制运行状况检查在中间件管道中运行的位置。

使用健康检查

  • 当请求与健康检查端点匹配时终止管道。 短路通常是可取的,因为它可以避免不必要的工作,例如日志记录和其他中间件。
  • 主要用于配置管道中的健康检查中间件。
  • 可以匹配端口上带有
    null
    或空
    PathString
    的任何路径。允许对向指定端口发出的任何请求执行运行状况检查。
  • 源代码

MapHealthChecks允许:

  • 当请求与运行状况检查端点匹配时,通过调用ShortCircuit终止管道。例如,
    app.MapHealthChecks("/healthz").ShortCircuit();
    。有关更多信息,请参阅路由后的短路中间件
  • 映射特定路由或端点以进行健康检查。
  • 自定义可访问健康检查端点的URL或路径。
  • 使用不同的路由或配置映射多个健康检查端点。多端点支持:
    • 为不同类型的运行状况检查或组件启用单独的端点。
    • 用于区分应用程序运行状况的不同方面或将特定配置应用于运行状况检查的子集。
  • 源代码
© www.soinside.com 2019 - 2024. All rights reserved.