diff --git a/module/spring-boot-micrometer-metrics/src/main/java/org/springframework/boot/micrometer/metrics/autoconfigure/export/otlp/OtlpMetricsProperties.java b/module/spring-boot-micrometer-metrics/src/main/java/org/springframework/boot/micrometer/metrics/autoconfigure/export/otlp/OtlpMetricsProperties.java index 0c77d1f6058..62577bdfdcb 100644 --- a/module/spring-boot-micrometer-metrics/src/main/java/org/springframework/boot/micrometer/metrics/autoconfigure/export/otlp/OtlpMetricsProperties.java +++ b/module/spring-boot-micrometer-metrics/src/main/java/org/springframework/boot/micrometer/metrics/autoconfigure/export/otlp/OtlpMetricsProperties.java @@ -21,6 +21,7 @@ import java.util.Map; import java.util.concurrent.TimeUnit; import io.micrometer.registry.otlp.AggregationTemporality; +import io.micrometer.registry.otlp.CompressionMode; import io.micrometer.registry.otlp.HistogramFlavor; import org.jspecify.annotations.Nullable; @@ -49,6 +50,11 @@ public class OtlpMetricsProperties extends StepRegistryProperties { */ private AggregationTemporality aggregationTemporality = AggregationTemporality.CUMULATIVE; + /** + * Compression mode to use when exporting metrics. + */ + private CompressionMode compressionMode = CompressionMode.NONE; + /** * Headers for the exported metrics. */ @@ -96,6 +102,14 @@ public class OtlpMetricsProperties extends StepRegistryProperties { this.aggregationTemporality = aggregationTemporality; } + public CompressionMode getCompressionMode() { + return this.compressionMode; + } + + public void setCompressionMode(CompressionMode compressionMode) { + this.compressionMode = compressionMode; + } + public @Nullable Map getHeaders() { return this.headers; } diff --git a/module/spring-boot-micrometer-metrics/src/main/java/org/springframework/boot/micrometer/metrics/autoconfigure/export/otlp/OtlpMetricsPropertiesConfigAdapter.java b/module/spring-boot-micrometer-metrics/src/main/java/org/springframework/boot/micrometer/metrics/autoconfigure/export/otlp/OtlpMetricsPropertiesConfigAdapter.java index 122aaf1ca2d..80dfe0f2f7b 100644 --- a/module/spring-boot-micrometer-metrics/src/main/java/org/springframework/boot/micrometer/metrics/autoconfigure/export/otlp/OtlpMetricsPropertiesConfigAdapter.java +++ b/module/spring-boot-micrometer-metrics/src/main/java/org/springframework/boot/micrometer/metrics/autoconfigure/export/otlp/OtlpMetricsPropertiesConfigAdapter.java @@ -22,6 +22,7 @@ import java.util.Map; import java.util.concurrent.TimeUnit; import io.micrometer.registry.otlp.AggregationTemporality; +import io.micrometer.registry.otlp.CompressionMode; import io.micrometer.registry.otlp.HistogramFlavor; import io.micrometer.registry.otlp.OtlpConfig; @@ -72,6 +73,11 @@ class OtlpMetricsPropertiesConfigAdapter extends StepRegistryPropertiesConfigAda return obtain(OtlpMetricsProperties::getAggregationTemporality, OtlpConfig.super::aggregationTemporality); } + @Override + public CompressionMode compressionMode() { + return obtain(OtlpMetricsProperties::getCompressionMode, OtlpConfig.super::compressionMode); + } + @Override public Map resourceAttributes() { Map resourceAttributes = new LinkedHashMap<>(); diff --git a/module/spring-boot-micrometer-metrics/src/test/java/org/springframework/boot/micrometer/metrics/autoconfigure/export/otlp/OtlpMetricsPropertiesConfigAdapterTests.java b/module/spring-boot-micrometer-metrics/src/test/java/org/springframework/boot/micrometer/metrics/autoconfigure/export/otlp/OtlpMetricsPropertiesConfigAdapterTests.java index 116c37eda32..2fe0e850b73 100644 --- a/module/spring-boot-micrometer-metrics/src/test/java/org/springframework/boot/micrometer/metrics/autoconfigure/export/otlp/OtlpMetricsPropertiesConfigAdapterTests.java +++ b/module/spring-boot-micrometer-metrics/src/test/java/org/springframework/boot/micrometer/metrics/autoconfigure/export/otlp/OtlpMetricsPropertiesConfigAdapterTests.java @@ -20,6 +20,7 @@ import java.util.Map; import java.util.concurrent.TimeUnit; import io.micrometer.registry.otlp.AggregationTemporality; +import io.micrometer.registry.otlp.CompressionMode; import io.micrometer.registry.otlp.HistogramFlavor; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -88,6 +89,17 @@ class OtlpMetricsPropertiesConfigAdapterTests { assertThat(createAdapter().aggregationTemporality()).isSameAs(AggregationTemporality.DELTA); } + @Test + void whenPropertiesCompressionModeIsNotSetAdapterCompressionModeReturnsNone() { + assertThat(createAdapter().compressionMode()).isSameAs(CompressionMode.NONE); + } + + @Test + void whenPropertiesCompressionModeIsSetAdapterCompressionModeReturnsIt() { + this.properties.setCompressionMode(CompressionMode.GZIP); + assertThat(createAdapter().compressionMode()).isSameAs(CompressionMode.GZIP); + } + @Test void whenOpenTelemetryPropertiesResourceAttributesIsSetAdapterResourceAttributesReturnsIt() { this.openTelemetryProperties.setResourceAttributes(Map.of("service.name", "boot-service")); diff --git a/module/spring-boot-micrometer-metrics/src/test/java/org/springframework/boot/micrometer/metrics/autoconfigure/export/otlp/OtlpMetricsPropertiesTests.java b/module/spring-boot-micrometer-metrics/src/test/java/org/springframework/boot/micrometer/metrics/autoconfigure/export/otlp/OtlpMetricsPropertiesTests.java index 47eeffc0948..c34f0c39f20 100644 --- a/module/spring-boot-micrometer-metrics/src/test/java/org/springframework/boot/micrometer/metrics/autoconfigure/export/otlp/OtlpMetricsPropertiesTests.java +++ b/module/spring-boot-micrometer-metrics/src/test/java/org/springframework/boot/micrometer/metrics/autoconfigure/export/otlp/OtlpMetricsPropertiesTests.java @@ -36,6 +36,7 @@ class OtlpMetricsPropertiesTests extends StepRegistryPropertiesTests { OtlpConfig config = OtlpConfig.DEFAULT; assertStepRegistryDefaultValues(properties, config); assertThat(properties.getAggregationTemporality()).isSameAs(config.aggregationTemporality()); + assertThat(properties.getCompressionMode()).isSameAs(config.compressionMode()); assertThat(properties.getHistogramFlavor()).isSameAs(config.histogramFlavor()); assertThat(properties.getMaxScale()).isEqualTo(config.maxScale()); assertThat(properties.getMaxBucketCount()).isEqualTo(config.maxBucketCount());