/// <summary> /// Enables JSON serialization on the metric and health endpoint responses /// </summary> /// <param name="host">The metrics host builder.</param> /// <returns>The metrics host builder</returns> public static IMetricsHostBuilder AddJsonSerialization(this IMetricsHostBuilder host) { host.AddJsonHealthSerialization(); host.AddJsonMetricsSerialization(); return(host); }
internal static void AddCoreServices(this IMetricsHostBuilder builder) { builder.Services.TryAddTransient <Func <string, IMetricContextRegistry> >( provider => { var globalTags = provider.GetRequiredService <AppMetricsOptions>().GlobalTags; return(context => new DefaultMetricContextRegistry(context, new GlobalMetricTags(globalTags))); }); builder.Services.TryAddSingleton <IReportFactory, NoOpReportFactory>(); builder.Services.TryAddSingleton <IClock, StopwatchClock>(); builder.Services.TryAddSingleton <IMetricsFilter, DefaultMetricsFilter>(); builder.Services.TryAddSingleton <EnvironmentInfoProvider, EnvironmentInfoProvider>(); builder.Services.TryAddSingleton <IMetricDataSerializer, NoOpMetricDataSerializer>(); builder.Services.TryAddSingleton <IHealthStatusSerializer, NoOpHealthStatusSerializer>(); builder.Services.TryAddSingleton <IAdvancedMetrics, DefaultAdvancedMetrics>(); builder.Services.TryAddSingleton <IMetricsRegistry>(provider => { var options = provider.GetRequiredService <AppMetricsOptions>(); if (!options.MetricsEnabled) { return(new NullMetricsRegistry()); } var loggerFactory = provider.GetRequiredService <ILoggerFactory>(); var clock = provider.GetRequiredService <IClock>(); var envBuilder = provider.GetRequiredService <EnvironmentInfoProvider>(); var newContextRegistry = provider.GetRequiredService <Func <string, IMetricContextRegistry> >(); return(new DefaultMetricsRegistry(loggerFactory, options, clock, envBuilder, newContextRegistry)); }); builder.Services.TryAddSingleton <IMetrics, DefaultMetrics>(); builder.Services.TryAddSingleton(provider => builder.Environment); }
public static IMetricsHostBuilder AddCustomJsonHealthSerialization(this IMetricsHostBuilder host) { host.Services.Replace(ServiceDescriptor.Transient <IHealthResponseWriter, JsonHealthResponseWriter>()); host.Services.Replace(ServiceDescriptor.Transient <IHealthStatusSerializer, HealthStatusSerializer>()); return(host); }
/// <summary> /// Enables JSON serialization on the metric-text endpoint's response /// </summary> /// <param name="host">The metrics host builder.</param> /// <param name="serializerSettings">The JSON serializer settings.</param> /// <returns>The metrics host builder</returns> public static IMetricsHostBuilder AddJsonMetricsTextSerialization(this IMetricsHostBuilder host, JsonSerializerSettings serializerSettings) { host.Services.Replace(ServiceDescriptor.Transient <IMetricsTextResponseWriter, JsonMetricsTextResponseWriter>()); host.Services.Replace(ServiceDescriptor.Transient <IMetricDataSerializer>(provider => new MetricDataSerializer(serializerSettings))); return(host); }
public static IMetricsHostBuilder AddMetricsMiddleware(this IMetricsHostBuilder builder, IConfiguration configuration, Action <AspNetMetricsOptions> setupAction) { builder.Services.Configure <AspNetMetricsOptions>(configuration); builder.Services.Configure(setupAction); return(builder.AddMetricsMiddleware()); }
public static IMetricsHostBuilder AddPrometheusSerialization(this IMetricsHostBuilder host) { host.AddPrometheusPlainTextSerialization(); host.AddPrometheusProtobufSerialization(); return(host); }
/// <summary> /// Enables JSON serialization on the metric endpoint's response /// </summary> /// <param name="host">The metrics host builder.</param> /// <returns>The metrics host builder</returns> public static IMetricsHostBuilder AddJsonMetricsSerialization(this IMetricsHostBuilder host) { host.Services.Replace(ServiceDescriptor.Transient <IMetricsResponseWriter, JsonMetricsResponseWriter>()); host.Services.Replace(ServiceDescriptor.Transient <IMetricDataSerializer, MetricDataSerializer>()); return(host); }
/// <summary> /// Enables JSON serialization on the environment info endpoint's response /// </summary> /// <param name="host">The metrics host builder.</param> /// <returns>The metrics host builder</returns> public static IMetricsHostBuilder AddJsonEnvironmentInfoSerialization(this IMetricsHostBuilder host) { host.Services.Replace(ServiceDescriptor.Transient <IEnvironmentInfoResponseWriter, JsonEnvironmentInfoResponseWriter>()); host.Services.Replace(ServiceDescriptor.Transient <IEnvironmentInfoSerializer, EnvironmentInfoSerializer>()); return(host); }
public static IMetricsHostBuilder AddMetricsMiddleware(this IMetricsHostBuilder builder) { builder.AddRequiredAspNetPlatformServices(); builder.AddAspNetCoreServices(); return(builder); }
[AppMetricsExcludeFromCodeCoverage] // DEVNOTE: No need to test JsonSerializerSettings really public static IMetricsHostBuilder AddJsonSerialization(this IMetricsHostBuilder host, JsonSerializerSettings serializerSettings) { host.AddJsonHealthSerialization(serializerSettings); host.AddJsonMetricsSerialization(serializerSettings); return(host); }
public static IMetricsHostBuilder AddHealthChecks(this IMetricsHostBuilder builder, Action <IHealthCheckFactory> setupAction) { if (builder == null) { throw new ArgumentNullException(nameof(builder)); } builder.Services.TryAddSingleton <HealthCheckMarkerService, HealthCheckMarkerService>(); HealthChecksAsServices.AddHealthChecksAsServices(builder.Services, DefaultMetricsAssemblyDiscoveryProvider.DiscoverAssemblies(builder.Environment.ApplicationName)); builder.Services.Replace(ServiceDescriptor.Singleton <IHealthCheckFactory>(provider => { var logFactory = provider.GetRequiredService <ILoggerFactory>(); var logger = logFactory.CreateLogger <HealthCheckFactory>(); var autoScannedHealthChecks = Enumerable.Empty <HealthCheck>(); try { autoScannedHealthChecks = provider.GetRequiredService <IEnumerable <HealthCheck> >(); } catch (Exception ex) { logger.LogError(new EventId(5000), ex, "Failed to load autoscanned health checks, health checks won't be registered"); } var factory = new HealthCheckFactory(logger, autoScannedHealthChecks); setupAction?.Invoke(factory); return(factory); })); return(builder); }
public static IMetricsHostBuilder AddJsonSerialization(this IMetricsHostBuilder host) { host.Services.Replace(ServiceDescriptor.Transient <IMetricDataSerializer, MetricDataSerializer>()); host.Services.Replace(ServiceDescriptor.Transient <IHealthStatusSerializer, HealthStatusSerializer>()); return(host); }
public static IMetricsHostBuilder AddJsonSerialization(this IMetricsHostBuilder host, JsonSerializerSettings serializerSettings) { host.Services.Replace(ServiceDescriptor.Transient <IMetricDataSerializer>(provider => new MetricDataSerializer(serializerSettings))); host.Services.Replace(ServiceDescriptor.Transient <IHealthStatusSerializer>(provider => new HealthStatusSerializer(serializerSettings))); return(host); }
public static IMetricsHostBuilder AddClockType <T>(this IMetricsHostBuilder builder) where T : class, IClock, new() { builder.Services.Replace(ServiceDescriptor.Singleton <IClock>(new T())); return(builder); }
public static IMetricsHostBuilder AddRequiredPlatformServices(this IMetricsHostBuilder builder) { builder.Services.TryAddSingleton <MetricsMarkerService, MetricsMarkerService>(); builder.Services.AddOptions(); builder.Services.AddSingleton(resolver => resolver.GetRequiredService <IOptions <AppMetricsOptions> >().Value); return(builder); }
/// <summary> /// Enables Plain Text serialization on the metric and health endpoint responses /// </summary> /// <param name="host">The metrics host builder.</param> /// <returns>The metrics host builder</returns> public static IMetricsHostBuilder AddAsciiSerialization(this IMetricsHostBuilder host) { host.AddAsciiEnvironmentInfoSerialization(); host.AddAsciiHealthSerialization(); host.AddAsciiMetricsSerialization(); host.AddAsciiMetricsTextSerialization(); return(host); }
private static IMetricsHostBuilder AddMetricsMiddleware(this IMetricsHostBuilder builder) { builder.Services.TryAddSingleton <IMetricsResponseWriter, NoOpMetricsResponseWriter>(); builder.Services.TryAddSingleton <IHealthResponseWriter, NoOpHealthStatusResponseWriter>(); builder.AddRequiredAspNetPlatformServices(); return(builder); }
internal static void AddCoreServices(this IMetricsHostBuilder builder) { builder.Services.TryAddTransient <Func <string, IMetricContextRegistry> >( provider => { var globalTags = provider.GetRequiredService <AppMetricsOptions>().GlobalTags; return(context => new DefaultMetricContextRegistry(context, new GlobalMetricTags(globalTags))); }); builder.Services.TryAddSingleton(provider => new DefaultSamplingReservoirProvider()); builder.Services.TryAddSingleton <IReportFactory, NoOpReportFactory>(); builder.Services.TryAddSingleton <IHealthCheckFactory, NoOpHealthCheckFactory>(); builder.Services.TryAddSingleton <IClock, StopwatchClock>(); builder.Services.TryAddSingleton <IFilterMetrics, DefaultMetricsFilter>(); builder.Services.TryAddSingleton <EnvironmentInfoProvider, EnvironmentInfoProvider>(); builder.Services.TryAddSingleton <IMeasureMetrics, DefaultMeasureMetricsProvider>(); builder.Services.TryAddSingleton <IBuildMetrics, DefaultMetricsBuilderFactory>(); builder.Services.TryAddSingleton <IProvideMetrics, DefaultMetricsProvider>(); builder.Services.TryAddSingleton <IProvideMetricValues, DefaultMetricValuesProvider>(); builder.Services.TryAddSingleton <IManageMetrics, DefaultMetricsManager>(); builder.Services.TryAddSingleton <IProvideHealth, DefaultHealthProvider>(); builder.Services.TryAddSingleton <IMetricsRegistry>( provider => { var options = provider.GetRequiredService <AppMetricsOptions>(); if (!options.MetricsEnabled) { return(new NullMetricsRegistry()); } var loggerFactory = provider.GetRequiredService <ILoggerFactory>(); var clock = provider.GetRequiredService <IClock>(); var envBuilder = provider.GetRequiredService <EnvironmentInfoProvider>(); var newContextRegistry = provider.GetRequiredService <Func <string, IMetricContextRegistry> >(); return(new DefaultMetricsRegistry(loggerFactory, options, clock, envBuilder, newContextRegistry)); }); builder.Services.TryAddSingleton <IMetrics, DefaultMetrics>(); builder.Services.TryAddSingleton(provider => new Lazy <IMetrics>(provider.GetRequiredService <IMetrics>)); builder.Services.TryAddSingleton(provider => builder.Environment); }
public static IMetricsHostBuilder AddReporting(this IMetricsHostBuilder builder, Action <IReportFactory> setupAction) { builder.Services.TryAddSingleton <AppMetricsReportingMarkerService, AppMetricsReportingMarkerService>(); builder.Services.Replace(ServiceDescriptor.Singleton <IReportFactory>(provider => { var loggerFactory = provider.GetRequiredService <ILoggerFactory>(); var options = provider.GetRequiredService <AppMetricsOptions>(); if (!options.ReportingEnabled || setupAction == null) { return(new NoOpReportFactory()); } var factory = new ReportFactory(loggerFactory); setupAction?.Invoke(factory); return(factory); })); return(builder); }
public static IMetricsHostBuilder AddHealthChecks(this IMetricsHostBuilder builder, Action <IHealthCheckFactory> setupAction) { if (builder == null) { throw new ArgumentNullException(nameof(builder)); } builder.Services.TryAddSingleton <HealthCheckMarkerService, HealthCheckMarkerService>(); HealthChecksAsServices.AddHealthChecksAsServices(builder.Services, DefaultMetricsAssemblyDiscoveryProvider.DiscoverAssemblies(builder.Environment.ApplicationName)); builder.Services.TryAddTransient <IHealthCheckFactory>(provider => { var autoScannedHealthChecks = provider.GetRequiredService <IEnumerable <HealthCheck> >(); var logFactory = provider.GetRequiredService <ILoggerFactory>(); var logger = logFactory.CreateLogger <HealthCheckFactory>(); var factory = new HealthCheckFactory(logger, autoScannedHealthChecks); setupAction?.Invoke(factory); return(factory); }); return(builder); }
/// <summary> /// Adds the default reservoir which will be applied to all metrics using sampling that do not have an /// <see cref="IReservoir" /> set explicitly. /// </summary> /// <param name="builder">The metrics host builder.</param> /// <param name="reservoirBuilder">The reservoir builder to use as the default reservoir for sampling.</param> /// <returns>The same instance of the metrics host builder.</returns> public static IMetricsHostBuilder AddDefaultReservoir(this IMetricsHostBuilder builder, Func <IReservoir> reservoirBuilder) { builder.Services.Remove(ServiceDescriptor.Singleton(new DefaultSamplingReservoirProvider(reservoirBuilder))); return(builder); }
/// <summary> /// Enables InfluxDB's Line Protocol serialization on the metric endpoint's response /// </summary> /// <param name="host">The metrics host builder.</param> /// <returns>The metrics host builder</returns> public static IMetricsHostBuilder AddInfluxDBLineProtocolMetricsTextSerialization(this IMetricsHostBuilder host) { host.Services.Replace(ServiceDescriptor.Transient <IMetricsTextResponseWriter, LineProtocolTextResponseWriter>()); return(host); }
/// <summary> /// Enables InfluxDB's Line Protocol serialization on the metrics and metrics-text responses /// </summary> /// <param name="host">The metrics host builder.</param> /// <returns>The metrics host builder</returns> public static IMetricsHostBuilder AddInfluxDBLineProtocolSerialization(this IMetricsHostBuilder host) { host.AddInfluxDBLineProtocolMetricsSerialization(); host.AddInfluxDBLineProtocolMetricsTextSerialization(); return(host); }
public static IMetricsHostBuilder AddMetricsMiddleware(this IMetricsHostBuilder builder, IConfiguration configuration) { builder.Services.Configure <OwinMetricsOptions>(configuration); return(builder.AddMetricsMiddleware()); }
public static IMetricsHostBuilder AddMetricsMiddleware(this IMetricsHostBuilder builder, Action <OwinMetricsOptions> setupAction) { builder.Services.Configure(setupAction); return(builder.AddMetricsMiddleware()); }
/// <summary> /// Enables Plain Text serialization on the metric endpoint's response /// </summary> /// <param name="host">The metrics host builder.</param> /// <returns>The metrics host builder</returns> public static IMetricsHostBuilder AddAsciiMetricsTextSerialization(this IMetricsHostBuilder host) { host.Services.Replace(ServiceDescriptor.Transient <IMetricsTextResponseWriter, AsciiMetricsTextResponseWriter>()); return(host); }
public static IMetricsHostBuilder AddPrometheusProtobufSerialization(this IMetricsHostBuilder host) { host.Services.Replace(ServiceDescriptor.Transient <IMetricsResponseWriter, PrometheusProtobufMetricsWriter>()); return(host); }
public static IMetricsHostBuilder AddGlobalFilter(this IMetricsHostBuilder builder, IFilterMetrics filter) { builder.Services.Replace(ServiceDescriptor.Singleton(filter)); return(builder); }
public static IMetricsHostBuilder AddHealthChecks(this IMetricsHostBuilder builder) { builder.AddHealthChecks(setupAction: null); return(builder); }
public static IMetricsHostBuilder AddMetricsMiddleware(this IMetricsHostBuilder builder) { return(builder.AddMetricsMiddlewareCore()); }