/** Returns the span name of the request. Defaults to the http method. */ protected <Req> String spanName(HttpAdapter<Req, ?> adapter, Req req) { return adapter.method(req); }
@Override public <Req> void request(HttpAdapter<Req, ?> adapter, Req req, SpanCustomizer customizer) { super.request(adapter, req, customizer); String url = adapter.url(req); URI uri = URI.create(url); addRequestTags(customizer, url, uri.getHost(), uri.getPath(), adapter.method(req)); this.traceKeys.getHttp().getHeaders().forEach(((s) -> { String headerValue = adapter.requestHeader(req, s); if (headerValue != null) { customizer.tag(key(s), headerValue); } })); }
@Override public <Req> void request(HttpAdapter<Req, ?> adapter, Req req, SpanCustomizer customizer) { customizer.name(adapter.method(req).toLowerCase() + " " + adapter.path(req)); customizer.tag("http.url", adapter.url(req)); // just the path is logged by default customizer.tag("context.visible", String.valueOf(currentTraceContext.get() != null)); customizer.tag("request_customizer.is_span", (customizer instanceof brave.Span) + ""); }
@Override public <Req> Boolean trySample(HttpAdapter<Req, ?> adapter, Req request) { String method = adapter.method(request); String path = adapter.path(request); if (method == null || path == null) return null; // use default if we couldn't parse return sampler.sample(new MethodAndPath(method, path)).sampled(); }
/** * Override to change what data from the http request are parsed into the span representing it. By * default, this sets the span name to the http method and tags "http.method" and "http.path". * * <p>If you only want to change the span name, you can override {@link #spanName(HttpAdapter, * Object)} instead. * * @see #spanName(HttpAdapter, Object) */ // Eventhough the default span name is the method, we have no way of knowing that a user hasn't // overwritten the name to something else. If that occurs during response parsing, it is too late // to go back and get the http method. Adding http method by default ensures span naming doesn't // prevent basic HTTP info from being visible. A cost of this is another tag, but it is small with // very limited cardinality. Moreover, users who care strictly about size can override this. public <Req> void request(HttpAdapter<Req, ?> adapter, Req req, SpanCustomizer customizer) { customizer.name(spanName(adapter, req)); String method = adapter.method(req); if (method != null) customizer.tag("http.method", method); String path = adapter.path(req); if (path != null) customizer.tag("http.path", path); }
@Override public <Req> Boolean trySample(HttpAdapter<Req, ?> adapter, Req request) { return "GET".equals(adapter.method(request)) && adapter.path(request).startsWith("/api"); } })
@Override protected <Req> String spanName(HttpAdapter<Req, ?> adapter, Req request) { return buildSpanDescription(adapter.url(request), adapter.method(request)); }
@Override protected <Req> String spanName(HttpAdapter<Req, ?> adapter, Req request) { return buildSpanDescription(adapter.path(request), adapter.method(request)); }
@Override protected <Req> String spanName(HttpAdapter<Req, ?> adapter, Req request) { return buildSpanDescription(adapter.path(request), adapter.method(request)); }
@Override protected <Req> String spanName(HttpAdapter<Req, ?> adapter, Req request) { return buildSpanDescription(adapter.url(request), adapter.method(request)); }
@Override public <Req> void request(HttpAdapter<Req, ?> adapter, Req req, SpanCustomizer customizer) { super.request(adapter, req, customizer); String url = adapter.url(req); URI uri = URI.create(url); customizer.tag("http.url", url); if (uri.getHost() != null) { customizer.tag("http.host", uri.getHost()); } customizer.tag("http.path", uri.getPath()); customizer.tag("http.method", adapter.method(req)); }
@Override public <Req> void request(HttpAdapter<Req, ?> adapter, Req req, SpanCustomizer customizer) { customizer.name(adapter.method(req).toLowerCase() + " " + adapter.path(req)); customizer.tag("http.url", adapter.url(req)); // just the path is logged by default customizer.tag("context.visible", String.valueOf(currentTraceContext.get() != null)); customizer.tag("request_customizer.is_span", (customizer instanceof brave.Span) + ""); }
@Override public <Req> void request(HttpAdapter<Req, ?> adapter, Req req, SpanCustomizer customizer) { super.request(adapter, req, customizer); String url = adapter.url(req); URI uri = URI.create(url); addRequestTags(customizer, url, uri.getHost(), uri.getPath(), adapter.method(req)); this.traceKeys.getHttp().getHeaders().forEach(((s) -> { String headerValue = adapter.requestHeader(req, s); if (headerValue != null) { customizer.tag(key(s), headerValue); } })); }