diff --git a/custom/src/main/java/co/elastic/otel/ElasticAutoConfigurationCustomizerProvider.java b/custom/src/main/java/co/elastic/otel/ElasticAutoConfigurationCustomizerProvider.java index c7b4b4c6..62c74f21 100644 --- a/custom/src/main/java/co/elastic/otel/ElasticAutoConfigurationCustomizerProvider.java +++ b/custom/src/main/java/co/elastic/otel/ElasticAutoConfigurationCustomizerProvider.java @@ -18,6 +18,7 @@ */ package co.elastic.otel; +import co.elastic.otel.compositesampling.DynamicCompositeParentBasedTraceIdRatioBasedSampler; import co.elastic.otel.dynamicconfig.BlockableLogRecordExporter; import co.elastic.otel.dynamicconfig.BlockableMetricExporter; import co.elastic.otel.dynamicconfig.BlockableSpanExporter; @@ -91,6 +92,7 @@ public void customize(AutoConfigurationCustomizer autoConfiguration) { (providerBuilder, properties) -> { CentralConfig.init(providerBuilder, properties); AgentLog.addSpanLoggingIfRequired(providerBuilder, properties); + providerBuilder.setSampler(DynamicCompositeParentBasedTraceIdRatioBasedSampler.INSTANCE); return providerBuilder; }); } diff --git a/custom/src/main/java/co/elastic/otel/dynamicconfig/CentralConfig.java b/custom/src/main/java/co/elastic/otel/dynamicconfig/CentralConfig.java index a15577fa..17eff61e 100644 --- a/custom/src/main/java/co/elastic/otel/dynamicconfig/CentralConfig.java +++ b/custom/src/main/java/co/elastic/otel/dynamicconfig/CentralConfig.java @@ -18,6 +18,7 @@ */ package co.elastic.otel.dynamicconfig; +import co.elastic.otel.compositesampling.DynamicCompositeParentBasedTraceIdRatioBasedSampler; import co.elastic.otel.dynamicconfig.internal.OpampManager; import co.elastic.otel.logging.AgentLog; import io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties; @@ -128,6 +129,7 @@ public static class Configs { new DeactivateAllInstrumentations(), new DeactivateInstrumentations(), new LoggingLevel(), + new SamplingRate(), new PollingInterval()) .collect(Collectors.toMap(ConfigOption::getConfigName, option -> option)); } @@ -299,6 +301,19 @@ void update(String configurationValue, OpampManager opampManager) } } + public static final class SamplingRate extends ConfigOption { + SamplingRate() { + super("sampling_rate", "1.0"); + } + + @Override + void update(String configurationValue, OpampManager opampManager) + throws IllegalArgumentException { + DynamicCompositeParentBasedTraceIdRatioBasedSampler.setRatio( + Double.parseDouble(configurationValue)); + } + } + public static final class PollingInterval extends ConfigOption { PollingInterval() { super("opamp_polling_interval", "30s");