diff --git a/docs/apidiffs/current_vs_latest/opentelemetry-exporter-otlp.txt b/docs/apidiffs/current_vs_latest/opentelemetry-exporter-otlp.txt index 988d9f737a4..adde6e6284e 100644 --- a/docs/apidiffs/current_vs_latest/opentelemetry-exporter-otlp.txt +++ b/docs/apidiffs/current_vs_latest/opentelemetry-exporter-otlp.txt @@ -1,2 +1,25 @@ Comparing source compatibility of opentelemetry-exporter-otlp-1.57.0-SNAPSHOT.jar against opentelemetry-exporter-otlp-1.56.0.jar -No changes. \ No newline at end of file +*** MODIFIED CLASS: PUBLIC FINAL io.opentelemetry.exporter.otlp.http.logs.OtlpHttpLogRecordExporterBuilder (not serializable) + === CLASS FILE FORMAT VERSION: 52.0 <- 52.0 + +++ NEW METHOD: PUBLIC(+) io.opentelemetry.exporter.otlp.http.logs.OtlpHttpLogRecordExporterBuilder setLogThrottlingRate(double, double) + +++ NEW METHOD: PUBLIC(+) io.opentelemetry.exporter.otlp.http.logs.OtlpHttpLogRecordExporterBuilder setLogThrottlingTimeUnit(java.util.concurrent.TimeUnit) +*** MODIFIED CLASS: PUBLIC FINAL io.opentelemetry.exporter.otlp.http.metrics.OtlpHttpMetricExporterBuilder (not serializable) + === CLASS FILE FORMAT VERSION: 52.0 <- 52.0 + +++ NEW METHOD: PUBLIC(+) io.opentelemetry.exporter.otlp.http.metrics.OtlpHttpMetricExporterBuilder setLogThrottlingRate(double, double) + +++ NEW METHOD: PUBLIC(+) io.opentelemetry.exporter.otlp.http.metrics.OtlpHttpMetricExporterBuilder setLogThrottlingTimeUnit(java.util.concurrent.TimeUnit) +*** MODIFIED CLASS: PUBLIC FINAL io.opentelemetry.exporter.otlp.http.trace.OtlpHttpSpanExporterBuilder (not serializable) + === CLASS FILE FORMAT VERSION: 52.0 <- 52.0 + +++ NEW METHOD: PUBLIC(+) io.opentelemetry.exporter.otlp.http.trace.OtlpHttpSpanExporterBuilder setLogThrottlingRate(double, double) + +++ NEW METHOD: PUBLIC(+) io.opentelemetry.exporter.otlp.http.trace.OtlpHttpSpanExporterBuilder setLogThrottlingTimeUnit(java.util.concurrent.TimeUnit) +*** MODIFIED CLASS: PUBLIC FINAL io.opentelemetry.exporter.otlp.logs.OtlpGrpcLogRecordExporterBuilder (not serializable) + === CLASS FILE FORMAT VERSION: 52.0 <- 52.0 + +++ NEW METHOD: PUBLIC(+) io.opentelemetry.exporter.otlp.logs.OtlpGrpcLogRecordExporterBuilder setLogThrottlingRate(double, double) + +++ NEW METHOD: PUBLIC(+) io.opentelemetry.exporter.otlp.logs.OtlpGrpcLogRecordExporterBuilder setLogThrottlingTimeUnit(java.util.concurrent.TimeUnit) +*** MODIFIED CLASS: PUBLIC FINAL io.opentelemetry.exporter.otlp.metrics.OtlpGrpcMetricExporterBuilder (not serializable) + === CLASS FILE FORMAT VERSION: 52.0 <- 52.0 + +++ NEW METHOD: PUBLIC(+) io.opentelemetry.exporter.otlp.metrics.OtlpGrpcMetricExporterBuilder setLogThrottlingRate(double, double) + +++ NEW METHOD: PUBLIC(+) io.opentelemetry.exporter.otlp.metrics.OtlpGrpcMetricExporterBuilder setLogThrottlingTimeUnit(java.util.concurrent.TimeUnit) +*** MODIFIED CLASS: PUBLIC FINAL io.opentelemetry.exporter.otlp.trace.OtlpGrpcSpanExporterBuilder (not serializable) + === CLASS FILE FORMAT VERSION: 52.0 <- 52.0 + +++ NEW METHOD: PUBLIC(+) io.opentelemetry.exporter.otlp.trace.OtlpGrpcSpanExporterBuilder setLogThrottlingRate(double, double) + +++ NEW METHOD: PUBLIC(+) io.opentelemetry.exporter.otlp.trace.OtlpGrpcSpanExporterBuilder setLogThrottlingTimeUnit(java.util.concurrent.TimeUnit) diff --git a/exporters/common/src/main/java/io/opentelemetry/exporter/internal/grpc/GrpcExporter.java b/exporters/common/src/main/java/io/opentelemetry/exporter/internal/grpc/GrpcExporter.java index 3c8de2f541c..8fffa875b4c 100644 --- a/exporters/common/src/main/java/io/opentelemetry/exporter/internal/grpc/GrpcExporter.java +++ b/exporters/common/src/main/java/io/opentelemetry/exporter/internal/grpc/GrpcExporter.java @@ -16,6 +16,7 @@ import io.opentelemetry.sdk.common.InternalTelemetryVersion; import io.opentelemetry.sdk.internal.StandardComponentId; import io.opentelemetry.sdk.internal.ThrottlingLogger; +import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicBoolean; import java.util.function.Supplier; import java.util.logging.Level; @@ -32,7 +33,7 @@ public final class GrpcExporter { private static final Logger internalLogger = Logger.getLogger(GrpcExporter.class.getName()); - private final ThrottlingLogger logger = new ThrottlingLogger(internalLogger); + private final ThrottlingLogger logger; // We only log unimplemented once since it's a configuration issue that won't be recovered. private final AtomicBoolean loggedUnimplemented = new AtomicBoolean(); @@ -53,6 +54,24 @@ public GrpcExporter( this.exporterMetrics = new ExporterInstrumentation( internalTelemetryVersion, meterProviderSupplier, componentId, endpoint); + this.logger = new ThrottlingLogger(internalLogger); + } + + public GrpcExporter( + GrpcSender grpcSender, + InternalTelemetryVersion internalTelemetryVersion, + StandardComponentId componentId, + Supplier meterProviderSupplier, + String endpoint, + double rateLimit, + double throttledRateLimit, + TimeUnit rateTimeUnit) { + this.type = componentId.getStandardType().signal().logFriendlyName(); + this.grpcSender = grpcSender; + this.exporterMetrics = + new ExporterInstrumentation( + internalTelemetryVersion, meterProviderSupplier, componentId, endpoint); + this.logger = new ThrottlingLogger(internalLogger, rateLimit, throttledRateLimit, rateTimeUnit); } public CompletableResultCode export(T exportRequest, int numItems) { diff --git a/exporters/common/src/main/java/io/opentelemetry/exporter/internal/grpc/GrpcExporterBuilder.java b/exporters/common/src/main/java/io/opentelemetry/exporter/internal/grpc/GrpcExporterBuilder.java index 499839d7a0b..1b1fc82430e 100644 --- a/exporters/common/src/main/java/io/opentelemetry/exporter/internal/grpc/GrpcExporterBuilder.java +++ b/exporters/common/src/main/java/io/opentelemetry/exporter/internal/grpc/GrpcExporterBuilder.java @@ -76,6 +76,10 @@ public class GrpcExporterBuilder { // Use Object type since gRPC may not be on the classpath. @Nullable private Object grpcChannel; + private double throttlingLoggerRateLimit = 5; + private double throttlingLoggerThrottledRateLimit = 1; + private TimeUnit throttlingLoggerTimeUnit = TimeUnit.MINUTES; + public GrpcExporterBuilder( StandardComponentId.ExporterType exporterType, long defaultTimeoutSecs, @@ -182,6 +186,17 @@ public GrpcExporterBuilder setExecutorService(ExecutorService executorService return this; } + public GrpcExporterBuilder setLogThrottlingRate(double rateLimit, double throttledRateLimit) { + this.throttlingLoggerRateLimit = rateLimit; + this.throttlingLoggerThrottledRateLimit = throttledRateLimit; + return this; + } + + public GrpcExporterBuilder setLogThrottlingTimeUnit(TimeUnit rateTimeUnit) { + this.throttlingLoggerTimeUnit = rateTimeUnit; + return this; + } + @SuppressWarnings("BuilderReturnThis") public GrpcExporterBuilder copy() { GrpcExporterBuilder copy = @@ -206,6 +221,9 @@ public GrpcExporterBuilder copy() { copy.internalTelemetryVersion = internalTelemetryVersion; copy.grpcChannel = grpcChannel; copy.componentLoader = componentLoader; + copy.throttlingLoggerRateLimit = throttlingLoggerRateLimit; + copy.throttlingLoggerThrottledRateLimit = throttlingLoggerThrottledRateLimit; + copy.throttlingLoggerTimeUnit = throttlingLoggerTimeUnit; return copy; } @@ -255,7 +273,10 @@ public GrpcExporter build() { internalTelemetryVersion, ComponentId.generateLazy(exporterType), meterProviderSupplier, - endpoint.toString()); + endpoint.toString(), + throttlingLoggerRateLimit, + throttlingLoggerThrottledRateLimit, + throttlingLoggerTimeUnit); } public String toString(boolean includePrefixAndSuffix) { diff --git a/exporters/common/src/main/java/io/opentelemetry/exporter/internal/http/HttpExporter.java b/exporters/common/src/main/java/io/opentelemetry/exporter/internal/http/HttpExporter.java index 07533a95fea..16d373dae2e 100644 --- a/exporters/common/src/main/java/io/opentelemetry/exporter/internal/http/HttpExporter.java +++ b/exporters/common/src/main/java/io/opentelemetry/exporter/internal/http/HttpExporter.java @@ -15,6 +15,7 @@ import io.opentelemetry.sdk.internal.StandardComponentId; import io.opentelemetry.sdk.internal.ThrottlingLogger; import java.io.IOException; +import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicBoolean; import java.util.function.Supplier; import java.util.logging.Level; @@ -32,7 +33,7 @@ public final class HttpExporter { private static final Logger internalLogger = Logger.getLogger(HttpExporter.class.getName()); - private final ThrottlingLogger logger = new ThrottlingLogger(internalLogger); + private final ThrottlingLogger logger; private final AtomicBoolean isShutdown = new AtomicBoolean(); private final String type; @@ -50,6 +51,24 @@ public HttpExporter( this.exporterMetrics = new ExporterInstrumentation( internalTelemetryVersion, meterProviderSupplier, componentId, endpoint); + this.logger = new ThrottlingLogger(internalLogger); + } + + public HttpExporter( + StandardComponentId componentId, + HttpSender httpSender, + Supplier meterProviderSupplier, + InternalTelemetryVersion internalTelemetryVersion, + String endpoint, + double rateLimit, + double throttledRateLimit, + TimeUnit rateTimeUnit) { + this.type = componentId.getStandardType().signal().logFriendlyName(); + this.httpSender = httpSender; + this.exporterMetrics = + new ExporterInstrumentation( + internalTelemetryVersion, meterProviderSupplier, componentId, endpoint); + this.logger = new ThrottlingLogger(internalLogger, rateLimit, throttledRateLimit, rateTimeUnit); } public CompletableResultCode export(T exportRequest, int numItems) { diff --git a/exporters/common/src/main/java/io/opentelemetry/exporter/internal/http/HttpExporterBuilder.java b/exporters/common/src/main/java/io/opentelemetry/exporter/internal/http/HttpExporterBuilder.java index 3d9a6238e01..e43142b7a70 100644 --- a/exporters/common/src/main/java/io/opentelemetry/exporter/internal/http/HttpExporterBuilder.java +++ b/exporters/common/src/main/java/io/opentelemetry/exporter/internal/http/HttpExporterBuilder.java @@ -70,6 +70,10 @@ public final class HttpExporterBuilder { ComponentLoader.forClassLoader(HttpExporterBuilder.class.getClassLoader()); @Nullable private ExecutorService executorService; + private double throttlingLoggerRateLimit = 5; + private double throttlingLoggerThrottledRateLimit = 1; + private TimeUnit throttlingLoggerTimeUnit = TimeUnit.MINUTES; + public HttpExporterBuilder( StandardComponentId.ExporterType exporterType, String defaultEndpoint) { this.exporterType = exporterType; @@ -167,6 +171,17 @@ public HttpExporterBuilder setExecutorService(ExecutorService executorService return this; } + public HttpExporterBuilder setLogThrottlingRate(double rateLimit, double throttledRateLimit) { + this.throttlingLoggerRateLimit = rateLimit; + this.throttlingLoggerThrottledRateLimit = throttledRateLimit; + return this; + } + + public HttpExporterBuilder setLogThrottlingTimeUnit(TimeUnit rateTimeUnit) { + this.throttlingLoggerTimeUnit = rateTimeUnit; + return this; + } + public HttpExporterBuilder exportAsJson() { this.exportAsJson = true; exporterType = mapToJsonTypeIfPossible(exporterType); @@ -205,6 +220,9 @@ public HttpExporterBuilder copy() { copy.internalTelemetryVersion = internalTelemetryVersion; copy.proxyOptions = proxyOptions; copy.componentLoader = componentLoader; + copy.throttlingLoggerRateLimit = throttlingLoggerRateLimit; + copy.throttlingLoggerThrottledRateLimit = throttlingLoggerThrottledRateLimit; + copy.throttlingLoggerTimeUnit = throttlingLoggerTimeUnit; return copy; } @@ -254,7 +272,10 @@ public HttpExporter build() { httpSender, meterProviderSupplier, internalTelemetryVersion, - endpoint); + endpoint, + throttlingLoggerRateLimit, + throttlingLoggerThrottledRateLimit, + throttlingLoggerTimeUnit); } public String toString(boolean includePrefixAndSuffix) { diff --git a/exporters/otlp/all/src/main/java/io/opentelemetry/exporter/otlp/http/logs/OtlpHttpLogRecordExporterBuilder.java b/exporters/otlp/all/src/main/java/io/opentelemetry/exporter/otlp/http/logs/OtlpHttpLogRecordExporterBuilder.java index b9606919075..a757471379f 100644 --- a/exporters/otlp/all/src/main/java/io/opentelemetry/exporter/otlp/http/logs/OtlpHttpLogRecordExporterBuilder.java +++ b/exporters/otlp/all/src/main/java/io/opentelemetry/exporter/otlp/http/logs/OtlpHttpLogRecordExporterBuilder.java @@ -275,6 +275,20 @@ public OtlpHttpLogRecordExporterBuilder setExecutorService(ExecutorService execu return this; } + public OtlpHttpLogRecordExporterBuilder setLogThrottlingRate( + double rateLimit, double throttledRateLimit) { + checkArgument(rateLimit > 0, "rateLimit invalid"); + checkArgument(throttledRateLimit > 0, "throttledRateLimit invalid"); + delegate.setLogThrottlingRate(rateLimit, throttledRateLimit); + return this; + } + + public OtlpHttpLogRecordExporterBuilder setLogThrottlingTimeUnit(TimeUnit timeUnit) { + requireNonNull(timeUnit, "logTimeUnit"); + delegate.setLogThrottlingTimeUnit(timeUnit); + return this; + } + /** * Constructs a new instance of the exporter based on the builder's values. * diff --git a/exporters/otlp/all/src/main/java/io/opentelemetry/exporter/otlp/http/metrics/OtlpHttpMetricExporterBuilder.java b/exporters/otlp/all/src/main/java/io/opentelemetry/exporter/otlp/http/metrics/OtlpHttpMetricExporterBuilder.java index 07f24dac91c..e2364fc5990 100644 --- a/exporters/otlp/all/src/main/java/io/opentelemetry/exporter/otlp/http/metrics/OtlpHttpMetricExporterBuilder.java +++ b/exporters/otlp/all/src/main/java/io/opentelemetry/exporter/otlp/http/metrics/OtlpHttpMetricExporterBuilder.java @@ -334,6 +334,20 @@ public OtlpHttpMetricExporterBuilder setExecutorService(ExecutorService executor return this; } + public OtlpHttpMetricExporterBuilder setLogThrottlingRate( + double rateLimit, double throttledRateLimit) { + checkArgument(rateLimit > 0, "rateLimit invalid"); + checkArgument(throttledRateLimit > 0, "throttledRateLimit invalid"); + delegate.setLogThrottlingRate(rateLimit, throttledRateLimit); + return this; + } + + public OtlpHttpMetricExporterBuilder setLogThrottlingTimeUnit(TimeUnit timeUnit) { + requireNonNull(timeUnit, "logTimeUnit"); + delegate.setLogThrottlingTimeUnit(timeUnit); + return this; + } + OtlpHttpMetricExporterBuilder exportAsJson() { delegate.exportAsJson(); return this; diff --git a/exporters/otlp/all/src/main/java/io/opentelemetry/exporter/otlp/http/trace/OtlpHttpSpanExporterBuilder.java b/exporters/otlp/all/src/main/java/io/opentelemetry/exporter/otlp/http/trace/OtlpHttpSpanExporterBuilder.java index f8289010b5b..df62f30269b 100644 --- a/exporters/otlp/all/src/main/java/io/opentelemetry/exporter/otlp/http/trace/OtlpHttpSpanExporterBuilder.java +++ b/exporters/otlp/all/src/main/java/io/opentelemetry/exporter/otlp/http/trace/OtlpHttpSpanExporterBuilder.java @@ -276,6 +276,20 @@ public OtlpHttpSpanExporterBuilder setExecutorService(ExecutorService executorSe return this; } + public OtlpHttpSpanExporterBuilder setLogThrottlingRate( + double rateLimit, double throttledRateLimit) { + checkArgument(rateLimit > 0, "rateLimit invalid"); + checkArgument(throttledRateLimit > 0, "throttledRateLimit invalid"); + delegate.setLogThrottlingRate(rateLimit, throttledRateLimit); + return this; + } + + public OtlpHttpSpanExporterBuilder setLogThrottlingTimeUnit(TimeUnit timeUnit) { + requireNonNull(timeUnit, "logTimeUnit"); + delegate.setLogThrottlingTimeUnit(timeUnit); + return this; + } + /** * Constructs a new instance of the exporter based on the builder's values. * diff --git a/exporters/otlp/all/src/main/java/io/opentelemetry/exporter/otlp/internal/OtlpDeclarativeConfigUtil.java b/exporters/otlp/all/src/main/java/io/opentelemetry/exporter/otlp/internal/OtlpDeclarativeConfigUtil.java index b2f174ae3df..cadcd8060b2 100644 --- a/exporters/otlp/all/src/main/java/io/opentelemetry/exporter/otlp/internal/OtlpDeclarativeConfigUtil.java +++ b/exporters/otlp/all/src/main/java/io/opentelemetry/exporter/otlp/internal/OtlpDeclarativeConfigUtil.java @@ -22,6 +22,8 @@ import java.time.Duration; import java.util.Collections; import java.util.List; +import java.util.Locale; +import java.util.concurrent.TimeUnit; import java.util.function.BiConsumer; import java.util.function.Consumer; @@ -57,6 +59,8 @@ public static void configureOtlpExporterBuilder( BiConsumer setClientTls, Consumer setRetryPolicy, Consumer setMemoryMode, + BiConsumer setLogThrottlingRate, + Consumer setLogTimeUnit, boolean isHttpProtobuf) { setComponentLoader.accept(config.getComponentLoader()); @@ -117,6 +121,20 @@ public static void configureOtlpExporterBuilder( } IncubatingExporterBuilderUtil.configureExporterMemoryMode(config, setMemoryMode); + + Double throttlingLoggerRateLimit = config.getDouble("log_rate"); + Double throttlingLoggerThrottledRateLimit = config.getDouble("throttled_log_rate"); + + if (throttlingLoggerRateLimit != null && throttlingLoggerThrottledRateLimit != null) { + setLogThrottlingRate.accept(throttlingLoggerRateLimit, throttlingLoggerThrottledRateLimit); + } + + String throttlingLoggerTimeUnitStr = config.getString("log_rate_unit"); + if (throttlingLoggerTimeUnitStr != null) { + TimeUnit throttlingLoggerTimeUnit = + TimeUnit.valueOf(throttlingLoggerTimeUnitStr.toUpperCase(Locale.ROOT)); + setLogTimeUnit.accept(throttlingLoggerTimeUnit); + } } private OtlpDeclarativeConfigUtil() {} diff --git a/exporters/otlp/all/src/main/java/io/opentelemetry/exporter/otlp/internal/OtlpGrpcLogRecordExporterComponentProvider.java b/exporters/otlp/all/src/main/java/io/opentelemetry/exporter/otlp/internal/OtlpGrpcLogRecordExporterComponentProvider.java index 6afb9a601cd..f17a09d0ee7 100644 --- a/exporters/otlp/all/src/main/java/io/opentelemetry/exporter/otlp/internal/OtlpGrpcLogRecordExporterComponentProvider.java +++ b/exporters/otlp/all/src/main/java/io/opentelemetry/exporter/otlp/internal/OtlpGrpcLogRecordExporterComponentProvider.java @@ -47,6 +47,8 @@ public LogRecordExporter create(DeclarativeConfigProperties config) { builder::setClientTls, builder::setRetryPolicy, builder::setMemoryMode, + builder::setLogThrottlingRate, + builder::setLogThrottlingTimeUnit, /* isHttpProtobuf= */ false); return builder.build(); diff --git a/exporters/otlp/all/src/main/java/io/opentelemetry/exporter/otlp/internal/OtlpGrpcMetricExporterComponentProvider.java b/exporters/otlp/all/src/main/java/io/opentelemetry/exporter/otlp/internal/OtlpGrpcMetricExporterComponentProvider.java index cf8107f8499..b49af3395e0 100644 --- a/exporters/otlp/all/src/main/java/io/opentelemetry/exporter/otlp/internal/OtlpGrpcMetricExporterComponentProvider.java +++ b/exporters/otlp/all/src/main/java/io/opentelemetry/exporter/otlp/internal/OtlpGrpcMetricExporterComponentProvider.java @@ -48,6 +48,8 @@ public MetricExporter create(DeclarativeConfigProperties config) { builder::setClientTls, builder::setRetryPolicy, builder::setMemoryMode, + builder::setLogThrottlingRate, + builder::setLogThrottlingTimeUnit, /* isHttpProtobuf= */ false); IncubatingExporterBuilderUtil.configureOtlpAggregationTemporality( config, builder::setAggregationTemporalitySelector); diff --git a/exporters/otlp/all/src/main/java/io/opentelemetry/exporter/otlp/internal/OtlpGrpcSpanExporterComponentProvider.java b/exporters/otlp/all/src/main/java/io/opentelemetry/exporter/otlp/internal/OtlpGrpcSpanExporterComponentProvider.java index 17995efb946..4b5d3b42c73 100644 --- a/exporters/otlp/all/src/main/java/io/opentelemetry/exporter/otlp/internal/OtlpGrpcSpanExporterComponentProvider.java +++ b/exporters/otlp/all/src/main/java/io/opentelemetry/exporter/otlp/internal/OtlpGrpcSpanExporterComponentProvider.java @@ -47,6 +47,8 @@ public SpanExporter create(DeclarativeConfigProperties config) { builder::setClientTls, builder::setRetryPolicy, builder::setMemoryMode, + builder::setLogThrottlingRate, + builder::setLogThrottlingTimeUnit, /* isHttpProtobuf= */ false); return builder.build(); diff --git a/exporters/otlp/all/src/main/java/io/opentelemetry/exporter/otlp/internal/OtlpHttpLogRecordExporterComponentProvider.java b/exporters/otlp/all/src/main/java/io/opentelemetry/exporter/otlp/internal/OtlpHttpLogRecordExporterComponentProvider.java index a2850b254ca..488b692c823 100644 --- a/exporters/otlp/all/src/main/java/io/opentelemetry/exporter/otlp/internal/OtlpHttpLogRecordExporterComponentProvider.java +++ b/exporters/otlp/all/src/main/java/io/opentelemetry/exporter/otlp/internal/OtlpHttpLogRecordExporterComponentProvider.java @@ -47,6 +47,8 @@ public LogRecordExporter create(DeclarativeConfigProperties config) { builder::setClientTls, builder::setRetryPolicy, builder::setMemoryMode, + builder::setLogThrottlingRate, + builder::setLogThrottlingTimeUnit, /* isHttpProtobuf= */ true); return builder.build(); diff --git a/exporters/otlp/all/src/main/java/io/opentelemetry/exporter/otlp/internal/OtlpHttpMetricExporterComponentProvider.java b/exporters/otlp/all/src/main/java/io/opentelemetry/exporter/otlp/internal/OtlpHttpMetricExporterComponentProvider.java index 0b59ee9380a..6d27e58c142 100644 --- a/exporters/otlp/all/src/main/java/io/opentelemetry/exporter/otlp/internal/OtlpHttpMetricExporterComponentProvider.java +++ b/exporters/otlp/all/src/main/java/io/opentelemetry/exporter/otlp/internal/OtlpHttpMetricExporterComponentProvider.java @@ -48,6 +48,8 @@ public MetricExporter create(DeclarativeConfigProperties config) { builder::setClientTls, builder::setRetryPolicy, builder::setMemoryMode, + builder::setLogThrottlingRate, + builder::setLogThrottlingTimeUnit, /* isHttpProtobuf= */ true); IncubatingExporterBuilderUtil.configureOtlpAggregationTemporality( config, builder::setAggregationTemporalitySelector); diff --git a/exporters/otlp/all/src/main/java/io/opentelemetry/exporter/otlp/internal/OtlpHttpSpanExporterComponentProvider.java b/exporters/otlp/all/src/main/java/io/opentelemetry/exporter/otlp/internal/OtlpHttpSpanExporterComponentProvider.java index d97b2e30628..7bac0c2d563 100644 --- a/exporters/otlp/all/src/main/java/io/opentelemetry/exporter/otlp/internal/OtlpHttpSpanExporterComponentProvider.java +++ b/exporters/otlp/all/src/main/java/io/opentelemetry/exporter/otlp/internal/OtlpHttpSpanExporterComponentProvider.java @@ -47,6 +47,8 @@ public SpanExporter create(DeclarativeConfigProperties config) { builder::setClientTls, builder::setRetryPolicy, builder::setMemoryMode, + builder::setLogThrottlingRate, + builder::setLogThrottlingTimeUnit, /* isHttpProtobuf= */ true); return builder.build(); diff --git a/exporters/otlp/all/src/main/java/io/opentelemetry/exporter/otlp/logs/OtlpGrpcLogRecordExporterBuilder.java b/exporters/otlp/all/src/main/java/io/opentelemetry/exporter/otlp/logs/OtlpGrpcLogRecordExporterBuilder.java index 467aa0cd6a9..c8fb1b79b4a 100644 --- a/exporters/otlp/all/src/main/java/io/opentelemetry/exporter/otlp/logs/OtlpGrpcLogRecordExporterBuilder.java +++ b/exporters/otlp/all/src/main/java/io/opentelemetry/exporter/otlp/logs/OtlpGrpcLogRecordExporterBuilder.java @@ -304,6 +304,20 @@ public OtlpGrpcLogRecordExporterBuilder setExecutorService(ExecutorService execu return this; } + public OtlpGrpcLogRecordExporterBuilder setLogThrottlingRate( + double rateLimit, double throttledRateLimit) { + checkArgument(rateLimit > 0, "rateLimit invalid"); + checkArgument(throttledRateLimit > 0, "throttledRateLimit invalid"); + delegate.setLogThrottlingRate(rateLimit, throttledRateLimit); + return this; + } + + public OtlpGrpcLogRecordExporterBuilder setLogThrottlingTimeUnit(TimeUnit timeUnit) { + requireNonNull(timeUnit, "logTimeUnit"); + delegate.setLogThrottlingTimeUnit(timeUnit); + return this; + } + /** * Constructs a new instance of the exporter based on the builder's values. * diff --git a/exporters/otlp/all/src/main/java/io/opentelemetry/exporter/otlp/metrics/OtlpGrpcMetricExporterBuilder.java b/exporters/otlp/all/src/main/java/io/opentelemetry/exporter/otlp/metrics/OtlpGrpcMetricExporterBuilder.java index ef3403c7353..33ea424f10c 100644 --- a/exporters/otlp/all/src/main/java/io/opentelemetry/exporter/otlp/metrics/OtlpGrpcMetricExporterBuilder.java +++ b/exporters/otlp/all/src/main/java/io/opentelemetry/exporter/otlp/metrics/OtlpGrpcMetricExporterBuilder.java @@ -362,6 +362,20 @@ public OtlpGrpcMetricExporterBuilder setExecutorService(ExecutorService executor return this; } + public OtlpGrpcMetricExporterBuilder setLogThrottlingRate( + double rateLimit, double throttledRateLimit) { + checkArgument(rateLimit > 0, "rateLimit invalid"); + checkArgument(throttledRateLimit > 0, "throttledRateLimit invalid"); + delegate.setLogThrottlingRate(rateLimit, throttledRateLimit); + return this; + } + + public OtlpGrpcMetricExporterBuilder setLogThrottlingTimeUnit(TimeUnit timeUnit) { + requireNonNull(timeUnit, "logTimeUnit"); + delegate.setLogThrottlingTimeUnit(timeUnit); + return this; + } + /** * Constructs a new instance of the exporter based on the builder's values. * diff --git a/exporters/otlp/all/src/main/java/io/opentelemetry/exporter/otlp/trace/OtlpGrpcSpanExporterBuilder.java b/exporters/otlp/all/src/main/java/io/opentelemetry/exporter/otlp/trace/OtlpGrpcSpanExporterBuilder.java index fa7523b5b9e..5c9ab9ef624 100644 --- a/exporters/otlp/all/src/main/java/io/opentelemetry/exporter/otlp/trace/OtlpGrpcSpanExporterBuilder.java +++ b/exporters/otlp/all/src/main/java/io/opentelemetry/exporter/otlp/trace/OtlpGrpcSpanExporterBuilder.java @@ -301,6 +301,20 @@ public OtlpGrpcSpanExporterBuilder setExecutorService(ExecutorService executorSe return this; } + public OtlpGrpcSpanExporterBuilder setLogThrottlingRate( + double rateLimit, double throttledRateLimit) { + checkArgument(rateLimit > 0, "rateLimit invalid"); + checkArgument(throttledRateLimit > 0, "throttledRateLimit invalid"); + delegate.setLogThrottlingRate(rateLimit, throttledRateLimit); + return this; + } + + public OtlpGrpcSpanExporterBuilder setLogThrottlingTimeUnit(TimeUnit timeUnit) { + requireNonNull(timeUnit, "logTimeUnit"); + delegate.setLogThrottlingTimeUnit(timeUnit); + return this; + } + /** * Constructs a new instance of the exporter based on the builder's values. *