ASP.NET Core优雅的添加HealthCheck

2023-06-03 06:26:21 来源:博客园 分享到:


(相关资料图)

ASP.NET Core 2.2 之后提供了内置的 Health Checks 来帮助您监视和报告应用程序的健康状况。默认情况是不需要在额外的引入其它nuget包的,因为AspNet Core自带了这些功能。

public void ConfigureServices(IServiceCollection services){    //使用该扩展方法    services.AddHealthChecks();}public void Configure(IApplicationBuilder app){    app.UseRouting();    app.UseEndpoints(endpoints =>    {        //使用该扩展方法        endpoints.MapHealthChecks("/health");    });}

进行请求"health"路径,就会得到下面的结果:

内置的AddHealthChecks功能比较简单,而现实场景我们是需要对各种指标进行检查的,redis,数据库,RabbitMQ,上游api等等。

而Nugget早已经有人造好轮子,大部分场景我们下载使用即可。

我们可以先添加AspNetCore.Diagnostics.HealthChecks基础包,然后需要添加那种检查,就添加对应的包即可。

services.AddHealthChecks().AddNpgSql("ConnectionString").AddRedis("ConnectionString").AddRabbitMQ("ConnectionString", null, "rabbitMQ");
app.UseEndpoints(endpoints =>{endpoints.MapControllers();//设置健康检查终结点endpoints.MapHealthChecks("/health", new HealthCheckOptions(){//设置返回格式ResponseWriter = UIResponseWriter.WriteHealthCheckUIResponse});});

接下来我们再次进行请求"health"路径,就会得到下面的结果:

如果还想给健康检查配置访问控制可以一般情况nuget包是够用的

Install-Package AspNetCore.HealthChecks.ApplicationStatusInstall-Package AspNetCore.HealthChecks.ArangoDbInstall-Package AspNetCore.HealthChecks.Aws.S3Install-Package AspNetCore.HealthChecks.Aws.SecretsManagerInstall-Package AspNetCore.HealthChecks.Aws.SnsInstall-Package AspNetCore.HealthChecks.Aws.SqsInstall-Package AspNetCore.HealthChecks.Aws.SystemsManagerInstall-Package AspNetCore.HealthChecks.Azure.IoTHubInstall-Package AspNetCore.HealthChecks.AzureDigitalTwinInstall-Package AspNetCore.HealthChecks.AzureKeyVaultInstall-Package AspNetCore.HealthChecks.AzureServiceBusInstall-Package AspNetCore.HealthChecks.AzureStorageInstall-Package AspNetCore.HealthChecks.ConsulInstall-Package AspNetCore.HealthChecks.CosmosDbInstall-Package AspNetCore.HealthChecks.DocumentDbInstall-Package AspNetCore.HealthChecks.DynamoDBInstall-Package AspNetCore.HealthChecks.ElasticsearchInstall-Package AspNetCore.HealthChecks.EventStoreInstall-Package AspNetCore.HealthChecks.EventStore.gRPCInstall-Package AspNetCore.HealthChecks.Gcp.CloudFirestoreInstall-Package AspNetCore.HealthChecks.GremlinInstall-Package AspNetCore.HealthChecks.HangfireInstall-Package AspNetCore.HealthChecks.IbmMQInstall-Package AspNetCore.HealthChecks.InfluxDBInstall-Package AspNetCore.HealthChecks.KafkaInstall-Package AspNetCore.HealthChecks.KubernetesInstall-Package AspNetCore.HealthChecks.MongoDbInstall-Package AspNetCore.HealthChecks.MySqlInstall-Package AspNetCore.HealthChecks.NatsInstall-Package AspNetCore.HealthChecks.NetworkInstall-Package AspNetCore.HealthChecks.NpgsqlInstall-Package AspNetCore.HealthChecks.OpenIdConnectServerInstall-Package AspNetCore.HealthChecks.OracleInstall-Package AspNetCore.HealthChecks.RabbitMQInstall-Package AspNetCore.HealthChecks.RavenDBInstall-Package AspNetCore.HealthChecks.RedisInstall-Package AspNetCore.HealthChecks.SendGridInstall-Package AspNetCore.HealthChecks.SignalRInstall-Package AspNetCore.HealthChecks.SolrInstall-Package AspNetCore.HealthChecks.SqLiteInstall-Package AspNetCore.HealthChecks.SqlServerInstall-Package AspNetCore.HealthChecks.SystemInstall-Package AspNetCore.HealthChecks.Uris

如果nuget没有符合你的包,可以自己实现

public class DatabaseHeaCheakCheck : IHealthCheck{public async Task CheckHealthAsync(HealthCheckContext context, CancellationToken cancellationToken = default){try{// 你要检查的业务throw new ArgumentNullException();return HealthCheckResult.Healthy();}catch(Exception ex){return HealthCheckResult.Unhealthy(exception:ex );}}}
services.AddHealthChecks().AddCheck("Database").AddNpgSql("ConnectionString").AddRedis("ConnectionString").AddRabbitMQ("ConnectionString", null, "rabbitMQ");

接下来我们再次进行请求"health"路径,就会得到下面的结果:微软官方文档-ASP.NET Core 中的运行状况检查https://learn.microsoft.com/zh-cn/aspnet/core/host-and-deploy/health-checks?view=aspnetcore-3.1#health-check-publisher

标签:

ASP.NET Core优雅的添加HealthCheck

来源:博客园 2023-06-03 06:26:21

百度网盘内测大模型版云一朵智能助理:翻译、找图一句话搞定 焦点消息

来源:快科技 2023-06-03 05:15:15

天天热点评!山外青山楼外楼 顺口溜下一句_山外青山楼外楼

来源:互联网 2023-06-03 05:11:44

有关于晏子的资料_有关晏子的简介

来源:互联网 2023-06-03 04:02:01

速递!超越文化

来源:华文融媒云 2023-06-03 03:20:44

当前热讯:在美上市新能源汽车股普遍上涨 小鹏汽车涨超8%

来源:界面新闻 2023-06-03 01:38:25

西安高新区安排部署2023年“三夏”工作_环球焦点

来源:中国日报网 2023-06-03 00:37:57

【全球时快讯】科蓝软件:6月1日公司高管王安京减持公司股份合计78.3万股

来源:证券之星 2023-06-02 23:49:58

安徽黄山实现220千伏变电站县域全覆盖

来源:北极星智能电网在线 2023-06-02 23:52:54

【世界快播报】阿根廷奥莱报评巴萨想签回梅西的传闻:雷声大,雨点小

来源:直播吧 2023-06-02 23:01:19

振华科技(000733.SZ):两名高管拟合计减持不超4.95万股|每日聚焦

来源:格隆汇 2023-06-02 22:07:37

今日播报!盘湾镇:志愿服务让文明之花绚丽绽放

来源: 2023-06-02 20:50:33

养老金如何调整,2023年养老金上涨3.8%,算算你究竟涨多少钱?

来源:律法网 2023-06-02 20:03:07

南方传媒(601900)龙虎榜数据(06-02) 即时看

来源:东方财富Choice数据 2023-06-02 19:55:24

世界快资讯:澳大利亚Leo Lithium获1.06亿澳元融资,赣锋锂业投资

来源:艾媒网 2023-06-02 19:02:00

上海国际再保险中心建设实施细则酝酿中 将在临港新片区打造“国际再保险功能区”

来源:蓝鲸财经 2023-06-02 18:12:50

舒兰市“百名干部进百企”助企纾困解难题

来源:金台资讯 2023-06-02 18:01:47

DESON德尚携全新空间概念,亮相HOTELEX上海展

来源:互联网 2023-06-02 16:34:16

馥蕾诗怎么样啊_馥蕾诗怎么样_天天速看料

来源:互联网 2023-06-02 15:38:46

鱼岭水库_关于鱼岭水库简述

来源:元宇宙网 2023-06-02 15:13:12

当前速讯:早盘评述及午后预测(6-2)

来源:中金在线财经号 2023-06-02 14:24:49

今明两天北京大部天气晴晒最高气温32℃ 山区需防雷阵雨|环球通讯

来源:中国天气网 2023-06-02 14:29:54

环球微动态丨女友安慰迪巴拉:今天的比赛你输了,但你是人生的赢家

来源:手机网易网 2023-06-02 12:53:30

任丘114货站网站 任丘114货站|天天精选

来源:城市网 2023-06-02 12:41:04

小朋友们迎接大运会的方式:7大童声合唱团在成都欢度六一

来源:封面新闻 2023-06-02 11:13:13

当前简讯:法宝网业务_法宝网

来源:互联网 2023-06-02 10:22:26

天天实时:乘风破浪的哥哥_关于乘风破浪的哥哥的介绍

来源:互联网 2023-06-02 09:35:28

志愿上专业服从什么意思_专业服从志愿是什么意思简介介绍

来源:互联网 2023-06-02 08:52:50

灵乌赋_关于灵乌赋介绍

来源:互联网 2023-06-02 08:15:14

上海交通大学医学院附属仁济医院妇产科招聘 天天报资讯

来源:本地宝 2023-06-02 07:46:02

Copyright   2015-2032 华西知识产权网 版权所有  备案号:京ICP备2022016840号-35   联系邮箱: 920 891 263@qq.com