Client Library Features

Version  1.18 Latest

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, Compact protocol, over UDP
Report jaeger.thrift, Binary protocol, over UDP
Report jaeger.thrift, Binary protocol, over TCP (HTTP)
Report Zipkin Thrift, Binary protocol, over TCP (HTTP)
Inter-process propagation wire format (headers)
FeatureGoJavaNode.jsPythonC++C#
Uber’s original headers
Zipkin’s B3 headers
W3C Trace Context headerscomingcomingcomingcomingcoming
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#
JAEGER_SERVICE_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), b3 (defined here) and w3c (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.