netcore 项目健康检查(healthcheck)

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 uibuilder.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();
    

二、