Client Library Features


    The table below provides a feature matrix for the existing client libraries. Cells marked with ? indicate that it’s not known if the given client supports the given feature and additional research & documentation update is required.

    Data format and transport for reporting spans to Jaeger backend
    FeatureGoJavaNode.jsPythonC++C#
    Report jaeger.thrift over UDP
    Report jaeger.thrift over HTTP
    Report Zipkin Thrift over HTTP
    Inter-process propagation wire format (headers)
    FeatureGoJavaNode.jsPythonC++C#
    Uber’s original headers
    Zipkin’s B3 headers
    W3C Trace Context headerscomingcomingcomingcomingcomingcoming
    Support inbound jaeger-debug-id headerwhen there is no tracewhen there is no tracewhen there is no trace
    Accept baggage from jaeger-baggage headerswhen there is no trace
    Support for 128bit Trace ID
    Metrics
    FeatureGoJavaNode.jsPythonC++C#
    Support standard tracer metrics (number of spans started, finished, reported, etc.)
    Support standard RPC metrics
    Metrics in Prometheus format
    Tracer configuration
    FeatureGoJavaNode.jsPythonC++C#
    Support declarative tracer configuration
    Allow configuring tracer tags, aka process tags
    Allow remote configuration of samplers
    Remotely configurable adaptive sampler
    Remotely configurable baggage restrictionscomingcomingcomingcoming
    Tracer configuration via environment variables
    FeatureGoJavaNode.jsPythonC++C#
    JAEGERSERVICE_NAME defines service name that will be associated with the emitted spans.
    JAEGER_TAGS defines a comma-separated list of static tags, aka “tracer tags”, e.g. hostname=foobar,my.app.version=1.2.3. These tags are added as the Process tags to each span.
    JAEGER_DISABLED (_not recommended) when set to true, instructs the Configuration to return a no-op tracer. Neither trace/span IDs nor baggage will be propagated with a no-op tracer. Instead of disabling the tracer completely, use const sampler with 0 param, which will minimize the overhead but keep the propagation going.
    JAEGER_AGENT_HOST defines hostname for reporting spans over UDP/Thrift. To avoid packet loss, the agent is expected to run on the same machine as the application. This var is useful when there are multiple networking namespaces on the host.
    JAEGER_AGENT_PORT defines port for reporting spans over UDP/Thrift.
    JAEGER_ENDPOINT defines the URL for reporting spans via HTTP/Thrift. This setting allows for a deployment mode where spans are submitted directly to the collector.
    JAEGER_AUTH_TOKEN defines an optional auth token when reporting over HTTP.
    JAEGER_USER can be used for basic authentication when reporting over HTTP.
    JAEGER_PASSWORD can be used for basic authentication when using reporting over HTTP.
    JAEGER_REPORTER_LOG_SPANS instructs the Reporter to log finished span IDs. The reporter may need to be given a Logger for this option to take effect.
    JAEGER_REPORTER_MAX_QUEUE_SIZE defines the max size of the in-memory buffer used to keep spans before they are sent out.
    JAEGER_REPORTER_FLUSH_INTERVAL defines how frequently the report flushes span batches. Reporter can also flush the batch if the batch size reaches the maximum UDP packet size (~64Kb).
    JAEGER_SAMPLER_TYPE defines the type of sampler to use, e.g. probabilistic, or const (see Sampling).
    JAEGER_SAMPLER_PARAM provides configuration value to the sampler, e.g. probability=0.001 (see Sampling).
    JAEGER_SAMPLER_MANAGER_HOST_PORT defines the address of HTTP server that services client configuration, such as sampling strategies, baggage restrictions, throttling config, etc. The variable name is a legacy misnomer from the time when the server only provided the sampling strategies. At the moment only jaeger-agent implements this REST API.
    JAEGER_SAMPLER_REFRESH_INTERVAL defines how often the sampler polls the config server for updates to the samling strategies.
    JAEGER_SAMPLER_MAX_OPERATIONS instructs the adaptive sampler to limit how many distinct operation names the sampler will track, to avoid unbound memory usage.
    JAEGER_PROPAGATION defines the propagation format used by the tracer. Supported values are jaeger (defined here) and b3 (defined here).
    JAEGER_TRACEID_128BIT if true, instructs the tracer to generate 128bit trace IDs instead of the default 64bit. In the future 128bit will become the default.
    JAEGER_RPC_METRICS when true, enables additional generation of RPC metrics from the tracing instrumentation. This is an experimental feature in the Go client. See also https://github.com/opentracing-contrib/java-metrics.