Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
08507df
add agentless module for OpenTelemetry setup without any agent
adinauer Dec 6, 2024
b36339c
Replace bool with enum for OpenTelemetryUtil mode
adinauer Dec 16, 2024
d48d398
Move OpenTelemetryUtil into core sentry
adinauer Dec 16, 2024
66b4206
Add openTelemetryMode option
adinauer Dec 17, 2024
a0a4baa
Merge branch '8.x.x' into feat/add-opentelemetry-mode-option
adinauer Dec 17, 2024
e46efe8
Add SentryOpenTelemetryMode.OFF
adinauer Dec 17, 2024
5231140
fix HubAdapter and ScopeAdapter tests by calling Sentry.init so that …
lbloder Dec 17, 2024
917b2e3
Hold a strong reference to OTel span if created via Sentry API
adinauer Dec 17, 2024
b11af4d
add sentry-opentelemetry-agentless-spring module
adinauer Dec 18, 2024
77d60e4
fix tests
adinauer Dec 18, 2024
6b69f56
fix build
adinauer Dec 18, 2024
cb8746c
changelog
adinauer Dec 18, 2024
400b60e
fix agentless due to late call to SpanFactoryFactory
adinauer Dec 19, 2024
d444ef7
Format code
getsentry-bot Dec 19, 2024
3f891c4
Merge branch 'feat/add-opentelemetry-mode-option' into feat/otel-mode…
adinauer Dec 19, 2024
dacc35b
changelog
adinauer Dec 19, 2024
dd37382
fix order of scope storage close vs scopes close
adinauer Dec 19, 2024
a17517b
Merge branch 'feat/otel-mode-off' into feat/otel-span-strongref
adinauer Dec 19, 2024
f3056ff
changelog
adinauer Dec 19, 2024
9f71bec
Merge branch 'feat/otel-span-strongref' into feat/agentless-spring-mo…
adinauer Dec 19, 2024
63080b1
add PR link to changelog
adinauer Dec 19, 2024
68019c1
Merge branch '8.x.x' into feat/add-opentelemetry-mode-option
adinauer Dec 19, 2024
cb4ede3
Merge branch 'feat/add-opentelemetry-mode-option' into feat/otel-mode…
adinauer Dec 20, 2024
46930d1
use initForTest
adinauer Dec 20, 2024
b2e8e80
Merge branch 'feat/otel-mode-off' into feat/otel-span-strongref
adinauer Dec 20, 2024
8833fc9
use initForTest
adinauer Dec 20, 2024
11bff06
Merge branch 'feat/otel-span-strongref' into feat/agentless-spring-mo…
adinauer Dec 20, 2024
7a1d3b7
Merge branch '8.x.x' into feat/agentless-spring-module
adinauer Dec 20, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .craft.yml
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ targets:
maven:io.sentry:sentry-opentelemetry-agentcustomization:
maven:io.sentry:sentry-opentelemetry-core:
# maven:io.sentry:sentry-opentelemetry-agentless:
# maven:io.sentry:sentry-opentelemetry-agentless-spring:
maven:io.sentry:sentry-apollo:
maven:io.sentry:sentry-jdbc:
maven:io.sentry:sentry-graphql:
Expand Down
1 change: 1 addition & 0 deletions .github/ISSUE_TEMPLATE/bug_report_java.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ body:
- sentry-kotlin-extensions
- sentry-opentelemetry-agent
- sentry-opentelemetry-agentless
- sentry-opentelemetry-agentless-spring
- sentry-opentelemetry-core
- sentry-servlet
- sentry-servlet-jakarta
Expand Down
3 changes: 3 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,9 @@

### Features

- Add `sentry-opentelemetry-agentless-spring` module ([#4000](https://github.com/getsentry/sentry-java/pull/4000))
- This module can be added as a dependency when using Sentry with OpenTelemetry and Spring Boot but don't want to use our Agent. It takes care of configuring OpenTelemetry for use with Sentry.
- You may want to set `OTEL_LOGS_EXPORTER=none;OTEL_METRICS_EXPORTER=none;OTEL_TRACES_EXPORTER=none` env vars to not have the log flooded with error messages regarding OpenTelemetry features we don't use.
- Add `sentry-opentelemetry-agentless` module ([#3961](https://github.com/getsentry/sentry-java/pull/3961))
- This module can be added as a dependency when using Sentry with OpenTelemetry but don't want to use our Agent. It takes care of configuring OpenTelemetry for use with Sentry.
- To enable the auto configuration of it, please set `-Dotel.java.global-autoconfigure.enabled=true` on the `java` command, when starting your application.
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
# sentry-opentelemetry-agentless-spring

*NOTE: Our OpenTelemetry modules are still experimental. Any feedback is welcome.*

## How to use it

Add the latest `sentry-opentelemetry-agentless-spring` module as a dependency and add a `sentry.properties`
configuration file to your project that could look like this:

```properties
# NOTE: Replace the test DSN below with YOUR OWN DSN to see the events from this app in your Sentry project/dashboard
dsn=https://[email protected]/5428563
traces-sample-rate=1.0
```

For more details on configuring Sentry via `sentry.properties` please see the
[docs page](https://docs.sentry.io/platforms/java/configuration/).

As an alternative to the `SENTRY_PROPERTIES_FILE` environment variable you can provide individual
settings as environment variables (e.g. `SENTRY_DSN=...`) or you may initialize `Sentry` inside
your target application. If you do so, please make sure to apply OpenTelemetry specific options, e.g.
like this:

```
Sentry.init(
options -> {
options.setDsn("...");
...
OpenTelemetryUtil.applyOpenTelemetryOptions(options, false);
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This can be removed, as it is now obsolete. I suggest we do that in the #3978 PR

}
)
```

## Getting rid of exporter error messages

In case you are using this module without needing to use any OpenTelemetry exporters you can add
the following environment variables to turn off exporters and stop seeing error messages about
servers not being reachable in the logs.

Example log message:
```
ERROR io.opentelemetry.exporter.internal.grpc.OkHttpGrpcExporter - Failed to export spans. The request could not be executed. Full error message: Failed to connect to localhost/[0:0:0:0:0:0:0:1]:4317
ERROR io.opentelemetry.exporter.internal.grpc.OkHttpGrpcExporter - Failed to export metrics. The request could not be executed. Full error message: Failed to connect to localhost/[0:0:0:0:0:0:0:1]:4317
```

### Traces

To turn off exporting of traces you can set `OTEL_TRACES_EXPORTER=none`
see [OpenTelemetry GitHub](https://github.com/open-telemetry/opentelemetry-java/tree/main/sdk-extensions/autoconfigure#otlp-exporter-span-metric-and-log-exporters)

### Metrics

To turn off exporting of metrics you can set `OTEL_METRICS_EXPORTER=none`
see [OpenTelemetry GitHub](https://github.com/open-telemetry/opentelemetry-java/tree/main/sdk-extensions/autoconfigure#otlp-exporter-span-metric-and-log-exporters)
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
plugins {
`java-library`
}

configure<JavaPluginExtension> {
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
}

dependencies {
api(projects.sentry)
api(projects.sentryOpentelemetry.sentryOpentelemetryBootstrap)
implementation(projects.sentryOpentelemetry.sentryOpentelemetryAgentcustomization)
api(Config.Libs.OpenTelemetry.otelSdk)
api(Config.Libs.OpenTelemetry.otelSemconv)
api(Config.Libs.OpenTelemetry.otelSemconvIncubating)
api(Config.Libs.OpenTelemetry.otelExtensionAutoconfigure)
Comment on lines +14 to +17
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Are we not depending on the sentry-opentelemetry-agentless module because of the AgentlessMarker?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah, I thought, it might cause more issues than save work to reuse the other agentless module here since there's very little in both currently.

api(Config.Libs.springBoot3StarterOpenTelemetry)
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
package io.sentry.opentelemetry.agent;

public final class AgentlessSpringMarker {}
Original file line number Diff line number Diff line change
Expand Up @@ -52,8 +52,7 @@ dependencies {
implementation(projects.sentryLogback)
implementation(projects.sentryGraphql22)
implementation(projects.sentryQuartz)
implementation(Config.Libs.springBoot3StarterOpenTelemetry)
implementation(projects.sentryOpentelemetry.sentryOpentelemetryAgentless)
implementation(projects.sentryOpentelemetry.sentryOpentelemetryAgentlessSpring)

// database query tracing
implementation(projects.sentryJdbc)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,8 +52,7 @@ dependencies {
implementation(projects.sentryLogback)
implementation(projects.sentryGraphql)
implementation(projects.sentryQuartz)
implementation(Config.Libs.springBoot3StarterOpenTelemetry)
implementation(projects.sentryOpentelemetry.sentryOpentelemetryAgentless)
implementation(projects.sentryOpentelemetry.sentryOpentelemetryAgentlessSpring)

// database query tracing
implementation(projects.sentryJdbc)
Expand Down
1 change: 1 addition & 0 deletions settings.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@ include(
"sentry-opentelemetry:sentry-opentelemetry-agentcustomization",
"sentry-opentelemetry:sentry-opentelemetry-agent",
"sentry-opentelemetry:sentry-opentelemetry-agentless",
"sentry-opentelemetry:sentry-opentelemetry-agentless-spring",
"sentry-quartz",
"sentry-okhttp",
"sentry-samples:sentry-samples-android",
Expand Down
Loading