Configure Jaeger
editConfigure Jaeger
editThis feature is experimental and may be changed in a future release. It is not yet available on Elastic Cloud. For feature status on Elastic Cloud, see #212.
Elastic APM integrates with Jaeger, an open-source, distributed tracing system. This integration allows users with an existing Jaeger setup to switch from the default Jaeger backend, to ingesting data with Elastic’s APM Server, storing data in Elasticsearch, and visualizing traces in the APM app. Best of all, this can be done without any instrumentation changes in your application code.
Ready to get started? See the How to integrate with Jaeger guide.
Supported architecture
editJaeger architecture supports different data formats and transport protocols that define how data can be sent to a collector. Elastic APM, as a Jaeger Collector, supports:
-
Communication with Jaeger Agents via gRPC
The gRPC endpoint supports TLS. If the Jaeger gRPC collector service is enabled, and
apm-server.ssl
is configured, SSL settings will automatically be applied to APM Server’s Jaeger gRPC endpoint.The gRPC endpoint supports probabilistic sampling. APM Server automatically enables the sampling endpoint when
grpc.enabled
is set totrue
. Sampling decisions can be configured centrally, with APM Agent configuration, or locally, in each Jaeger client. -
Communication with Jaeger Clients via thrift over HTTP
The Client HTTP endpoint does not support TLS or sampling.
See the Jaeger docs for more information on Jaeger architecture.
Caveats
editThere are some limitations and differences between Elastic APM and Jaeger that you should be aware of.
Jaeger integration limitations:
- Because Jaeger has its own trace context header, and does not currently support W3C trace context headers, it is not possible to mix and match the use of Elastic’s APM Agents and Jaeger’s Clients.
-
Elastic APM only supports probabilistic sampling. Because of differences in the Jaeger and Elastic data structures,
sampling at a value below
1.0
(100%), will cause inaccuracies in the APM app. See Configure Sampling for more information. - We currently only support exception logging. Span logs are not supported.
Differences between APM Agents and Jaeger Clients:
- Jaeger Clients only sends trace data. APM Agents support a larger number of features, like multiple types of metrics, and application breakdown charts. When using Jaeger, features like this will not be available in the APM app.
-
Elastic APM’s data model is different than Jaegers. For Jaeger trace data to work with Elastic’s data model, we rely on spans being tagged with the appropriate
span.kind
.- Server Jaeger spans are mapped to Elastic APM transactions.
- Client Jaeger spans are mapped to Elastic APM spans — unless the span is the root, in which case it is mapped to an Elastic APM transaction.
Configuration options
editYou can specify the following options in the apm-server.jaeger.*
section of the
apm-server.yml
configuration file.
grpc.enabled
editSet to true to enable the Jaeger gRPC collector service. Defaults to false
.
grpc.host
editDefine the gRPC host and port the server is listening on.
Defaults to the standard Jaeger gRPC collector port 14250
.
grpc.auth_tag
editSet to the name of the tag that should be used for authorizing Jaeger agents. By default, authorization does not apply to Jaeger agents.
http.enabled
editSet to true to enable the Jaeger HTTP collector endpoint. Defaults to false
.
http.host
editDefine the HTTP host and port the server is listening on.
Defaults to the standard Jaeger HTTP collector port 14268
.