Skip to content

Commit

Permalink
Log debug messages giving info about OpenTelemetry related config set…
Browse files Browse the repository at this point in the history
…tings (#4122)

* Log debug messages giving info about OpenTelemetry related config settings

* changelog
  • Loading branch information
adinauer authored Jan 30, 2025
1 parent 2fc1ed7 commit b68011a
Show file tree
Hide file tree
Showing 4 changed files with 61 additions and 22 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
3 changes: 2 additions & 1 deletion sentry/api/sentry.api
Original file line number Diff line number Diff line change
Expand Up @@ -4253,7 +4253,8 @@ public abstract interface class io/sentry/internal/viewhierarchy/ViewHierarchyEx

public final class io/sentry/opentelemetry/OpenTelemetryUtil {
public fun <init> ()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 {
Expand Down
33 changes: 23 additions & 10 deletions sentry/src/main/java/io/sentry/Sentry.java
Original file line number Diff line number Diff line change
Expand Up @@ -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));
Expand All @@ -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()
Expand All @@ -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 {
Expand All @@ -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) {
Expand Down Expand Up @@ -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

Expand Down
46 changes: 35 additions & 11 deletions sentry/src/main/java/io/sentry/opentelemetry/OpenTelemetryUtil.java
Original file line number Diff line number Diff line change
@@ -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;
Expand All @@ -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<String> ignored = ignoredSpanOrigins(options, loadClass);
final @NotNull List<String> ignored = ignoredSpanOrigins(options);
for (String origin : ignored) {
options.addIgnoredSpanOrigin(origin);
}
}
}

private static @NotNull List<String> 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<String> 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);
}
}

0 comments on commit b68011a

Please sign in to comment.