public JsonReporter(ZipkinTracerOptions zipkinOptions, JsonReporterOptions options) : base(options) { if (string.IsNullOrWhiteSpace(zipkinOptions.ZipkinUri)) { throw new ArgumentNullException($"{nameof(zipkinOptions)}.{nameof(ZipkinTracerOptions.ZipkinUri)}"); } _httpClient = new HttpClient(); _zipkinUri = new Uri(zipkinOptions.ZipkinUri.TrimEnd('/') + "/api/v1/spans"); }
public static IServiceCollection AddZipkinTracer(this IServiceCollection services, Action <ZipkinTracerOptions> options) { if (options == null) { throw new ArgumentNullException(nameof(options)); } var zipkinOptions = new ZipkinTracerOptions(); options(zipkinOptions); return(AddZipkinTracer(services, zipkinOptions)); }
private Endpoint CreateEndpoint(IEndpointResolver endpointResolver, ZipkinTracerOptions options) { // get defaults var defaultEndpoint = endpointResolver.GetEndpoint(); // overwrite with values from user-supplied options return(new Endpoint { ServiceName = options.ServiceName ?? defaultEndpoint?.ServiceName ?? "Unknown", IPAddress = options.ServiceIpAddress ?? defaultEndpoint?.IPAddress ?? IPAddress.Loopback, Port = options.ServicePort != 0 ? options.ServicePort : defaultEndpoint?.Port ?? 0 }); }
public void ShouldOverridePropagatorViaZipkinTracerOptions() { var tracerOptions = new ZipkinTracerOptions(Endpoint.Testing, new NoOpReporter()) { Propagator = new B3SingleHeaderPropagator() }; var tracer = new ZipkinTracer(tracerOptions); var traceId = Tracer.IdProvider.NextTraceId(); var context = new SpanContext(traceId, Tracer.IdProvider.NextSpanId(), Tracer.IdProvider.NextSpanId(), false, true); var carrier = new Dictionary <string, string>(); tracer.Inject(context, BuiltinFormats.HttpHeaders, new TextMapInjectAdapter(carrier)); carrier.Count.Should().Be(1); }
public ZipkinTracer(ZipkinTracerOptions options, IEndpointResolver endpointResolver) : base(options) { if (options == null) { throw new ArgumentNullException(nameof(options)); } if (endpointResolver == null) { throw new ArgumentNullException(nameof(endpointResolver)); } _options = options; // TODO default reporter & sampler ? _reporter = options.Reporter ?? new JsonReporter(options, new JsonReporterOptions()); Sampler = options.Sampler ?? new ConstSampler(true); Endpoint = CreateEndpoint(endpointResolver, options); }
public static IServiceCollection AddZipkinTracer(this IServiceCollection services, ZipkinTracerOptions options) { if (services == null) { throw new ArgumentNullException(nameof(services)); } if (options == null) { throw new ArgumentNullException(nameof(options)); } services.AddSingleton(options); services.AddSingleton <ITracer, ZipkinTracer>(); services.AddSingleton <IEndpointResolver, DefaultEndpointResolver>(); return(services); }