public static IHealthBuilder AddAzureQueueStorageMessageCountCheck(
            this IHealthCheckBuilder builder,
            string name,
            string connectionString,
            string queueName,
            TimeSpan cacheDuration,
            long degradedThreshold  = 1,
            long?unhealthyThreshold = null)
        {
            if (unhealthyThreshold.HasValue && unhealthyThreshold < degradedThreshold)
            {
                throw new ArgumentException("Unhealthy threshold must not be less than degraded threshold.", nameof(unhealthyThreshold));
            }

            if (degradedThreshold < 0)
            {
                throw new ArgumentException("must be greater than 0", nameof(degradedThreshold));
            }

            if (unhealthyThreshold < 0)
            {
                throw new ArgumentException("must be greater than 0", nameof(unhealthyThreshold));
            }

            builder.AddCachedCheck(name, CheckMessageCount(name, CloudStorageAccount.Parse(connectionString), queueName, degradedThreshold, unhealthyThreshold), cacheDuration);

            return(builder.Builder);
        }
コード例 #2
0
        public static IHealthBuilder AddAzureServiceBusTopicSubscriptionDeadLetterQueueCheck(
            this IHealthCheckBuilder builder,
            string name,
            string connectionString,
            string topicName,
            string subscriptionName,
            TimeSpan cacheDuration,
            long deadLetterWarningThreshold = 1,
            long?deadLetterErrorThreshold   = null)
        {
            if (deadLetterErrorThreshold.HasValue && (deadLetterWarningThreshold > deadLetterErrorThreshold))
            {
                throw new ArgumentException("Error threshold must exceed warning threshold", nameof(deadLetterErrorThreshold));
            }

            var managementClient = new ManagementClient(connectionString);

            builder.AddCachedCheck(
                name,
                ServiceBusHealthChecks.CheckDeadLetterQueueCount(Logger, EntityNameHelper.FormatSubscriptionPath(topicName, subscriptionName), name, GetQueueMessageCount, deadLetterWarningThreshold, deadLetterErrorThreshold),
                cacheDuration);
            return(builder.Builder);

            async Task <MessageCountDetails> GetQueueMessageCount()
            {
                var info = await managementClient.GetSubscriptionRuntimeInfoAsync(topicName, subscriptionName);

                return(info.MessageCountDetails);
            }
        }
コード例 #3
0
        public static IHealthBuilder AddHttpGetCheck(
            this IHealthCheckBuilder healthCheckBuilder,
            string name,
            Uri uri,
            int retries,
            TimeSpan delayBetweenRetries,
            TimeSpan timeoutPerRequest,
            TimeSpan cacheDuration,
            bool degradedOnError = false)
        {
            EnsureValidRetries(retries);
            EnsureValidDelayBetweenRequests(delayBetweenRetries);
            EnsureValidTimeoutPerRequest(timeoutPerRequest);

            healthCheckBuilder.AddCachedCheck(
                name,
                async cancellationToken => await ExecuteHealthCheckWithRetriesAsync(
                    uri,
                    retries,
                    delayBetweenRetries,
                    timeoutPerRequest,
                    degradedOnError,
                    cancellationToken),
                cacheDuration);

            return(healthCheckBuilder.Builder);
        }
        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,
            TimeSpan cacheDuration)
        {
            builder.AddCachedCheck(name, CheckQueueExists(name, CloudStorageAccount.Parse(connectionString), queueName), cacheDuration);

            return(builder.Builder);
        }
コード例 #6
0
        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 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 AddAzureEventHubConnectivityCheck(
            this IHealthCheckBuilder builder,
            string name,
            EventHubClient eventHubClient,
            TimeSpan cacheDuration)
        {
            builder.AddCachedCheck(
                name,
                CheckEventHubConnectivity(name, eventHubClient),
                cacheDuration);

            return(builder.Builder);
        }
コード例 #9
0
        public static IHealthBuilder AddAzureTableStorageTableCheck(
            this IHealthCheckBuilder builder,
            string name,
            CloudStorageAccount storageAccount,
            string tableName,
            TimeSpan cacheDuration)
        {
            builder.AddCachedCheck(
                name,
                CheckAzureTableStorageTableExists(name, storageAccount, tableName),
                cacheDuration);

            return(builder.Builder);
        }
コード例 #10
0
        public static IHealthBuilder AddAzureDocumentDBCollectionCheck(
            this IHealthCheckBuilder builder,
            string name,
            Uri collectionUri,
            DocumentClient documentClient,
            TimeSpan cacheDuration)
        {
            builder.AddCachedCheck(
                name,
                CheckDocumentDbCollectionExists(collectionUri, documentClient),
                cacheDuration);

            return(builder.Builder);
        }
コード例 #11
0
        public static IHealthBuilder AddAzureDocumentDBDatabaseCheck(
            this IHealthCheckBuilder builder,
            string name,
            Uri databaseUri,
            DocumentClient documentClient,
            TimeSpan cacheDuration)
        {
            builder.AddCachedCheck(
                name,
                CheckDocumentDBDatabaseConnectivity(databaseUri, documentClient),
                cacheDuration);

            return(builder.Builder);
        }
コード例 #12
0
        public static IHealthBuilder AddAzureBlobStorageContainerCheck(
            this IHealthCheckBuilder builder,
            string name,
            CloudStorageAccount storageAccount,
            string containerName,
            TimeSpan cacheDuration)
        {
            builder.AddCachedCheck(
                name,
                CheckAzureBlobStorageContainerExists(name, storageAccount, containerName),
                cacheDuration);

            return(builder.Builder);
        }
コード例 #13
0
        public static IHealthBuilder AddPingCheck(
            this IHealthCheckBuilder healthCheckBuilder,
            string name,
            string host,
            TimeSpan timeout,
            TimeSpan cacheDuration,
            bool degradedOnError = false)
        {
            healthCheckBuilder.AddCachedCheck(
                name,
                async() => await ExecutePingCheckAsync(host, timeout, degradedOnError),
                cacheDuration);

            return(healthCheckBuilder.Builder);
        }
        public static IHealthBuilder AddAzureServiceBusTopicConnectivityCheck(
            this IHealthCheckBuilder builder,
            string name,
            string connectionString,
            string topicName,
            TimeSpan cacheDuration)
        {
            var topicClient = new TopicClient(connectionString, topicName)
            {
                OperationTimeout = DefaultTimeout
            };

            builder.AddCachedCheck(name, CheckServiceBusTopicConnectivity(name, topicClient), cacheDuration);

            return(builder.Builder);
        }
コード例 #15
0
        public static IHealthBuilder AddAzureServiceBusQueueConnectivityCheck(
            this IHealthCheckBuilder builder,
            string name,
            string connectionString,
            string queueName,
            TimeSpan cacheDuration)
        {
            var queueClient = new QueueClient(connectionString, queueName, receiveMode: ReceiveMode.PeekLock)
            {
                OperationTimeout = DefaultTimeout
            };

            builder.AddCachedCheck(name, CheckServiceBusQueueConnectivity(name, queueClient), cacheDuration);

            return(builder.Builder);
        }
コード例 #16
0
        public static IHealthBuilder AddSqlCachedCheck(
            this IHealthCheckBuilder healthCheckBuilder,
            string name,
            Func <IDbConnection> newDbConnection,
            TimeSpan timeout,
            TimeSpan cacheDuration,
            bool degradedOnError = false)
        {
            EnsureValidTimeout(timeout);

            healthCheckBuilder.AddCachedCheck(
                name,
                cancellationToken => ExecuteSqlCheckAsync(name, newDbConnection, timeout, degradedOnError, cancellationToken),
                cacheDuration);

            return(healthCheckBuilder.Builder);
        }
コード例 #17
0
        public static IHealthBuilder AddHttpGetCheck(
            this IHealthCheckBuilder healthCheckBuilder,
            string name,
            Uri uri,
            TimeSpan timeout,
            TimeSpan cacheDuration,
            bool degradedOnError = false)
        {
            EnsureValidTimeout(timeout);

            healthCheckBuilder.AddCachedCheck(
                name,
                async cancellationToken => await ExecuteHttpCheckNoRetriesAsync(uri, timeout, degradedOnError, cancellationToken),
                cacheDuration);

            return(healthCheckBuilder.Builder);
        }
コード例 #18
0
        public static IHealthBuilder AddHttpPostCheck(
            this IHealthCheckBuilder healthCheckBuilder,
            string name,
            Uri uri,
            HttpContent content,
            TimeSpan timeout,
            TimeSpan cacheDuration,
            bool degradedOnError = false,
            Dictionary <string, string> requestHeaders = null)
        {
            EnsureValidTimeout(timeout);

            healthCheckBuilder.AddCachedCheck(
                name,
                async cancellationToken =>
                await ExecuteHttpCheckNoRetriesAsync(uri, content, timeout, degradedOnError, cancellationToken,
                                                     requestHeaders),
                cacheDuration);

            return(healthCheckBuilder.Builder);
        }