Package brave.http

Class HttpTracing

    • Method Detail

      • create

        public static HttpTracing create​(brave.Tracing tracing)
      • tracing

        public brave.Tracing tracing()
      • serverName

        public String serverName()
        Used by http clients to indicate the name of the destination service.

        Defaults to "", which will not show in the zipkin UI or end up in the dependency graph.

        When present, a link from Tracing.Builder.localServiceName(String) to this name will increment for each traced client call.

        As this is endpoint-specific, it is typical to create a scoped instance of HttpTracing to assign this value.

        For example:

        
         github = TracingHttpClientBuilder.create(httpTracing.clientOf("github"));
         
        See Also:
        HttpClientHandler, Span.remoteServiceName(String)
      • clientOf

        public HttpTracing clientOf​(String serverName)
        Scopes this component for a client of the indicated server.
        See Also:
        serverName()
      • clientRequestSampler

        public brave.sampler.SamplerFunction<HttpRequest> clientRequestSampler()
        Returns an overriding sampling decision for a new trace. Defaults to ignore the request and use the trace ID instead.

        This decision happens when a trace was not yet started in process. For example, you may be making an http request as a part of booting your application. You may want to opt-out of tracing client requests that did not originate from a server request.

        Since:
        5.8
        See Also:
        SamplerFunctions
      • serverRequestSampler

        public brave.sampler.SamplerFunction<HttpRequest> serverRequestSampler()
        Returns an overriding sampling decision for a new trace. Defaults to ignore the request and use the trace ID instead.

        This decision happens when trace IDs were not in headers, or a sampling decision has not yet been made. For example, if a trace is already in progress, this function is not called. You can implement this to skip paths that you never want to trace.

        Since:
        5.8
        See Also:
        SamplerFunctions
      • propagation

        public brave.propagation.Propagation<String> propagation()
        Returns the propagation component used by HTTP instrumentation.

        Typically, this is the same as Tracing.propagation(). Overrides will apply to all HTTP instrumentation in use. For example, Servlet and also OkHttp. If only trying to change B3 related headers, use the more efficient B3Propagation.FactoryBuilder.injectFormat(Span.Kind, B3Propagation.Format) instead.

        Use caution when overriding

        If overriding this via HttpTracing.Builder.propagation(Propagation), take care to also delegate to Tracing.propagation(). Otherwise, you can break features something else may have set, such as BaggagePropagation.

        Library-specific formats

        HTTP instrumentation can localize propagation changes by calling toBuilder(), then HttpTracing.Builder.propagation(Propagation). This allows library-specific formats.

        For example, cloud SDKs often use HTTP (or REST) APIs for communication. These endpoints may hemselves be traceable, in a cloud-specific or otherwise different format than what general applications use. SDK instrumentation can override the propagation component to solely use their format, and drop any baggage.

        Since:
        5.13
        See Also:
        Tracing.propagation()
      • current

        @Nullable
        public static HttpTracing current()
        Returns the most recently created tracing component iff it hasn't been closed. null otherwise.

        This object should not be cached.

        Since:
        5.9
      • close

        public void close()
        Specified by:
        close in interface Closeable
        Since:
        5.9