public override void OnStartActivity(Activity activity, object payload) { const string EventNameSuffix = ".OnStartActivity"; var context = this.startContextFetcher.Fetch(payload) as HttpContext; if (context == null) { CollectorEventSource.Log.NullPayload(nameof(HttpInListener) + EventNameSuffix); return; } var request = context.Request; // see the spec https://github.com/open-telemetry/OpenTelemetry-specs/blob/master/trace/HTTP.md var path = (request.PathBase.HasValue || request.Path.HasValue) ? (request.PathBase + request.Path).ToString() : "/"; ISpan span = null; if (this.hostingSupportsW3C) { span = this.Tracer.StartSpanFromActivity(path, Activity.Current, SpanKind.Server); } else { var ctx = this.Tracer.TextFormat.Extract <HttpRequest>( request, (r, name) => r.Headers[name]); span = this.Tracer.StartSpan(path, ctx, SpanKind.Server); } this.Tracer.WithSpan(span); if (span.IsRecordingEvents) { // Note, route is missing at this stage. It will be available later span.PutHttpHostAttribute(request.Host.Host, request.Host.Port ?? 80); span.PutHttpMethodAttribute(request.Method); span.PutHttpPathAttribute(path); var userAgent = request.Headers["User-Agent"].FirstOrDefault(); span.PutHttpUserAgentAttribute(userAgent); span.PutHttpRawUrlAttribute(GetUri(request)); } }
public override void OnStartActivity(Activity activity, object payload) { var context = this.startContextFetcher.Fetch(payload) as HttpContext; if (context == null) { // Debug.WriteLine("context is null"); return; } var request = context.Request; var ctx = this.propagationComponent.TextFormat.Extract <HttpRequest>( request, (r, name) => r.Headers[name]); // see the spec https://github.com/census-instrumentation/opencensus-specs/blob/master/trace/HTTP.md string path = (request.PathBase.HasValue || request.Path.HasValue) ? (request.PathBase + request.Path).ToString() : "/"; ISpan span = null; this.Tracer.SpanBuilderWithRemoteParent(path, ctx).SetSampler(this.Sampler).StartScopedSpan(out span); if (span == null) { // Debug.WriteLine("span is null"); return; } // Note, route is missing at this stage. It will be available later span.PutServerSpanKindAttribute(); span.PutHttpHostAttribute(request.Host.Host, request.Host.Port ?? 80); span.PutHttpMethodAttribute(request.Method); span.PutHttpPathAttribute(path); var userAgent = request.Headers["User-Agent"].FirstOrDefault(); span.PutHttpUserAgentAttribute(userAgent); span.PutHttpRawUrlAttribute(GetUri(request)); }
public override void OnStartActivity(Activity activity, object payload) { var context = this.startContextFetcher.Fetch(payload) as HttpContext; if (context == null) { // Debug.WriteLine("context is null"); return; } var request = context.Request; var ctx = this.Tracer.TextFormat.Extract <HttpRequest>( request, (r, name) => r.Headers[name]); // see the spec https://github.com/open-telemetry/OpenTelemetry-specs/blob/master/trace/HTTP.md var path = (request.PathBase.HasValue || request.Path.HasValue) ? (request.PathBase + request.Path).ToString() : "/"; ISpan span = this.Tracer.SpanBuilder(path) .SetSpanKind(SpanKind.Server) .SetParent(ctx) .SetSampler(this.SamplerFactory(request)) .StartSpan(); this.Tracer.WithSpan(span); // Note, route is missing at this stage. It will be available later span.PutHttpHostAttribute(request.Host.Host, request.Host.Port ?? 80); span.PutHttpMethodAttribute(request.Method); span.PutHttpPathAttribute(path); var userAgent = request.Headers["User-Agent"].FirstOrDefault(); span.PutHttpUserAgentAttribute(userAgent); span.PutHttpRawUrlAttribute(GetUri(request)); }