public static IHealthBuilder AddCachedCheck( this IHealthCheckBuilder builder, string name, Func <CancellationToken, ValueTask <HealthCheckResult> > check, TimeSpan cacheDuration) { builder.AddCheck(new HealthCheck(name, check, cacheDuration)); return(builder.Builder); }
public static IHealthBuilder AddAzureQueueStorageCheck( this IHealthCheckBuilder builder, string name, CloudStorageAccount storageAccount, string queueName) { builder.AddCheck(name, CheckQueueExistsAsync(name, storageAccount, queueName)); return(builder.Builder); }
public static IHealthBuilder AddAzureDocumentDBCollectionCheck( this IHealthCheckBuilder builder, string name, Uri collectionUri, DocumentClient documentClient) { builder.AddCheck(name, CheckDocumentDbCollectionExists(collectionUri, documentClient)); return(builder.Builder); }
public static IHealthBuilder AddAzureDocumentDBDatabaseCheck( this IHealthCheckBuilder builder, string name, Uri databaseUri, DocumentClient documentClient) { builder.AddCheck(name, CheckDocumentDBDatabaseConnectivity(databaseUri, documentClient)); return(builder.Builder); }
public static IHealthBuilder AddSqlCheck( this IHealthCheckBuilder healthCheckBuilder, string name, string connectionString, TimeSpan timeout, TimeSpan cacheDuration, bool degradedOnError = false) { return(healthCheckBuilder.AddSqlCachedCheck(name, () => new SqlConnection(connectionString), timeout, cacheDuration, degradedOnError)); }
public static IHealthBuilder AddAzureTableStorageTableCheck( this IHealthCheckBuilder builder, string name, CloudStorageAccount storageAccount, string tableName) { builder.AddCheck(name, CheckAzureTableStorageTableExists(name, storageAccount, tableName)); return(builder.Builder); }
public static IHealthBuilder AddAzureBlobStorageContainerCheck( this IHealthCheckBuilder builder, string name, CloudStorageAccount storageAccount, string containerName) { builder.AddCheck(name, CheckAzureBlobStorageContainerExists(name, storageAccount, containerName)); return(builder.Builder); }
public static IHealthBuilder AddSqlCheck( this IHealthCheckBuilder healthCheckBuilder, string name, string connectionString, TimeSpan timeout, HealthCheck.QuiteTime quiteTime, bool degradedOnError = false) { return(healthCheckBuilder.AddSqlQuiteTimeCheck(name, () => new SqlConnection(connectionString), timeout, quiteTime, degradedOnError)); }
public static IHealthBuilder AddAzureServiceBusTopicConnectivityCheck( this IHealthCheckBuilder builder, string name, TopicClient topicClient, TimeSpan cacheDuration) { builder.AddCachedCheck(name, CheckServiceBusTopicConnectivity(name, topicClient), cacheDuration); return(builder.Builder); }
public static IHealthBuilder AddAzureQueueStorageCheck( this IHealthCheckBuilder builder, string name, string connectionString, string queueName) { builder.AddCheck(name, CheckQueueExists(name, CloudStorageAccount.Parse(connectionString), queueName)); return(builder.Builder); }
public static IHealthBuilder AddQuiteTimeCheck( this IHealthCheckBuilder builder, string name, Func <CancellationToken, ValueTask <HealthCheckResult> > check, HealthCheck.QuiteTime quiteTime) { builder.AddCheck(new HealthCheck(name, check, quiteTime)); return(builder.Builder); }
public static IHealthBuilder AddAzureDocumentDBCollectionCheck( this IHealthCheckBuilder builder, string name, Uri collectionUri, string endpointUri, string key) { builder.AddCheck(name, CheckDocumentDbCollectionExists(collectionUri, endpointUri, key)); return(builder.Builder); }
public static IHealthBuilder AddAzureDocumentDBDatabaseCheck( this IHealthCheckBuilder builder, string name, Uri databaseUri, string endpointUri, string key) { builder.AddCheck(name, CheckDocumentDBDatabaseConnectivity(databaseUri, endpointUri, key)); return(builder.Builder); }
/// <summary> /// Adds the health check factory to the <see cref="IHealthCheckBuilder.Descriptors"/> collection. /// </summary> /// <param name="builder">The health check builder</param> /// <param name="factory">The health check factory</param> /// <param name="lifetime">The service lifetime</param> /// <returns>The builder after changes</returns> /// <exception cref="ArgumentNullException"></exception> public static IHealthCheckBuilder Add(this IHealthCheckBuilder builder, Func <IServiceProvider, IHealthCheck> factory, ServiceLifetime lifetime = ServiceLifetime.Scoped) { if (builder == null) { throw new ArgumentNullException(nameof(builder)); } builder.Add(new HealthCheckServiceDescriptor(factory, lifetime)); return(builder); }
/// <summary> /// Adds a <see cref="HttpHealthCheck"/> to the services. /// </summary> /// <param name="builder">The health check builder</param> /// <param name="name">The health check name</param> /// <param name="url">The url address</param> /// <param name="timeoutInMs">The request timeout</param> /// <param name="ensureSuccessfulStatus">Ensure a successful HTTP status code of 2XX?</param> /// <param name="required">Is the health check required?</param> /// <param name="tags">The collection of tags</param> /// <returns>The builder after changes</returns> /// <exception cref="ArgumentNullException"></exception> public static IHealthCheckBuilder AddHttp(this IHealthCheckBuilder builder, string name, Uri url, int timeoutInMs = 5000, bool ensureSuccessfulStatus = true, bool required = false, params string[] tags) { if (builder == null) { throw new ArgumentNullException(nameof(builder)); } return(builder.AddHttp(new HttpHealthCheckProperties(name, url, timeoutInMs, ensureSuccessfulStatus, required, tags))); }
public static IHealthBuilder AddAzureQueueStorageConnectivityCheck( this IHealthCheckBuilder builder, string name, CloudStorageAccount storageAccount) { builder.AddCheck( name, CheckStorageAccountConnectivity(name, storageAccount)); return(builder.Builder); }
public static IHealthBuilder AddAzureQueueStorageCheck( this IHealthCheckBuilder builder, string name, CloudStorageAccount storageAccount, string queueName, TimeSpan cacheDuration) { builder.AddCachedCheck(name, CheckQueueExists(name, storageAccount, queueName), cacheDuration); return(builder.Builder); }
public static IHealthBuilder AddSqlCheck( this IHealthCheckBuilder healthCheckBuilder, string name, Func <IDbConnection> newDbConnection, TimeSpan timeout, bool degradedOnError = false) { if (timeout <= TimeSpan.Zero) { throw new InvalidOperationException($"{nameof(timeout)} must be greater than 0"); } healthCheckBuilder.AddCheck(name, cancellationToken => { var sw = new Stopwatch(); try { using (var tokenWithTimeout = CancellationTokenSource.CreateLinkedTokenSource(cancellationToken)) { tokenWithTimeout.CancelAfter(timeout); sw.Start(); using (var connection = newDbConnection()) { connection.Open(); using (var command = connection.CreateCommand()) { command.CommandType = CommandType.Text; command.CommandText = "SELECT 1"; var commandResult = (int)command.ExecuteScalar(); var result = commandResult == 1 ? HealthCheckResult.Healthy($"OK. {name}.") : HealthCheckResultOnError($"FAILED. {name} SELECT failed. Time taken: {sw.ElapsedMilliseconds}ms.", degradedOnError); return(new ValueTask <HealthCheckResult>(result)); } } } } catch (Exception ex) { var failedResult = degradedOnError ? HealthCheckResult.Degraded(ex) : HealthCheckResult.Unhealthy(ex); return(new ValueTask <HealthCheckResult>(failedResult)); } }); return(healthCheckBuilder.Builder); }
public static IHealthBuilder AddAzureQueueStorageConnectivityCheck( this IHealthCheckBuilder builder, string name, string connectionString, TimeSpan cacheDuration) { builder.AddCachedCheck( name, CheckStorageAccountConnectivity(name, CloudStorageAccount.Parse(connectionString)), cacheDuration); return(builder.Builder); }
public static IHealthBuilder AddAzureTableStorageConnectivityCheck( this IHealthCheckBuilder builder, string name, CloudStorageAccount storageAccount, TimeSpan cacheDuration) { builder.AddCachedCheck( name, CheckTableStorageConnectivity(name, storageAccount), cacheDuration); return(builder.Builder); }
public static IHealthBuilder AddAzureEventHubConnectivityCheck( this IHealthCheckBuilder builder, string name, EventHubClient eventHubClient, TimeSpan cacheDuration) { builder.AddCachedCheck( name, CheckEventHubConnectivity(name, eventHubClient), cacheDuration); return(builder.Builder); }
public static IHealthCheckBuilder AddHttpPingCheck(this IHealthCheckBuilder builder, string name, Uri baseAddress) { var options = new HttpCheckOptions { ExpectedContent = "PONG" }; var uriBuilder = new UriBuilder(baseAddress.GetLeftPart(UriPartial.Authority)) { Path = "_diagnostics/ping" }; return(builder.AddCheck(new HttpCheck(name, uriBuilder.Uri, options))); }
public static IHealthBuilder AddPingCheck( this IHealthCheckBuilder healthCheckBuilder, string name, string host, TimeSpan timeout, bool degradedOnError = false) { healthCheckBuilder.AddCheck( name, async() => await ExecutePingCheckAsync(host, timeout, degradedOnError)); return(healthCheckBuilder.Builder); }
public static IHealthBuilder AddAzureTableStorageTableCheck( this IHealthCheckBuilder builder, string name, string connectionString, string tableName, TimeSpan cacheDuration) { builder.AddCachedCheck( name, CheckAzureTableStorageTableExists(name, CloudStorageAccount.Parse(connectionString), tableName), cacheDuration); return(builder.Builder); }
public static IHealthBuilder AddHttpGetCheck( this IHealthCheckBuilder healthCheckBuilder, string name, Uri uri, TimeSpan timeout, bool degradedOnError = false) { EnsureValidTimeout(timeout); healthCheckBuilder.AddCheck( name, async cancellationToken => await ExecuteHttpCheckNoRetriesAsync(uri, timeout, degradedOnError, cancellationToken)); return(healthCheckBuilder.Builder); }
/// <summary> /// Adds a <see cref="HttpHealthCheck"/> to the services. /// </summary> /// <param name="builder">The health check builder</param> /// <param name="name">The health check name</param> /// <param name="urlBuilder">The url addres builders</param> /// <param name="timeoutInMs">The request timeout</param> /// <param name="ensureSuccessfulStatus">Ensure a successful HTTP status code of 2XX?</param> /// <param name="required">Is the health check required?</param> /// <param name="tags">The collection of tags</param> /// <returns>The builder after changes</returns> /// <exception cref="ArgumentNullException"></exception> public static IHealthCheckBuilder AddHttp(this IHealthCheckBuilder builder, string name, Func <IServiceProvider, string> urlBuilder, int timeoutInMs = 5000, bool ensureSuccessfulStatus = true, bool required = false, params string[] tags) { if (builder == null) { throw new ArgumentNullException(nameof(builder)); } if (urlBuilder == null) { throw new ArgumentNullException(nameof(urlBuilder)); } return(builder.AddHttp(name, p => new Uri(urlBuilder(p)), timeoutInMs, ensureSuccessfulStatus, required, tags)); }
public static IHealthBuilder AddAzureServiceBusTopicConnectivityCheck( this IHealthCheckBuilder builder, string name, string connectionString, string topicName) { var topicClient = new TopicClient(connectionString, topicName) { OperationTimeout = DefaultTimeout }; builder.AddCheck(name, CheckServiceBusTopicConnectivity(name, topicClient)); return(builder.Builder); }
/// <summary> /// Adds a <see cref="HttpHealthCheck"/> to the services. /// </summary> /// <param name="builder">The health check builder</param> /// <param name="propertiesBuilder">The health check properties builder</param> /// <returns>The builder after changes</returns> /// <exception cref="ArgumentNullException"></exception> public static IHealthCheckBuilder AddHttp(this IHealthCheckBuilder builder, Func <IServiceProvider, HttpHealthCheckProperties> propertiesBuilder) { if (builder == null) { throw new ArgumentNullException(nameof(builder)); } if (propertiesBuilder == null) { throw new ArgumentNullException(nameof(propertiesBuilder)); } return(builder.Add( p => new HttpHealthCheck(propertiesBuilder(p), p.GetService <ILogger <HttpHealthCheck> >()))); }
public static IHealthBuilder AddSqlCheck( this IHealthCheckBuilder healthCheckBuilder, string name, Func <IDbConnection> newDbConnection, TimeSpan timeout, bool degradedOnError = false) { EnsureValidTimeout(timeout); healthCheckBuilder.AddCheck( name, cancellationToken => ExecuteSqlCheckAsync(name, newDbConnection, timeout, degradedOnError, cancellationToken)); return(healthCheckBuilder.Builder); }
public static IHealthBuilder AddAzureServiceBusQueueConnectivityCheck( this IHealthCheckBuilder builder, string name, string connectionString, string queueName) { var queueClient = new QueueClient(connectionString, queueName, receiveMode: ReceiveMode.PeekLock) { OperationTimeout = DefaultTimeout }; builder.AddCheck(name, CheckServiceBusQueueConnectivity(name, queueClient)); return(builder.Builder); }