可视化ASP.Net Core Web API健康检查

前言

ASP.NET Core提供运行状况检查Middleware和库,以便于报告应用的运行状况。

使用方式也很简单。

引用Nuget包Microsoft.Extensions.Diagnostics.HealthChecks

然后修改Startup.cs文件:

public void ConfigureServices(IServiceCollection services)
{
    ...
    services.AddHealthChecks();
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    ...
    app.UseHealthChecks("/health");
}

我们甚至可以为第三方组件,比如数据库、缓存,提供健康状态检查。

最后,访问/health来查看应用程序的健康状态:

20662f4e6457752e3ad327dc7fa9f086.png

这种文本方式不够直观,今天我们介绍一个轻量级的图形UI,通过可视化的方式进行健康检查。

Demo

1.引用Nuget包

引用如下Nuget包:

AspNetCore.HealthChecks.UI
AspNetCore.HealthChecks.UI.Client
AspNetCore.HealthChecks.UI.InMemory.Storage

UI支持不同的存储类型,如Sql Server、MySql等,这里选择直接保存到内存。

2.修改Startup.cs

添加UI,并设置了自定义健康检查,用于演示不健康状态:

public void ConfigureServices(IServiceCollection services)
{
    ...
    services.AddHealthChecksUI().AddInMemoryStorage();
    services.AddHealthChecks().AddCheck<DemoHealthCheck>("My IO");
}

public class DemoHealthCheck: IHealthCheck
{
    public Task<HealthCheckResult> CheckHealthAsync(HealthCheckContext context, CancellationToken cancellationToken = default)
    {
        if (DateTime.Now.Second > 30)
        {
            return Task.FromResult(HealthCheckResult.Healthy());
        }

        return Task.FromResult(HealthCheckResult.Unhealthy("不健康"));
    }
}

指定健康检查和UI的地址,并且使用UIResponseWriter.WriteHealthCheckUIResponse返回json格式健康检查数据:

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    ...
    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllers();
        endpoints.MapHealthChecks("/health", new HealthCheckOptions()
        {
            Predicate = _ => true,
            ResponseWriter = UIResponseWriter.WriteHealthCheckUIResponse
        });
        endpoints.MapHealthChecksUI(options => options.UIPath = "/health-ui");
    });
}

3.添加配置项

修改appsettings.json文件:

"HealthChecksUI": {
    "HealthChecks": [
      {
        "Name": "My IO",
        "Uri": "/health"
      }
    ],
    "Webhooks": [
      {
        "Name": "",
        "Uri": "",
        "Payload": "",
        "RestoredPayload": ""
      }
    ],
    "EvaluationTimeinSeconds": 10,
    "MinimumSecondsBetweenFailureNotifications": 60
  }

HealthChecks是个数组,也就是说,UI同时可以监控多个健康检查API。

Webhooks用于当API的健康状态改变时,向指定Uri发送告警数据。

4.使用

运行程序,访问/health-ui即可打开UI:

fda37fe65dc6febdb486584b568b7929.png

点击Details按钮,还可查看健康状态历史:

bba5f0ed75c0daa4b98f31e429497e68.png

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值