Skip to main content

Spring Boot

Implement OpenTelemetry instrumentation for Spring Boot applications to collect traces and metrics, and monitor HTTP requests using the Java OTel SDK.

Note: This guide provides a concise overview. For complete information, consult the official OpenTelemetry documentation.


Overview​

This guide demonstrates how to:

  • Set up OpenTelemetry instrumentation for Spring Boot
  • Configure automatic request and response tracing
  • Implement custom instrumentation
  • Collect HTTP metrics
  • Export telemetry data to Scout Collector

Prerequisites​

  • Java 17 or later
  • Spring Boot 3.2.0 or later
  • Maven 3.6+ or Gradle 7.6+

Required Dependencies​

pom.xml

<properties>
<opentelemetry.version>1.32.0</opentelemetry.version>
<opentelemetry.instrumentation.version>2.1.0</opentelemetry.instrumentation.version>
<micrometer.version>1.12.0</micrometer.version>
</properties>

<dependencyManagement>
<dependencies>
<!-- OpenTelemetry Instrumentation BOM -->
<dependency>
<groupId>io.opentelemetry.instrumentation</groupId>
<artifactId>opentelemetry-instrumentation-bom</artifactId>
<version>
${opentelemetry.instrumentation.version}-alpha
</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>

<dependencies>
<!-- Spring Boot Starters -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>

<!-- OpenTelemetry -->
<dependency>
<groupId>io.opentelemetry.instrumentation</groupId>
<artifactId>opentelemetry-spring-boot-starter</artifactId>
</dependency>

<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-registry-otlp</artifactId>
</dependency>
</dependencies>

Configuration (application.properties)​

# Server
server.port=8080
server.address=0.0.0.0

# OpenTelemetry
otel.service.name=your-service-name
otel.resource.attributes=service.namespace=your-namespace,\
deployment.environment=dev

# OTLP Exporter
otel.traces.exporter=otlp
otel.metrics.exporter=otlp
otel.logs.exporter=otlp
otel.exporter.otlp.endpoint=http://localhost:4318
otel.exporter.otlp.protocol=http/protobuf

# Actuator
management.endpoints.web.exposure.include=health,info,metrics,prometheus
management.tracing.sampling.probability=1.0

Logs, traces and metrics are exported to the base14 Scout observability backend.

References​