Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Log debug messages giving info about OpenTelemetry related config settings #4122

Merged
merged 3 commits into from
Jan 30, 2025
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
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
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
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);
}
}
Loading