Skip to content
Open
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
Original file line number Diff line number Diff line change
Expand Up @@ -10,20 +10,25 @@
import static io.opentelemetry.exporter.otlp.internal.OtlpConfigUtil.readFileBytes;
import static io.opentelemetry.exporter.otlp.internal.OtlpConfigUtil.validateEndpoint;

import io.opentelemetry.api.incubator.config.ConfigProvider;
import io.opentelemetry.api.incubator.config.DeclarativeConfigException;
import io.opentelemetry.api.incubator.config.DeclarativeConfigProperties;
import io.opentelemetry.common.ComponentLoader;
import io.opentelemetry.exporter.internal.IncubatingExporterBuilderUtil;
import io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties;
import io.opentelemetry.sdk.autoconfigure.spi.ConfigurationException;
import io.opentelemetry.sdk.autoconfigure.spi.internal.DefaultConfigProperties;
import io.opentelemetry.sdk.common.InternalTelemetryVersion;
import io.opentelemetry.sdk.common.export.MemoryMode;
import io.opentelemetry.sdk.common.export.RetryPolicy;
import java.net.URL;
import java.time.Duration;
import java.util.Collections;
import java.util.List;
import java.util.Locale;
import java.util.function.BiConsumer;
import java.util.function.Consumer;
import javax.annotation.Nullable;

/**
* This class is internal and is hence not for public use. Its APIs are unstable and can change at
Expand All @@ -48,6 +53,7 @@ public static String getStructuredConfigOtlpProtocol(DeclarativeConfigProperties
public static void configureOtlpExporterBuilder(
String dataType,
DeclarativeConfigProperties config,
ConfigProvider configProvider,
Consumer<ComponentLoader> setComponentLoader,
Consumer<String> setEndpoint,
BiConsumer<String, String> addHeader,
Expand All @@ -57,7 +63,9 @@ public static void configureOtlpExporterBuilder(
BiConsumer<byte[], byte[]> setClientTls,
Consumer<RetryPolicy> setRetryPolicy,
Consumer<MemoryMode> setMemoryMode,
boolean isHttpProtobuf) {
boolean isHttpProtobuf,
Consumer<InternalTelemetryVersion> internalTelemetryVersionConsumer,
Runnable setNoopMeterProvider) {
setComponentLoader.accept(config.getComponentLoader());

URL endpoint = validateEndpoint(config.getString("endpoint"), isHttpProtobuf);
Expand Down Expand Up @@ -119,6 +127,34 @@ public static void configureOtlpExporterBuilder(
}

IncubatingExporterBuilderUtil.configureExporterMemoryMode(config, setMemoryMode);

// InternalTelemetryVersion defaults to disabled (i.e. null) until semantic conventions are
// stable. To disable, set a noop meter provider.
InternalTelemetryVersion telemetryVersion = getInternalTelemetryVersion(configProvider);
if (telemetryVersion == null) {
setNoopMeterProvider.run();
} else {
internalTelemetryVersionConsumer.accept(telemetryVersion);
}
}

@Nullable
private static InternalTelemetryVersion getInternalTelemetryVersion(
ConfigProvider configProvider) {
String internalTelemetryVersion =
configProvider.getInstrumentationConfig("otel_sdk").getString("internal_telemetry_version");
if (internalTelemetryVersion == null) {
return null;
}
switch (internalTelemetryVersion.toLowerCase(Locale.ROOT)) {
case "legacy":
return InternalTelemetryVersion.LEGACY;
case "latest":
return InternalTelemetryVersion.LATEST;
default:
throw new DeclarativeConfigException(
"Invalid sdk telemetry version: " + internalTelemetryVersion);
}
}

private OtlpDeclarativeConfigUtil() {}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,12 @@

import static io.opentelemetry.exporter.otlp.internal.OtlpConfigUtil.DATA_TYPE_LOGS;

import io.opentelemetry.api.incubator.config.ConfigProvider;
import io.opentelemetry.api.incubator.config.DeclarativeConfigProperties;
import io.opentelemetry.api.metrics.MeterProvider;
import io.opentelemetry.exporter.otlp.logs.OtlpGrpcLogRecordExporter;
import io.opentelemetry.exporter.otlp.logs.OtlpGrpcLogRecordExporterBuilder;
import io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider;
import io.opentelemetry.sdk.autoconfigure.spi.internal.ExtendedComponentProvider;
import io.opentelemetry.sdk.logs.export.LogRecordExporter;

/**
Expand All @@ -19,7 +21,7 @@
* <p>This class is internal and is hence not for public use. Its APIs are unstable and can change
* at any time.
*/
public class OtlpGrpcLogRecordExporterComponentProvider implements ComponentProvider {
public class OtlpGrpcLogRecordExporterComponentProvider implements ExtendedComponentProvider {

@Override
public Class<LogRecordExporter> getType() {
Expand All @@ -32,12 +34,14 @@ public String getName() {
}

@Override
public LogRecordExporter create(DeclarativeConfigProperties config) {
public LogRecordExporter create(
DeclarativeConfigProperties config, ConfigProvider configProvider) {
OtlpGrpcLogRecordExporterBuilder builder = grpcBuilder();

OtlpDeclarativeConfigUtil.configureOtlpExporterBuilder(
DATA_TYPE_LOGS,
config,
configProvider,
builder::setComponentLoader,
builder::setEndpoint,
builder::addHeader,
Expand All @@ -47,7 +51,9 @@ public LogRecordExporter create(DeclarativeConfigProperties config) {
builder::setClientTls,
builder::setRetryPolicy,
builder::setMemoryMode,
/* isHttpProtobuf= */ false);
/* isHttpProtobuf= */ false,
builder::setInternalTelemetryVersion,
() -> builder.setMeterProvider(MeterProvider::noop));

return builder.build();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,13 @@

import static io.opentelemetry.exporter.otlp.internal.OtlpConfigUtil.DATA_TYPE_METRICS;

import io.opentelemetry.api.incubator.config.ConfigProvider;
import io.opentelemetry.api.incubator.config.DeclarativeConfigProperties;
import io.opentelemetry.api.metrics.MeterProvider;
import io.opentelemetry.exporter.internal.IncubatingExporterBuilderUtil;
import io.opentelemetry.exporter.otlp.metrics.OtlpGrpcMetricExporter;
import io.opentelemetry.exporter.otlp.metrics.OtlpGrpcMetricExporterBuilder;
import io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider;
import io.opentelemetry.sdk.autoconfigure.spi.internal.ExtendedComponentProvider;
import io.opentelemetry.sdk.metrics.export.MetricExporter;

/**
Expand All @@ -20,7 +22,7 @@
* <p>This class is internal and is hence not for public use. Its APIs are unstable and can change
* at any time.
*/
public class OtlpGrpcMetricExporterComponentProvider implements ComponentProvider {
public class OtlpGrpcMetricExporterComponentProvider implements ExtendedComponentProvider {

@Override
public Class<MetricExporter> getType() {
Expand All @@ -33,12 +35,13 @@ public String getName() {
}

@Override
public MetricExporter create(DeclarativeConfigProperties config) {
public MetricExporter create(DeclarativeConfigProperties config, ConfigProvider configProvider) {
OtlpGrpcMetricExporterBuilder builder = grpcBuilder();

OtlpDeclarativeConfigUtil.configureOtlpExporterBuilder(
DATA_TYPE_METRICS,
config,
configProvider,
builder::setComponentLoader,
builder::setEndpoint,
builder::addHeader,
Expand All @@ -48,7 +51,9 @@ public MetricExporter create(DeclarativeConfigProperties config) {
builder::setClientTls,
builder::setRetryPolicy,
builder::setMemoryMode,
/* isHttpProtobuf= */ false);
/* isHttpProtobuf= */ false,
builder::setInternalTelemetryVersion,
() -> builder.setMeterProvider(MeterProvider::noop));
IncubatingExporterBuilderUtil.configureOtlpAggregationTemporality(
config, builder::setAggregationTemporalitySelector);
IncubatingExporterBuilderUtil.configureOtlpHistogramDefaultAggregation(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,12 @@

import static io.opentelemetry.exporter.otlp.internal.OtlpConfigUtil.DATA_TYPE_TRACES;

import io.opentelemetry.api.incubator.config.ConfigProvider;
import io.opentelemetry.api.incubator.config.DeclarativeConfigProperties;
import io.opentelemetry.api.metrics.MeterProvider;
import io.opentelemetry.exporter.otlp.trace.OtlpGrpcSpanExporter;
import io.opentelemetry.exporter.otlp.trace.OtlpGrpcSpanExporterBuilder;
import io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider;
import io.opentelemetry.sdk.autoconfigure.spi.internal.ExtendedComponentProvider;
import io.opentelemetry.sdk.trace.export.SpanExporter;

/**
Expand All @@ -19,7 +21,7 @@
* <p>This class is internal and is hence not for public use. Its APIs are unstable and can change
* at any time.
*/
public class OtlpGrpcSpanExporterComponentProvider implements ComponentProvider {
public class OtlpGrpcSpanExporterComponentProvider implements ExtendedComponentProvider {

@Override
public Class<SpanExporter> getType() {
Expand All @@ -32,12 +34,13 @@ public String getName() {
}

@Override
public SpanExporter create(DeclarativeConfigProperties config) {
public SpanExporter create(DeclarativeConfigProperties config, ConfigProvider configProvider) {
OtlpGrpcSpanExporterBuilder builder = grpcBuilder();

OtlpDeclarativeConfigUtil.configureOtlpExporterBuilder(
DATA_TYPE_TRACES,
config,
configProvider,
builder::setComponentLoader,
builder::setEndpoint,
builder::addHeader,
Expand All @@ -47,7 +50,9 @@ public SpanExporter create(DeclarativeConfigProperties config) {
builder::setClientTls,
builder::setRetryPolicy,
builder::setMemoryMode,
/* isHttpProtobuf= */ false);
/* isHttpProtobuf= */ false,
builder::setInternalTelemetryVersion,
() -> builder.setMeterProvider(MeterProvider::noop));

return builder.build();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,12 @@

import static io.opentelemetry.exporter.otlp.internal.OtlpConfigUtil.DATA_TYPE_LOGS;

import io.opentelemetry.api.incubator.config.ConfigProvider;
import io.opentelemetry.api.incubator.config.DeclarativeConfigProperties;
import io.opentelemetry.api.metrics.MeterProvider;
import io.opentelemetry.exporter.otlp.http.logs.OtlpHttpLogRecordExporter;
import io.opentelemetry.exporter.otlp.http.logs.OtlpHttpLogRecordExporterBuilder;
import io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider;
import io.opentelemetry.sdk.autoconfigure.spi.internal.ExtendedComponentProvider;
import io.opentelemetry.sdk.logs.export.LogRecordExporter;

/**
Expand All @@ -19,7 +21,7 @@
* <p>This class is internal and is hence not for public use. Its APIs are unstable and can change
* at any time.
*/
public class OtlpHttpLogRecordExporterComponentProvider implements ComponentProvider {
public class OtlpHttpLogRecordExporterComponentProvider implements ExtendedComponentProvider {

@Override
public Class<LogRecordExporter> getType() {
Expand All @@ -32,12 +34,14 @@ public String getName() {
}

@Override
public LogRecordExporter create(DeclarativeConfigProperties config) {
public LogRecordExporter create(
DeclarativeConfigProperties config, ConfigProvider configProvider) {
OtlpHttpLogRecordExporterBuilder builder = httpBuilder();

OtlpDeclarativeConfigUtil.configureOtlpExporterBuilder(
DATA_TYPE_LOGS,
config,
configProvider,
builder::setComponentLoader,
builder::setEndpoint,
builder::addHeader,
Expand All @@ -47,7 +51,9 @@ public LogRecordExporter create(DeclarativeConfigProperties config) {
builder::setClientTls,
builder::setRetryPolicy,
builder::setMemoryMode,
/* isHttpProtobuf= */ true);
/* isHttpProtobuf= */ true,
builder::setInternalTelemetryVersion,
() -> builder.setMeterProvider(MeterProvider::noop));

return builder.build();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,13 @@

import static io.opentelemetry.exporter.otlp.internal.OtlpConfigUtil.DATA_TYPE_METRICS;

import io.opentelemetry.api.incubator.config.ConfigProvider;
import io.opentelemetry.api.incubator.config.DeclarativeConfigProperties;
import io.opentelemetry.api.metrics.MeterProvider;
import io.opentelemetry.exporter.internal.IncubatingExporterBuilderUtil;
import io.opentelemetry.exporter.otlp.http.metrics.OtlpHttpMetricExporter;
import io.opentelemetry.exporter.otlp.http.metrics.OtlpHttpMetricExporterBuilder;
import io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider;
import io.opentelemetry.sdk.autoconfigure.spi.internal.ExtendedComponentProvider;
import io.opentelemetry.sdk.metrics.export.MetricExporter;

/**
Expand All @@ -20,7 +22,7 @@
* <p>This class is internal and is hence not for public use. Its APIs are unstable and can change
* at any time.
*/
public class OtlpHttpMetricExporterComponentProvider implements ComponentProvider {
public class OtlpHttpMetricExporterComponentProvider implements ExtendedComponentProvider {

@Override
public Class<MetricExporter> getType() {
Expand All @@ -33,12 +35,13 @@ public String getName() {
}

@Override
public MetricExporter create(DeclarativeConfigProperties config) {
public MetricExporter create(DeclarativeConfigProperties config, ConfigProvider configProvider) {
OtlpHttpMetricExporterBuilder builder = httpBuilder();

OtlpDeclarativeConfigUtil.configureOtlpExporterBuilder(
DATA_TYPE_METRICS,
config,
configProvider,
builder::setComponentLoader,
builder::setEndpoint,
builder::addHeader,
Expand All @@ -48,7 +51,9 @@ public MetricExporter create(DeclarativeConfigProperties config) {
builder::setClientTls,
builder::setRetryPolicy,
builder::setMemoryMode,
/* isHttpProtobuf= */ true);
/* isHttpProtobuf= */ true,
builder::setInternalTelemetryVersion,
() -> builder.setMeterProvider(MeterProvider::noop));
IncubatingExporterBuilderUtil.configureOtlpAggregationTemporality(
config, builder::setAggregationTemporalitySelector);
IncubatingExporterBuilderUtil.configureOtlpHistogramDefaultAggregation(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,12 @@

import static io.opentelemetry.exporter.otlp.internal.OtlpConfigUtil.DATA_TYPE_TRACES;

import io.opentelemetry.api.incubator.config.ConfigProvider;
import io.opentelemetry.api.incubator.config.DeclarativeConfigProperties;
import io.opentelemetry.api.metrics.MeterProvider;
import io.opentelemetry.exporter.otlp.http.trace.OtlpHttpSpanExporter;
import io.opentelemetry.exporter.otlp.http.trace.OtlpHttpSpanExporterBuilder;
import io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider;
import io.opentelemetry.sdk.autoconfigure.spi.internal.ExtendedComponentProvider;
import io.opentelemetry.sdk.trace.export.SpanExporter;

/**
Expand All @@ -19,7 +21,7 @@
* <p>This class is internal and is hence not for public use. Its APIs are unstable and can change
* at any time.
*/
public class OtlpHttpSpanExporterComponentProvider implements ComponentProvider {
public class OtlpHttpSpanExporterComponentProvider implements ExtendedComponentProvider {

@Override
public Class<SpanExporter> getType() {
Expand All @@ -32,12 +34,13 @@ public String getName() {
}

@Override
public SpanExporter create(DeclarativeConfigProperties config) {
public SpanExporter create(DeclarativeConfigProperties config, ConfigProvider configProvider) {
OtlpHttpSpanExporterBuilder builder = httpBuilder();

OtlpDeclarativeConfigUtil.configureOtlpExporterBuilder(
DATA_TYPE_TRACES,
config,
configProvider,
builder::setComponentLoader,
builder::setEndpoint,
builder::addHeader,
Expand All @@ -47,7 +50,9 @@ public SpanExporter create(DeclarativeConfigProperties config) {
builder::setClientTls,
builder::setRetryPolicy,
builder::setMemoryMode,
/* isHttpProtobuf= */ true);
/* isHttpProtobuf= */ true,
builder::setInternalTelemetryVersion,
() -> builder.setMeterProvider(MeterProvider::noop));

return builder.build();
}
Expand Down
Loading
Loading