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
Feature Go Java Node.js Python C++ C#
Report jaeger.thrift over UDP
Report jaeger.thrift over HTTP
Report Zipkin Thrift over HTTP
Inter-process propagation wire format (headers)
Feature Go Java Node.js Python C++ C#
Uber’s original headers
Zipkin’s B3 headers
W3C Trace Context headers coming coming coming coming coming coming
Support inbound jaeger-debug-id header when there is no trace when there is no trace when there is no trace
Accept baggage from jaeger-baggage headers when there is no trace
Support for 128bit Trace ID
Metrics
Feature Go Java Node.js Python C++ C#
Support standard tracer metrics (number of spans started, finished, reported, etc.)
Support standard RPC metrics
Metrics in Prometheus format
Tracer configuration
Feature Go Java Node.js Python C++ C#
Support declarative tracer configuration
Allow configuring tracer tags, aka process tags
Allow remote configuration of samplers
Remotely configurable adaptive sampler
Remotely configurable baggage restrictions coming coming coming coming
Tracer configuration via environment variables
Feature Go Java Node.js Python C++ 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) 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.