public static IHostBuilder UseClaptrapMetrics(this IHostBuilder hostBuilder) { return(hostBuilder .ConfigureMetricsWithDefaults((context, builder) => { var claptrapOptions = new ClaptrapServerOptions(); var config = context.Configuration.GetSection(ClaptrapServerOptions.ConfigurationSectionName); config.Bind(claptrapOptions); var metricsInfluxDbOptions = claptrapOptions.MetricsInfluxDb; if (metricsInfluxDbOptions.Enabled == true) { builder.Report .ToInfluxDb(options => { options.InfluxDb.Database = metricsInfluxDbOptions?.Database ?? "metricsdatabase"; options.InfluxDb.UserName = metricsInfluxDbOptions?.UserName ?? "claptrap"; options.InfluxDb.Password = metricsInfluxDbOptions?.Password ?? "claptrap"; options.InfluxDb.BaseUri = metricsInfluxDbOptions?.BaseUri ?? new Uri("http://127.0.0.1:19086"); options.InfluxDb.CreateDataBaseIfNotExists = metricsInfluxDbOptions?.CreateDataBaseIfNotExists ?? true; options.HttpPolicy.BackoffPeriod = metricsInfluxDbOptions?.BackoffPeriod ?? TimeSpan.FromSeconds(30); options.HttpPolicy.FailuresBeforeBackoff = metricsInfluxDbOptions?.FailuresBeforeBackoff ?? 5; options.HttpPolicy.Timeout = metricsInfluxDbOptions?.Timeout ?? TimeSpan.FromSeconds(10); options.FlushInterval = metricsInfluxDbOptions?.FlushInterval ?? TimeSpan.FromSeconds(20); options.MetricsOutputFormatter = new MetricsInfluxDbLineProtocolOutputFormatter(); }); } }) .UseMetrics(options => { options.EndpointOptions = endpointsOptions => { endpointsOptions.MetricsTextEndpointOutputFormatter = new MetricsPrometheusTextOutputFormatter(); }; })); }
public static IClaptrapBootstrapperBuilder AddConfiguration( this IClaptrapBootstrapperBuilder builder, IConfiguration configuration) { var config = configuration.GetSection(ClaptrapServerOptions.ConfigurationSectionName); var claptrapConfig = new ClaptrapServerOptions(); config.Bind(claptrapConfig); builder.AddConnectionString(Defaults.ConnectionName, claptrapConfig.DefaultConnectionString); foreach (var(key, value) in claptrapConfig.ConnectionStrings) { builder.AddConnectionString(key, value); } LoadEventStore(builder, claptrapConfig.EventStore); LoadStateStore(builder, claptrapConfig.StateStore); return(builder); }