public void TestUnknownSampler() { Configuration.SamplerConfiguration samplerConfiguration = new Configuration.SamplerConfiguration(_loggerFactory); samplerConfiguration.WithType("unknown"); Assert.Throws <NotSupportedException>(() => new Configuration("name", _loggerFactory) .WithSampler(samplerConfiguration) .GetTracer()); }
public static IServiceCollection AddElectJaeger(this IServiceCollection services, [NotNull] Action <ElectJaegerOptions> configure) { services.Configure(configure); var electJaegerOptions = configure.GetValue(); if (!electJaegerOptions.IsEnable) { return(services); } // Add open Tracing services.AddOpenTracing(); // Add ITracer services.AddSingleton(serviceProvider => { var loggerFactory = GetLoggerFactory(serviceProvider); // Sampler var samplerConfig = new Configuration.SamplerConfiguration(loggerFactory); samplerConfig.WithSamplingEndpoint($"http://{electJaegerOptions.SamplerDomain}:{electJaegerOptions.SamplerPort}"); samplerConfig.WithType(ConstSampler.Type); samplerConfig = electJaegerOptions.AfterSamplerConfig?.Invoke(samplerConfig) ?? samplerConfig; // Reporter var reporterConfig = new Configuration.ReporterConfiguration(loggerFactory); reporterConfig.SenderConfig.WithAgentHost(electJaegerOptions.ReporterDomain); reporterConfig.SenderConfig.WithAgentPort(electJaegerOptions.ReporterPort); reporterConfig.SenderConfig.WithEndpoint(electJaegerOptions.TracesEndpoint); if (!string.IsNullOrWhiteSpace(electJaegerOptions.AuthUsername)) { reporterConfig.SenderConfig.WithAuthUsername(electJaegerOptions.AuthUsername); } if (!string.IsNullOrWhiteSpace(electJaegerOptions.AuthPassword)) { reporterConfig.SenderConfig.WithAuthPassword(electJaegerOptions.AuthPassword); } if (!string.IsNullOrWhiteSpace(electJaegerOptions.AuthToken)) { reporterConfig.SenderConfig.WithAuthToken(electJaegerOptions.AuthToken); } reporterConfig = electJaegerOptions.AfterReporterConfig?.Invoke(reporterConfig) ?? reporterConfig; // Global Config var config = new Configuration(electJaegerOptions.ServiceName, loggerFactory) .WithSampler(samplerConfig) .WithReporter(reporterConfig); config = electJaegerOptions.AfterGlobalConfig?.Invoke(config) ?? config; // Tracer var tracer = config.GetTracer(); tracer = electJaegerOptions.AfterTracer?.Invoke(tracer) ?? tracer; // Register Tracer if (!GlobalTracer.IsRegistered()) { GlobalTracer.Register(tracer); } return(tracer); }); services.Configure <HttpHandlerDiagnosticOptions>(options => { options.IgnorePatterns.Add(x => !x.RequestUri.IsLoopback); }); return(services); }