internal static void AddCustomHealthChecks(this IServiceCollection services, WebApiConfiguration webApiConfiguration, AuthorityConfiguration authorityConfiguration, WebApiScopesConfiguration webApiScopesConfiguration, LDAPServerProfiles ldapServerProfiles) { Log.Information("{method}", nameof(AddCustomHealthChecks)); if (!webApiConfiguration.HealthChecksConfiguration.EnableHealthChecks) { return; } IHealthChecksBuilder healthChecksBuilder = services.AddHealthChecks(); if (!webApiScopesConfiguration.BypassApiScopesAuthorization) { healthChecksBuilder = healthChecksBuilder.AddUrlGroup(new Uri(authorityConfiguration.Authority), name: "OAuth/OpenId Server", tags: new string[] { authorityConfiguration.Authority }); } foreach (var lp in ldapServerProfiles) { var portLc = lp.GetPort(false); var portGc = lp.GetPort(true); healthChecksBuilder = healthChecksBuilder.AddTcpHealthCheck(options => { options.AddHost(lp.Server, portLc); }, name: $"Connection: {lp.Server}:{portLc}", tags: new string[] { lp.ProfileId, lp.DefaultDomainName, $"SSL:{lp.UseSSL}" }); healthChecksBuilder = healthChecksBuilder.AddTcpHealthCheck(options => { options.AddHost(lp.Server, portGc); }, name: $"Connection: {lp.Server}:{portGc}", tags: new string[] { lp.ProfileId, lp.DefaultDomainName, $"SSL:{lp.UseSSL}" }); healthChecksBuilder = healthChecksBuilder.AddPingHealthCheck(options => options.AddHost(lp.Server, lp.HealthCheckPingTimeout), $"Ping: {lp.Server}", tags: new string[] { lp.ProfileId, lp.DefaultDomainName, $"SSL:{lp.UseSSL}" }); } services.AddHealthChecksUI(settings => { settings .SetHeaderText(webApiConfiguration.HealthChecksConfiguration.HealthChecksHeaderText) .SetEvaluationTimeInSeconds(webApiConfiguration.HealthChecksConfiguration.EvaluationTime) .MaximumHistoryEntriesPerEndpoint(webApiConfiguration.HealthChecksConfiguration.MaximunHistoryEntries) .AddHealthCheckEndpoint(webApiConfiguration.HealthChecksConfiguration.HealthChecksGroupName, $"{webApiConfiguration.WebApiBaseUrl}/{webApiConfiguration.HealthChecksConfiguration.ApiEndPointName}"); }) .AddInMemoryStorage(); }