Skip to content

Commit 34a77bc

Browse files
committed
<fix>[telemetry]: fix Sentry transaction loss and add debug logging
Resolves: ZSTAC-61988 Change-Id: Id3d5a48801fda21e2a51d96949c743bac254b2e6
1 parent bf1d8ea commit 34a77bc

2 files changed

Lines changed: 43 additions & 0 deletions

File tree

core/src/main/java/org/zstack/core/telemetry/SentryInitHelper.java

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package org.zstack.core.telemetry;
22

33
import io.sentry.Sentry;
4+
import io.sentry.SentryLevel;
45
import org.zstack.core.cloudbus.CloudBusGlobalProperty;
56
import org.zstack.utils.Utils;
67
import org.zstack.utils.logging.CLogger;
@@ -54,6 +55,42 @@ public static boolean initIfNeeded() {
5455
Sentry.init(options -> {
5556
options.setDsn(finalDsn);
5657
options.setTracesSampleRate(tracesSampleRate);
58+
options.setMaxQueueSize(1000);
59+
if (TelemetryGlobalProperty.SENTRY_DEBUG) {
60+
options.setDebug(true);
61+
options.setDiagnosticLevel(SentryLevel.DEBUG);
62+
options.setLogger(new io.sentry.ILogger() {
63+
@Override
64+
public void log(SentryLevel level, String message, Object... args) {
65+
String formatted = args.length > 0 ? String.format(message, args) : message;
66+
switch (level) {
67+
case ERROR: logger.warn("[Sentry] " + formatted); break;
68+
case WARNING: logger.warn("[Sentry] " + formatted); break;
69+
default: logger.info("[Sentry] " + formatted); break;
70+
}
71+
}
72+
73+
@Override
74+
public void log(SentryLevel level, String message, Throwable throwable) {
75+
switch (level) {
76+
case ERROR: logger.warn("[Sentry] " + message, throwable); break;
77+
case WARNING: logger.warn("[Sentry] " + message, throwable); break;
78+
default: logger.info("[Sentry] " + message, throwable); break;
79+
}
80+
}
81+
82+
@Override
83+
public void log(SentryLevel level, Throwable throwable, String message, Object... args) {
84+
String formatted = args.length > 0 ? String.format(message, args) : message;
85+
log(level, formatted, throwable);
86+
}
87+
88+
@Override
89+
public boolean isEnabled(SentryLevel level) {
90+
return true;
91+
}
92+
});
93+
}
5794
});
5895
logger.info("Sentry initialized (tracesSampleRate=" + tracesSampleRate + ")");
5996
return true;

core/src/main/java/org/zstack/core/telemetry/TelemetryGlobalProperty.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -147,6 +147,12 @@ public class TelemetryGlobalProperty {
147147
@GlobalProperty(name = "Telemetry.shutdownTimeoutMs", defaultValue = "10000")
148148
public static int SHUTDOWN_TIMEOUT_MS;
149149

150+
/**
151+
* Enable Sentry SDK debug logging (outputs to management-server.log via log4j).
152+
*/
153+
@GlobalProperty(name = "Telemetry.sentryDebug", defaultValue = "false")
154+
public static boolean SENTRY_DEBUG;
155+
150156
/**
151157
* Environment types enumeration
152158
*/

0 commit comments

Comments
 (0)