Skip to content

Commit

Permalink
re-use sdk logic for configuring otlp exporters (#10292)
Browse files Browse the repository at this point in the history
Co-authored-by: Trask Stalnaker <trask.stalnaker@gmail.com>
  • Loading branch information
zeitlinger and trask committed Feb 6, 2024
1 parent d4435c9 commit f715a18
Show file tree
Hide file tree
Showing 22 changed files with 599 additions and 623 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,13 @@
import io.opentelemetry.api.OpenTelemetry;
import io.opentelemetry.api.trace.TracerProvider;
import io.opentelemetry.context.propagation.ContextPropagators;
import io.opentelemetry.instrumentation.spring.autoconfigure.exporters.otlp.OtlpLoggerExporterAutoConfiguration;
import io.opentelemetry.instrumentation.spring.autoconfigure.exporters.otlp.OtlpExporterProperties;
import io.opentelemetry.instrumentation.spring.autoconfigure.exporters.otlp.OtlpLogRecordExporterAutoConfiguration;
import io.opentelemetry.instrumentation.spring.autoconfigure.exporters.otlp.OtlpMetricExporterAutoConfiguration;
import io.opentelemetry.instrumentation.spring.autoconfigure.exporters.otlp.OtlpSpanExporterAutoConfiguration;
import io.opentelemetry.instrumentation.spring.autoconfigure.internal.MapConverter;
import io.opentelemetry.instrumentation.spring.autoconfigure.resources.OtelResourceAutoConfiguration;
import io.opentelemetry.instrumentation.spring.autoconfigure.resources.SpringResourceConfigProperties;
import io.opentelemetry.instrumentation.spring.autoconfigure.resources.SpringConfigProperties;
import io.opentelemetry.sdk.OpenTelemetrySdk;
import io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties;
import io.opentelemetry.sdk.autoconfigure.spi.ResourceProvider;
Expand Down Expand Up @@ -55,7 +56,11 @@
* <p>Updates the sampler probability for the configured {@link TracerProvider}.
*/
@Configuration
@EnableConfigurationProperties({MetricExportProperties.class, SamplerProperties.class})
@EnableConfigurationProperties({
MetricExportProperties.class,
SamplerProperties.class,
OtlpExporterProperties.class
})
public class OpenTelemetryAutoConfiguration {

public OpenTelemetryAutoConfiguration() {}
Expand All @@ -81,7 +86,7 @@ public MapConverterCondition() {
@ConditionalOnBean(OtelResourceAutoConfiguration.class)
static class Resource {}

@ConditionalOnBean(OtlpLoggerExporterAutoConfiguration.class)
@ConditionalOnBean(OtlpLogRecordExporterAutoConfiguration.class)
static class Logger {}

@ConditionalOnBean(OtlpSpanExporterAutoConfiguration.class)
Expand All @@ -91,6 +96,13 @@ static class Span {}
static class Metric {}
}

@Bean
@ConditionalOnMissingBean
ConfigProperties configProperties(
Environment env, OtlpExporterProperties otlpExporterProperties) {
return new SpringConfigProperties(env, new SpelExpressionParser(), otlpExporterProperties);
}

@Bean(destroyMethod = "") // SDK components are shutdown from the OpenTelemetry instance
@ConditionalOnMissingBean
public SdkTracerProvider sdkTracerProvider(
Expand Down Expand Up @@ -156,8 +168,7 @@ private static PeriodicMetricReader createPeriodicMetricReader(
@Bean
@ConditionalOnMissingBean
public Resource otelResource(
Environment env, ObjectProvider<List<ResourceProvider>> resourceProviders) {
ConfigProperties config = new SpringResourceConfigProperties(env, new SpelExpressionParser());
ConfigProperties config, ObjectProvider<List<ResourceProvider>> resourceProviders) {
Resource resource = Resource.getDefault();
for (ResourceProvider resourceProvider :
resourceProviders.getIfAvailable(Collections::emptyList)) {
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -11,15 +11,13 @@
import org.springframework.boot.autoconfigure.AutoConfigureBefore;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Condition;
import org.springframework.context.annotation.Conditional;
import org.springframework.context.annotation.Configuration;

/** Configures {@link LoggingMetricExporter} bean for tracing. */
@Configuration
@EnableConfigurationProperties(LoggingExporterProperties.class)
@AutoConfigureBefore(OpenTelemetryAutoConfiguration.class)
@Conditional(LoggingMetricExporterAutoConfiguration.CustomCondition.class)
@ConditionalOnClass(LoggingMetricExporter.class)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,15 +11,13 @@
import org.springframework.boot.autoconfigure.AutoConfigureBefore;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Condition;
import org.springframework.context.annotation.Conditional;
import org.springframework.context.annotation.Configuration;

/** Configures {@link LoggingSpanExporter} bean for tracing. */
@Configuration
@EnableConfigurationProperties(LoggingExporterProperties.class)
@AutoConfigureBefore(OpenTelemetryAutoConfiguration.class)
@Conditional(LoggingSpanExporterAutoConfiguration.CustomCondition.class)
@ConditionalOnClass(LoggingSpanExporter.class)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,76 +5,24 @@

package io.opentelemetry.instrumentation.spring.autoconfigure.exporters.otlp;

import java.time.Duration;
import java.util.HashMap;
import java.util.Map;
import javax.annotation.Nullable;
import org.springframework.boot.context.properties.ConfigurationProperties;

/**
* Configuration for {@link io.opentelemetry.exporter.otlp.trace.OtlpGrpcSpanExporter} and {@link
* io.opentelemetry.exporter.otlp.metrics.OtlpGrpcMetricExporter}.
*
* <p>Get Exporter Service Name
*
* <p>Get Exporter Endpoint
*
* <p>Get max wait time for Collector to process Span Batches
*/
/** Configuration for OLTP exporters. */
@ConfigurationProperties(prefix = "otel.exporter.otlp")
public final class OtlpExporterProperties {

private boolean enabled = true;
@Nullable private String endpoint;

@Nullable private String protocol;

private final Map<String, String> headers = new HashMap<>();

@Nullable private Duration timeout;
private final SignalProperties traces = new SignalProperties();
private final SignalProperties metrics = new SignalProperties();
private final SignalProperties logs = new SignalProperties();

public boolean isEnabled() {
return enabled;
}

public void setEnabled(boolean enabled) {
this.enabled = enabled;
}

@Nullable
public String getEndpoint() {
return endpoint;
}

public void setEndpoint(String endpoint) {
this.endpoint = endpoint;
}

@Nullable
public String getProtocol() {
return protocol;
}

public void setProtocol(@Nullable String protocol) {
this.protocol = protocol;
}

public Map<String, String> getHeaders() {
return headers;
}

@Nullable
public Duration getTimeout() {
return timeout;
}

public void setTimeout(Duration timeout) {
this.timeout = timeout;
}

public SignalProperties getTraces() {
return traces;
}
Expand All @@ -88,53 +36,10 @@ public SignalProperties getLogs() {
}

public static class SignalProperties {

private boolean enabled = true;
@Nullable private String endpoint;

@Nullable private String protocol;

private final Map<String, String> headers = new HashMap<>();

@Nullable private Duration timeout;

public boolean isEnabled() {
return enabled;
}

public void setEnabled(boolean enabled) {
this.enabled = enabled;
}

@Nullable
public String getEndpoint() {
return endpoint;
}

public void setEndpoint(@Nullable String endpoint) {
this.endpoint = endpoint;
}

@Nullable
public String getProtocol() {
return protocol;
}

public void setProtocol(@Nullable String protocol) {
this.protocol = protocol;
}

public Map<String, String> getHeaders() {
return headers;
}

@Nullable
public Duration getTimeout() {
return timeout;
}

public void setTimeout(@Nullable Duration timeout) {
this.timeout = timeout;
}
}
}

This file was deleted.

0 comments on commit f715a18

Please sign in to comment.