public static IServiceCollection AddMetrics(this IServiceCollection services, IConfiguration configuration, Action <MetricsBuilder> configure) { return(AddMetrics(services, builder => { var options = new MetricsOptions(); configuration.Bind(options); configure(builder); })); }
public static IWebHostBuilder UseAppMetrics(this IWebHostBuilder webHostBuilder) { if (_initialized) { return(webHostBuilder); } return(webHostBuilder .ConfigureMetricsWithDefaults((context, builder) => { var metricsOptions = new MetricsOptions(); (context.Configuration as IConfiguration) .GetSection("metrics") .Bind(metricsOptions); if (!metricsOptions.Enabled) { return; } _initialized = true; if (metricsOptions.InfluxEnabled) { builder.Report.ToInfluxDb(o => { o.InfluxDb.Database = metricsOptions.Database; o.InfluxDb.BaseUri = new Uri(metricsOptions.InfluxUrl); o.InfluxDb.CreateDataBaseIfNotExists = true; o.FlushInterval = TimeSpan.FromSeconds(metricsOptions.Interval); }); } }) .UseHealth() .UseHealthEndpoints() .UseMetricsWebTracking() .UseMetrics()); }