Getting started
You can also use the Java agent to instrument your Spring Boot application. For the pros and cons, see Java zero-code instrumentation.
Compatibility
The OpenTelemetry Spring Boot starter works with Spring Boot 2.6+ and 3.1+, and Spring Boot native image applications. The opentelemetry-java-examples/spring-native repository contains an example of a Spring Boot Native image application instrumented using the OpenTelemetry Spring Boot starter.
Dependency management
A Bill of Material (BOM) ensures that versions of dependencies (including transitive ones) are aligned.
To ensure version alignment across all OpenTelemetry dependencies, you must import the opentelemetry-instrumentation-bom
BOM when using the OpenTelemetry starter.
When using Maven, import the OpenTelemetry BOMs before any other BOMs in your project. For example, if you import the spring-boot-dependencies
BOM, you have to declare it after the OpenTelemetry BOMs.
Gradle selects the latest version of a dependency when multiple BOMs, so the order of BOMs is not important.
The following example shows how to import the OpenTelemetry BOMs using Maven:
<dependencyManagement> <dependencies> <dependency> <groupId>io.opentelemetry.instrumentation</groupId> <artifactId>opentelemetry-instrumentation-bom</artifactId> <version>2.17.0</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>
With Gradle and Spring Boot, you have two ways to import a BOM.
You can use the Gradle’s native BOM support by adding dependencies
:
import org.springframework.boot.gradle.plugin.SpringBootPlugin plugins { id("java") id("org.springframework.boot") version "3.2.O" } dependencies { implementation(platform(SpringBootPlugin.BOM_COORDINATES)) implementation(platform("io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom:2.17.0")) }
The other way with Gradle is to use the io.spring.dependency-management
plugin and to import the BOMs in dependencyManagement
:
plugins { id("java") id("org.springframework.boot") version "3.2.O" id("io.spring.dependency-management") version "1.1.0" } dependencyManagement { imports { mavenBom("io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom:2.17.0") } }
Be careful not to mix up the different ways of configuring things with Gradle. For example, don’t use implementation(platform("io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom:2.17.0"))
with the io.spring.dependency-management
plugin.
OpenTelemetry Starter dependency
Add the dependency given below to enable the OpenTelemetry starter.
The OpenTelemetry starter uses OpenTelemetry Spring Boot autoconfiguration.
<dependency> <groupId>io.opentelemetry.instrumentation</groupId> <artifactId>opentelemetry-spring-boot-starter</artifactId> </dependency>
implementation("io.opentelemetry.instrumentation:opentelemetry-spring-boot-starter")
Feedback
Was this page helpful?
Thank you. Your feedback is appreciated!
Please let us know how we can improve this page. Your feedback is appreciated!