Example #1
0
        /// <summary>
        /// Configures the metrics and health checks.
        /// </summary>
        /// <param name="hostBuilder">The host builder.</param>
        public static IWebHostBuilder ConfigureMetricsAndHealth(this IWebHostBuilder hostBuilder)
        {
            hostBuilder
            .ConfigureHealthWithDefaults(builder => { })
            .ConfigureMetricsWithDefaults((builderContext, metricsBuilder) =>
            {
                metricsBuilder.OutputMetrics.AsPrometheusPlainText();

                var metricsConfig  = builderContext.Configuration.GetSection(MicroserviceConstants.MetricsConfiguration.Metrics);
                var metricsOptions = new MetricsConfigurationOptions();
                metricsConfig.Bind(metricsOptions);

                if (metricsOptions.ReportingInfluxDb.InfluxDb.BaseUri != null)
                {
                    metricsBuilder.Report.ToInfluxDb(metricsOptions.ReportingInfluxDb);
                }
            })
            .UseMetricsWebTracking()
            .UseMetrics(options =>
            {
                options.EndpointOptions = endpointsOptions =>
                {
                    endpointsOptions.MetricsTextEndpointOutputFormatter = Metrics.Instance.OutputMetricsFormatters.OfType <MetricsPrometheusTextOutputFormatter>().First();
                    endpointsOptions.MetricsEndpointOutputFormatter     = Metrics.Instance.OutputMetricsFormatters.OfType <MetricsPrometheusTextOutputFormatter>().First();
                };
            })
            .UseSystemMetrics();

            return(hostBuilder);
        }
Example #2
0
        public static IWebHostBuilder ConfigureHealthWithDefaults(this IWebHostBuilder hostBuilder, Action <IHealthBuilder> configureHealth)
        {
            if (_healthBuilt)
            {
                throw new InvalidOperationException("HealthBuilder allows creation only of a single instance of IHealth");
            }

            hostBuilder.ConfigureHealthWithDefaults(
                (context, builder) =>
            {
                configureHealth(builder);
            });

            return(hostBuilder);
        }