public MonitorCollectorService(HealthCheckMonitorOptions options, HealthMonitorData data, HealthMonitorCallbacks callbacks, IHttpClientFactory clientFactory, ILogger <MonitorCollectorService> logger)
     : base(new HostedTimedOptions {
     InitialDelay = options.InitialEvaluationDelay, Interval = options.EvaluationInterval
 }, logger)
 {
     _data          = data;
     _callbacks     = callbacks;
     _clientFactory = clientFactory;
     _logger        = logger;
 }
        private HealthMonitorData Data()
        {
            var data = new HealthMonitorData(Options());

            data.MonitorResults["Check1"].Status = HealthMonitorStatus.Healthy;
            data.MonitorResults["Check2"].Status = HealthMonitorStatus.Degraded;
            data.MonitorResults["Check3"].Status = HealthMonitorStatus.Unhealthy;

            return(data);
        }
示例#3
0
 public ApiEndpointMiddleware(RequestDelegate _, HealthMonitorData data)
 {
     _data = data;
     _serializerSettings = new JsonSerializerSettings
     {
         ContractResolver     = new CamelCasePropertyNamesContractResolver(),
         Converters           = new[] { new StringEnumConverter() },
         DateTimeZoneHandling = DateTimeZoneHandling.Local,
         DateFormatHandling   = DateFormatHandling.IsoDateFormat
     };
 }
示例#4
0
        internal async Task ProcessCallbacks(HealthMonitorData monitorData)
        {
            var results       = monitorData.MonitorResults.Select(kv => kv.Value);
            var callbackTasks = new List <Task>();

            foreach (var result in results)
            {
                if (_callbacks.TryGetValue(CallbackName(result.Name, result.Status), out var callback))
                {
                    callbackTasks.Add(callback(result));
                }
            }

            try
            {
                await Task.WhenAll(callbackTasks);
            }
            catch (Exception ex)
            {
                _logger.LogError(ex, "There was an error while processing the callbacks");
            }
        }
        private async Task <HealthMonitorData> RunTest(HealthCheckMonitorOptions options, HealthMonitorCallbacks callbacks = null)
        {
            var data = new HealthMonitorData(options);

            if (callbacks == null)
            {
                callbacks = new HealthMonitorCallbacks(_callbackLogger);
            }


            var service = new MonitorCollectorService(options, data, callbacks, _clientFactory, _collectorLogger);

            using (var cts = new CancellationTokenSource(TimeSpan.FromSeconds(2)))
            {
                await service.StartAsync(cts.Token);

                await Task.Delay(TimeSpan.FromMilliseconds(500));

                await service.StopAsync(cts.Token);
            }

            return(data);
        }
示例#6
0
 public MonitorDirectoryService(HealthCheckMonitorOptions options, HealthMonitorData data, ILogger <MonitorDirectoryService> logger)
 {
     _directoryPath = options.HealthChecksDirectory;
     _data          = data;
     _logger        = logger;
 }