public Tracer.Builder GetTracerBuilder()
        {
            if (ReporterConfig == null)
            {
                ReporterConfig = new ReporterConfiguration(_loggerFactory);
            }
            if (SamplerConfig == null)
            {
                SamplerConfig = new SamplerConfiguration(_loggerFactory);
            }
            if (_codecConfig == null)
            {
                _codecConfig = new CodecConfiguration(new Dictionary <IFormat <ITextMap>, List <Codec <ITextMap> > >());
            }
            if (_metricsFactory == null)
            {
                _metricsFactory = NoopMetricsFactory.Instance;
            }
            IMetrics  metrics  = new MetricsImpl(_metricsFactory);
            IReporter reporter = ReporterConfig.GetReporter(metrics);
            ISampler  sampler  = SamplerConfig.CreateSampler(_serviceName, metrics);

            Tracer.Builder builder = new Tracer.Builder(_serviceName)
                                     .WithLoggerFactory(_loggerFactory)
                                     .WithSampler(sampler)
                                     .WithReporter(reporter)
                                     .WithMetrics(metrics)
                                     .WithTags(_tracerTags);

            _codecConfig.Apply(builder);

            return(builder);
        }
Esempio n. 2
0
        public static IServiceCollection AddJaeger(this IServiceCollection services)
        {
            services.AddSingleton <ITracer>(serviceProvider =>
            {
                var loggerFactory = serviceProvider.GetRequiredService <ILoggerFactory>();

                var senderConfig = new SenderConfiguration(loggerFactory)
                                   .WithAgentHost(Environment.GetEnvironmentVariable("JAEGER_AGENT_HOST"))
                                   .WithAgentPort(Convert.ToInt32(Environment.GetEnvironmentVariable("JAEGER_AGENT_PORT")));

                SenderConfiguration.DefaultSenderResolver = new SenderResolver(loggerFactory)
                                                            .RegisterSenderFactory <ThriftSenderFactory>();

                var config = Configuration.FromEnv(loggerFactory);

                var samplerConfiguration = new SamplerConfiguration(loggerFactory)
                                           .WithType(ConstSampler.Type)
                                           .WithParam(1);

                var reporterConfiguration = new ReporterConfiguration(loggerFactory)
                                            .WithSender(senderConfig)
                                            .WithLogSpans(true);

                var tracer = config
                             .WithSampler(samplerConfiguration)
                             .WithReporter(reporterConfiguration)
                             .GetTracer();

                GlobalTracer.Register(tracer);

                return(tracer);
            });

            return(services);
        }
Esempio n. 3
0
        public void TestSamplerConstInvalidParam()
        {
            SetProperty(Configuration.JaegerSamplerType, ConstSampler.Type);
            SetProperty(Configuration.JaegerSamplerParam, "X");
            SamplerConfiguration samplerConfig = SamplerConfiguration.FromEnv(_loggerFactory);

            Assert.Equal(ConstSampler.Type, samplerConfig.Type);
            Assert.Null(samplerConfig.Param);
        }
Esempio n. 4
0
        public void TestRateLimitingSampler()
        {
            SamplerConfiguration samplerConfiguration = new SamplerConfiguration(_loggerFactory)
                                                        .WithType(RateLimitingSampler.Type);
            ISampler sampler = samplerConfiguration.CreateSampler("name",
                                                                  new MetricsImpl(NoopMetricsFactory.Instance));

            Assert.True(sampler is RateLimitingSampler);
        }
Esempio n. 5
0
        public void TestProbabilisticSampler()
        {
            SamplerConfiguration samplerConfiguration = new SamplerConfiguration(_loggerFactory)
                                                        .WithType(ProbabilisticSampler.Type);
            ISampler sampler = samplerConfiguration.GetSampler("name",
                                                               new MetricsImpl(NoopMetricsFactory.Instance));

            Assert.True(sampler is ProbabilisticSampler);
        }
Esempio n. 6
0
        public TraceService(ILoggerFactory loggerFactory, IOptions <JaegerOptions> options)
        {
            this.loggerFactory = loggerFactory;
            var senderConfiguration = new Configuration.SenderConfiguration(loggerFactory).WithAgentHost(options.Value.Host);

            this.samplerConfiguration  = new Configuration.SamplerConfiguration(loggerFactory).WithType(ConstSampler.Type).WithParam(1);
            this.reporterConfiguration = new Configuration.ReporterConfiguration(loggerFactory).WithLogSpans(true).WithSender(senderConfiguration);
            this.tracers = new ConcurrentDictionary <string, ITracer>();
        }
Esempio n. 7
0
        public void TestUnknownSampler()
        {
            SamplerConfiguration samplerConfiguration = new SamplerConfiguration(_loggerFactory);

            samplerConfiguration.WithType("unknown");

            Assert.Throws <NotSupportedException>(() => new Configuration("name", _loggerFactory)
                                                  .WithSampler(samplerConfiguration)
                                                  .GetTracer());
        }
        /// <summary>
        /// Returns <see cref="Configuration"/> object from environmental variables.
        /// </summary>
        public static Configuration FromEnv(ILoggerFactory loggerFactory)
        {
            ILogger logger = loggerFactory.CreateLogger <Configuration>();

            return(new Configuration(GetProperty(JaegerServiceName), loggerFactory)
                   .WithTracerTags(TracerTagsFromEnv(logger))
                   .WithReporter(ReporterConfiguration.FromEnv(loggerFactory))
                   .WithSampler(SamplerConfiguration.FromEnv(loggerFactory))
                   .WithCodec(CodecConfiguration.FromEnv(loggerFactory)));
        }
        /// <summary>
        /// Returns <see cref="Configuration"/> object from a Configuration.
        /// </summary>
        public static Configuration FromIConfiguration(ILoggerFactory loggerFactory, IConfiguration configuration)
        {
            ILogger logger = loggerFactory.CreateLogger <Configuration>();

            return(new Configuration(GetProperty(JaegerServiceName, logger, configuration), loggerFactory)
                   .WithTracerTags(TracerTagsFromIConfiguration(logger, configuration))
                   .WithTraceId128Bit(GetPropertyAsBool(JaegerTraceId128Bit, logger, configuration).GetValueOrDefault(false))
                   .WithReporter(ReporterConfiguration.FromIConfiguration(loggerFactory, configuration))
                   .WithSampler(SamplerConfiguration.FromIConfiguration(loggerFactory, configuration))
                   .WithCodec(CodecConfiguration.FromIConfiguration(loggerFactory, configuration)));
        }
Esempio n. 10
0
        public static ITracer Init(string service)
        {
            var loggerFactory = NullLoggerFactory.Instance;
            var samplerConfig = SamplerConfiguration.FromEnv(loggerFactory)
                                .WithType(ConstSampler.Type)
                                .WithParam(1);
            var reporterConfig = ReporterConfiguration.FromEnv(loggerFactory);
            var config         = new Jaeger.Configuration(service, loggerFactory)
                                 .WithSampler(samplerConfig)
                                 .WithReporter(reporterConfig);

            return(config.GetTracer());
        }
Esempio n. 11
0
        public void TestDeprecatedSamplerManagerHostPort()
        {
            ILoggerFactory loggerFactory = Substitute.For <ILoggerFactory>();
            ILogger        logger        = Substitute.For <ILogger>();

            loggerFactory.CreateLogger <Configuration>().Returns(logger);

            SetProperty(Configuration.JaegerSamplerManagerHostPort, HttpSamplingManager.DefaultHostPort);
            SamplerConfiguration samplerConfiguration = SamplerConfiguration.FromEnv(loggerFactory);
            ISampler             sampler = samplerConfiguration.GetSampler("name",
                                                                           new MetricsImpl(NoopMetricsFactory.Instance));

            Assert.True(sampler is RemoteControlledSampler);
            loggerFactory.Received(1).CreateLogger <Configuration>();
            logger.Received(1).Log(LogLevel.Warning, Arg.Any <EventId>(), Arg.Any <object>(), null, Arg.Any <Func <object, Exception, string> >());
        }
        public void TestSamplerConstFromIConfiguration()
        {
            var arrayDict = new Dictionary <string, string>
            {
                { Configuration.JaegerSamplerType, ConstSampler.Type },
                { Configuration.JaegerSamplerParam, "1" }
            };

            var configuration = new ConfigurationBuilder()
                                .AddInMemoryCollection(arrayDict)
                                .Build();

            SamplerConfiguration samplerConfig = SamplerConfiguration.FromIConfiguration(_loggerFactory, configuration);

            Assert.Equal(ConstSampler.Type, samplerConfig.Type);
            Assert.Equal(1, samplerConfig.Param);
        }
        public Tracer.Builder GetTracerBuilder()
        {
            if (ReporterConfig == null)
            {
                ReporterConfig = new ReporterConfiguration(_loggerFactory);
            }
            if (SamplerConfig == null)
            {
                SamplerConfig = new SamplerConfiguration(_loggerFactory);
            }
            if (CodecConfig == null)
            {
                CodecConfig = new CodecConfiguration(_loggerFactory);
            }
            if (_metricsFactory == null)
            {
                _metricsFactory = NoopMetricsFactory.Instance;
            }
            IMetrics  metrics  = new MetricsImpl(_metricsFactory);
            IReporter reporter = ReporterConfig.GetReporter(metrics);
            ISampler  sampler  = SamplerConfig.GetSampler(ServiceName, metrics);

            Tracer.Builder builder = new Tracer.Builder(ServiceName)
                                     .WithLoggerFactory(_loggerFactory)
                                     .WithSampler(sampler)
                                     .WithReporter(reporter)
                                     .WithMetrics(metrics)
                                     .WithTags(_tracerTags);

            if (UseTraceId128Bit)
            {
                builder = builder.WithTraceId128Bit();
            }

            CodecConfig.Apply(builder);

            return(builder);
        }
 public Configuration WithSampler(SamplerConfiguration samplerConfig)
 {
     SamplerConfig = samplerConfig;
     return(this);
 }