Skip to content

Commit 4fd5705

Browse files
authored
Merge pull request #51143 from brunobat/new-otel-senders
Bump OTel to 1.59.0 - Use `HttpSender` and `GrpcSender` from upstream OpenTelemetry API
2 parents 0bf2d0a + 29f609c commit 4fd5705

17 files changed

Lines changed: 154 additions & 95 deletions

File tree

bom/application/pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,8 @@
2929
<resteasy-microprofile.version>3.0.1.Final</resteasy-microprofile.version>
3030
<resteasy-spring-web.version>3.2.0.Final</resteasy-spring-web.version>
3131
<resteasy.version>6.2.15.Final</resteasy.version>
32-
<opentelemetry-instrumentation.version>2.23.0-alpha</opentelemetry-instrumentation.version> <!-- OTel SDk 1.55.0-->
33-
<opentelemetry-semconv.version>1.37.0-alpha</opentelemetry-semconv.version>
32+
<opentelemetry-instrumentation.version>2.25.0-alpha</opentelemetry-instrumentation.version> <!-- OTel SDk 1.59.0-->
33+
<opentelemetry-semconv.version>1.40.0-alpha</opentelemetry-semconv.version>
3434
<quarkus-http.version>5.4.0</quarkus-http.version>
3535
<micrometer.version>1.16.3</micrometer.version><!-- keep in sync with hdrhistogram: https://central.sonatype.com/artifact/io.micrometer/micrometer-core -->
3636
<hdrhistogram.version>2.2.2</hdrhistogram.version><!-- keep in sync with micrometer -->

extensions/opentelemetry/deployment/src/test/java/io/quarkus/opentelemetry/deployment/metrics/JvmMetricsTest.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,13 @@ void allMetrics() throws InterruptedException {
8585
allMetrics.add(new MetricToAssert("jvm.network.io", "Network read/write bytes.", "By", HISTOGRAM));
8686
allMetrics.add(new MetricToAssert("jvm.network.time", "Network read/write duration.", "s", HISTOGRAM));
8787
}
88+
// Recommended sdk metrics
89+
allMetrics.add(new MetricToAssert("otel.sdk.span.live",
90+
"The number of created spans with recording=true for which the end operation has not been called yet.",
91+
"{span}", LONG_SUM));
92+
allMetrics.add(new MetricToAssert("otel.sdk.span.started",
93+
"The number of created spans.",
94+
"{span}", LONG_SUM));
8895

8996
// Force GC to run
9097
System.gc();

extensions/opentelemetry/runtime/src/main/java/io/quarkus/opentelemetry/runtime/AutoConfiguredOpenTelemetrySdkBuilderCustomizer.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package io.quarkus.opentelemetry.runtime;
22

3-
import static io.opentelemetry.sdk.internal.ScopeConfiguratorBuilder.nameEquals;
3+
import static io.opentelemetry.sdk.common.internal.ScopeConfiguratorBuilder.nameEquals;
44
import static java.lang.Boolean.TRUE;
55
import static java.util.Collections.emptyList;
66

extensions/opentelemetry/runtime/src/main/java/io/quarkus/opentelemetry/runtime/exporter/otlp/OTelExporterRecorder.java

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package io.quarkus.opentelemetry.runtime.exporter.otlp;
22

3-
import static io.opentelemetry.sdk.internal.StandardComponentId.ExporterType.OTLP_GRPC_METRIC_EXPORTER;
3+
import static io.opentelemetry.sdk.common.internal.StandardComponentId.ExporterType.OTLP_GRPC_METRIC_EXPORTER;
44
import static io.quarkus.opentelemetry.runtime.config.runtime.exporter.OtlpExporterConfig.Protocol.GRPC;
55
import static io.quarkus.opentelemetry.runtime.config.runtime.exporter.OtlpExporterConfig.Protocol.HTTP_PROTOBUF;
66
import static io.quarkus.opentelemetry.runtime.config.runtime.exporter.OtlpExporterRuntimeConfig.DEFAULT_GRPC_BASE_URI;
@@ -22,14 +22,11 @@
2222
import io.opentelemetry.exporter.internal.ExporterBuilderUtil;
2323
import io.opentelemetry.exporter.internal.grpc.GrpcExporter;
2424
import io.opentelemetry.exporter.internal.http.HttpExporter;
25-
import io.opentelemetry.exporter.internal.otlp.logs.LogsRequestMarshaler;
26-
import io.opentelemetry.exporter.internal.otlp.metrics.MetricsRequestMarshaler;
27-
import io.opentelemetry.exporter.internal.otlp.traces.TraceRequestMarshaler;
2825
import io.opentelemetry.exporter.otlp.internal.OtlpUserAgent;
2926
import io.opentelemetry.sdk.autoconfigure.spi.ConfigurationException;
3027
import io.opentelemetry.sdk.common.InternalTelemetryVersion;
31-
import io.opentelemetry.sdk.internal.ComponentId;
32-
import io.opentelemetry.sdk.internal.StandardComponentId;
28+
import io.opentelemetry.sdk.common.internal.ComponentId;
29+
import io.opentelemetry.sdk.common.internal.StandardComponentId;
3330
import io.opentelemetry.sdk.logs.export.LogRecordExporter;
3431
import io.opentelemetry.sdk.metrics.Aggregation;
3532
import io.opentelemetry.sdk.metrics.InstrumentType;
@@ -166,7 +163,7 @@ private SpanExporter createOtlpGrpcSpanExporter(OtlpExporterRuntimeConfig export
166163

167164
OtlpExporterTracesConfig tracesConfig = exporterRuntimeConfig.traces();
168165

169-
return new VertxGrpcSpanExporter(new GrpcExporter<TraceRequestMarshaler>(
166+
return new VertxGrpcSpanExporter(new GrpcExporter(
170167
new VertxGrpcSender(
171168
baseUri,
172169
VertxGrpcSender.GRPC_TRACE_SERVICE_NAME,
@@ -178,7 +175,7 @@ private SpanExporter createOtlpGrpcSpanExporter(OtlpExporterRuntimeConfig export
178175
InternalTelemetryVersion.LATEST,
179176
ComponentId.generateLazy(StandardComponentId.ExporterType.OTLP_GRPC_SPAN_EXPORTER), // use the same as OTel does
180177
MeterProvider::noop,
181-
baseUri.toASCIIString()));
178+
baseUri));
182179
}
183180

184181
private SpanExporter createHttpSpanExporter(OtlpExporterRuntimeConfig exporterRuntimeConfig, Vertx vertx,
@@ -189,7 +186,7 @@ private SpanExporter createHttpSpanExporter(OtlpExporterRuntimeConfig exporterRu
189186

190187
boolean exportAsJson = false; //TODO: this will be enhanced in the future
191188

192-
return new VertxHttpSpanExporter(new HttpExporter<TraceRequestMarshaler>(
189+
return new VertxHttpSpanExporter(new HttpExporter(
193190
ComponentId.generateLazy(StandardComponentId.ExporterType.OTLP_HTTP_SPAN_EXPORTER),
194191
new VertxHttpSender(
195192
baseUri,
@@ -202,7 +199,8 @@ private SpanExporter createHttpSpanExporter(OtlpExporterRuntimeConfig exporterRu
202199
vertx),
203200
MeterProvider::noop,
204201
InternalTelemetryVersion.LATEST,
205-
baseUri.toASCIIString()));
202+
baseUri,
203+
false));
206204
}
207205
};
208206
}
@@ -233,7 +231,7 @@ public MetricExporter apply(SyntheticCreationalContext<MetricExporter> context)
233231
String protocol = metricsConfig.protocol().get();
234232
if (GRPC.equals(protocol)) {
235233
metricExporter = new VertxGrpcMetricExporter(
236-
new GrpcExporter<MetricsRequestMarshaler>(
234+
new GrpcExporter(
237235
new VertxGrpcSender(
238236
baseUri,
239237
VertxGrpcSender.GRPC_METRIC_SERVICE_NAME,
@@ -245,13 +243,13 @@ public MetricExporter apply(SyntheticCreationalContext<MetricExporter> context)
245243
InternalTelemetryVersion.LATEST,
246244
ComponentId.generateLazy(OTLP_GRPC_METRIC_EXPORTER), // use the same as OTel does
247245
MeterProvider::noop,
248-
baseUri.toASCIIString()),
246+
baseUri),
249247
aggregationTemporalityResolver(metricsConfig),
250248
aggregationResolver(metricsConfig));
251249
} else if (HTTP_PROTOBUF.equals(protocol)) {
252250
boolean exportAsJson = false; //TODO: this will be enhanced in the future
253251
metricExporter = new VertxHttpMetricsExporter(
254-
new HttpExporter<MetricsRequestMarshaler>(
252+
new HttpExporter(
255253
ComponentId.generateLazy(
256254
StandardComponentId.ExporterType.OTLP_HTTP_METRIC_EXPORTER),
257255
new VertxHttpSender(
@@ -265,7 +263,8 @@ public MetricExporter apply(SyntheticCreationalContext<MetricExporter> context)
265263
vertx.get()),
266264
MeterProvider::noop,
267265
InternalTelemetryVersion.LATEST,
268-
baseUri.toASCIIString()),
266+
baseUri,
267+
false),
269268
aggregationTemporalityResolver(metricsConfig),
270269
aggregationResolver(metricsConfig));
271270
} else {
@@ -307,7 +306,7 @@ public LogRecordExporter apply(SyntheticCreationalContext<LogRecordExporter> con
307306
String protocol = logsConfig.protocol().get();
308307
if (GRPC.equals(protocol)) {
309308
logRecordExporter = new VertxGrpcLogRecordExporter(
310-
new GrpcExporter<LogsRequestMarshaler>(
309+
new GrpcExporter(
311310
new VertxGrpcSender(
312311
baseUri,
313312
VertxGrpcSender.GRPC_LOG_SERVICE_NAME,
@@ -320,11 +319,11 @@ public LogRecordExporter apply(SyntheticCreationalContext<LogRecordExporter> con
320319
ComponentId.generateLazy(
321320
StandardComponentId.ExporterType.OTLP_GRPC_LOG_EXPORTER), // use the same as OTel does
322321
MeterProvider::noop,
323-
baseUri.toASCIIString()));
322+
baseUri));
324323
} else if (HTTP_PROTOBUF.equals(protocol)) {
325324
boolean exportAsJson = false; //TODO: this will be enhanced in the future
326325
logRecordExporter = new VertxHttpLogRecordExporter(
327-
new HttpExporter<LogsRequestMarshaler>(
326+
new HttpExporter(
328327
ComponentId.generateLazy(
329328
StandardComponentId.ExporterType.OTLP_HTTP_LOG_EXPORTER),
330329
new VertxHttpSender(
@@ -338,7 +337,8 @@ public LogRecordExporter apply(SyntheticCreationalContext<LogRecordExporter> con
338337
vertx.get()),
339338
MeterProvider::noop,
340339
InternalTelemetryVersion.LATEST,
341-
baseUri.toASCIIString()));
340+
baseUri,
341+
false));
342342
} else {
343343
throw new IllegalArgumentException(String.format("Unsupported OTLP protocol %s specified. " +
344344
"Please check `quarkus.otel.exporter.otlp.logs.protocol` property", protocol));

extensions/opentelemetry/runtime/src/main/java/io/quarkus/opentelemetry/runtime/exporter/otlp/logs/VertxGrpcLogRecordExporter.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,9 @@
99
import io.opentelemetry.sdk.logs.export.LogRecordExporter;
1010

1111
public class VertxGrpcLogRecordExporter implements LogRecordExporter {
12-
private final GrpcExporter<LogsRequestMarshaler> delegate;
12+
private final GrpcExporter delegate;
1313

14-
public VertxGrpcLogRecordExporter(GrpcExporter<LogsRequestMarshaler> delegate) {
14+
public VertxGrpcLogRecordExporter(GrpcExporter delegate) {
1515
this.delegate = delegate;
1616
}
1717

extensions/opentelemetry/runtime/src/main/java/io/quarkus/opentelemetry/runtime/exporter/otlp/logs/VertxHttpLogRecordExporter.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,9 @@
99
import io.opentelemetry.sdk.logs.export.LogRecordExporter;
1010

1111
public class VertxHttpLogRecordExporter implements LogRecordExporter {
12-
private final HttpExporter<LogsRequestMarshaler> delegate;
12+
private final HttpExporter delegate;
1313

14-
public VertxHttpLogRecordExporter(HttpExporter<LogsRequestMarshaler> delegate) {
14+
public VertxHttpLogRecordExporter(HttpExporter delegate) {
1515
this.delegate = delegate;
1616
}
1717

extensions/opentelemetry/runtime/src/main/java/io/quarkus/opentelemetry/runtime/exporter/otlp/metrics/VertxGrpcMetricExporter.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,11 @@
1616

1717
public class VertxGrpcMetricExporter implements MetricExporter {
1818

19-
private final GrpcExporter<MetricsRequestMarshaler> delegate;
19+
private final GrpcExporter delegate;
2020
private final AggregationTemporalitySelector aggregationTemporalitySelector;
2121
private final DefaultAggregationSelector defaultAggregationSelector;
2222

23-
public VertxGrpcMetricExporter(GrpcExporter<MetricsRequestMarshaler> grpcExporter,
23+
public VertxGrpcMetricExporter(GrpcExporter grpcExporter,
2424
AggregationTemporalitySelector aggregationTemporalitySelector,
2525
DefaultAggregationSelector defaultAggregationSelector) {
2626
this.delegate = grpcExporter;

extensions/opentelemetry/runtime/src/main/java/io/quarkus/opentelemetry/runtime/exporter/otlp/metrics/VertxHttpMetricsExporter.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,11 @@
1616

1717
public class VertxHttpMetricsExporter implements MetricExporter {
1818

19-
private final HttpExporter<MetricsRequestMarshaler> delegate;
19+
private final HttpExporter delegate;
2020
private final AggregationTemporalitySelector aggregationTemporalitySelector;
2121
private final DefaultAggregationSelector defaultAggregationSelector;
2222

23-
public VertxHttpMetricsExporter(HttpExporter<MetricsRequestMarshaler> delegate,
23+
public VertxHttpMetricsExporter(HttpExporter delegate,
2424
AggregationTemporalitySelector aggregationTemporalitySelector,
2525
DefaultAggregationSelector defaultAggregationSelector) {
2626
this.delegate = delegate;

0 commit comments

Comments
 (0)