当前位置:首页 > C# > 正文

ASP.NET Core健康检查UI实战指南(手把手教你搭建应用健康监控面板)

在现代微服务架构和云原生应用开发中,ASP.NET Core健康检查已成为保障系统稳定运行的重要工具。通过集成健康检查UI,开发者可以直观地监控应用程序的运行状态、数据库连接、外部依赖等关键指标。本文将从零开始,详细讲解如何在你的 .NET Core 项目中添加并配置健康检查与可视化 UI,即使是编程新手也能轻松上手!

ASP.NET Core健康检查UI实战指南(手把手教你搭建应用健康监控面板) Core健康检查 健康检查UI .NET Core监控 应用健康状态 第1张

一、什么是 ASP.NET Core 健康检查?

ASP.NET Core 内置了健康检查中间件(Health Checks),允许你定义一系列“探针”来验证应用及其依赖项(如数据库、缓存、第三方 API 等)是否正常工作。当所有检查通过时,应用返回 HTTP 200;任一失败则返回非 200 状态码,便于 Kubernetes、Docker 或负载均衡器自动处理故障。

健康检查UI 是一个开源的前端面板(由 Xabaril 团队维护),它能定时轮询多个服务的健康端点,并以图表和列表形式展示结果,极大提升运维效率。

二、创建项目并启用基础健康检查

首先,使用 .NET CLI 创建一个新 Web API 项目:

dotnet new webapi -n MyHealthCheckAppcd MyHealthCheckApp

接着,安装必要的 NuGet 包:

dotnet add package Microsoft.Extensions.Diagnostics.HealthChecksdotnet add package AspNetCore.HealthChecks.UIdotnet add package AspNetCore.HealthChecks.UI.Clientdotnet add package AspNetCore.HealthChecks.SqlServer  

然后,在 Program.cs 中注册健康检查服务:

using Microsoft.AspNetCore.Diagnostics.HealthChecks;var builder = WebApplication.CreateBuilder(args);// 添加健康检查服务builder.Services.AddHealthChecks()    .AddCheck("Self", () => HealthCheckResult.Healthy("服务自身正常"))    // 示例:添加 SQL Server 检查(请替换为你的连接字符串)    .AddSqlServer(        connectionString: "Server=localhost;Database=TestDB;Trusted_Connection=true;",        name: "SQL Server",        failureStatus: HealthStatus.Degraded,        tags: new[] { "db" });// 添加健康检查 UI 服务builder.Services.AddHealthChecksUI(setupSettings: setup =>{    setup.AddHealthCheckEndpoint("My API", "/health");}).AddInMemoryStorage(); // 使用内存存储(生产环境建议用 SQL Server 或 Redis)var app = builder.Build();// 映射健康检查终结点app.MapHealthChecks("/health", new HealthCheckOptions{    ResponseWriter = UIResponseWriter.WriteHealthCheckUIResponse});// 映射健康检查 UIapp.MapHealthChecksUI();app.Run();

三、启动应用并访问健康检查UI

运行项目:

dotnet run

默认情况下,健康检查端点位于 http://localhost:5000/health,而 UI 面板位于 http://localhost:5000/healthchecks-ui

打开浏览器访问 UI 地址,你将看到类似下图的监控面板,显示每个服务的健康状态、响应时间及历史记录。

四、自定义健康检查项

你可以轻松添加更多检查项,例如 Redis、RabbitMQ、HTTP 依赖等。以下是一个自定义健康检查类的示例:

public class CustomDependencyHealthCheck : IHealthCheck{    public Task<HealthCheckResult> CheckHealthAsync(        HealthCheckContext context,        CancellationToken cancellationToken = default)    {        // 模拟外部依赖调用        bool isHealthy = DateTime.UtcNow.Minute % 2 == 0;        if (isHealthy)        {            return Task.FromResult(HealthCheckResult.Healthy("自定义依赖正常"));        }        return Task.FromResult(HealthCheckResult.Unhealthy("自定义依赖异常"));    }}// 在 Program.cs 中注册builder.Services.AddHealthChecks()    .AddCheck<CustomDependencyHealthCheck>("Custom Dependency");

五、生产环境注意事项

  • 不要在 UI 中暴露敏感信息(如数据库连接字符串)。
  • 使用持久化存储(如 SQL Server)替代 AddInMemoryStorage(),避免重启丢失数据。
  • 为健康检查端点添加身份验证或 IP 白名单,防止未授权访问。
  • 合理设置检查频率,避免对依赖系统造成压力。

六、总结

通过本文,你已经掌握了如何在 ASP.NET Core 应用中集成健康检查UI,实现对.NET Core监控应用健康状态的可视化管理。这项技术不仅能提升系统可观测性,还能在 CI/CD 和容器编排中发挥关键作用。

赶快动手试试吧!如果你正在构建微服务或云原生应用,健康检查几乎是不可或缺的一环。记得关注我们的更多 .NET 教程,助你成为更高效的开发者!