diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/statsd/StatsdProperties.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/statsd/StatsdProperties.java index dcaf939101a1..f41e5ce0368f 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/statsd/StatsdProperties.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/statsd/StatsdProperties.java @@ -19,6 +19,7 @@ import java.time.Duration; import io.micrometer.statsd.StatsdFlavor; +import io.micrometer.statsd.StatsdProtocol; import org.springframework.boot.context.properties.ConfigurationProperties; @@ -53,6 +54,11 @@ public class StatsdProperties { */ private Integer port = 8125; + /** + * Protocol of the StatsD server to receive exported metrics. + */ + private StatsdProtocol protocol = StatsdProtocol.UDP; + /** * Total length of a single payload should be kept within your network's MTU. */ @@ -102,6 +108,14 @@ public void setPort(Integer port) { this.port = port; } + public StatsdProtocol getProtocol() { + return this.protocol; + } + + public void setProtocol(StatsdProtocol protocol) { + this.protocol = protocol; + } + public Integer getMaxPacketLength() { return this.maxPacketLength; } diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/statsd/StatsdPropertiesConfigAdapter.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/statsd/StatsdPropertiesConfigAdapter.java index 85961a759cbe..9913faa156e6 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/statsd/StatsdPropertiesConfigAdapter.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/statsd/StatsdPropertiesConfigAdapter.java @@ -20,6 +20,7 @@ import io.micrometer.statsd.StatsdConfig; import io.micrometer.statsd.StatsdFlavor; +import io.micrometer.statsd.StatsdProtocol; import org.springframework.boot.actuate.autoconfigure.metrics.export.properties.PropertiesConfigAdapter; @@ -65,6 +66,11 @@ public int port() { return get(StatsdProperties::getPort, StatsdConfig.super::port); } + @Override + public StatsdProtocol protocol() { + return get(StatsdProperties::getProtocol, StatsdConfig.super::protocol); + } + @Override public int maxPacketLength() { return get(StatsdProperties::getMaxPacketLength, StatsdConfig.super::maxPacketLength); diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/resources/META-INF/additional-spring-configuration-metadata.json b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/resources/META-INF/additional-spring-configuration-metadata.json index 6d8d00e42516..3413ac7bfb89 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/resources/META-INF/additional-spring-configuration-metadata.json +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/resources/META-INF/additional-spring-configuration-metadata.json @@ -463,6 +463,10 @@ "name": "management.metrics.export.statsd.flavor", "defaultValue": "datadog" }, + { + "name": "management.metrics.export.statsd.protocol", + "defaultValue": "udp" + }, { "name": "management.metrics.export.statsd.queue-size", "defaultValue": 2147483647, diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/statsd/StatsdPropertiesTests.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/statsd/StatsdPropertiesTests.java index 006e4e5e2dcc..da2f3602d564 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/statsd/StatsdPropertiesTests.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/statsd/StatsdPropertiesTests.java @@ -36,6 +36,7 @@ void defaultValuesAreConsistent() { assertThat(properties.getFlavor()).isEqualTo(config.flavor()); assertThat(properties.getHost()).isEqualTo(config.host()); assertThat(properties.getPort()).isEqualTo(config.port()); + assertThat(properties.getProtocol()).isEqualTo(config.protocol()); assertThat(properties.getMaxPacketLength()).isEqualTo(config.maxPacketLength()); assertThat(properties.getPollingFrequency()).isEqualTo(config.pollingFrequency()); assertThat(properties.isPublishUnchangedMeters()).isEqualTo(config.publishUnchangedMeters()); diff --git a/spring-boot-project/spring-boot-docs/src/docs/asciidoc/production-ready-features.adoc b/spring-boot-project/spring-boot-docs/src/docs/asciidoc/production-ready-features.adoc index 446a5eb5baa9..0aff9dbba3ac 100644 --- a/spring-boot-project/spring-boot-docs/src/docs/asciidoc/production-ready-features.adoc +++ b/spring-boot-project/spring-boot-docs/src/docs/asciidoc/production-ready-features.adoc @@ -1764,12 +1764,13 @@ You can also change the interval at which metrics are sent to Stackdriver: ==== StatsD The StatsD registry pushes metrics over UDP to a StatsD agent eagerly. By default, metrics are exported to a {micrometer-registry-docs}/statsd[StatsD] agent running on your local machine. -The StatsD agent host and port to use can be provided using: +The StatsD agent host,port, and protocol to use can be provided using: [source,properties,indent=0,configprops] ---- management.metrics.export.statsd.host=statsd.example.com management.metrics.export.statsd.port=9125 + management.metrics.export.statsd.protocol=udp ---- You can also change the StatsD line protocol to use (default to Datadog):