diff --git a/extensions/opentelemetry/runtime/src/main/java/io/quarkus/opentelemetry/runtime/exporter/otlp/OTelExporterRecorder.java b/extensions/opentelemetry/runtime/src/main/java/io/quarkus/opentelemetry/runtime/exporter/otlp/OTelExporterRecorder.java index 57cd1f9d2253e..14e56773cdc51 100644 --- a/extensions/opentelemetry/runtime/src/main/java/io/quarkus/opentelemetry/runtime/exporter/otlp/OTelExporterRecorder.java +++ b/extensions/opentelemetry/runtime/src/main/java/io/quarkus/opentelemetry/runtime/exporter/otlp/OTelExporterRecorder.java @@ -262,7 +262,7 @@ public MetricExporter apply(SyntheticCreationalContext context) public Function, LogRecordExporter> createLogRecordExporter( OTelRuntimeConfig otelRuntimeConfig, OtlpExporterRuntimeConfig exporterRuntimeConfig, Supplier vertx) { - final URI baseUri = getMetricsUri(exporterRuntimeConfig); + final URI baseUri = getLogsUri(exporterRuntimeConfig); return new Function<>() { @Override @@ -398,7 +398,15 @@ private URI getTracesUri(OtlpExporterRuntimeConfig exporterRuntimeConfig) { } private URI getMetricsUri(OtlpExporterRuntimeConfig exporterRuntimeConfig) { - String endpoint = resolveTraceEndpoint(exporterRuntimeConfig); + String endpoint = resolveMetricEndpoint(exporterRuntimeConfig); + if (endpoint.isEmpty()) { + return null; + } + return ExporterBuilderUtil.validateEndpoint(endpoint); + } + + private URI getLogsUri(OtlpExporterRuntimeConfig exporterRuntimeConfig) { + String endpoint = resolveLogsEndpoint(exporterRuntimeConfig); if (endpoint.isEmpty()) { return null; } @@ -423,6 +431,15 @@ static String resolveMetricEndpoint(final OtlpExporterRuntimeConfig runtimeConfi return endpoint.trim(); } + static String resolveLogsEndpoint(final OtlpExporterRuntimeConfig runtimeConfig) { + String endpoint = runtimeConfig.logs().endpoint() + .filter(OTelExporterRecorder::excludeDefaultEndpoint) + .orElse(runtimeConfig.endpoint() + .filter(OTelExporterRecorder::excludeDefaultEndpoint) + .orElse(DEFAULT_GRPC_BASE_URI)); + return endpoint.trim(); + } + private static boolean excludeDefaultEndpoint(String endpoint) { return !DEFAULT_GRPC_BASE_URI.equals(endpoint); } diff --git a/extensions/opentelemetry/runtime/src/test/java/io/quarkus/opentelemetry/runtime/exporter/otlp/OtlpExporterProviderTest.java b/extensions/opentelemetry/runtime/src/test/java/io/quarkus/opentelemetry/runtime/exporter/otlp/OtlpExporterProviderTest.java index ee4318a61accc..8941e4aa22697 100644 --- a/extensions/opentelemetry/runtime/src/test/java/io/quarkus/opentelemetry/runtime/exporter/otlp/OtlpExporterProviderTest.java +++ b/extensions/opentelemetry/runtime/src/test/java/io/quarkus/opentelemetry/runtime/exporter/otlp/OtlpExporterProviderTest.java @@ -94,6 +94,46 @@ public void resolveMetricEndpoint_testIsSet() { null))); } + @Test + public void resolveLogsEndpoint_newWins() { + assertEquals("http://localhost:2222/", + OTelExporterRecorder.resolveLogsEndpoint(createOtlpExporterRuntimeConfig( + "http://localhost:1111/", + "http://localhost:2222/"))); + } + + @Test + public void resolveLogsEndpoint_globalWins() { + assertEquals("http://localhost:1111/", + OTelExporterRecorder.resolveLogsEndpoint(createOtlpExporterRuntimeConfig( + "http://localhost:1111/", + DEFAULT_GRPC_BASE_URI))); + } + + @Test + public void resolveLogsEndpoint_legacyTraceWins() { + assertEquals("http://localhost:2222/", + OTelExporterRecorder.resolveLogsEndpoint(createOtlpExporterRuntimeConfig( + DEFAULT_GRPC_BASE_URI, + "http://localhost:2222/"))); + } + + @Test + public void resolveLogsEndpoint_legacyGlobalWins() { + assertEquals(DEFAULT_GRPC_BASE_URI, + OTelExporterRecorder.resolveLogsEndpoint(createOtlpExporterRuntimeConfig( + DEFAULT_GRPC_BASE_URI, + null))); + } + + @Test + public void resolveLogsEndpoint_testIsSet() { + assertEquals(DEFAULT_GRPC_BASE_URI, + OTelExporterRecorder.resolveLogsEndpoint(createOtlpExporterRuntimeConfig( + null, + null))); + } + private OtlpExporterRuntimeConfig createOtlpExporterRuntimeConfig(String exporterGlobal, String newTrace) { return new OtlpExporterRuntimeConfig() { @Override