Skip to content

Commit 161184c

Browse files
adinauerlbloder
andauthored
POTEL 57 - Spring Boot 2 OTel samples (#3879)
* port Spring Boot 3 otel changes to Spring Boot 2 * Spring Boot 2 OTel sample * add noagent spring boot 2 sample; fix spring boot 3 samples * fix tests * disable up to date checking for systemTests * another e2e test run * fix SentryAutoConfigurationTest --------- Co-authored-by: Lukas Bloder <[email protected]>
1 parent fe2c403 commit 161184c

File tree

84 files changed

+3348
-77
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

84 files changed

+3348
-77
lines changed

.github/workflows/system-tests-backend.yml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,13 @@ jobs:
2424
agent-auto-init: [ "true" ]
2525
include:
2626
- sample: "sentry-samples-spring-boot"
27+
- sample: "sentry-samples-spring-boot-opentelemetry-noagent"
28+
- sample: "sentry-samples-spring-boot-opentelemetry"
29+
agent: "1"
30+
agent-auto-init: "true"
31+
- sample: "sentry-samples-spring-boot-opentelemetry"
32+
agent: "1"
33+
agent-auto-init: "false"
2734
- sample: "sentry-samples-spring-boot-webflux-jakarta"
2835
- sample: "sentry-samples-spring-boot-webflux"
2936
- sample: "sentry-samples-spring-boot-jakarta-opentelemetry-noagent"

build.gradle.kts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,8 @@ apiValidation {
6060
"sentry-samples-spring",
6161
"sentry-samples-spring-jakarta",
6262
"sentry-samples-spring-boot",
63+
"sentry-samples-spring-boot-opentelemetry",
64+
"sentry-samples-spring-boot-opentelemetry-noagent",
6365
"sentry-samples-spring-boot-jakarta",
6466
"sentry-samples-spring-boot-jakarta-opentelemetry",
6567
"sentry-samples-spring-boot-jakarta-opentelemetry-noagent",

sentry-samples/sentry-samples-spring-boot-jakarta-opentelemetry-noagent/build.gradle.kts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,8 @@ tasks.register<Test>("systemTest").configure {
8585
group = "verification"
8686
description = "Runs the System tests"
8787

88-
// maxParallelForks = Runtime.getRuntime().availableProcessors() / 2
88+
outputs.upToDateWhen { false }
89+
8990
maxParallelForks = 1
9091

9192
// Cap JVM args per test

sentry-samples/sentry-samples-spring-boot-jakarta-opentelemetry-noagent/src/main/java/io/sentry/samples/spring/boot/jakarta/PersonController.java

Lines changed: 6 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package io.sentry.samples.spring.boot.jakarta;
22

3-
import io.opentelemetry.api.OpenTelemetry;
43
import io.opentelemetry.api.trace.Span;
4+
import io.opentelemetry.api.trace.Tracer;
55
import io.opentelemetry.context.Scope;
66
import io.opentelemetry.instrumentation.annotations.WithSpan;
77
import io.sentry.ISpan;
@@ -20,22 +20,18 @@
2020
@RequestMapping("/person/")
2121
public class PersonController {
2222
private final PersonService personService;
23-
private final OpenTelemetry openTelemetry;
23+
private final Tracer tracer;
2424
private static final Logger LOGGER = LoggerFactory.getLogger(PersonController.class);
2525

26-
public PersonController(PersonService personService, OpenTelemetry openTelemetry) {
26+
public PersonController(PersonService personService, Tracer tracer) {
2727
this.personService = personService;
28-
this.openTelemetry = openTelemetry;
28+
this.tracer = tracer;
2929
}
3030

3131
@GetMapping("{id}")
3232
@WithSpan("personSpanThroughOtelAnnotation")
3333
Person person(@PathVariable Long id) {
34-
Span span =
35-
openTelemetry
36-
.getTracer("tracerForSpringBootDemo")
37-
.spanBuilder("spanCreatedThroughOtelApi")
38-
.startSpan();
34+
Span span = tracer.spanBuilder("spanCreatedThroughOtelApi").startSpan();
3935
try (final @NotNull Scope spanScope = span.makeCurrent()) {
4036
ISpan currentSpan = Sentry.getSpan();
4137
ISpan sentrySpan = currentSpan.startChild("spanCreatedThroughSentryApi");
@@ -52,11 +48,7 @@ Person person(@PathVariable Long id) {
5248

5349
@PostMapping
5450
Person create(@RequestBody Person person) {
55-
Span span =
56-
openTelemetry
57-
.getTracer("tracerForSpringBootDemo")
58-
.spanBuilder("spanCreatedThroughOtelApi")
59-
.startSpan();
51+
Span span = tracer.spanBuilder("spanCreatedThroughOtelApi").startSpan();
6052
try (final @NotNull Scope spanScope = span.makeCurrent()) {
6153
ISpan sentrySpan = Sentry.getSpan().startChild("spanCreatedThroughSentryApi");
6254
try {

sentry-samples/sentry-samples-spring-boot-jakarta-opentelemetry-noagent/src/main/resources/application.properties

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,3 @@ spring.graphql.websocket.path=/graphql
3232
spring.quartz.job-store-type=memory
3333

3434
otel.propagators=tracecontext,baggage,sentry
35-
otel.resource.attributes.deployment.environment=dev
36-
otel.resource.attributes.service.name=cart
37-
otel.resource.attributes.service.namespace=shop
38-
39-
logging.level.org.springframework: DEBUG

sentry-samples/sentry-samples-spring-boot-jakarta-opentelemetry/build.gradle.kts

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -52,9 +52,7 @@ dependencies {
5252
implementation(projects.sentryLogback)
5353
implementation(projects.sentryGraphql22)
5454
implementation(projects.sentryQuartz)
55-
implementation(Config.Libs.springBoot3StarterOpenTelemetry)
56-
implementation(projects.sentryOpentelemetry.sentryOpentelemetryBootstrap)
57-
implementation(projects.sentryOpentelemetry.sentryOpentelemetryAgentcustomization)
55+
implementation(Config.Libs.OpenTelemetry.otelSdk)
5856

5957
// database query tracing
6058
implementation(projects.sentryJdbc)
@@ -85,7 +83,8 @@ tasks.register<Test>("systemTest").configure {
8583
group = "verification"
8684
description = "Runs the System tests"
8785

88-
// maxParallelForks = Runtime.getRuntime().availableProcessors() / 2
86+
outputs.upToDateWhen { false }
87+
8988
maxParallelForks = 1
9089

9190
// Cap JVM args per test

sentry-samples/sentry-samples-spring-boot-jakarta-opentelemetry/src/main/java/io/sentry/samples/spring/boot/jakarta/PersonController.java

Lines changed: 6 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
11
package io.sentry.samples.spring.boot.jakarta;
22

3-
import io.opentelemetry.api.OpenTelemetry;
43
import io.opentelemetry.api.trace.Span;
4+
import io.opentelemetry.api.trace.Tracer;
55
import io.opentelemetry.context.Scope;
6-
import io.opentelemetry.instrumentation.annotations.WithSpan;
76
import io.sentry.ISpan;
87
import io.sentry.Sentry;
98
import org.jetbrains.annotations.NotNull;
@@ -20,24 +19,17 @@
2019
@RequestMapping("/person/")
2120
public class PersonController {
2221
private final PersonService personService;
23-
private final OpenTelemetry openTelemetry;
22+
private final Tracer tracer;
2423
private static final Logger LOGGER = LoggerFactory.getLogger(PersonController.class);
2524

26-
public PersonController(PersonService personService, OpenTelemetry openTelemetry) {
25+
public PersonController(PersonService personService, Tracer tracer) {
2726
this.personService = personService;
28-
this.openTelemetry = openTelemetry;
27+
this.tracer = tracer;
2928
}
3029

3130
@GetMapping("{id}")
32-
@WithSpan("personSpanThroughOtelAnnotation")
3331
Person person(@PathVariable Long id) {
34-
ISpan annotationSpan = Sentry.getSpan();
35-
System.out.println(annotationSpan);
36-
Span span =
37-
openTelemetry
38-
.getTracer("tracerForSpringBootDemo")
39-
.spanBuilder("spanCreatedThroughOtelApi")
40-
.startSpan();
32+
Span span = tracer.spanBuilder("spanCreatedThroughOtelApi").startSpan();
4133
try (final @NotNull Scope spanScope = span.makeCurrent()) {
4234
ISpan currentSpan = Sentry.getSpan();
4335
ISpan sentrySpan = currentSpan.startChild("spanCreatedThroughSentryApi");
@@ -54,11 +46,7 @@ Person person(@PathVariable Long id) {
5446

5547
@PostMapping
5648
Person create(@RequestBody Person person) {
57-
Span span =
58-
openTelemetry
59-
.getTracer("tracerForSpringBootDemo")
60-
.spanBuilder("spanCreatedThroughOtelApi")
61-
.startSpan();
49+
Span span = tracer.spanBuilder("spanCreatedThroughOtelApi").startSpan();
6250
try (final @NotNull Scope spanScope = span.makeCurrent()) {
6351
ISpan sentrySpan = Sentry.getSpan().startChild("spanCreatedThroughSentryApi");
6452
try {

sentry-samples/sentry-samples-spring-boot-jakarta-opentelemetry/src/main/java/io/sentry/samples/spring/boot/jakarta/TodoController.java

Lines changed: 6 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package io.sentry.samples.spring.boot.jakarta;
22

3-
import io.opentelemetry.api.OpenTelemetry;
43
import io.opentelemetry.api.trace.Span;
4+
import io.opentelemetry.api.trace.Tracer;
55
import io.opentelemetry.context.Scope;
66
import io.sentry.ISpan;
77
import io.sentry.Sentry;
@@ -22,26 +22,19 @@ public class TodoController {
2222
private final RestTemplate restTemplate;
2323
private final WebClient webClient;
2424
private final RestClient restClient;
25-
private final OpenTelemetry openTelemetry;
25+
private final Tracer tracer;
2626

2727
public TodoController(
28-
RestTemplate restTemplate,
29-
WebClient webClient,
30-
RestClient restClient,
31-
OpenTelemetry openTelemetry) {
28+
RestTemplate restTemplate, WebClient webClient, RestClient restClient, Tracer tracer) {
3229
this.restTemplate = restTemplate;
3330
this.webClient = webClient;
3431
this.restClient = restClient;
35-
this.openTelemetry = openTelemetry;
32+
this.tracer = tracer;
3633
}
3734

3835
@GetMapping("/todo/{id}")
3936
Todo todo(@PathVariable Long id) {
40-
Span otelSpan =
41-
openTelemetry
42-
.getTracer("tracerForSpringBootDemo")
43-
.spanBuilder("todoSpanOtelApi")
44-
.startSpan();
37+
Span otelSpan = tracer.spanBuilder("todoSpanOtelApi").startSpan();
4538
try (final @NotNull Scope spanScope = otelSpan.makeCurrent()) {
4639
ISpan sentrySpan = Sentry.getSpan().startChild("todoSpanSentryApi");
4740
try {
@@ -74,11 +67,7 @@ Todo todoWebClient(@PathVariable Long id) {
7467

7568
@GetMapping("/todo-restclient/{id}")
7669
Todo todoRestClient(@PathVariable Long id) {
77-
Span span =
78-
openTelemetry
79-
.getTracer("tracerForSpringBootDemo")
80-
.spanBuilder("todoRestClientSpanOtelApi")
81-
.startSpan();
70+
Span span = tracer.spanBuilder("todoRestClientSpanOtelApi").startSpan();
8271
try (final @NotNull Scope spanScope = span.makeCurrent()) {
8372
ISpan sentrySpan = Sentry.getSpan().startChild("todoRestClientSpanSentryApi");
8473
try {

sentry-samples/sentry-samples-spring-boot-jakarta-opentelemetry/src/main/resources/application.properties

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -30,10 +30,3 @@ spring.datasource.password=
3030
spring.graphql.graphiql.enabled=true
3131
spring.graphql.websocket.path=/graphql
3232
spring.quartz.job-store-type=memory
33-
34-
otel.propagators=tracecontext,baggage,sentry
35-
otel.resource.attributes.deployment.environment=dev
36-
otel.resource.attributes.service.name=cart
37-
otel.resource.attributes.service.namespace=shop
38-
39-
logging.level.org.springframework: DEBUG

sentry-samples/sentry-samples-spring-boot-jakarta/build.gradle.kts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,8 @@ tasks.register<Test>("systemTest").configure {
8181
group = "verification"
8282
description = "Runs the System tests"
8383

84+
outputs.upToDateWhen { false }
85+
8486
maxParallelForks = 1
8587

8688
// Cap JVM args per test

0 commit comments

Comments
 (0)