APM Java Spring Jaeger
Java Spring Jaeger#
Overview#
The Open telemetry Java Spring Jaeger add portable telemetry to your Java application. Those telemetry will be pushed into your APM server

Requirements#
- Unryo application with APM installed
- Jaeger Agents installed where your application is running (More info about Jaeger)
- Java spring application
Dependencies#
The opentracing-spring-jaeger-starter simply contains the code needed to provide a Jaeger implementation of the OpenTracing's io.opentracing.Tracer
interface.
For a project to be able to actually instrument a Spring stack, one or more of the purpose built starters (like io.opentracing.contrib:opentracing-spring-web-starter or io.opentracing.contrib:opentracing-spring-cloud-starter)
would also have to be included in the POM.
The opentracing-spring-jaeger-web-starter starter is convenience starter that includes both opentracing-spring-jaeger-starter and opentracing-spring-web-starter
This means that by including it, simple web Spring Boot microservices include all the necessary dependencies to instrument Web requests / responses and send traces to Jaeger.
The opentracing-spring-jaeger-cloud-starter starter is convenience starter that includes both opentracing-spring-jaeger-starter and opentracing-spring-cloud-starter
This means that by including it, all parts of the Spring Cloud stack supported by Opentracing will be instrumented
Library versions#
Versions 1.x.y of the library are meant to target Spring Boot 2.x while versions 0.x.y are meant to be used with Spring Boot 1.5
Configuration#
// pom.xml
<dependency>
<groupId>io.opentracing.contrib</groupId>
<artifactId>opentracing-spring-jaeger-web-starter</artifactId>
</dependency>
for simple instrumentation of the request.
or
// pom.xml
<dependency>
<groupId>io.opentracing.contrib</groupId>
<artifactId>opentracing-spring-jaeger-cloud-starter</artifactId>
</dependency>
if you need to instrument the following application
- Spring Web (RestControllers, RestTemplates, WebAsyncTask, WebClient, WebFlux)
- @Async, @Scheduled, Executors
- WebSocket STOMP
- Feign, HystrixFeign
- Hystrix
- JMS
- JDBC
- Kafka
- Mongo
- Zuul
- Reactor
- RxJava
- Redis
- Standard logging - logs are added to active span
- Spring Messaging - trace messages being sent through Messaging Channels
- RabbitMQ
Either dependency will ensure that Spring Boot will auto configure a Jaeger implementation of OpenTracing's Tracer when the application starts.
If no settings are changed, spans will be reported to the UDP port 6831 of localhost.
The simplest way to change this behavior is to set the following properties:
opentracing.jaeger.udp-sender.host=jaegerhost
opentracing.jaeger.udp-sender.port=portNumber
for the UDP sender, or use an HTTP sender by setting the following property:
opentracing.jaeger.http-sender.url = http://jaegerhost:portNumber/api/traces
// src/main/resource/application.properties
opentracing.jaeger.udp-sender.host=jaeger
opentracing.jaeger.udp-sender.port=6831

Configuration options#
All the available configuration options can be seen in JaegerConfigurationProperties.
The prefix to be used for these properties is opentracing.jaeger.
Furthermore, the service name is configured via the standard Spring Cloud spring.application.name property.
Beware to use the correct syntax for properties that are camel-case in JaegerConfigurationProperties.
- For properties / yaml files use
-. For exampleopentracing.jaeger.log-spans=true - For environment variables use
_. For exampleOPENTRACING_JAEGER_LOG_SPANS