如何让我的 .NET Core 微服务执行递归健康检查?

How can I make my .NET Core microservice do a recursive health check?

As described我能做到:

checks.AddUrlCheck(Configuration["OrderingUrl"])

让我的健康检查依赖于其他微服务的健康。但是,我不只是想做一个 url 检查。我想对另一个微服务进行全面的健康检查(因此它也会检查另一个微服务的数据库依赖性等)。这可能是这样的,

checks.AddFullMicroserviceIncludingDatabaseAndUrlCheck(Configuration["OrderingUrl"])(假设)。

如何在我的 .NET Core 微服务中进行这种递归健康检查?

在你的微服务中,你可以做任何你想做的事。假设我们有两个微服务 AB,我们想监控它们的健康检查:

微服务 A

此微服务使用 SQL 服务器,因此我们将检查 SQL 连接。

services.AddHealthChecks(checks =>
{
    checks.AddSqlCheck("ServiceA_DB", Configuration["ConnectionString"]);
});

微服务 B

这个微服务也使用 SQL 服务器,但它也使用一些其他服务(例如 REST API),所以我们要检查 SQL 连接和 REST API

services.AddHealthChecks(checks =>
{
    checks.AddUrlCheck(Configuration["RequiredServiceUrl"]);
    checks.AddSqlCheck("ServiceB_DB", Configuration["ConnectionString"]);
});

网络状态

我们终于有了一些监控这两个微服务的 Web 应用程序

services.AddHealthChecks(checks =>
{
    checks.AddUrlCheck(Configuration["ServiceAUrl"]);
    checks.AddUrlCheck(Configuration["ServiceBUrl"]);
});

这意味着如果我导航到 http://webstatus/hc(健康检查页面),系统会检查 http://serviceA/hc(它检查数据库)和 http://serviceB/hc(它检查数据库并休息 api).

或者您可以可视化每个微服务的健康检查,如图所示there(图 10-8)