Automatic Instrumentation

Sentry Spring Boot integration, once enabled, captures each incoming Spring MVC HTTP request and turns it into a transaction with SentryTracingFilter. Transaction names follow pattern <HTTP method> <Spring MVC route>, for example for a request to a following controller:

Copied
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;

@RestController
class HelloController {

  @GetMapping("/person/{id}")
  Person person(@PathVariable Long id) {
    ...
  }
}

Each sampled request executed by this controller method will be turned into a transaction GET /person/{id}.

Sentry Spring Boot integration provides SentrySpanRestTemplateCustomizer that creates a span for each outgoing HTTP request executed with a RestTemplate. To use instrumented RestTemplate make sure to create RestTemplate beans using RestTemplateBuilder:

Copied
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Bean;
import org.springframework.boot.web.client.RestTemplateBuilder;
import org.springframework.web.client.RestTemplate;

@Configuration
class AppConfig {
  @Bean
  RestTemplate restTemplate(RestTemplateBuilder builder) {
    return builder.build();
  }
}

Sentry Spring Boot integration provides SentrySpanRestClientCustomizer that creates a span for each outgoing HTTP request executed with a RestClient. To use instrumented RestClient make sure to create RestClient beans using RestClient.Builder:

Copied
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Bean;
import org.springframework.web.client.RestClient;

@Configuration
class AppConfig {
  @Bean
  RestClient restClient(RestClient.Builder builder) {
    return builder.build();
  }
}

Sentry Spring Boot integration provides SentrySpanWebClientCustomizer that creates a span for each outgoing HTTP request executed with a WebClient. To use instrumented WebClient make sure to create WebClient beans using WebClient.Builder:

Copied
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Bean;
import org.springframework.web.reactive.function.client.WebClient;

@Configuration
class AppConfig {
  @Bean
  WebClient webClient(WebClient.Builder builder) {
    return builder.build();
  }
}
Help improve this content
Our documentation is open source and available on GitHub. Your contributions are welcome, whether fixing a typo (drat!) or suggesting an update ("yeah, this would be better").