/// <summary>
 /// Initializes a new instance of the <see cref="SqlDbStoredProcedureMonitor"/> class.
 /// </summary>
 /// <param name="dbConnectionProvider">The DB connection provider.</param>
 /// <param name="schema">DB schema monitored.</param>
 /// <param name="storedProcedureName">Healthcheck stored procedure name (without schema).</param>
 /// <param name="logger">The logger.</param>
 /// <param name="configuration">The configuration.</param>
 /// <param name="resourceName">Name of the resource.</param>
 /// <param name="isCritical">if set to <c>true</c> [is critical Resource].</param>
 public SqlDbStoredProcedureMonitor(
     IDbConnectionProvider dbConnectionProvider,
     string schema,
     string storedProcedureName,
     ILogger <ResourceMonitor> logger,
     IResourceMonitorConfiguration configuration,
     string resourceName,
     bool isCritical = false)
     : base(
         resourceName,
Beispiel #2
0
 /// <summary>
 /// Initializes a new instance of the <see cref="RedisPingMonitor"/> class.
 /// </summary>
 /// <param name="isCritical">if set to <c>true</c> [is critical Resource].</param>
 /// <param name="connectionMultiplexer">The connection multiplexer.</param>
 /// <param name="logger">The logger.</param>
 /// <param name="configuration">The configuration.</param>
 /// <param name="resourceName">Name of the resource.</param>
 public RedisPingMonitor(
     bool isCritical,
     IConnectionMultiplexer connectionMultiplexer,
     ILogger <RedisPingMonitor> logger,
     IResourceMonitorConfiguration configuration,
     string resourceName = null)
     : base(resourceName ?? GetResourceName(connectionMultiplexer),
            new RedisPingHealthCheckStrategy(connectionMultiplexer),
            configuration,
            logger,
            isCritical)
 {
 }
Beispiel #3
0
 /// <summary>
 /// Adds the sql database monitor to MonitoringOptions
 /// </summary>
 /// <param name="options">The options.</param>
 /// <param name="dbConnectionString">Database connection string</param>
 /// <param name="resourceName">Name of the resource.</param>
 /// <param name="isCritical">if set to <c>true</c> [is critical].</param>
 /// <param name="configOverride">The configuration override.</param>
 public static void AddSqlDbMonitor(
     this MonitoringOptions options,
     string dbConnectionString,
     string resourceName = null,
     bool isCritical     = true,
     IResourceMonitorConfiguration configOverride = null)
 {
     options.AddSqlDbMonitor(
         new DbConnectionProvider(dbConnectionString),
         resourceName,
         isCritical,
         configOverride);
 }
Beispiel #4
0
 /// <summary>
 /// Initializes a new instance of the <see cref="MongoDbPingMonitor"/> class.
 /// </summary>
 /// <param name="mongoDatabase">The mongo database.</param>
 /// <param name="logger">The logger.</param>
 /// <param name="configuration">The configuration.</param>
 /// <param name="resourceName">Name of the resource (If not provided: will be based on Servers EndPoints).</param>
 /// <param name="isCritical">if set to <c>true</c> [is critical].</param>
 public MongoDbPingMonitor(
     IMongoDatabase mongoDatabase,
     ILogger <MongoDbPingMonitor> logger,
     IResourceMonitorConfiguration configuration,
     string resourceName = null,
     bool isCritical     = true)
     : base(resourceName ?? "MongoDB:" + string.Join(",", mongoDatabase.Client.Settings.Servers.Select(e => e.ToString())),
            new MongoDbPingHealthCheckStrategy(mongoDatabase),
            configuration,
            logger,
            isCritical)
 {
 }
Beispiel #5
0
 /// <summary>
 /// Initializes a new instance of the <see cref="ActiveMqPingMonitor"/> class.
 /// </summary>
 /// <param name="resourceName">Name of monitored resource</param>
 /// <param name="connectionFactory">Factory of ActiveMq specific type of connection</param>
 /// <param name="logger">The logger.</param>
 /// <param name="configuration">The configuration.</param>
 /// <param name="isCritical">if set to <c>true</c> [is critical Resource].</param>
 public ActiveMqPingMonitor(
     string resourceName,
     IConnectionFactory connectionFactory,
     IResourceMonitorConfiguration configuration,
     ILogger <ResourceMonitor> logger,
     bool isCritical = false)
     : base(
         resourceName ?? "ActiveMQ",
         new ActiveMqPingHealthCheckStrategy(connectionFactory),
         configuration,
         logger,
         isCritical)
 {
 }
Beispiel #6
0
 /// <summary>
 /// Initializes a new instance of the <see cref="SqlDbPingMonitor"/> class.
 /// </summary>
 /// <param name="isCritical">if set to <c>true</c> [is critical Resource].</param>
 /// <param name="connectionProvider">The connection provider.</param>
 /// <param name="logger">The logger.</param>
 /// <param name="configuration">The configuration.</param>
 /// <param name="resourceName">Name of the resource.</param>
 public SqlDbPingMonitor(
     IDbConnectionProvider connectionProvider,
     ILogger <ResourceMonitor> logger,
     IResourceMonitorConfiguration configuration,
     string resourceName = null,
     bool isCritical     = false)
     : base(
         resourceName,
         new SqlDbPingHealthCheckStrategy(connectionProvider),
         configuration,
         logger,
         isCritical)
 {
 }
 public ResourceMonitor(
     string resourceName,
     IHealthCheckStrategy verificationStrategy,
     IResourceMonitorConfiguration configuration,
     ILogger <ResourceMonitor> logger,
     bool isCritical = false)
     : this(resourceName,
            verificationStrategy,
            configuration,
            logger,
            isCritical,
            new TimerAdapterFactory())
 {
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="HttpResourceMonitor"/> class.
 /// </summary>
 /// <param name="resourceName">Name of the resource.</param>
 /// <param name="healthCheckEndpoint">The health check endpoint.</param>
 /// <param name="httpClient">The HTTP client.</param>
 /// <param name="configuration">The configuration.</param>
 /// <param name="logger">The logger.</param>
 /// <param name="isCritical">if set to <c>true</c> [is critical].</param>
 public HttpResourceMonitor(
     string resourceName,
     Uri healthCheckEndpoint,
     HttpClient httpClient,
     IResourceMonitorConfiguration configuration,
     ILogger <HttpResourceMonitor> logger,
     bool isCritical = false)
     : base(
         resourceName,
         new HttpSuccessStatusCodeHealthCheckStrategy(httpClient, healthCheckEndpoint),
         configuration,
         logger,
         isCritical)
 {
 }
Beispiel #9
0
 /// <summary>
 /// Adds the SQL database stored procedure monitor to MonitoringOptions
 /// </summary>
 /// <param name="options">The options.</param>
 /// <param name="dbConnectionString">Database connection string.</param>
 /// <param name="schema">DB schema monitored.</param>
 /// <param name="storedProcedureName">Healthcheck stored procedure name (without schema).</param>
 /// <param name="resourceName">Name of the resource.</param>
 /// <param name="isCritical">if set to <c>true</c> [is critical].</param>
 /// <param name="configOverride">The configuration override.</param>
 public static void AddSqlDbStoredProcedureMonitor(
     this MonitoringOptions options,
     string dbConnectionString,
     string schema,
     string storedProcedureName,
     string resourceName = null,
     bool isCritical     = true,
     IResourceMonitorConfiguration configOverride = null)
 {
     options.AddSqlDbStoredProcedureMonitor(
         new DbConnectionProvider(dbConnectionString),
         schema,
         storedProcedureName,
         resourceName ?? DbSchemaResourceName(dbConnectionString, schema),
         isCritical,
         configOverride);
 }
Beispiel #10
0
        /// <summary>
        /// Adds the Shutdown monitor.
        /// </summary>
        /// <param name="options">The options.</param>
        /// <param name="resourceName">Name of the resource. Defaults to: Uri.AbsoluteUri.</param>
        /// <param name="configOverride">The configuration override.</param>
        public static void AddShutdownMonitor(
            this MonitoringOptions options,

            string resourceName = null,
            IResourceMonitorConfiguration configOverride = null)
        {
            options.AddResourceMonitor((conf, provider) =>
            {
                var logger = provider.GetRequiredService <ILogger <ShutdownMonitor> >();
                return(new ShutdownMonitor(
                           resourceName ?? "shutdown",
                           provider.GetRequiredService <IShutdownStatusProvider>(),
                           configOverride ?? conf,
                           logger
                           ));
            });
        }
Beispiel #11
0
        /// <summary>
        /// Adds the sql database monitor to MonitoringOptions
        /// </summary>
        /// <param name="options">The options.</param>
        /// <param name="dbProvider">Database provider</param>
        /// <param name="resourceName">Name of the resource.</param>
        /// <param name="isCritical">if set to <c>true</c> [is critical].</param>
        /// <param name="configOverride">The configuration override.</param>
        public static void AddSqlDbMonitor(
            this MonitoringOptions options,
            IDbConnectionProvider dbProvider,
            string resourceName = null,
            bool isCritical     = true,
            IResourceMonitorConfiguration configOverride = null)
        {
            options.AddResourceMonitor((conf, provider) =>
            {
                var logger = provider.GetRequiredService <ILogger <SqlDbPingMonitor> >();

                return(new SqlDbPingMonitor(
                           dbProvider,
                           logger,
                           configOverride ?? conf,
                           resourceName ?? "SQL Database",
                           isCritical));
            });
        }
Beispiel #12
0
 /// <summary>
 /// Adds the HTTP monitor.
 /// </summary>
 /// <param name="options">The options.</param>
 /// <param name="healthCheckEndpoint">The health check endpoint.</param>
 /// <param name="resourceName">Name of the resource. Defaults to: Uri.AbsoluteUri.</param>
 /// <param name="isCritical">if set to <c>true</c> [is critical].</param>
 /// <param name="configOverride">The configuration override.</param>
 public static void AddHttpMonitor(
     this MonitoringOptions options,
     Uri healthCheckEndpoint,
     string resourceName = null,
     bool isCritical     = true,
     IResourceMonitorConfiguration configOverride = null)
 {
     resourceName = resourceName ?? healthCheckEndpoint.AbsoluteUri; // Defaults to the AbsoluteUri of the Health Check Endpoint
     options.AddResourceMonitor((conf, provider) =>
     {
         var logger = provider.GetRequiredService <ILogger <HttpResourceMonitor> >();
         return(new HttpResourceMonitor(
                    resourceName,
                    healthCheckEndpoint,
                    new HttpClient(),
                    configOverride ?? conf,
                    logger,
                    isCritical));
     });
 }
Beispiel #13
0
        internal ResourceMonitor(
            string resourceName,
            IHealthCheckStrategy verificationStrategy,
            IResourceMonitorConfiguration configuration,
            ILogger <ResourceMonitor> logger,
            bool isCritical,
            ITimerFactory timerFactory)
        {
            if (resourceName == null)
            {
                throw new ArgumentNullException(nameof(resourceName));
            }
            if (verificationStrategy == null)
            {
                throw new ArgumentNullException(nameof(verificationStrategy));
            }
            if (logger == null)
            {
                throw new ArgumentNullException(nameof(logger));
            }
            if (timerFactory == null)
            {
                throw new ArgumentNullException(nameof(timerFactory));
            }
            if (configuration == null)
            {
                throw new ArgumentNullException(nameof(configuration));
            }

            _verificationStrategy = verificationStrategy;
            _logger       = logger;
            ResourceName  = resourceName;
            Configuration = configuration;
            IsCritical    = isCritical;

            _timer = timerFactory.Create(OnTimer);
            if (_timer == null)
            {
                throw new InvalidOperationException("Expected TimerFactory to return a Timer.");
            }
        }
Beispiel #14
0
        /// <summary>
        /// Adds the SQL database stored procedure monitor to MonitoringOptions
        /// </summary>
        /// <param name="options">The options.</param>
        /// <param name="dbConnectionProvider">Database connection provider.</param>
        /// <param name="schema">DB schema monitored.</param>
        /// <param name="storedProcedureName">Healthcheck stored procedure name (without schema).</param>
        /// <param name="resourceName">Name of the resource.</param>
        /// <param name="isCritical">if set to <c>true</c> [is critical].</param>
        /// <param name="configOverride">The configuration override.</param>
        public static void AddSqlDbStoredProcedureMonitor(
            this MonitoringOptions options,
            IDbConnectionProvider dbConnectionProvider,
            string schema,
            string storedProcedureName,
            string resourceName,
            bool isCritical = true,
            IResourceMonitorConfiguration configOverride = null)
        {
            options.AddResourceMonitor((conf, provider) =>
            {
                var logger = provider.GetRequiredService <ILogger <SqlDbStoredProcedureMonitor> >();

                return(new SqlDbStoredProcedureMonitor(
                           dbConnectionProvider,
                           schema,
                           storedProcedureName,
                           logger,
                           configOverride ?? conf,
                           resourceName,
                           isCritical));
            });
        }
Beispiel #15
0
        /// <summary>
        /// Adds the MongoDB monitor to MonitoringOptions
        /// </summary>
        /// <param name="options">The options.</param>
        /// <param name="mongo">The MongoDB.</param>
        /// <param name="resourceName">Name of the resource.</param>
        /// <param name="isCritical">if set to <c>true</c> [is critical].</param>
        /// <param name="configOverride">The configuration override.</param>
        public static void AddMongoDbMonitor(
            this MonitoringOptions options,
            IMongoDatabase mongo = null,
            string resourceName  = "MongoDB",
            bool isCritical      = true,
            IResourceMonitorConfiguration configOverride = null)
        {
            options.AddResourceMonitor((conf, provider) =>
            {
                var logger = provider.GetRequiredService <ILogger <MongoDbPingMonitor> >();
                mongo      = mongo ?? provider.GetService <IMongoDatabase>();
                if (mongo == null)
                {
                    throw new InvalidOperationException("A MongoDB instance is required either as an argument or from the Container.");
                }

                return(new MongoDbPingMonitor(
                           mongo,
                           logger,
                           configOverride ?? conf,
                           resourceName,
                           isCritical));
            });
        }
        /// <summary>
        /// Adds the redis monitor to MonitoringOptions
        /// </summary>
        /// <param name="options">The options.</param>
        /// <param name="multiplexer">The multiplexer.</param>
        /// <param name="resourceName">Name of the resource.</param>
        /// <param name="isCritical">if set to <c>true</c> [is critical].</param>
        /// <param name="configOverride">The configuration override.</param>
        public static void AddRedisMonitor(
            this MonitoringOptions options,
            IConnectionMultiplexer multiplexer = null,
            string resourceName = "Redis",
            bool isCritical     = true,
            IResourceMonitorConfiguration configOverride = null)
        {
            options.AddResourceMonitor((conf, provider) =>
            {
                var logger  = provider.GetRequiredService <ILogger <RedisPingMonitor> >();
                multiplexer = multiplexer ?? provider.GetService <IConnectionMultiplexer>();
                if (multiplexer == null)
                {
                    throw new InvalidOperationException("A multiplexer is required either as an argument or from the Container.");
                }

                return(new RedisPingMonitor(
                           isCritical,
                           multiplexer,
                           logger,
                           configOverride ?? conf,
                           resourceName));
            });
        }
Beispiel #17
0
 public ShutdownMonitor(string resourceName, IShutdownStatusProvider shutdownStatusProvider, IResourceMonitorConfiguration configuration, ILogger <ResourceMonitor> logger) : base(resourceName, new ShutdownHealthCheckStrategy(shutdownStatusProvider), configuration, logger, true)
 {
 }