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); }
public ApiEndpointMiddleware(RequestDelegate _, HealthMonitorData data) { _data = data; _serializerSettings = new JsonSerializerSettings { ContractResolver = new CamelCasePropertyNamesContractResolver(), Converters = new[] { new StringEnumConverter() }, DateTimeZoneHandling = DateTimeZoneHandling.Local, DateFormatHandling = DateFormatHandling.IsoDateFormat }; }
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); }
public MonitorDirectoryService(HealthCheckMonitorOptions options, HealthMonitorData data, ILogger <MonitorDirectoryService> logger) { _directoryPath = options.HealthChecksDirectory; _data = data; _logger = logger; }