Ukraine flag We stand with our friends and colleagues in Ukraine. To support Ukraine in their time of need visit this page.

Client Library Features


Jaeger clients have been retired. Please refer to this notice .

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.thriftexternal link , Compactexternal link protocol, over UDP
Report jaeger.thriftexternal link , Binaryexternal link protocol, over UDP
Report jaeger.thriftexternal link , Binaryexternal link 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 headersexternal link
W3C Trace Context headersexternal linkcomingcomingcomingcomingcoming
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 Prometheusexternal link format
Tracer configuration
FeatureGoJavaNode.jsPythonC++C#
Support declarative tracer configuration
Allow configuring tracer tags, aka process tags
Allow remote configuration of samplers
Remotely configurable per-endpoint 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 sampling 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 hereexternal link ) and w3c (defined hereexternal link )
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-metricsexternal link .