示例#1
0
        public HealthCheckResult CheckQueue()
        {
            var message = new StatusMessage {
                Id = Guid.NewGuid().ToString()
            };

            try {
                _queue.Enqueue(message);
                if (_queue.GetQueueCount() == 0)
                {
                    return(HealthCheckResult.NotHealthy("Queue Not Working: No items were enqueued."));
                }

                var workItem = _queue.Dequeue(TimeSpan.Zero);
                if (workItem == null)
                {
                    return(HealthCheckResult.NotHealthy("Queue Not Working: No items could be dequeued."));
                }

                workItem.Complete();
            } catch (Exception ex) {
                return(HealthCheckResult.NotHealthy("Queues Not Working: " + ex.Message));
            }

            return(HealthCheckResult.Healthy);
        }
示例#2
0
        public async Task <HealthCheckResult> CheckQueueAsync()
        {
            var message = new StatusMessage {
                Id = Guid.NewGuid().ToString()
            };

            try {
                await _queue.EnqueueAsync(message).AnyContext();

                var queueStats = await _queue.GetQueueStatsAsync().AnyContext();

                if (queueStats.Enqueued == 0)
                {
                    return(HealthCheckResult.NotHealthy("Queue Not Working: No items were enqueued."));
                }

                var workItem = await _queue.DequeueAsync().AnyContext();

                if (workItem == null)
                {
                    return(HealthCheckResult.NotHealthy("Queue Not Working: No items could be dequeued."));
                }

                await workItem.CompleteAsync().AnyContext();
            } catch (Exception ex) {
                return(HealthCheckResult.NotHealthy("Queues Not Working: " + ex.Message));
            }

            return(HealthCheckResult.Healthy);
        }
示例#3
0
        public async Task <HealthCheckResult> CheckStorageAsync()
        {
            try {
                await _storage.GetFileListAsync(limit : 1).AnyContext();
            } catch (Exception ex) {
                return(HealthCheckResult.NotHealthy("Storage Not Working: " + ex.Message));
            }

            return(HealthCheckResult.Healthy);
        }
示例#4
0
        public async Task <HealthCheckResult> CheckCacheAsync()
        {
            try {
                if ((await _cacheClient.GetAsync <string>("__PING__").AnyContext()).HasValue)
                {
                    return(HealthCheckResult.NotHealthy("Cache Not Working"));
                }
            } catch (Exception ex) {
                return(HealthCheckResult.NotHealthy("Cache Not Working: " + ex.Message));
            }

            return(HealthCheckResult.Healthy);
        }
示例#5
0
        // TODO: Check storage
        // TODO: Check queues
        // TODO: Check message bus
        public HealthCheckResult CheckCache()
        {
            try {
                if (_cacheClient.Get <string>("__PING__") != null)
                {
                    return(HealthCheckResult.NotHealthy("Cache Not Working"));
                }
            } catch (Exception ex) {
                return(HealthCheckResult.NotHealthy("Cache Not Working: " + ex.Message));
            }

            return(HealthCheckResult.Healthy);
        }
示例#6
0
        public HealthCheckResult CheckElasticSearch()
        {
            try {
                var res = _elasticClient.Ping();
                if (!res.IsValid)
                {
                    return(HealthCheckResult.NotHealthy("ElasticSearch Ping Failed"));
                }
            } catch (Exception ex) {
                return(HealthCheckResult.NotHealthy("ElasticSearch Not Working: " + ex.Message));
            }

            return(HealthCheckResult.Healthy);
        }
示例#7
0
        public async Task <HealthCheckResult> CheckElasticSearchAsync()
        {
            try {
                var res = await _elasticClient.PingAsync().AnyContext();

                if (!res.IsValid)
                {
                    return(HealthCheckResult.NotHealthy("ElasticSearch Ping Failed"));
                }
            } catch (Exception ex) {
                return(HealthCheckResult.NotHealthy("ElasticSearch Not Working: " + ex.Message));
            }

            return(HealthCheckResult.Healthy);
        }
示例#8
0
        public HealthCheckResult CheckMongo()
        {
            try {
                _db.Server.Ping();

                if (!IsDbUpToDate())
                {
                    return(HealthCheckResult.NotHealthy("Mongo DB Schema Outdated"));
                }
            } catch (Exception ex) {
                return(HealthCheckResult.NotHealthy("Mongo Not Working: " + ex.Message));
            }

            return(HealthCheckResult.Healthy);
        }
        public async Task <HealthCheckResult> CheckElasticsearchAsync()
        {
            var sw = Stopwatch.StartNew();

            try {
                var response = await _elasticClient.PingAsync().AnyContext();

                if (!response.IsValid)
                {
                    return(HealthCheckResult.NotHealthy("Elasticsearch Ping Failed"));
                }
            } catch (Exception ex) {
                return(HealthCheckResult.NotHealthy("Elasticsearch Not Working: " + ex.Message));
            } finally {
                sw.Stop();
                Logger.Trace().Message($"Checking Elasticsearch took {sw.ElapsedMilliseconds}ms").Write();
            }

            return(HealthCheckResult.Healthy);
        }
        public async Task <HealthCheckResult> CheckCacheAsync()
        {
            var sw = Stopwatch.StartNew();

            try {
                var cacheValue = await _cacheClient.GetAsync <string>("__PING__").AnyContext();

                if (cacheValue.HasValue)
                {
                    return(HealthCheckResult.NotHealthy("Cache Not Working"));
                }
            } catch (Exception ex) {
                return(HealthCheckResult.NotHealthy("Cache Not Working: " + ex.Message));
            } finally {
                sw.Stop();
                Logger.Trace().Message($"Checking cache took {sw.ElapsedMilliseconds}ms").Write();
            }

            return(HealthCheckResult.Healthy);
        }
        public async Task <HealthCheckResult> CheckElasticsearchAsync()
        {
            var sw = Stopwatch.StartNew();

            try {
                var response = await _configuration.Client.PingAsync().AnyContext();

                if (!response.IsValid)
                {
                    return(HealthCheckResult.NotHealthy("Elasticsearch Ping Failed"));
                }
            } catch (Exception ex) {
                return(HealthCheckResult.NotHealthy("Elasticsearch Not Working: " + ex.Message));
            } finally {
                sw.Stop();
                _logger.LogTrace("Checking Elasticsearch took {Duration:g}", sw.Elapsed);
            }

            return(HealthCheckResult.Healthy);
        }
        public async Task <HealthCheckResult> CheckCacheAsync()
        {
            var sw = Stopwatch.StartNew();

            try {
                var cache      = new ScopedCacheClient(_configuration.Cache, "health");
                var cacheValue = await cache.GetAsync <string>("__PING__").AnyContext();

                if (cacheValue.HasValue)
                {
                    return(HealthCheckResult.NotHealthy("Cache Not Working"));
                }
            } catch (Exception ex) {
                return(HealthCheckResult.NotHealthy("Cache Not Working: " + ex.Message));
            } finally {
                sw.Stop();
                _logger.LogTrace("Checking cache took {Duration:g}", sw.Elapsed);
            }

            return(HealthCheckResult.Healthy);
        }
        public async Task <HealthCheckResult> CheckStorageAsync()
        {
            const string path = "healthcheck.txt";

            var sw = Stopwatch.StartNew();

            try {
                if (!await _storage.ExistsAsync(path).AnyContext())
                {
                    await _storage.SaveFileAsync(path, DateTime.UtcNow.ToString()).AnyContext();
                }

                await _storage.DeleteFileAsync(path).AnyContext();
            } catch (Exception ex) {
                return(HealthCheckResult.NotHealthy("Storage Not Working: " + ex.Message));
            } finally {
                sw.Stop();
                Logger.Trace().Message($"Checking storage took {sw.ElapsedMilliseconds}ms").Write();
            }

            return(HealthCheckResult.Healthy);
        }
        public async Task <HealthCheckResult> CheckStorageAsync()
        {
            const string path = "healthcheck.txt";

            var sw = Stopwatch.StartNew();

            try {
                if (!await _storage.ExistsAsync(path).AnyContext())
                {
                    await _storage.SaveFileAsync(path, SystemClock.UtcNow.ToString()).AnyContext();
                }

                await _storage.DeleteFileAsync(path).AnyContext();
            } catch (Exception ex) {
                return(HealthCheckResult.NotHealthy("Storage Not Working: " + ex.Message));
            } finally {
                sw.Stop();
                _logger.LogTrace("Checking storage took {Duration:g}", sw.Elapsed);
            }

            return(HealthCheckResult.Healthy);
        }