// 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); }); }
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(); }
public void TestNoNullPointerOnNullSender() { var reporterConfiguration = new Configuration.ReporterConfiguration(_loggerFactory); Assert.Null(reporterConfiguration.SenderConfig.AgentHost); Assert.Null(reporterConfiguration.SenderConfig.AgentPort); }
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()); }
// 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); }
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()); }
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()); }
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); }
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); }
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); }