怎么给asp.net核心写个简单的健康检查

  介绍

小编给大家分享一下怎么给asp.net核心写个简单的健康检查,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获、下面让我们一起去了解一下吧!

<强>介绍

健康检查可以帮助我们知道应用的当前状态是不是处于良好状态,现在无论是码头工人还是k8还是现在大多数的服务注册发现大多都提供了健康检查机制来检测应用的健康状态,如果应用本身就提供一个健康检查的机制会更友好,更能真实的反映出应用的健康状态。

我们的开发环境虚拟机配置有点低,所以有时候虚拟机会卡死,导致接口无响应,有时可能有些服务启动有问题会挂掉,所以需要一个简单的健康检查机制去检查应用的健康状态来第一时间知道应用出现异常。

<强>健康检查扩展实现

实现源码

,, public  static  IApplicationBuilder  UseHealthCheck(却;能够IApplicationBuilder  applicationBuilder)   {才能   ,,return  UseHealthCheck (applicationBuilder, new  PathString (“/api/health"));   ,,}      public 才能static  IApplicationBuilder  UseHealthCheck(却;能够IApplicationBuilder  applicationBuilder,, string 路径)   {才能   ,,return  UseHealthCheck (applicationBuilder, new  PathString(路径));   ,,}      public 才能static  IApplicationBuilder  UseHealthCheck(却;能够IApplicationBuilder  applicationBuilder,, PathString 路径)   {才能   ,才能applicationBuilder.Map(路径,builder =祝辞,builder.Use (   ,,,(下)背景下,,,=比;   ,,,{   ,,,,context.Response.StatusCode =, 200;   ,,,,return  context.Response.WriteAsync (“healthy");   ,,,}));   ,,return  applicationBuilder;   ,,}      public 才能static  IApplicationBuilder  UseHealthCheck(却;能够IApplicationBuilder  applicationBuilder,, string 路径,Func, checkFunc)   {才能   ,,return  UseHealthCheck (applicationBuilder, new  PathString(路径),serviceProvider =祝辞,Task.FromResult (checkFunc (serviceProvider)));   ,,}      public 才能;static  IApplicationBuilder  UseHealthCheck(却;能够IApplicationBuilder  applicationBuilder,, string 路径,   ,,Func祝辞,checkFunc)   {才能   ,,return  UseHealthCheck (applicationBuilder, new  PathString(路径),checkFunc);   ,,}      public 才能static  IApplicationBuilder  UseHealthCheck(却;能够IApplicationBuilder  applicationBuilder,, PathString 路径,Func, checkFunc)   {才能   ,,if  (checkFunc ==, null)   ,,{   ,,,checkFunc =, serviceProvider =祝辞,真的;   ,,}   ,,return  UseHealthCheck (applicationBuilder、,路径,serviceProvider =祝辞,Task.FromResult (checkFunc (serviceProvider)));   ,,}      public 才能static  IApplicationBuilder  UseHealthCheck(却;能够IApplicationBuilder  applicationBuilder,, PathString 路径,Func祝辞,checkFunc)   {才能   ,,if  (checkFunc ==, null)   ,,{   ,,,checkFunc =, serviceProvider =祝辞,Task.FromResult(真正的);   ,,}   ,才能applicationBuilder.Map(路径,builder =祝辞,builder.Use (   ,,,async (下)背景下,,,=比;   ,,,{   ,,,,试一试   ,,,,{   ,,,,,var  healthy =, await  checkFunc.Invoke (context.RequestServices);   ,,,,,if (健康)   ,,,,,{   ,,,,,,context.Response.StatusCode =, StatusCodes.Status200OK;   ,,,,,,await  context.Response.WriteAsync (“healthy");   ,,,,,}   ,,,,,   ,,,,,{   ,,,,,,context.Response.StatusCode =, StatusCodes.Status503ServiceUnavailable;   ,,,,,,await  context.Response.WriteAsync (“unhealthy");   ,,,,,}   ,,,,}   ,,,,catch  (Exception 交货)   ,,,,{   ,,,,,context.RequestServices.GetService () .CreateLogger (“HealthCheck") . error (ex);   ,,,,,context.Response.StatusCode =, StatusCodes.Status503ServiceUnavailable;   ,,,,,await  context.Response.WriteAsync (“unhealthy");   ,,,,}   ,,,}));   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

怎么给asp.net核心写个简单的健康检查