From 6cd6f7566422e5923cccf94fdeb2ddb759b62f28 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Nicoll?= Date: Tue, 13 Aug 2024 11:12:49 +0200 Subject: [PATCH] Add configuration support for ExponentialHistogram in OTLP Registry Closes gh-41837 --- .../metrics/export/otlp/OtlpProperties.java | 43 ++++++++++++++++++- .../otlp/OtlpPropertiesConfigAdapter.java | 16 +++++++ .../OtlpPropertiesConfigAdapterTests.java | 34 +++++++++++++++ .../export/otlp/OtlpPropertiesTests.java | 5 ++- 4 files changed, 96 insertions(+), 2 deletions(-) diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/otlp/OtlpProperties.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/otlp/OtlpProperties.java index e9a038d3e66..5ad71476c6a 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/otlp/OtlpProperties.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/otlp/OtlpProperties.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -20,6 +20,7 @@ import java.util.Map; import java.util.concurrent.TimeUnit; import io.micrometer.registry.otlp.AggregationTemporality; +import io.micrometer.registry.otlp.HistogramFlavor; import org.springframework.boot.actuate.autoconfigure.metrics.export.properties.StepRegistryProperties; import org.springframework.boot.context.properties.ConfigurationProperties; @@ -57,6 +58,22 @@ public class OtlpProperties extends StepRegistryProperties { */ private Map headers; + /** + * Histogram type to be preferred when histogram publishing is enabled. + */ + private HistogramFlavor histogramFlavor = HistogramFlavor.EXPLICIT_BUCKET_HISTOGRAM; + + /** + * Max scale to use for exponential histograms, if configured. + */ + private int maxScale = 20; + + /** + * Maximum number of buckets to be used for exponential histograms, if configured. + * This has no effect on explicit bucket histograms. + */ + private int maxBucketCount = 160; + /** * Time unit for exported metrics. */ @@ -97,6 +114,30 @@ public class OtlpProperties extends StepRegistryProperties { this.headers = headers; } + public HistogramFlavor getHistogramFlavor() { + return this.histogramFlavor; + } + + public void setHistogramFlavor(HistogramFlavor histogramFlavor) { + this.histogramFlavor = histogramFlavor; + } + + public int getMaxScale() { + return this.maxScale; + } + + public void setMaxScale(int maxScale) { + this.maxScale = maxScale; + } + + public int getMaxBucketCount() { + return this.maxBucketCount; + } + + public void setMaxBucketCount(int maxBucketCount) { + this.maxBucketCount = maxBucketCount; + } + public TimeUnit getBaseTimeUnit() { return this.baseTimeUnit; } diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/otlp/OtlpPropertiesConfigAdapter.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/otlp/OtlpPropertiesConfigAdapter.java index d30e8b7eb06..0f6d5947ebd 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/otlp/OtlpPropertiesConfigAdapter.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/otlp/OtlpPropertiesConfigAdapter.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.HistogramFlavor; import io.micrometer.registry.otlp.OtlpConfig; import org.springframework.boot.actuate.autoconfigure.metrics.export.properties.StepRegistryPropertiesConfigAdapter; @@ -98,6 +99,21 @@ class OtlpPropertiesConfigAdapter extends StepRegistryPropertiesConfigAdapter