返回顶部
首页 > 资讯 > 精选 >怎么在ASP.Net Core中实现健康检查
  • 155
分享到

怎么在ASP.Net Core中实现健康检查

2023-06-14 05:06:14 155人浏览 八月长安
摘要

小编给大家分享一下怎么在ASP.net core中实现健康检查,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!健康检查 常用于判断一个应用程序能否对 request

小编给大家分享一下怎么在ASP.net core中实现健康检查,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

健康检查 常用于判断一个应用程序能否对 request 请求进行响应,ASP.net core 2.2 中引入了 健康检查 中间件用于报告应用程序的健康状态。

ASP.Net Core 中的 健康检查 落地做法是暴露一个可配置的 Http 端口,你可以使用 健康检查 去做一个最简单的活性检测,比如说:检查网络和系统的资源可用性,数据库资源是否可用,应用程序依赖的消息中间件或者 Azure cloud service 的可用性 等等,这篇文章我们就来讨论如何使用这个 健康检查中间件。

注册健康检查服务

要注册 健康检查 服务,需要在 Startup.ConfigureServices 下调用 AddHealthChecks 方法,然后使用 UseHealthChecks 将其注入到 Request Pipeline 管道中,如下代码所示:

  public class Startup  {    // This method gets called by the runtime. Use this method to add services to the container.    public void ConfigureServices(IServiceCollection services)    {      services.AddControllersWithViews();      services.AddHealthChecks();    }    // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.    public void Configure(IApplicationBuilder app, IWEBHostEnvironment env)    {      app.UseHealthChecks("/health");      app.UseStaticFiles();      app.UseRouting();      app.UseEndpoints(endpoints =>      {        endpoints.MapControllerRoute(          name: "default",          pattern: "{controller=Home}/{action=Index}/{id?}");      });    }  }

怎么在ASP.Net Core中实现健康检查

上图的 /health 就是一个可供检查此 web 是否存活的暴露端口。

其他服务的健康检查

除了web的活性检查,还可以检查诸如:SQL Server, MySQL, MongoDB, Redis, RabbitMQ, elasticsearch, Hangfire, kafka, oracle, Azure Storage 等一系列服务应用的活性,每一个服务需要引用相关的 nuget 包即可,如下图所示:

怎么在ASP.Net Core中实现健康检查

然后在 ConfigureServices 中添加相关服务即可,比如下面代码的 AddsqlServer

 public void ConfigureServices(IServiceCollection services)    {      services.AddControllersWithViews();      services.AddHealthChecks().AddSqlServer("server=.;database=PYZ_L;Trusted_Connection=SSPI");    }

自定义健康检查

除了上面的一些开源方案,还可以自定义实现 健康检查 类,比如自定义方式来检测 数据库外部服务 的可用性,那怎么实现呢? 只需要实现系统内置的 IHealthCheck 接口并实现 CheckHealthAsync() 即可,如下代码所示:

 public class MyCustomHealthCheck : IHealthCheck  {    public async Task<HealthCheckResult> CheckHealthAsync(HealthCheckContext context,                            CancellationToken cancellationToken = default(CancellationToken))    {      bool canConnect = IsDBOnline();      if (canConnect)        return HealthCheckResult.Healthy();      return HealthCheckResult.Unhealthy();    }  }

这里的 IsDBOnline 方法用来判断当前数据库是否是运行状态,实现代码如下:

 private bool IsDBOnline()    {      string connectionString = "server=.;database=PYZ_L;Trusted_Connection=SSPI";      try      {        using (SqlConnection connection = new SqlConnection(connectionString))        {          if (connection.State != System.Data.ConnectionState.Open) connection.Open();        }        return true;      }      catch (System.Exception)      {        return false;      }    }

然后在 ConfigureServices 方法中进行注入。

 public void ConfigureServices(IServiceCollection services)    {      services.AddControllersWithViews();      services.AddHealthChecks().AddCheck<MyCustomHealthCheck>("sqlcheck");    }    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)    {      app.UseRouting().UseEndpoints(config =>      {        config.MapHealthChecks("/health");      });      app.UseStaticFiles();      app.UseRouting();      app.UseEndpoints(endpoints =>      {        endpoints.MapControllerRoute(          name: "default",          pattern: "{controller=Home}/{action=Index}/{id?}");      });    }

接下来可以浏览下 /health 页面,可以看出该端口自动执行了你的 MyCustomHealthCheck 方法,如下图所示:

怎么在ASP.Net Core中实现健康检查

可视化健康检查

上面的检查策略虽然好,但并没有一个好的可视化方案,要想实现可视化的话,还需要单独下载 Nuget 包: Aspnetcore.HealthChecks.UI , HealthChecks.UI.ClientAspNetCore.HealthChecks.UI.InMemory.Storage,命令如下:

Install-Package AspNetCore.HealthChecks.UIInstall-Package AspNetCore.HealthChecks.UI.ClientInstall-Package AspNetCore.HealthChecks.UI.InMemory.Storage

一旦包安装好之后,就可以在 ConfigureServices 和 Configure 方法下做如下配置。

public class Startup  {    // This method gets called by the runtime. Use this method to add services to the container.    public void ConfigureServices(IServiceCollection services)    {      services.AddControllersWithViews();      services.AddHealthChecks();      services.AddHealthChecksUI().AddInMemoryStorage();    }    // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)    {            app.UseRouting().UseEndpoints(config =>      {        config.MapHealthChecks("/health", new HealthCheckOptions        {          Predicate = _ => true,          ResponseWriter = UIResponseWriter.WriteHealthCheckUIResponse        });      });      app.UseHealthChecksUI();      app.UseStaticFiles();      app.UseRouting();      app.UseEndpoints(endpoints =>      {        endpoints.MapControllerRoute(          name: "default",          pattern: "{controller=Home}/{action=Index}/{id?}");      });    }  }

最后还要在 appsettings.JSON 中配一下 HealthChecks-UI 中的检查项,如下代码所示:

{ "Logging": {  "LogLevel": {   "Default": "InfORMation",   "Microsoft": "Warning",   "Microsoft.Hosting.Lifetime": "Information"  } }, "AllowedHosts": "*", "HealthChecks-UI": {  "HealthChecks": [   {    "Name": "Local",    "Uri": "http://localhost:65348/health"   }  ],  "EvaluationTimeOnSeconds": 10,  "MinimumSecondsBetweenFailureNotifications": 60 }}

最后在浏览器中输入 /healthchecks-ui 看一下 可视化UI 长成啥样。

怎么在ASP.Net Core中实现健康检查

使用 asp.net Core 的 健康检查中间件 可以非常方便的对 系统资源,数据库 或者其他域外资源进行监控,你可以使用自定义检查逻辑来判断什么样的情况算是 Healthy,什么样的算是 UnHealthy,值得一提的是,当检测到失败时还可以使用失败通知机制,类似 GitHub 发布钩子。

以上是“怎么在ASP.net Core中实现健康检查”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网精选频道!

--结束END--

本文标题: 怎么在ASP.Net Core中实现健康检查

本文链接: https://lsjlt.com/news/268235.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 怎么在ASP.Net Core中实现健康检查
    小编给大家分享一下怎么在ASP.Net Core中实现健康检查,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!健康检查 常用于判断一个应用程序能否对 request...
    99+
    2023-06-14
  • 详解如何在ASP.Net Core中实现健康检查
    健康检查 常用于判断一个应用程序能否对 request 请求进行响应,ASP.Net Core 2.2 中引入了 健康检查 中间件用于报告应用程序的健康状态。 ASP.Net Cor...
    99+
    2024-04-02
  • kubernetes中如何实现Pod健康检查
    小编给大家分享一下kubernetes中如何实现Pod健康检查,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一:前言对Pod的健康状态检查可以通过两类探针来检查:...
    99+
    2023-06-04
  • SpringBoot Admin健康检查功能的实现
    目录admin实现admin功能创建客户端主动上报的服务端实现效果异常通知邮件通知其他通知代码地址admin 监控检查,检查的是什么了。检查的是应用实例状态,说白了就是被查服务提供信...
    99+
    2024-04-02
  • 详解SpringBoot健康检查的实现原理
    目录自动装配健康检查HealthEndpointAutoConfigurationSpringBoot自动装配的套路,直接看 spring.factories 文件,当我们使用的时候...
    99+
    2024-04-02
  • .Net Core服务治理Consul健康检查方法是什么
    这篇文章主要讲解了“.Net Core服务治理Consul健康检查方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“.Net Core服务治理Consul健康检查方...
    99+
    2023-06-26
  • 什么是健康检查在负载均衡中的作用
    健康检查在负载均衡中的作用是用来监测后端服务器的运行状态,确保只有正常运行的服务器才会被负载均衡器转发请求。通过定期发送请求到后端服...
    99+
    2024-04-17
    负载均衡
  • 如何使用 Golang 构建 RESTful API 并实现健康检查?
    使用 golang 构建 restful api 并实现健康检查:构建 restful api:创建新项目,定义数据模型,定义路由,实现处理程序。实现健康检查:定义健康检查端点,实现健康...
    99+
    2024-05-16
    golang git
  • SpringBoot-Admin实现微服务监控+健康检查+钉钉告警
    基于SpringCloud微服务平台,进行服务实例监控及健康检查,注册中心为eureka,SpringBoot提供了很好的组件SpringBoot Admin,2.X版本直接可以配置...
    99+
    2024-04-02
  • 如何在PHP中实现医疗健康网站
    随着人们对健康的关注日益增加,医疗健康网站成为了一个非常重要的互联网应用。如果您想在PHP中实现一个医疗健康网站,本文将为您提供一些有用的提示和建议。设计数据库结构一个好的数据库结构是一个高效的网站的基础。在设计数据库结构时,需要注意以下几...
    99+
    2023-05-21
    医疗健康 PHP 网站实现
  • SpringBoot-Admin如何实现微服务监控+健康检查+钉钉告警
    小编给大家分享一下SpringBoot-Admin如何实现微服务监控+健康检查+钉钉告警,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!基于SpringCloud微服务平台,进行服务实例监控及健康检查,注册中心为eureka...
    99+
    2023-06-25
  • ASP.NET Core中怎么实现远程调试
    这篇文章给大家介绍ASP.NET Core中怎么实现远程调试,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。体验Web Deploy这种发布方式可直接将代码打包发到指定服务器的指定站点下,十分方便。远程调试注意事项若要使...
    99+
    2023-06-19
  • ASP.NET Core中间件怎么实现限流
    本篇内容介绍了“ASP.NET Core中间件怎么实现限流”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、限流算法在高并发系统中...
    99+
    2023-06-29
  • ASP.NET Core MVC中怎么实现过滤器
    本篇内容介绍了“ASP.NET Core MVC中怎么实现过滤器”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!过滤器如何...
    99+
    2023-06-29
  • ASP.NET Core中MVC模式怎么实现路由
    这篇“ASP.NET Core中MVC模式怎么实现路由”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“ASP.NET...
    99+
    2023-06-29
  • Lamar怎么在ASP.Net Core项目中使用
    这篇文章将为大家详细讲解有关Lamar怎么在ASP.Net Core项目中使用,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。为什么要用 Lamar 实现依赖注入要说 .NET 世界最早的依赖...
    99+
    2023-06-13
  • 怎么在Docker中部署 ASP.NET Core应用
    本篇文章为大家展示了怎么在Docker中部署 ASP.NET Core应用,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。一、系统环境腾讯云轻量应用服务器CentOS7.6二、操作流程及途中遇到的问题...
    99+
    2023-06-15
  • Asp.Net Core 中怎么利用Cookie实现身份认证
    这篇文章将为大家详细讲解有关Asp.Net Core 中怎么利用Cookie实现身份认证,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。一 注册Cookie认...
    99+
    2024-04-02
  • ASP.NET Core中怎么实现文件上传与下载
    这篇文章给大家介绍ASP.NET Core中怎么实现文件上传与下载,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。1.使用模型绑定上传文件(官方例子)官方机器翻译的地址:https://docs.microsoft.co...
    99+
    2023-06-19
  • 如何在Asp.Net Core MVC中处理null值的实现
    译文链接:https://www.infoworld.com/article/3434624/how-to-handle-null-values-in-aspnet-core-...
    99+
    2022-06-07
    ASP.NET core null MVC ASP net
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作