Skip to content

Commit 4449936

Browse files
author
gitlab
committed
Merge branch 'fix/ZSTAC-61988' into '5.5.12'
<fix>[telemetry]: fix Sentry transaction loss and add debug logging See merge request zstackio/zstack!9220
2 parents 36fcfb5 + 0566614 commit 4449936

5 files changed

Lines changed: 47 additions & 15 deletions

File tree

build/pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -731,9 +731,9 @@
731731
<groupId>io.sentry</groupId>
732732
<artifactId>sentry-opentelemetry-bootstrap</artifactId>
733733
</dependency>
734-
<!-- Legacy semconv 1.23.1-alpha for top-level SemanticAttributes (sentry-opentelemetry-bootstrap) -->
734+
<!-- Semconv 1.28.0-alpha: both legacy SemanticAttributes and new split classes for Sentry OTel -->
735735
<dependency>
736-
<groupId>io.opentelemetry</groupId>
736+
<groupId>io.opentelemetry.semconv</groupId>
737737
<artifactId>opentelemetry-semconv</artifactId>
738738
</dependency>
739739
<dependency>

core/pom.xml

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -167,11 +167,6 @@
167167
<groupId>io.opentelemetry.semconv</groupId>
168168
<artifactId>opentelemetry-semconv</artifactId>
169169
</dependency>
170-
<!-- Legacy semconv (groupId io.opentelemetry) for SemanticAttributes at runtime (Sentry/OTel) -->
171-
<dependency>
172-
<groupId>io.opentelemetry</groupId>
173-
<artifactId>opentelemetry-semconv</artifactId>
174-
</dependency>
175170
<dependency>
176171
<groupId>io.opentelemetry</groupId>
177172
<artifactId>opentelemetry-sdk-metrics</artifactId>

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
*/

pom.xml

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -550,17 +550,11 @@
550550
<artifactId>opentelemetry-context</artifactId>
551551
<version>1.35.0</version>
552552
</dependency>
553-
<!-- OpenTelemetry Semconv (1.37+ has UrlAttributes required by Sentry OpenTelemetryAttributesExtractor) -->
553+
<!-- OpenTelemetry Semconv 1.28.0-alpha: has both legacy SemanticAttributes (top-level) and new split classes (UrlAttributes/HttpAttributes/ServerAttributes) required by sentry-opentelemetry-core 8.16 -->
554554
<dependency>
555555
<groupId>io.opentelemetry.semconv</groupId>
556556
<artifactId>opentelemetry-semconv</artifactId>
557-
<version>1.37.0</version>
558-
</dependency>
559-
<!-- Legacy semconv (groupId io.opentelemetry): 1.23.1-alpha has top-level io.opentelemetry.semconv.SemanticAttributes required by sentry-opentelemetry-bootstrap at runtime -->
560-
<dependency>
561-
<groupId>io.opentelemetry</groupId>
562-
<artifactId>opentelemetry-semconv</artifactId>
563-
<version>1.23.1-alpha</version>
557+
<version>1.28.0-alpha</version>
564558
</dependency>
565559
<!-- OpenTelemetry SDK Metrics -->
566560
<dependency>

0 commit comments

Comments
 (0)