Class JaegerTracerBuilder

java.lang.Object
io.helidon.tracing.jaeger.JaegerTracerBuilder
All Implemented Interfaces:
Builder<JaegerTracerBuilder,Tracer>, TracerBuilder<JaegerTracerBuilder>, Supplier<Tracer>

public class JaegerTracerBuilder extends Object implements TracerBuilder<JaegerTracerBuilder>
The JaegerTracerBuilder is a convenience builder for Tracer to use with Jaeger.

Unless You want to explicitly depend on Jaeger in Your code, please use TracerBuilder.create(String) or TracerBuilder.create(io.helidon.config.Config) that is abstracted.

The Jaeger tracer uses environment variables and system properties to override the defaults. Except for protocol and service these are honored, unless overridden in configuration or through the builder methods. See Jaeger documentation for details.

The following table lists jaeger specific defaults and configuration options.

Tracer Configuration Options
option default description
service   Required service name
protocol http The protocol to use. By default http is used. To switch to agent mode, use udp
host 127.0.0.1 for http, library default for udp Host to used - used by both UDP and HTTP endpoints
port 14268 for http, library default for udp Port to be used - used by both UDP and HTTP endpoints
path /api/traces Path to be used when using http
token   Authentication token to use
username   User to use to authenticate (basic authentication)
password   Password to use to authenticate (basic authentication)
propagation library default Propagation type to use, supports jaeger and b3
log-spans library default Whether reporter should log spans
max-queue-size library default Maximal queue size of the reporter
flush-interval-ms library default Reporter flush interval in milliseconds
sampler-type library default Sampler type (const, probabilistic, ratelimiting, or remote)
sampler-param library default Numeric parameter specifying details for the sampler type (see Jaeger docs)
sampler-manager library default host and port of the sampler manager
tags   see TracerBuilder
boolean-tags   see TracerBuilder
int-tags   see TracerBuilder
See Also:
  • Constructor Details

    • JaegerTracerBuilder

      protected JaegerTracerBuilder()
      Default constructor, does not modify any state.
  • Method Details

    • forService

      public static JaegerTracerBuilder forService(String serviceName)
      Get a Jaeger Tracer builder for processing tracing data of a service with a given name.
      Parameters:
      serviceName - name of the service that will be using the tracer.
      Returns:
      Tracer builder for Jaeger.
    • create

      public static JaegerTracerBuilder create(Config config)
      Create a new builder based on values in configuration. This requires at least a key "service" in the provided config.
      Parameters:
      config - configuration to load this builder from
      Returns:
      a new builder instance.
      See Also:
    • serviceName

      public JaegerTracerBuilder serviceName(String name)
      Description copied from interface: TracerBuilder
      Service name of the traced service.
      Specified by:
      serviceName in interface TracerBuilder<JaegerTracerBuilder>
      Parameters:
      name - name of the service using the tracer
      Returns:
      updated builder instance
    • collectorProtocol

      public JaegerTracerBuilder collectorProtocol(String protocol)
      Description copied from interface: TracerBuilder
      Protocol to use (such as http or https) to connect to tracing collector. Default is defined by each tracing integration.
      Specified by:
      collectorProtocol in interface TracerBuilder<JaegerTracerBuilder>
      Parameters:
      protocol - protocol to use
      Returns:
      updated builder instance
    • collectorHost

      public JaegerTracerBuilder collectorHost(String host)
      Description copied from interface: TracerBuilder
      Host to use to connect to tracing collector. Default is defined by each tracing integration.
      Specified by:
      collectorHost in interface TracerBuilder<JaegerTracerBuilder>
      Parameters:
      host - host to use
      Returns:
      updated builder instance
    • collectorPort

      public JaegerTracerBuilder collectorPort(int port)
      Description copied from interface: TracerBuilder
      Port to use to connect to tracing collector. Default is defined by each tracing integration.
      Specified by:
      collectorPort in interface TracerBuilder<JaegerTracerBuilder>
      Parameters:
      port - port to use
      Returns:
      updated builder instance
    • collectorPath

      public JaegerTracerBuilder collectorPath(String path)
      Override path to use.
      Specified by:
      collectorPath in interface TracerBuilder<JaegerTracerBuilder>
      Parameters:
      path - path to override the default
      Returns:
      updated builder instance
    • enabled

      public JaegerTracerBuilder enabled(boolean enabled)
      Description copied from interface: TracerBuilder
      When enabled, tracing will be sent. If enabled is false, tracing should use a no-op tracer.
      Specified by:
      enabled in interface TracerBuilder<JaegerTracerBuilder>
      Parameters:
      enabled - set to false to disable distributed tracing
      Returns:
      updated builder instance
    • addTracerTag

      public JaegerTracerBuilder addTracerTag(String key, String value)
      Description copied from interface: TracerBuilder
      Tracer level tags that get added to all reported spans.
      Specified by:
      addTracerTag in interface TracerBuilder<JaegerTracerBuilder>
      Parameters:
      key - name of the tag
      value - value of the tag
      Returns:
      updated builder instance
    • addTracerTag

      public JaegerTracerBuilder addTracerTag(String key, Number value)
      Description copied from interface: TracerBuilder
      Tracer level tags that get added to all reported spans.
      Specified by:
      addTracerTag in interface TracerBuilder<JaegerTracerBuilder>
      Parameters:
      key - name of the tag
      value - numeric value of the tag
      Returns:
      updated builder instance
    • addTracerTag

      public JaegerTracerBuilder addTracerTag(String key, boolean value)
      Description copied from interface: TracerBuilder
      Tracer level tags that get added to all reported spans.
      Specified by:
      addTracerTag in interface TracerBuilder<JaegerTracerBuilder>
      Parameters:
      key - name of the tag
      value - boolean value of the tag
      Returns:
      updated builder instance
    • registerGlobal

      public JaegerTracerBuilder registerGlobal(boolean global)
      Description copied from interface: TracerBuilder
      When enabled, the created instance is also registered as a global tracer.
      Specified by:
      registerGlobal in interface TracerBuilder<JaegerTracerBuilder>
      Parameters:
      global - whether to register this tracer as a global tracer once built
      Returns:
      updated builder instance
    • basicAuth

      public JaegerTracerBuilder basicAuth(String username, String password)
      Configure username and password for basic authentication.
      Parameters:
      username - username to use
      password - password to use
      Returns:
      updated builder instance
    • addPropagation

      public JaegerTracerBuilder addPropagation(io.jaegertracing.Configuration.Propagation propagation)
      Add propagation type to use.
      Parameters:
      propagation - propagation value
      Returns:
      updated builder instance
    • config

      public JaegerTracerBuilder config(Config config)
      Description copied from interface: TracerBuilder
      Load configuration of tracer from configuration of the application. The configuration keys are specific for each tracer integration and documented in these integration projects.
      Specified by:
      config in interface TracerBuilder<JaegerTracerBuilder>
      Parameters:
      config - configuration node of the tracer configuration
      Returns:
      updated builder instance
    • samplerManager

      public JaegerTracerBuilder samplerManager(String samplerManagerHostPort)
      The host name and port when using the remote controlled sampler.
      Parameters:
      samplerManagerHostPort - host and port of the sampler manager
      Returns:
      updated builder instance
    • samplerParam

      public JaegerTracerBuilder samplerParam(Number samplerParam)
      The sampler parameter (number).
      Parameters:
      samplerParam - parameter of the sampler
      Returns:
      updated builder instance
    • samplerType

      public JaegerTracerBuilder samplerType(JaegerTracerBuilder.SamplerType samplerType)
      Sampler type.

      See Sampler types.

      Parameters:
      samplerType - type of the sampler
      Returns:
      updated builder instance
    • flushInterval

      public JaegerTracerBuilder flushInterval(long value, TimeUnit timeUnit)
      The reporter's flush interval.
      Parameters:
      value - amount in the unit specified
      timeUnit - the time unit
      Returns:
      updated builder instance
    • maxQueueSize

      public JaegerTracerBuilder maxQueueSize(int maxQueueSize)
      The reporter's maximum queue size.
      Parameters:
      maxQueueSize - maximal size of the queue
      Returns:
      updated builder instance
    • logSpans

      public JaegerTracerBuilder logSpans(boolean logSpans)
      Whether the reporter should also log the spans.
      Parameters:
      logSpans - whether to log spans
      Returns:
      updated builder instance
    • token

      public JaegerTracerBuilder token(String token)
      Authentication token sent as a "Bearer" to the endpoint.
      Parameters:
      token - token to authenticate
      Returns:
      updated builder instance
    • build

      public Tracer build()
      Builds the Tracer for Jaeger based on the configured parameters.
      Specified by:
      build in interface Builder<JaegerTracerBuilder,Tracer>
      Specified by:
      build in interface TracerBuilder<JaegerTracerBuilder>
      Returns:
      the tracer