using Microsoft.Extensions.Diagnostics.HealthChecks; namespace JiShe.CollectBusEPO.Extensions.HealthCheck { public static class Extensions { /// /// 添加监控检查,支持配置文件配置 /// /// /// /// public static IServiceCollection AddHealthChecks( this IServiceCollection services, IConfiguration configuration) { if (Convert.ToBoolean(configuration["HealthCheck:IsEnable"])) { var healthChecksService = services .AddHealthChecks(); //添加对mysql的监控检查 //if (Convert.ToBoolean(configuration["HealthCheck:MySql:IsEnable"])) //{ // var connectionString = configuration["HealthCheck:MySql:Connection"]; // if (connectionString.IsNullOrWhiteSpace()) // connectionString = configuration.GetConnectionString("Default"); // healthChecksService.AddMySql( // connectionString, // "Mysql", // HealthStatus.Degraded, // new string[] { "db", "sql", "mysql" } // ); //} //添加对Pings的监控检查 //if (Convert.ToBoolean(configuration["HealthCheck:Pings:IsEnable"])) // healthChecksService.AddPingHealthCheck(setup => // { // setup.AddHost(configuration["HealthCheck:Pings:Host"], Convert.ToInt32(configuration["HealthCheck:Pings:TimeOut"])); // }, tags: new string[] { "ping" }); ////添加对postgresql的监控检查 //if (Convert.ToBoolean(configuration["HealthCheck:PostgreSql:IsEnable"])) // healthChecksService.AddNpgSql( // configuration["ConnectionStrings:Default"], // name: configuration["HealthCheck:PostgreSql:Name"], // failureStatus: HealthStatus.Degraded, // tags: new string[] { "db", "sql", "postgresql" } // ); ////添加对Redis的监控检查 //if (Convert.ToBoolean(configuration["HealthCheck:Redis:IsEnable"])) // healthChecksService.AddRedis( // configuration["HealthCheck:Redis:ConnectionString"], // tags: new string[] { "redis" } // ); ////添加对RabbitMq的监控检查 //if (Convert.ToBoolean(configuration["HealthCheck:RabbitMq:IsEnable"])) // healthChecksService.AddRabbitMQ( // rabbitConnectionString: configuration["HealthCheck:RabbitMq:ConnectionString"], // tags: new string[] { "redis" } // ); ////添加对sql server的监控检查 //if (Convert.ToBoolean(configuration["HealthCheck:SqlServer:IsEnable"])) // healthChecksService.AddSqlServer( // configuration["ConnectionStrings:Default"], // "SELECT 1;", // configuration["HealthCheck:SqlServer:Name"], // HealthStatus.Degraded, // new string[] { "db", "sql", "sqlserver" } ////添加对Hangfire的监控检查 //if (Convert.ToBoolean(configuration["HealthCheck:Hangfire:IsEnable"])) // healthChecksService.AddHangfire(options => // { // options.MaximumJobsFailed = Convert.ToInt32(configuration["HealthCheck:Hangfire:MaximumJobsFailed"]); // options.MinimumAvailableServers = Convert.ToInt32(configuration["HealthCheck:Hangfire:MinimumAvailableServers"]); // }, tags: new string[] { "hangfire" }); ////添加对SignalR的监控检查 //if (Convert.ToBoolean(configuration["HealthCheck:SignalR:IsEnable"])) // healthChecksService.AddSignalRHub(configuration["HealthCheck:SignalR:Url"], tags: new string[] { "signalr" }); } return services; } } }