如何给ASP 网核心写个简单的健康检查
介绍
健康检查可以帮助我们知道应用的当前状态是不是处于良好状态,现在无论是码头工人还是k8s还是现在大多数的服务注册发现大多都提供了健康检查机制来检测应用的健康状态,如果应用本身就提供一个健康检查的机制会更友好,更能真实的反映出应用的健康状态。
我们的开发环境虚拟机配置有点低,所以有时候虚拟机会卡死。导致接口无响应,有时可能有些服务启动有问题会挂掉,所以需要一个简单的健康检查机制去检查应用的健康状态来第一时间知道应用出现异常。
健康检查扩展实现
实现源码
公共静态IApplicationBuilder使用运行状况检查(此IApplicationBuilder应用程序生成器){ return usehealth check(应用程序生成器,新路径字符串('/API/health ');}公共静态IApplicationBuilder使用运行状况检查(此应用程序生成器应用程序生成器,字符串路径){ return usehealth check(应用程序生成器,新路径字符串(路径));}公共静态IApplicationBuilder使用运行状况检查(此IApplicationBuilder为ApplicationBuilder,路径为路径字符串路径){ applicationBuilder .地图(路径,构建器=构建器。使用((上下文,下一个)={上下文.回应。状态代码=200返回上下文。响应WriteAsync('健康');}));返回applicationBuilder}公共静态IApplicationBuilder使用运行状况检查(此应用程序生成器应用程序生成器,字符串路径,FuncIServiceProvider,bool CheckFunc){ return usehealth check(应用程序生成器,新路径字符串(路径),服务提供商=任务.来自结果(CheckFunc(ServiCe Provider));}公共静态IApplicationBuilder使用运行状况检查(此应用程序生成器应用程序生成器,字符串路径,FuncIServiceProvider,TaskBool CheckFunc){ return use health check(应用程序生成器,新路径字符串(路径),CheckFunc);}公共静态IApplicationBuilder使用运行状况检查(此应用程序生成器应用程序生成器,路径字符串路径,FuncIServiceProvider,bool CheckFunc){ if(CheckFunc==null){ CheckFunc=ServiCeProvider=true;}返回使用运行状况检查(应用程序生成器,路径,服务提供商=任务.来自结果(CheckFunc(ServiCe Provider));}公共静态IApplicationBuilder使用运行状况检查(此应用程序生成器应用程序生成器,路径字符串路径,FuncIServiceProvider,TaskBool CheckFunc){ if(CheckFunc==null){ CheckFunc=ServiCe Provider=Task .FromResult(真);} applicationBuilder .地图(路径,构建器=构建器。使用(async (context,next)={ try { var health=wait CheckFunc .调用(上下文. request SerVices);如果(健康){上下文.响应。状态代码=状态代码。状态200正常;等待上下文。响应WriteAsync('健康');} else { context .响应。状态代码=状态代码。状态503服务不可用;等待上下文。响应WriteAsync('不健康');} } catch (Exception ex) { context .请求服务。GetServiceILoggerFactory().CreateLogger(“运行状况检查”).错误(例如);语境。响应。状态代码=状态代码。状态503服务不可用;等待上下文。响应WriteAsync('不健康');} }));返回applicationBuilder}配置健康检查
在启动里配置健康检查,示例代码
app。useHealthCheck();//对于最基本的健康检查,默认检查路径为' '/api/health ',直接返回health yapp . usehealth check('/heath ');//配置健康检查的路径为'/health ',直接返回health yapp . usehealth check('/health ',serviceprovider={//)检查数据连接是否正常。这只是一个示例,您可以根据需要自定义自己的实现varconfiguration=service provider . getserviceconfiguration();var connString配置。GetConnectionString(' DefaultConnection ');请尝试使用{ var conn=new SqlConnection(ConnString)){ conn . EnsureOpen();}返回true} catch(异常){ return false} });实际效果
直接开始访问'/健康'
数据库连接被更改为不正确的连接,数据库名称被更改为不存在的数据库
目标
这个实现相对简单,只是简单的检查。最初的想法比较简单,就是看一个应用是否正常工作,具体的检查逻辑可以定制。官方健康检查的实现有点复杂,所以我下次会单独写一篇文章来介绍它。
好了,这就是本文的全部内容。希望本文的内容对大家的学习或工作有一定的参考价值。谢谢你的支持。
版权声明:如何给ASP 网核心写个简单的健康检查是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。