Python Agent Reference
Ruby Agent Reference
Real User Monitoring JavaScript Agent Reference
APM extensions
AWS Lambda extension
Attacher
This documentation refers to configuring the standalone (legacy) APM Server. This method of running APM Server will be deprecated and removed in a future release. Please consider
upgrading to Fleet and the APM integration
.
If you’ve already upgraded, please see
Integrate with Jaeger
instead.
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 the Elastic Stack — transform data with APM Server, store data in Elasticsearch, and visualize traces in the Kibana APM app.
Best of all, no instrumentation changes are needed in your application code.
Ready to get started? See the
How to integrate with Jaeger
guide.
Jaeger 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.
APM Server serves Jaeger gRPC over the same
host and port
as the Elastic APM agent protocol.
The APM Server gRPC endpoint supports TLS. If
apm-server.ssl
is configured,
SSL settings will automatically be applied to APM Server’s Jaeger gRPC endpoint.
The gRPC endpoint supports probabilistic sampling.
Sampling decisions can be configured
centrally
with APM Agent central configuration, or
locally
in each Jaeger client.
See the
Jaeger docs
for more information on Jaeger architecture.
Communication with
Jaeger Clients
via thrift over HTTP (deprecated)
If you’ve configured your Jaeger clients to send spans directly to collectors (bypassing Jaeger agents),
enable the APM Server HTTP endpoint by setting
apm-server.jaeger.http.enabled
to
true
.
Use
apm-server.jaeger.http.host
to change the default port.
The Client HTTP endpoint does not support TLS or sampling,
and is not supported by our hosted Elasticsearch Service on Elastic Cloud.
If you’re using an officially supported Jaeger Client library and want to connect directly to APM Server,
you need to update the
JAEGER_ENDPOINT
configuration property.
This is the HTTP endpoint the Client will send spans to.
The
host:port
set here should correspond to the value set in
apm-server.jaeger.http.host
.
See the relevant supported Jaeger library for more information.
Node.js
Python
There 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.
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
.
Deprecated in 7.13.0.
APM Server serves Jaeger gRPC over the same port as the Elastic APM agent protocol. The following configuration options have been deprecated
You can specify the following options in the
apm-server.jaeger.*
section of the
apm-server.yml
configuration file.
Set to true to enable the Jaeger gRPC collector service. Defaults to
false
.
Define the gRPC host and port the server is listening on.
Defaults to the standard Jaeger gRPC collector port
14250
.
Set to the name of the tag that should be used for authorizing Jaeger agents.
By default, authorization does not apply to Jaeger agents.
Set to true to enable the Jaeger HTTP collector endpoint. Defaults to
false
.
Define the HTTP host and port the server is listening on.
Defaults to the standard Jaeger HTTP collector port
14268
.
« Configure APM instrumentation
Configure Kerberos »