Example #1
0
        /// <summary>
        ///     Adds App Metrics services, configuration and middleware to the
        ///     <see cref="T:Microsoft.AspNetCore.Hosting.IWebHostBuilder" />.
        /// </summary>
        /// <param name="hostBuilder">The <see cref="T:Microsoft.AspNetCore.Hosting.IWebHostBuilder" />.</param>
        /// <returns>A reference to this instance after the operation has completed.</returns>
        /// <exception cref="ArgumentNullException">
        ///     <see cref="T:Microsoft.AspNetCore.Hosting.IWebHostBuilder" /> cannot be null
        /// </exception>
        public static IWebHostBuilder UseMetricsEndpoints(this IWebHostBuilder hostBuilder)
        {
            hostBuilder.ConfigureMetrics();

            hostBuilder.ConfigureServices(
                (context, services) =>
            {
                services.AddMetricsEndpoints(context.Configuration);
                services.AddSingleton <IStartupFilter>(new DefaultMetricsEndpointsStartupFilter());
            });

            return(hostBuilder);
        }
Example #2
0
        /// <summary>
        ///     Adds App Metrics services, configuration and middleware to the
        ///     <see cref="T:Microsoft.AspNetCore.Hosting.IWebHostBuilder" />.
        /// </summary>
        /// <param name="hostBuilder">The <see cref="T:Microsoft.AspNetCore.Hosting.IWebHostBuilder" />.</param>
        /// <returns>A reference to this instance after the operation has completed.</returns>
        /// <exception cref="ArgumentNullException">
        ///     <see cref="T:Microsoft.AspNetCore.Hosting.IWebHostBuilder" /> cannot be null
        /// </exception>
        public static IWebHostBuilder UseResourceMetrics(this IWebHostBuilder hostBuilder)
        {
            hostBuilder.ConfigureMetrics();

            hostBuilder.ConfigureServices(
                (context, services) =>
            {
                services.AddResourceMetricsMiddleware(context.Configuration);
                services.AddSingleton <IStartupFilter>(new DefaultResourceMetricsStartupFilter());
            });

            return(hostBuilder);
        }
        public static IWebHostBuilder ConfigureMetrics(this IWebHostBuilder hostBuilder, Action <IMetricsBuilder> configureMetrics)
        {
            if (_metricsBuilt)
            {
                throw new InvalidOperationException("MetricsBuilder allows creation only of a single instance of IMetrics");
            }

            hostBuilder.ConfigureMetrics(
                (context, builder) =>
            {
                configureMetrics(builder);
            });

            return(hostBuilder);
        }
Example #4
0
        /// <summary>
        ///     Adds App Metrics services, configuration and middleware to the
        ///     <see cref="T:Microsoft.AspNetCore.Hosting.IWebHostBuilder" />.
        /// </summary>
        /// <param name="hostBuilder">The <see cref="T:Microsoft.AspNetCore.Hosting.IWebHostBuilder" />.</param>
        /// <param name="optionsDelegate">A callback to configure <see cref="MetricsWebTrackingOptions" />.</param>
        /// <returns>A reference to this instance after the operation has completed.</returns>
        /// <exception cref="ArgumentNullException">
        ///     <see cref="T:Microsoft.AspNetCore.Hosting.IWebHostBuilder" /> cannot be null
        /// </exception>
        public static IWebHostBuilder UseMetricsWebTracking(
            this IWebHostBuilder hostBuilder,
            Action <MetricsWebTrackingOptions> optionsDelegate)
        {
            hostBuilder.ConfigureMetrics();

            hostBuilder.ConfigureServices(
                (context, services) =>
            {
                services.AddMetricsTrackingMiddleware(optionsDelegate, context.Configuration);
                services.AddSingleton <IStartupFilter>(new DefaultMetricsTrackingStartupFilter());
            });

            return(hostBuilder);
        }
        public static IWebHostBuilder UseMetrics(this IWebHostBuilder hostBuilder, Action <WebHostBuilderContext, IMetricsBuilder> configureMetrics)
        {
            hostBuilder.ConfigureMetrics(configureMetrics);

            return(hostBuilder.UseMetrics(options =>
            {
                options.EndpointOptions = endpointsOptions =>
                {
                    endpointsOptions.EnvironmentInfoEndpointEnabled = true;
                    endpointsOptions.MetricsTextEndpointEnabled = false;
                    endpointsOptions.MetricsEndpointEnabled = true;
                    endpointsOptions.MetricsEndpointOutputFormatter = Metrics.Instance.OutputMetricsFormatters.OfType <App.Metrics.Formatters.Prometheus.MetricsPrometheusTextOutputFormatter>().First();
                };
            }));
        }
Example #6
0
        /// <summary>
        ///     Adds App Metrics services, configuration and middleware to the
        ///     <see cref="T:Microsoft.AspNetCore.Hosting.IWebHostBuilder" />.
        /// </summary>
        /// <param name="hostBuilder">The <see cref="T:Microsoft.AspNetCore.Hosting.IWebHostBuilder" />.</param>
        /// <param name="configuration">The <see cref="IConfiguration"/> containing <see cref="ResourceMetricsOptions"/></param>
        /// <param name="optionsDelegate">A callback to configure <see cref="ResourceMetricsOptions" />.</param>
        /// <returns>A reference to this instance after the operation has completed.</returns>
        /// <exception cref="ArgumentNullException">
        ///     <see cref="T:Microsoft.AspNetCore.Hosting.IWebHostBuilder" /> cannot be null
        /// </exception>
        public static IWebHostBuilder UseResourceMetrics(
            this IWebHostBuilder hostBuilder,
            IConfiguration configuration,
            Action <ResourceMetricsOptions> optionsDelegate)
        {
            hostBuilder.ConfigureMetrics();

            hostBuilder.ConfigureServices(
                services =>
            {
                services.AddResourceMetricsMiddleware(optionsDelegate, configuration);
                services.AddSingleton <IStartupFilter>(new DefaultResourceMetricsStartupFilter());
            });

            return(hostBuilder);
        }
Example #7
0
        /// <summary>
        ///     Adds App Metrics services, configuration and middleware to the
        ///     <see cref="T:Microsoft.AspNetCore.Hosting.IWebHostBuilder" />.
        /// </summary>
        /// <param name="hostBuilder">The <see cref="T:Microsoft.AspNetCore.Hosting.IWebHostBuilder" />.</param>
        /// <param name="configuration">The <see cref="IConfiguration" /> containing <see cref="MetricEndpointsOptions" /></param>
        /// <param name="optionsDelegate">A callback to configure <see cref="MetricEndpointsOptions" />.</param>
        /// <returns>A reference to this instance after the operation has completed.</returns>
        /// <exception cref="ArgumentNullException">
        ///     <see cref="T:Microsoft.AspNetCore.Hosting.IWebHostBuilder" /> cannot be null
        /// </exception>
        public static IWebHostBuilder UseMetricsEndpoints(
            this IWebHostBuilder hostBuilder,
            IConfiguration configuration,
            Action <MetricEndpointsOptions> optionsDelegate)
        {
            hostBuilder.ConfigureMetrics();

            hostBuilder.ConfigureServices(
                services =>
            {
                services.AddMetricsEndpoints(optionsDelegate, configuration);
                services.AddSingleton <IStartupFilter>(new DefaultMetricsEndpointsStartupFilter());
            });

            return(hostBuilder);
        }
        /// <summary>
        ///     Adds App Metrics services, configuration and middleware to the
        ///     <see cref="T:Microsoft.AspNetCore.Hosting.IWebHostBuilder" />.
        /// </summary>
        /// <typeparam name="TStartup">The type of the <see cref="IStartupFilter" /> used to configure metrics middleware.</typeparam>
        /// <param name="hostBuilder">The <see cref="T:Microsoft.AspNetCore.Hosting.IWebHostBuilder" />.</param>
        /// <returns>A reference to this instance after the operation has completed.</returns>
        public static IWebHostBuilder UseMetrics <TStartup>(
            this IWebHostBuilder hostBuilder)
            where TStartup : IStartupFilter, new()
        {
            hostBuilder.ConfigureMetrics();

            hostBuilder.ConfigureServices(
                (context, services) =>
            {
                services.AddMetricsReportingHostedService();
                services.AddMetricsEndpoints(context.Configuration);
                services.AddMetricsTrackingMiddleware(context.Configuration);
                services.AddSingleton <IStartupFilter>(new TStartup());
            });

            return(hostBuilder);
        }
 public static IWebHostBuilder ConfigurePrometheusEndpoint(this IWebHostBuilder builder)
 {
     Metrics = AppMetrics.CreateDefaultBuilder()
               .OutputMetrics.AsPrometheusPlainText()
               //.OutputMetrics.AsPrometheusProtobuf()
               .Build();
     return(builder.ConfigureMetrics(Metrics)
            .UseMetrics(
                options =>
     {
         options.EndpointOptions = endpointsOptions =>
         {
             endpointsOptions.MetricsTextEndpointOutputFormatter = Metrics.OutputMetricsFormatters
                                                                   .OfType <MetricsPrometheusTextOutputFormatter>().First();
             //endpointsOptions.MetricsEndpointOutputFormatter = Metrics.OutputMetricsFormatters.OfType<MetricsPrometheusProtobufOutputFormatter>().First();
         };
     }));
 }
Example #10
0
        /// <summary>
        ///     Adds App Metrics services, configuration and middleware to the
        ///     <see cref="T:Microsoft.AspNetCore.Hosting.IWebHostBuilder" />.
        /// </summary>
        /// <param name="hostBuilder">The <see cref="T:Microsoft.AspNetCore.Hosting.IWebHostBuilder" />.</param>
        /// <param name="setupDelegate">A callback to configure <see cref="ResourceMetricsOptions" />.</param>
        /// <returns>A reference to this instance after the operation has completed.</returns>
        /// <exception cref="ArgumentNullException">
        ///     <see cref="T:Microsoft.AspNetCore.Hosting.IWebHostBuilder" /> cannot be null
        /// </exception>
        public static IWebHostBuilder UseResourceMetrics(
            this IWebHostBuilder hostBuilder,
            Action <WebHostBuilderContext, ResourceMetricsOptions> setupDelegate)
        {
            hostBuilder.ConfigureMetrics();

            hostBuilder.ConfigureServices(
                (context, services) =>
            {
                var ResourceOptions = new ResourceMetricsOptions();
                services.AddResourceMetricsMiddleware(
                    options => setupDelegate(context, ResourceOptions),
                    context.Configuration);
                services.AddSingleton <IStartupFilter>(new DefaultResourceMetricsStartupFilter());
            });

            return(hostBuilder);
        }
Example #11
0
        /// <summary>
        ///     Adds App Metrics services, configuration and middleware to the
        ///     <see cref="T:Microsoft.AspNetCore.Hosting.IWebHostBuilder" />.
        /// </summary>
        /// <param name="hostBuilder">The <see cref="T:Microsoft.AspNetCore.Hosting.IWebHostBuilder" />.</param>
        /// <param name="setupDelegate">A callback to configure <see cref="MetricEndpointsOptions" />.</param>
        /// <returns>A reference to this instance after the operation has completed.</returns>
        /// <exception cref="ArgumentNullException">
        ///     <see cref="T:Microsoft.AspNetCore.Hosting.IWebHostBuilder" /> cannot be null
        /// </exception>
        public static IWebHostBuilder UseMetricsEndpoints(
            this IWebHostBuilder hostBuilder,
            Action <WebHostBuilderContext, MetricEndpointsOptions> setupDelegate)
        {
            hostBuilder.ConfigureMetrics();

            hostBuilder.ConfigureServices(
                (context, services) =>
            {
                var endpointOptions = new MetricEndpointsOptions();
                services.AddMetricsEndpoints(
                    options => setupDelegate(context, endpointOptions),
                    context.Configuration);
                services.AddSingleton <IStartupFilter>(new DefaultMetricsEndpointsStartupFilter());
            });

            return(hostBuilder);
        }
Example #12
0
 private static void ConfigureMetricsReporting(IWebHostBuilder builder, MetricOptions options)
 {
     if (String.Equals(options.Provider, "prometheus"))
     {
         var metrics = AppMetrics.CreateDefaultBuilder()
                       .OutputMetrics.AsPrometheusPlainText()
                       .OutputMetrics.AsPrometheusProtobuf()
                       .Build();
         builder.ConfigureMetrics(metrics).UseMetrics(o => {
             o.EndpointOptions = endpointsOptions => {
                 endpointsOptions.MetricsTextEndpointOutputFormatter = metrics.OutputMetricsFormatters.GetType <MetricsPrometheusTextOutputFormatter>();
                 endpointsOptions.MetricsEndpointOutputFormatter     = metrics.OutputMetricsFormatters.GetType <MetricsPrometheusProtobufOutputFormatter>();
             };
         });
     }
     else if (!String.Equals(options.Provider, "statsd"))
     {
         builder.UseMetrics();
     }
 }
Example #13
0
 private static void ConfigureMetricsReporting(IWebHostBuilder builder)
 {
     if (Settings.Current.MetricsConnectionString is PrometheusMetricsConnectionString)
     {
         var metrics = AppMetrics.CreateDefaultBuilder()
                       .OutputMetrics.AsPrometheusPlainText()
                       .OutputMetrics.AsPrometheusProtobuf()
                       .Build();
         builder.ConfigureMetrics(metrics).UseMetrics(options => {
             options.EndpointOptions = endpointsOptions => {
                 endpointsOptions.MetricsTextEndpointOutputFormatter = metrics.OutputMetricsFormatters.GetType <MetricsPrometheusTextOutputFormatter>();
                 endpointsOptions.MetricsEndpointOutputFormatter     = metrics.OutputMetricsFormatters.GetType <MetricsPrometheusProtobufOutputFormatter>();
             };
         });
     }
     else if (!(Settings.Current.MetricsConnectionString is StatsDMetricsConnectionString))
     {
         builder.UseMetrics();
     }
 }
        /// <summary>
        ///     Adds App Metrics services, configuration and middleware to the
        ///     <see cref="T:Microsoft.AspNetCore.Hosting.IWebHostBuilder" />.
        /// </summary>
        /// <typeparam name="TStartup">The type of the <see cref="IStartupFilter" /> used to configure metrics middleware.</typeparam>
        /// <param name="hostBuilder">The <see cref="T:Microsoft.AspNetCore.Hosting.IWebHostBuilder" />.</param>
        /// <param name="optionsDelegate">A callback to configure <see cref="MetricsWebTrackingOptions" />.</param>
        /// <returns>A reference to this instance after the operation has completed.</returns>
        public static IWebHostBuilder UseMetrics <TStartup>(
            this IWebHostBuilder hostBuilder,
            Action <MetricsWebHostOptions> optionsDelegate)
            where TStartup : IStartupFilter, new()
        {
            var options = new MetricsWebHostOptions();

            hostBuilder.ConfigureMetrics();

            hostBuilder.ConfigureServices(
                (context, services) =>
            {
                optionsDelegate(options);

                services.AddMetricsReportingHostedService(options.UnobservedTaskExceptionHandler);
                services.AddMetricsEndpoints(options.EndpointOptions, context.Configuration);
                services.AddMetricsTrackingMiddleware(options.TrackingMiddlewareOptions, context.Configuration);
                services.AddSingleton <IStartupFilter>(new TStartup());
            });

            return(hostBuilder);
        }