/// <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); }
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); }