Skip to content

Commit a2f22bb

Browse files
committed
Wire exemplar filter config into autoconfigure module.
1 parent 22c60f8 commit a2f22bb

File tree

2 files changed

+29
-0
lines changed

2 files changed

+29
-0
lines changed

sdk-extensions/autoconfigure/README.md

+6
Original file line numberDiff line numberDiff line change
@@ -191,6 +191,12 @@ These properties can be used to control the maximum size of recordings per span.
191191
| otel.span.event.count.limit | OTEL_SPAN_EVENT_COUNT_LIMIT | The maximum number of events per span. Default is `128`. |
192192
| otel.span.link.count.limit | OTEL_SPAN_LINK_COUNT_LIMIT | The maximum number of links per span. Default is `128` |
193193

194+
## Exemplars
195+
196+
| System property | Environment variable | Description |
197+
|--------------------------|--------------------------|-----------------------------------------------------------------------------------|
198+
| otel.metrics.exemplar.filter | OTEL_METRICS_EXEMPLAR_FILTER | The filter for exemplar sampling. Can be `NONE`, `ALL` or `WITH_SAMPLED_TRACE`. Default is `WITH_SAMPLED_TRACE`.|
199+
194200
## Interval metric reader
195201

196202
| System property | Environment variable | Description |

sdk-extensions/autoconfigure/src/main/java/io/opentelemetry/sdk/autoconfigure/OpenTelemetrySdkAutoConfiguration.java

+23
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@
1212
import io.opentelemetry.sdk.autoconfigure.spi.metrics.SdkMeterProviderConfigurer;
1313
import io.opentelemetry.sdk.metrics.SdkMeterProvider;
1414
import io.opentelemetry.sdk.metrics.SdkMeterProviderBuilder;
15+
import io.opentelemetry.sdk.metrics.exemplar.ExemplarFilter;
16+
import io.opentelemetry.sdk.metrics.exemplar.ExemplarSampler;
1517
import io.opentelemetry.sdk.resources.Resource;
1618
import io.opentelemetry.sdk.trace.SdkTracerProvider;
1719
import java.util.ServiceLoader;
@@ -90,6 +92,27 @@ private static void configureMeterProvider(Resource resource, ConfigProperties c
9092

9193
SdkMeterProviderBuilder meterProviderBuilder = SdkMeterProvider.builder().setResource(resource);
9294

95+
// Configure default exemplar filters.
96+
String exemplarFilter = config.getString("otel.metrics.exemplar.filter");
97+
if (exemplarFilter == null) {
98+
exemplarFilter = "WITH_SAMPLED_TRACE";
99+
}
100+
switch (exemplarFilter) {
101+
case "NONE":
102+
meterProviderBuilder.setExemplarSampler(
103+
ExemplarSampler.builder().setFilter(ExemplarFilter.neverSample()).build());
104+
break;
105+
case "ALL":
106+
meterProviderBuilder.setExemplarSampler(
107+
ExemplarSampler.builder().setFilter(ExemplarFilter.alwaysSample()).build());
108+
break;
109+
case "WITH_SAMPLED_TRACE":
110+
default:
111+
meterProviderBuilder.setExemplarSampler(
112+
ExemplarSampler.builder().setFilter(ExemplarFilter.sampleWithTraces()).build());
113+
break;
114+
}
115+
93116
for (SdkMeterProviderConfigurer configurer :
94117
ServiceLoader.load(SdkMeterProviderConfigurer.class)) {
95118
configurer.configure(meterProviderBuilder, config);

0 commit comments

Comments
 (0)