From 0143c2fc6dd39a943f2e1075d4af8c3a254fcb2f Mon Sep 17 00:00:00 2001 From: Alexander Dinauer Date: Mon, 27 Jan 2025 16:45:33 +0100 Subject: [PATCH 1/2] Log debug messages giving info about OpenTelemetry related config settings --- sentry/api/sentry.api | 3 +- sentry/src/main/java/io/sentry/Sentry.java | 33 +++++++++---- .../opentelemetry/OpenTelemetryUtil.java | 46 ++++++++++++++----- 3 files changed, 60 insertions(+), 22 deletions(-) diff --git a/sentry/api/sentry.api b/sentry/api/sentry.api index 642b67ec06f..2b885bed951 100644 --- a/sentry/api/sentry.api +++ b/sentry/api/sentry.api @@ -4253,7 +4253,8 @@ public abstract interface class io/sentry/internal/viewhierarchy/ViewHierarchyEx public final class io/sentry/opentelemetry/OpenTelemetryUtil { public fun ()V - public static fun applyIgnoredSpanOrigins (Lio/sentry/SentryOptions;Lio/sentry/util/LoadClass;)V + public static fun applyIgnoredSpanOrigins (Lio/sentry/SentryOptions;)V + public static fun updateOpenTelemetryModeIfAuto (Lio/sentry/SentryOptions;Lio/sentry/util/LoadClass;)V } public final class io/sentry/profilemeasurements/ProfileMeasurement : io/sentry/JsonSerializable, io/sentry/JsonUnknown { diff --git a/sentry/src/main/java/io/sentry/Sentry.java b/sentry/src/main/java/io/sentry/Sentry.java index a00d1455074..70519fb98f1 100644 --- a/sentry/src/main/java/io/sentry/Sentry.java +++ b/sentry/src/main/java/io/sentry/Sentry.java @@ -322,9 +322,9 @@ private static void init(final @NotNull SentryOptions options, final boolean glo final IScope rootIsolationScope = new Scope(options); rootScopes = new Scopes(rootScope, rootIsolationScope, globalScope, "Sentry.init"); + initLogger(options); initForOpenTelemetryMaybe(options); getScopesStorage().set(rootScopes); - initConfigurations(options); globalScope.bindClient(new SentryClient(options)); @@ -348,6 +348,19 @@ private static void init(final @NotNull SentryOptions options, final boolean glo finalizePreviousSession(options, ScopesAdapter.getInstance()); handleAppStartProfilingConfig(options, options.getExecutorService()); + + options + .getLogger() + .log(SentryLevel.DEBUG, "Using openTelemetryMode %s", options.getOpenTelemetryMode()); + options + .getLogger() + .log( + SentryLevel.DEBUG, + "Using span factory %s", + options.getSpanFactory().getClass().getName()); + options + .getLogger() + .log(SentryLevel.DEBUG, "Using scopes storage %s", scopesStorage.getClass().getName()); } else { options .getLogger() @@ -359,6 +372,7 @@ private static void init(final @NotNull SentryOptions options, final boolean glo } private static void initForOpenTelemetryMaybe(SentryOptions options) { + OpenTelemetryUtil.updateOpenTelemetryModeIfAuto(options, new LoadClass()); if (SentryOpenTelemetryMode.OFF == options.getOpenTelemetryMode()) { options.setSpanFactory(new DefaultSpanFactory()); // } else { @@ -367,7 +381,13 @@ private static void initForOpenTelemetryMaybe(SentryOptions options) { // NoOpLogger.getInstance())); } initScopesStorage(options); - OpenTelemetryUtil.applyIgnoredSpanOrigins(options, new LoadClass()); + OpenTelemetryUtil.applyIgnoredSpanOrigins(options); + } + + private static void initLogger(final @NotNull SentryOptions options) { + if (options.isDebug() && options.getLogger() instanceof NoOpLogger) { + options.setLogger(new SystemOutLogger()); + } } private static void initScopesStorage(SentryOptions options) { @@ -505,16 +525,9 @@ private static boolean preInitConfigurations(final @NotNull SentryOptions option @SuppressWarnings("FutureReturnValueIgnored") private static void initConfigurations(final @NotNull SentryOptions options) { - ILogger logger = options.getLogger(); - - if (options.isDebug() && logger instanceof NoOpLogger) { - options.setLogger(new SystemOutLogger()); - logger = options.getLogger(); - } + final @NotNull ILogger logger = options.getLogger(); logger.log(SentryLevel.INFO, "Initializing SDK with DSN: '%s'", options.getDsn()); - OpenTelemetryUtil.applyIgnoredSpanOrigins(options, new LoadClass()); - // TODO: read values from conf file, Build conf or system envs // eg release, distinctId, sentryClientName diff --git a/sentry/src/main/java/io/sentry/opentelemetry/OpenTelemetryUtil.java b/sentry/src/main/java/io/sentry/opentelemetry/OpenTelemetryUtil.java index 3bf7eac1a26..05dd7c76da1 100644 --- a/sentry/src/main/java/io/sentry/opentelemetry/OpenTelemetryUtil.java +++ b/sentry/src/main/java/io/sentry/opentelemetry/OpenTelemetryUtil.java @@ -1,6 +1,7 @@ package io.sentry.opentelemetry; import io.sentry.NoOpLogger; +import io.sentry.SentryLevel; import io.sentry.SentryOpenTelemetryMode; import io.sentry.SentryOptions; import io.sentry.util.LoadClass; @@ -15,37 +16,60 @@ public final class OpenTelemetryUtil { @ApiStatus.Internal - public static void applyIgnoredSpanOrigins( - final @NotNull SentryOptions options, final @NotNull LoadClass loadClass) { + public static void applyIgnoredSpanOrigins(final @NotNull SentryOptions options) { if (Platform.isJvm()) { - final @NotNull List ignored = ignoredSpanOrigins(options, loadClass); + final @NotNull List ignored = ignoredSpanOrigins(options); for (String origin : ignored) { options.addIgnoredSpanOrigin(origin); } } } - private static @NotNull List ignoredSpanOrigins( + @ApiStatus.Internal + public static void updateOpenTelemetryModeIfAuto( final @NotNull SentryOptions options, final @NotNull LoadClass loadClass) { + if (!Platform.isJvm()) { + return; + } + final @NotNull SentryOpenTelemetryMode openTelemetryMode = options.getOpenTelemetryMode(); if (SentryOpenTelemetryMode.AUTO.equals(openTelemetryMode)) { if (loadClass.isClassAvailable( "io.sentry.opentelemetry.agent.AgentMarker", NoOpLogger.getInstance())) { - return SpanUtils.ignoredSpanOriginsForOpenTelemetry(SentryOpenTelemetryMode.AGENT); + options + .getLogger() + .log(SentryLevel.DEBUG, "openTelemetryMode has been inferred from AUTO to AGENT"); + options.setOpenTelemetryMode(SentryOpenTelemetryMode.AGENT); + return; } if (loadClass.isClassAvailable( "io.sentry.opentelemetry.agent.AgentlessMarker", NoOpLogger.getInstance())) { - return SpanUtils.ignoredSpanOriginsForOpenTelemetry(SentryOpenTelemetryMode.AGENTLESS); + options + .getLogger() + .log(SentryLevel.DEBUG, "openTelemetryMode has been inferred from AUTO to AGENTLESS"); + options.setOpenTelemetryMode(SentryOpenTelemetryMode.AGENTLESS); + return; } if (loadClass.isClassAvailable( "io.sentry.opentelemetry.agent.AgentlessSpringMarker", NoOpLogger.getInstance())) { - return SpanUtils.ignoredSpanOriginsForOpenTelemetry( - SentryOpenTelemetryMode.AGENTLESS_SPRING); + options + .getLogger() + .log( + SentryLevel.DEBUG, + "openTelemetryMode has been inferred from AUTO to AGENTLESS_SPRING"); + options.setOpenTelemetryMode(SentryOpenTelemetryMode.AGENTLESS_SPRING); + return; } - } else { - return SpanUtils.ignoredSpanOriginsForOpenTelemetry(openTelemetryMode); + } + } + + private static @NotNull List ignoredSpanOrigins(final @NotNull SentryOptions options) { + final @NotNull SentryOpenTelemetryMode openTelemetryMode = options.getOpenTelemetryMode(); + + if (SentryOpenTelemetryMode.OFF.equals(openTelemetryMode)) { + return Collections.emptyList(); } - return Collections.emptyList(); + return SpanUtils.ignoredSpanOriginsForOpenTelemetry(openTelemetryMode); } } From 7c07d744313dfb5538d4b1daf83e8a914f6c1d3a Mon Sep 17 00:00:00 2001 From: Alexander Dinauer Date: Thu, 30 Jan 2025 10:14:05 +0100 Subject: [PATCH 2/2] changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 011259b2d78..6fe8d6a07d5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ - Can be set in `sentry.properties`, e.g. `ignored-errors=Some error,Another .*` - Can be set in environment variables, e.g. `SENTRY_IGNORED_ERRORS=Some error,Another .*` - For Spring Boot, it can be set in `application.properties`, e.g. `sentry.ignored-errors=Some error,Another .*` +- Log OpenTelemetry related Sentry config ([#4122](https://github.com/getsentry/sentry-java/pull/4122)) ### Fixes