【发布时间】:2021-07-02 09:09:02
【问题描述】:
我正在使用 .NET Core 3.1 开发 Web 应用程序。它依赖于其他几个外部服务(用 Node.js 编写的 API)。我想监控外部服务的运行状况并使用HealthChecks.UI 在单独的页面上显示运行状况。我对我自己的应用程序的健康状况不感兴趣,我对依赖的外部系统的健康状况感兴趣。这可以通过health checks package实现吗?
这是我目前拥有的代码:
Startup.cs
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
services
.AddHealthChecks()
.AddCheck<ExternalServiceHealthCheck>("External service health check");
services
.AddHealthChecksUI()
.AddInMemoryStorage();
}
public void Configure(IApplicationBuilder app)
{
app.UseStaticFiles();
app.UseEndpoints(endpoints =>
{
endpoints.MapHealthChecksUI(setup =>
{
setup.UIPath = "/HealthChecks";
});
});
}
}
ExternalServiceHealthCheck.cs
public class ExternalServiceHealthCheck : IHealthCheck
{
public Task<HealthCheckResult> CheckHealthAsync(HealthCheckContext context, CancellationToken cancellationToken = default)
{
return Task.FromResult(HealthCheckResult.Healthy("External service is healthy"));
}
}
当我转到/HealthChecks 时,即使我注册了ExternalServiceHealthCheck,我的用户界面也是空的(见图)。为什么/HealthChecks 页面没有显示?
【问题讨论】:
-
您链接的文档中有描述how to add a custom healthcheck。
-
我添加了一个自定义健康检查,但它仍然没有显示在 UI 上。检查已编辑的问题。
-
是显示另一个系统的页面还是检查另一个系统的可用性并显示健康检查页面?
-
第二个选项。我想在我的应用程序中显示一个 UI,它会显示所有外部 API 的健康检查状态。
-
你添加了 app.UseStaticFiles(); ?检查浏览器控制台是否输出 404
标签: c# asp.net-core health-monitoring health-check