|
12 | 12 | import io.opentelemetry.sdk.autoconfigure.spi.metrics.SdkMeterProviderConfigurer;
|
13 | 13 | import io.opentelemetry.sdk.metrics.SdkMeterProvider;
|
14 | 14 | import io.opentelemetry.sdk.metrics.SdkMeterProviderBuilder;
|
| 15 | +import io.opentelemetry.sdk.metrics.exemplar.ExemplarFilter; |
| 16 | +import io.opentelemetry.sdk.metrics.exemplar.ExemplarSampler; |
15 | 17 | import io.opentelemetry.sdk.resources.Resource;
|
16 | 18 | import io.opentelemetry.sdk.trace.SdkTracerProvider;
|
17 | 19 | import java.util.ServiceLoader;
|
@@ -90,6 +92,27 @@ private static void configureMeterProvider(Resource resource, ConfigProperties c
|
90 | 92 |
|
91 | 93 | SdkMeterProviderBuilder meterProviderBuilder = SdkMeterProvider.builder().setResource(resource);
|
92 | 94 |
|
| 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 | + |
93 | 116 | for (SdkMeterProviderConfigurer configurer :
|
94 | 117 | ServiceLoader.load(SdkMeterProviderConfigurer.class)) {
|
95 | 118 | configurer.configure(meterProviderBuilder, config);
|
|
0 commit comments