netcore 项目健康检查(healthcheck)

一、netcore healthcheck

  1. 创建项目
    $  dotnet new web -n Apricot.HealthCheck.WebApi
    
  2. 安装依赖
    $ dotnet add package AspNetCore.HealthChecks.UI --version 9.0.0
    $ dotnet add package AspNetCore.HealthChecks.UI.Client --version 9.0.0
    $ dotnet add package AspNetCore.HealthChecks.UI.InMemory.Storage --version 9.0.0
    $ dotnet add package AspNetCore.HealthChecks.Uris --version 9.0.0
    $ dotnet add package AspNetCore.HealthChecks.Uris --version 9.0.0
    $ dotnet add package AspNetCore.HealthChecks.MySql --version 9.0.0
    
  3. 服务注入
    var builder = WebApplication.CreateBuilder(args);
    
    // health check
    builder.Services.AddHealthChecks()
     // mysql 检查
     .AddMySql(
                 connectionString: AppSettings.ConnectionStrings.Default.Decrypt(),
                 name: "mysql",
                 tags: new[] { "db", "mysql" }
                 )
      // url 检查
     .AddUrlGroup(new Uri("https://www.baidu.com/"),"baidu")
     // 自检
     .AddCheck("webapi", () => Microsoft.Extensions.Diagnostics.HealthChecks.HealthCheckResult.Healthy());
    
     // health check ui
     builder.Services.AddHealthChecksUI(setupSettings: setup =>
     {
         // linux 使用(urls:"http://*:5000")配置,需要使用注释部分,不然出现错误(unspecified addresses that cannot be used as a target address)
         setup.AddHealthCheckEndpoint("Apricot.WebApi", "/healthz");//"http://localhost:5000/healthz");
     })
     .AddInMemoryStorage();
    
  4. 管道配置
    var app = builder.Build();
    
    // health check 
    app.UseHealthChecks("/healthz", new Microsoft.AspNetCore.Diagnostics.HealthChecks.HealthCheckOptions
    {
        Predicate = _ => true,
        ResponseWriter = UIResponseWriter.WriteHealthCheckUIResponse
    });
    
    // health check ui
    app.UseHealthCheckUI();
    
  5. 效果图
    image

二、

posted @ 2025-11-26 18:11  1764564459  阅读(1)  评论(0)    收藏  举报