Skip to content
Merged
Show file tree
Hide file tree
Changes from all 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
16 changes: 8 additions & 8 deletions distribution/server/src/assemble/LICENSE.bin.txt
Original file line number Diff line number Diff line change
Expand Up @@ -528,13 +528,13 @@ The Apache Software License, Version 2.0
- org.roaringbitmap-RoaringBitmap-1.6.9.jar
* OpenTelemetry
- io.opentelemetry-opentelemetry-api-1.62.0.jar
- io.opentelemetry-opentelemetry-api-incubator-1.61.0-alpha.jar
- io.opentelemetry-opentelemetry-api-incubator-1.62.0-alpha.jar
- io.opentelemetry-opentelemetry-common-1.62.0.jar
- io.opentelemetry-opentelemetry-context-1.62.0.jar
- io.opentelemetry-opentelemetry-exporter-common-1.62.0.jar
- io.opentelemetry-opentelemetry-exporter-otlp-1.62.0.jar
- io.opentelemetry-opentelemetry-exporter-otlp-common-1.62.0.jar
- io.opentelemetry-opentelemetry-exporter-prometheus-1.61.0-alpha.jar
- io.opentelemetry-opentelemetry-exporter-prometheus-1.62.0-alpha.jar
- io.opentelemetry-opentelemetry-exporter-sender-okhttp-1.62.0.jar
- io.opentelemetry-opentelemetry-sdk-1.62.0.jar
- io.opentelemetry-opentelemetry-sdk-common-1.62.0.jar
Expand All @@ -543,13 +543,13 @@ The Apache Software License, Version 2.0
- io.opentelemetry-opentelemetry-sdk-logs-1.62.0.jar
- io.opentelemetry-opentelemetry-sdk-metrics-1.62.0.jar
- io.opentelemetry-opentelemetry-sdk-trace-1.62.0.jar
- io.opentelemetry.instrumentation-opentelemetry-instrumentation-api-2.27.0.jar
- io.opentelemetry.instrumentation-opentelemetry-instrumentation-api-incubator-2.27.0-alpha.jar
- io.opentelemetry.instrumentation-opentelemetry-resources-2.27.0-alpha.jar
- io.opentelemetry.instrumentation-opentelemetry-runtime-telemetry-2.27.0-alpha.jar
- io.opentelemetry.semconv-opentelemetry-semconv-1.41.0.jar
- io.opentelemetry.instrumentation-opentelemetry-instrumentation-api-2.28.1.jar
- io.opentelemetry.instrumentation-opentelemetry-instrumentation-api-incubator-2.28.1-alpha.jar
- io.opentelemetry.instrumentation-opentelemetry-resources-2.28.1-alpha.jar
- io.opentelemetry.instrumentation-opentelemetry-runtime-telemetry-2.28.1-alpha.jar
- io.opentelemetry.semconv-opentelemetry-semconv-1.41.1.jar
- com.google.cloud.opentelemetry-detector-resources-support-0.36.0.jar
- io.opentelemetry.contrib-opentelemetry-gcp-resources-1.48.0-alpha.jar
- io.opentelemetry.contrib-opentelemetry-gcp-resources-1.57.0-alpha.jar
* Spotify completable-futures
- com.spotify-completable-futures-0.3.6.jar
* JSpecify
Expand Down
2 changes: 1 addition & 1 deletion distribution/shell/src/assemble/LICENSE.bin.txt
Original file line number Diff line number Diff line change
Expand Up @@ -388,7 +388,7 @@ The Apache Software License, Version 2.0
- log4j-web-2.25.4.jar
* OpenTelemetry
- opentelemetry-api-1.62.0.jar
- opentelemetry-api-incubator-1.61.0-alpha.jar
- opentelemetry-api-incubator-1.62.0-alpha.jar
- opentelemetry-common-1.62.0.jar
- opentelemetry-context-1.62.0.jar
* Slog
Expand Down
10 changes: 5 additions & 5 deletions gradle/libs.versions.toml
Original file line number Diff line number Diff line change
Expand Up @@ -39,10 +39,10 @@ log4j2 = "2.25.4"
lombok = "1.18.42"
# OpenTelemetry
opentelemetry = "1.62.0"
opentelemetry-alpha = "1.61.0-alpha"
opentelemetry-instrumentation = "2.27.0"
opentelemetry-instrumentation-alpha = "2.27.0-alpha"
opentelemetry-semconv = "1.41.0"
opentelemetry-alpha = "1.62.0-alpha"
opentelemetry-instrumentation = "2.28.1"
opentelemetry-instrumentation-alpha = "2.28.1-alpha"
opentelemetry-semconv = "1.41.1"
# Apache Commons
commons-lang3 = "3.20.0"
commons-io = "2.21.0"
Expand Down Expand Up @@ -79,7 +79,7 @@ google-auth = "1.24.1"
google-http-client = "1.41.0"
j2objc-annotations = "1.3"
opencensus = "0.28.0"
opentelemetry-gcp-resources = "1.48.0-alpha"
opentelemetry-gcp-resources = "1.57.0-alpha"
# Data structures / Utils
guava = "33.4.8-jre"
caffeine = "3.2.4"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@
public class OpenTelemetryService implements Closeable {

public static final String OTEL_SDK_DISABLED_KEY = "otel.sdk.disabled";
static final String OTEL_EXPORTER_PROMETHEUS_HOST_KEY = "otel.exporter.prometheus.host";
static final int MAX_CARDINALITY_LIMIT = 10000;

private final AtomicReference<OpenTelemetrySdk> openTelemetrySdkReference = new AtomicReference<>();
Expand Down Expand Up @@ -79,7 +80,13 @@ public OpenTelemetryService(String clusterName,
// Cardinality limit includes the overflow attribute set, so we need to add 1.
"otel.java.metrics.cardinality.limit", Integer.toString(MAX_CARDINALITY_LIMIT + 1),
// Reduce number of allocations by using reusable data mode.
"otel.java.exporter.memory_mode", MemoryMode.REUSABLE_DATA.name()
"otel.java.exporter.memory_mode", MemoryMode.REUSABLE_DATA.name(),
// Preserve the pre-OpenTelemetry-1.62.0 behavior of binding the Prometheus exporter's HTTP server
// to all interfaces. OpenTelemetry 1.62.0 changed the default host from "0.0.0.0" to "localhost",
// which makes the metrics endpoint unreachable from outside the host (e.g. another container or a
// remote Prometheus scraper). Supplied as a default, so it is still overridden by an explicit
// OTEL_EXPORTER_PROMETHEUS_HOST environment variable / otel.exporter.prometheus.host system property.
OTEL_EXPORTER_PROMETHEUS_HOST_KEY, "0.0.0.0"
));

sdkBuilder.addResourceCustomizer(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@
import java.util.Map;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicReference;
import java.util.function.Consumer;
import lombok.Cleanup;
import org.apache.commons.lang3.StringUtils;
Expand Down Expand Up @@ -153,6 +154,26 @@ public void testMetricCardinalityIsSet() {
});
}

@Test
public void testPrometheusExporterDefaultsToAllInterfacesHost() {
// OpenTelemetry 1.62.0 changed the Prometheus exporter's default server host from "0.0.0.0" to "localhost".
// Pulsar restores the previous "0.0.0.0" default so the metrics endpoint stays reachable from outside the
// local host (e.g. another container or a remote Prometheus scraper). The default must remain overridable
// via the standard OTEL_EXPORTER_PROMETHEUS_HOST / otel.exporter.prometheus.host configuration.
var capturedHost = new AtomicReference<String>();
@Cleanup
var ots = OpenTelemetryService.builder()
.builderCustomizer(getBuilderCustomizer(null,
Map.of(OpenTelemetryService.OTEL_SDK_DISABLED_KEY, "false"))
.andThen(builder -> builder.addPropertiesCustomizer(config -> {
capturedHost.set(config.getString(OpenTelemetryService.OTEL_EXPORTER_PROMETHEUS_HOST_KEY));
return Map.of();
})))
.clusterName("openTelemetryServicePrometheusHostTestCluster")
.build();
assertThat(capturedHost.get()).isEqualTo("0.0.0.0");
}

@Test
public void testLongCounter() {
var longCounter = meter.counterBuilder("dummyLongCounter").build();
Expand Down
Loading