Пример #1
0
        // This method gets called by the runtime. Use this method to add services to the container.
        // For more information on how to configure your application, visit https://go.microsoft.com/fwlink/?LinkID=398940
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddHttpClient();
            services.AddOpenTracing();
            services.AddSingleton <ITracer>(sp =>
            {
                var loggerFactory = sp.GetRequiredService <ILoggerFactory>();

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

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

                var tracer = (Tracer) new Configuration("NSA-API", loggerFactory)
                             .WithSampler(samplerConfiguration)
                             .WithReporter(reporterConfiguration)
                             .GetTracer();

                GlobalTracer.Register(tracer);

                return(tracer);
            });
        }
Пример #2
0
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);

            services.AddSingleton <ITracer>(sp =>
            {
                var loggerFactory  = sp.GetRequiredService <ILoggerFactory>();
                string serviceName = sp.GetRequiredService <IHostingEnvironment>().ApplicationName;

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

                var senderConfiguration = new Configuration.SenderConfiguration(loggerFactory)
                                          .WithAgentHost("localhost")
                                          .WithAgentPort(6831);

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

                var tracer = (Tracer) new Configuration(serviceName, loggerFactory)
                             .WithSampler(samplerConfiguration)
                             .WithReporter(reporterConfiguration)
                             .GetTracer();


                //GlobalTracer.Register(tracer);

                return(tracer);
            });
            services.AddOpenTracing();
        }
Пример #3
0
        public void TestNoNullPointerOnNullSender()
        {
            var reporterConfiguration = new Configuration.ReporterConfiguration(_loggerFactory);

            Assert.Null(reporterConfiguration.SenderConfig.AgentHost);
            Assert.Null(reporterConfiguration.SenderConfig.AgentPort);
        }
Пример #4
0
 public static Tracer InitTracer(string serviceName, ILoggerFactory loggerFactory)
 {
     Configuration.SamplerConfiguration samplerConfiguration = new Configuration.SamplerConfiguration(loggerFactory)
                                                               .WithType(ConstSampler.Type)
                                                               .WithParam(1);
     Configuration.ReporterConfiguration reporterConfiguration = new Configuration.ReporterConfiguration(loggerFactory)
                                                                 .WithLogSpans(true);
     return((Tracer) new Configuration(serviceName, loggerFactory)
            .WithSampler(samplerConfiguration)
            .WithReporter(reporterConfiguration)
            .GetTracer());
 }
Пример #5
0
        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddControllersWithViews();

            // Use "OpenTracing.Contrib.NetCore" to automatically generate spans for ASP.NET Core, Entity Framework Core, ...
            // See https://github.com/opentracing-contrib/csharp-netcore for details.
            services.AddOpenTracing();

            // Adds the Jaeger Tracer.
            services.AddSingleton <ITracer>(serviceProvider =>
            {
                // string serviceName = serviceProvider.GetRequiredService<IWebHostEnvironment>().ApplicationName;

                // This will log to a default localhost installation of Jaeger.
                //var tracer = new Tracer.Builder(serviceName)
                //    .WithSampler(new ConstSampler(true))
                //    .Build();

                // var loggerFactory = new LoggerFactory(); // get Microsoft.Extensions.Logging ILoggerFactory
                // var serviceName = "testService";

                //Jaeger.Configuration.SenderConfiguration.DefaultSenderResolver = new SenderResolver(loggerFactory)
                //    .RegisterSenderFactory<ThriftSenderFactory>();
                ////Configuration config = new Configuration(serviceName, loggerFactory)
                ////    // .WithSampler(...)   // optional, defaults to RemoteControlledSampler with HttpSamplingManager on localhost:5778
                ////    .WithReporter(Jaeger.Configuration.ReporterConfiguration.FromEnv(loggerFactory)); // optional, defaults to RemoteReporter with UdpSender on localhost:6831 when ThriftSenderFactory is registered
                //Configuration config = Jaeger.Configuration.FromEnv(loggerFactory);

                //ITracer tracer = config.GetTracer().wi;

                //// Allows code that can't use DI to also access the tracer.
                //GlobalTracer.Register(tracer);

                var senderResolver = new SenderResolver(loggerFactory).RegisterSenderFactory <ThriftSenderFactory>();

                var senderConfiguration = new Configuration.SenderConfiguration(loggerFactory)
                                          .WithSenderResolver(senderResolver).WithEndpoint("http://192.168.1.34:14268/api/traces"); // optional, defaults to Configuration.SenderConfiguration.DefaultSenderResolver


                var reporterConfiguration = new Configuration.ReporterConfiguration(loggerFactory)
                                            .WithSender(senderConfiguration) // optional, defaults to UdpSender at localhost:6831 when ThriftSenderFactory is registered
                                            .WithLogSpans(true);             // optional, defaults to no LoggingReporter

                var tracer = new Configuration("campaignUI", loggerFactory)
                             .WithReporter(reporterConfiguration) // optional, defaults to RemoteReporter with UdpSender at localhost:6831 when ThriftSenderFactory is registered
                             .GetTracer();

                return(tracer);
            });
        }
 public void TestReporterConfigurationFromEnv()
 {
     SetProperty(Configuration.JaegerReporterLogSpans, "true");
     SetProperty(Configuration.JaegerAgentHost, "MyHost");
     SetProperty(Configuration.JaegerAgentPort, "1234");
     SetProperty(Configuration.JaegerReporterFlushInterval, "500");
     SetProperty(Configuration.JaegerReporterMaxQueueSize, "1000");
     Configuration.ReporterConfiguration reporterConfig = Configuration.ReporterConfiguration.FromEnv(_loggerFactory);
     Assert.True(reporterConfig.LogSpans);
     Assert.Equal("MyHost", reporterConfig.SenderConfig.AgentHost);
     Assert.Equal(1234, reporterConfig.SenderConfig.AgentPort);
     Assert.Equal(TimeSpan.FromMilliseconds(500), reporterConfig.FlushInterval);
     Assert.Equal(1000, reporterConfig.MaxQueueSize);
 }
        private static ITracer GetTracer(string serviceName, ILoggerFactory loggerFactory, string collectorAddress)
        {
            Configuration.SamplerConfiguration samplerConfiguration = new Configuration.SamplerConfiguration(loggerFactory)
                                                                      .WithParam(1)
                                                                      .WithType("const");
            Configuration.SenderConfiguration senderConfig = new Configuration.SenderConfiguration(loggerFactory)
                                                             .WithEndpoint(collectorAddress);
            Configuration.ReporterConfiguration reporterConfiguration = new Configuration.ReporterConfiguration(loggerFactory)
                                                                        .WithSender(senderConfig);
            Configuration configuration = new Configuration(serviceName, loggerFactory)
                                          .WithReporter(reporterConfiguration)
                                          .WithSampler(samplerConfiguration);
            var tracer = configuration.GetTracerBuilder().WithTraceId128Bit().WithLoggerFactory(loggerFactory).Build();

            return(tracer);
        }
        public static Tracer InitOther(string serviceName, ILoggerFactory loggerFactory)
        {
            var samplerConfiguration = new Configuration.SamplerConfiguration(loggerFactory)
                                       .WithType(ConstSampler.Type)
                                       .WithParam(1);

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

            ITracer tracer = new Configuration(serviceName, loggerFactory)
                             .WithSampler(samplerConfiguration)
                             .WithReporter(reporterConfiguration)
                             .GetTracer();

            return(tracer as Tracer);
        }
Пример #9
0
        public static Tracer Init(string serviceName, ILoggerFactory loggerFactory)
        {
            var samplerConfig = new Configuration.SamplerConfiguration(loggerFactory)
                                .WithType(ConstSampler.Type)
                                .WithParam(1);

            var senderConfig = new Configuration.SenderConfiguration(loggerFactory)
                               .WithEndpoint("http://localhost:14268/api/traces");

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

            return((Tracer) new Configuration(serviceName, loggerFactory)
                   .WithSampler(samplerConfig)
                   .WithReporter(reporterConfig)
                   .GetTracer());
        }
Пример #10
0
        private static Tracer InitTracer(string serviceName, ILoggerFactory loggerFactory)
        {
            Configuration.SenderConfiguration sender = new Configuration.SenderConfiguration(loggerFactory)
                                                       .WithAgentHost("127.0.0.1")
                                                       .WithAgentPort(6831);

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

            Configuration.ReporterConfiguration reporterConfiguration = new Configuration.ReporterConfiguration(loggerFactory)
                                                                        .WithSender(sender)
                                                                        .WithLogSpans(true);

            return((Tracer) new Configuration(serviceName, loggerFactory)
                   .WithSampler(samplerConfiguration)
                   .WithReporter(reporterConfiguration)
                   .GetTracer());
        }
Пример #11
0
        public static Tracer Init(string serviceName, ILoggerFactory loggerFactory)
        {
            var samplerConfiguration = new Configuration.SamplerConfiguration(loggerFactory)
                                       .WithType(ConstSampler.Type)
                                       .WithParam(1);

            var senderConfiguration = new Configuration.SenderConfiguration(loggerFactory)
                                      .WithAgentHost("srvdocker2-t")
                                      .WithAgentPort(46831);

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

            return((Tracer) new Configuration(serviceName, loggerFactory)
                   .WithSampler(samplerConfiguration)
                   .WithReporter(reporterConfiguration)
                   .GetTracer());
        }
        public static ITracer Create(string serviceName, ILoggerFactory loggerFactory)
        {
            Configuration.SenderConfiguration.DefaultSenderResolver = new SenderResolver(loggerFactory)
                                                                      .RegisterSenderFactory <ThriftSenderFactory>();

#if CONFIG_DRIVEN
            try{
                if (System.String.IsNullOrEmpty(System.Environment.GetEnvironmentVariable("JAEGER_SERVICE_NAME")))
                {
                    System.Environment.SetEnvironmentVariable("JAEGER_SERVICE_NAME", serviceName);
                }
                return((ITracer)Configuration.FromEnv(loggerFactory).GetTracer());
            }
            catch (System.Exception err)
            {
                System.Console.WriteLine(err.ToString());
                return(OpenTracing.Noop.NoopTracerFactory.Create());
            }
#else
            var samplerConfiguration = new Configuration.SamplerConfiguration(loggerFactory)
                                       .WithType(ConstSampler.Type)
                                       .WithParam(1);

            var senderConfiguration = new Configuration.SenderConfiguration(loggerFactory);



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

            return((Tracer) new Configuration(serviceName, loggerFactory)
                   .WithSampler(samplerConfiguration)
                   .WithReporter(reporterConfiguration)
                   .GetTracer());
#endif
        }
        public static Tracer Init(string serviceName, ILoggerFactory loggerFactory)
        {
            // 샘플링 환경 설정하기
            var samplerConfiguration = new Configuration.SamplerConfiguration(loggerFactory)
                                       .WithType(ConstSampler.Type)
                                       .WithParam(1);


            // Tracer 서버 환경 설정하기
            // - m1 가상머신 IP: 192.168.99.201
            // - Port: 6831

            // https://www.jaegertracing.io/docs/1.16/getting-started/
            // Jaeger 서버 IP을 지정한다.
            // 6831	포트
            //  - Protocal: UDP
            //  - Component: Agent
            //  - Function: Accept "jaeger.thrift" over compact thrift protocol
            var reporterConfiguration = new Configuration.ReporterConfiguration(loggerFactory)
                                        .WithSender(new Configuration.SenderConfiguration(loggerFactory)

                                                    //// https://blog.magnusmontin.net/2018/11/05/platform-conditional-compilation-in-net-core/
                                                    //#if Windows
                                                    //                    .WithAgentHost("192.168.99.201")
                                                    //#elif Linux
                                                    //                     .WithAgentHost("localhost")
                                                    //#endif
                                                    .WithAgentHost("192.168.99.201")
                                                    .WithAgentPort(6831))
                                        .WithLogSpans(true);

            // Tracer 만들기
            return((Tracer) new Configuration(serviceName, loggerFactory)
                   .WithSampler(samplerConfiguration)
                   .WithReporter(reporterConfiguration)
                   .GetTracer());
        }
        public static Tracer Init(string serviceName, ILoggerFactory loggerFactory)
        {
            var senderConfiguration = new Configuration.SenderConfiguration(loggerFactory)
                                      .WithAgentHost("jaeger").WithAgentPort(6831);

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

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

            //var config = Configuration.FromEnv(loggerFactory);
            //config.WithSampler(samplerConfiguration);
            //config.WithReporter(reporterConfiguration);

            //return (Tracer)config.GetTracer();

            return((Tracer) new Configuration(serviceName, loggerFactory)
                   .WithSampler(samplerConfiguration)
                   .WithReporter(reporterConfiguration)
                   .GetTracer());
        }
        public static Tracer Init(string serviceName, ILoggerFactory loggerFactory)
        {
            var samplerConfiguration = new Configuration.SamplerConfiguration(loggerFactory)
                                       .WithType(ConstSampler.Type)
                                       .WithParam(1);

            // https://www.jaegertracing.io/docs/1.16/getting-started/
            // Jaeger 서버 IP을 지정한다.
            // 6831	포트
            //  - Protocal: UDP
            //  - Component: Agent
            //  - Function: Accept "jaeger.thrift" over compact thrift protocol
            var reporterConfiguration = new Configuration.ReporterConfiguration(loggerFactory)
                                        .WithSender(new Configuration.SenderConfiguration(loggerFactory)
                                                    //.WithAgentHost("192.168.99.201")
                                                    .WithAgentHost("localhost")
                                                    .WithAgentPort(6831))
                                        .WithLogSpans(true);

            return((Tracer) new Configuration(serviceName, loggerFactory)
                   .WithSampler(samplerConfiguration)
                   .WithReporter(reporterConfiguration)
                   .GetTracer());
        }
        public void TestReporterConfigurationFromIConfiguration()
        {
            var arrayDict = new Dictionary <string, string>
            {
                { Configuration.JaegerSamplerType, ConstSampler.Type },
                { Configuration.JaegerSamplerParam, "1" },
                { Configuration.JaegerReporterLogSpans, "true" },
                { Configuration.JaegerAgentHost, "MyHost" },
                { Configuration.JaegerAgentPort, "1234" },
                { Configuration.JaegerReporterFlushInterval, "500" },
                { Configuration.JaegerReporterMaxQueueSize, "1000" }
            };

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

            Configuration.ReporterConfiguration reporterConfig = Configuration.ReporterConfiguration.FromIConfiguration(_loggerFactory, configuration);
            Assert.True(reporterConfig.LogSpans);
            Assert.Equal("MyHost", reporterConfig.SenderConfig.AgentHost);
            Assert.Equal(1234, reporterConfig.SenderConfig.AgentPort);
            Assert.Equal(TimeSpan.FromMilliseconds(500), reporterConfig.FlushInterval);
            Assert.Equal(1000, reporterConfig.MaxQueueSize);
        }
Пример #17
0
        private static Configuration GetTracerConfig(JaegerOptions options, ILoggerFactory loggerFactory)
        {
            // Sender
            var senderConfig = new Configuration.SenderConfiguration(loggerFactory);

            senderConfig.WithAgentHost(options.AgentHost)
            .WithAgentPort(options.AgentPort)
            .WithEndpoint(options.Endpoint);

            if (!string.IsNullOrEmpty(options.User))
            {
                senderConfig.WithAuthUsername(options.User)
                .WithAuthPassword(options.Password);
            }
            if (!string.IsNullOrEmpty(options.AuthToken))
            {
                senderConfig.WithAuthToken(options.AuthToken);
            }

            // Sampler
            var samplerConfig = new Configuration.SamplerConfiguration(loggerFactory)
                                .WithSamplingEndpoint(options.SamplingEndpoint)
                                .WithType(ConstSampler.Type);

            // Reporter
            var reporterConfig = new Configuration.ReporterConfiguration(loggerFactory);

            reporterConfig.WithSender(senderConfig);

            // Configuration
            var tracerConfig = new Configuration(options.ServiceName, loggerFactory)
                               .WithSampler(samplerConfig)
                               .WithReporter(reporterConfig);

            return(tracerConfig);
        }
Пример #18
0
        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);
        }
 public void TestReporterConfigurationInvalidLogSpans()
 {
     SetProperty(Configuration.JaegerReporterLogSpans, "X");
     Configuration.ReporterConfiguration reporterConfig = Configuration.ReporterConfiguration.FromEnv(_loggerFactory);
     Assert.False(reporterConfig.LogSpans);
 }
 public void TestReporterConfigurationInvalidFlushInterval()
 {
     SetProperty(Configuration.JaegerReporterFlushInterval, "X");
     Configuration.ReporterConfiguration reporterConfig = Configuration.ReporterConfiguration.FromEnv(_loggerFactory);
     Assert.Null(reporterConfig.FlushInterval);
 }