Example #1
0
        public AppMetricsReporter()
        {
            mMetrics = new MetricsBuilder()
                       //.Report.ToConsole(TimeSpan.FromSeconds(1))
                       .Report.ToInfluxDb("http://127.0.0.1:8086", "metrics-test", TimeSpan.FromSeconds(1))
                       .Build();

            mReportingService = new MetricsReporterBackgroundService(mMetrics, new MetricsOptions(), mMetrics.Reporters);
            mReportingService.StartAsync(CancellationToken.None).Wait();
        }
Example #2
0
        public static IServiceCollection AddMetricsReportingHostedService(
            this IServiceCollection services,
            EventHandler <UnobservedTaskExceptionEventArgs> unobservedTaskExceptionHandler = null)
        {
            services.AddSingleton <IHostedService, MetricsReporterBackgroundService>(serviceProvider =>
            {
                var options   = serviceProvider.GetRequiredService <MetricsOptions>();
                var metrics   = serviceProvider.GetRequiredService <IMetrics>();
                var reporters = serviceProvider.GetService <IReadOnlyCollection <IReportMetrics> >();
                var lifetime  = serviceProvider.GetService <IHostApplicationLifetime>();
                var instance  = new MetricsReporterBackgroundService(metrics, options, reporters, lifetime);
                if (unobservedTaskExceptionHandler != null)
                {
                    instance.UnobservedTaskException += unobservedTaskExceptionHandler;
                }

                return(instance);
            });

            return(services);
        }