private void RegisterRequestTracker(IServiceCollection services, DiagnosticFeaturesSettings settings) { if (environment.HostExtensions.TryGet <IVostokApplicationDiagnostics>(out var diagnostics) && settings.AddCurrentRequestsInfoProvider) { var requestTracker = new RequestTracker(); services.AddSingleton <IRequestTracker>(requestTracker); var infoEntry = new DiagnosticEntry(DiagnosticConstants.Component, "requests-in-progress"); var infoProvider = new CurrentRequestsInfoProvider(requestTracker); disposables.Add(diagnostics.Info.RegisterProvider(infoEntry, infoProvider)); }
private void RegisterThrottlingProvider(IServiceCollection services, DiagnosticFeaturesSettings settings) { var throttlingProvider = throttlingBuilder.BuildProvider(); services.AddSingleton <IThrottlingProvider>(throttlingProvider); if (environment.HostExtensions.TryGet <IVostokApplicationDiagnostics>(out var diagnostics)) { if (settings.AddThrottlingInfoProvider) { var infoEntry = new DiagnosticEntry(DiagnosticConstants.Component, "request-throttling"); var infoProvider = new ThrottlingInfoProvider(throttlingProvider); disposables.Add(diagnostics.Info.RegisterProvider(infoEntry, infoProvider)); } if (settings.AddThrottlingHealthCheck) { var healthCheck = new ThrottlingHealthCheck(throttlingProvider); disposables.Add(diagnostics.HealthTracker.RegisterCheck("Request throttling", healthCheck)); } } }