Commit 5d41f60e authored by Lee Dobryden's avatar Lee Dobryden Committed by Andy Wilkinson

Add StatsD transport protocol configuration option

See gh-22125
parent 5de67e9b
...@@ -19,6 +19,7 @@ package org.springframework.boot.actuate.autoconfigure.metrics.export.statsd; ...@@ -19,6 +19,7 @@ package org.springframework.boot.actuate.autoconfigure.metrics.export.statsd;
import java.time.Duration; import java.time.Duration;
import io.micrometer.statsd.StatsdFlavor; import io.micrometer.statsd.StatsdFlavor;
import io.micrometer.statsd.StatsdProtocol;
import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.boot.context.properties.ConfigurationProperties;
...@@ -53,6 +54,11 @@ public class StatsdProperties { ...@@ -53,6 +54,11 @@ public class StatsdProperties {
*/ */
private Integer port = 8125; 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. * Total length of a single payload should be kept within your network's MTU.
*/ */
...@@ -102,6 +108,14 @@ public class StatsdProperties { ...@@ -102,6 +108,14 @@ public class StatsdProperties {
this.port = port; this.port = port;
} }
public StatsdProtocol getProtocol() {
return this.protocol;
}
public void setProtocol(StatsdProtocol protocol) {
this.protocol = protocol;
}
public Integer getMaxPacketLength() { public Integer getMaxPacketLength() {
return this.maxPacketLength; return this.maxPacketLength;
} }
......
...@@ -20,6 +20,7 @@ import java.time.Duration; ...@@ -20,6 +20,7 @@ import java.time.Duration;
import io.micrometer.statsd.StatsdConfig; import io.micrometer.statsd.StatsdConfig;
import io.micrometer.statsd.StatsdFlavor; import io.micrometer.statsd.StatsdFlavor;
import io.micrometer.statsd.StatsdProtocol;
import org.springframework.boot.actuate.autoconfigure.metrics.export.properties.PropertiesConfigAdapter; import org.springframework.boot.actuate.autoconfigure.metrics.export.properties.PropertiesConfigAdapter;
...@@ -65,6 +66,11 @@ public class StatsdPropertiesConfigAdapter extends PropertiesConfigAdapter<Stats ...@@ -65,6 +66,11 @@ public class StatsdPropertiesConfigAdapter extends PropertiesConfigAdapter<Stats
return get(StatsdProperties::getPort, StatsdConfig.super::port); return get(StatsdProperties::getPort, StatsdConfig.super::port);
} }
@Override
public StatsdProtocol protocol() {
return get(StatsdProperties::getProtocol, StatsdConfig.super::protocol);
}
@Override @Override
public int maxPacketLength() { public int maxPacketLength() {
return get(StatsdProperties::getMaxPacketLength, StatsdConfig.super::maxPacketLength); return get(StatsdProperties::getMaxPacketLength, StatsdConfig.super::maxPacketLength);
......
...@@ -463,6 +463,10 @@ ...@@ -463,6 +463,10 @@
"name": "management.metrics.export.statsd.flavor", "name": "management.metrics.export.statsd.flavor",
"defaultValue": "datadog" "defaultValue": "datadog"
}, },
{
"name": "management.metrics.export.statsd.protocol",
"defaultValue": "udp"
},
{ {
"name": "management.metrics.export.statsd.queue-size", "name": "management.metrics.export.statsd.queue-size",
"defaultValue": 2147483647, "defaultValue": 2147483647,
......
...@@ -36,6 +36,7 @@ class StatsdPropertiesTests { ...@@ -36,6 +36,7 @@ class StatsdPropertiesTests {
assertThat(properties.getFlavor()).isEqualTo(config.flavor()); assertThat(properties.getFlavor()).isEqualTo(config.flavor());
assertThat(properties.getHost()).isEqualTo(config.host()); assertThat(properties.getHost()).isEqualTo(config.host());
assertThat(properties.getPort()).isEqualTo(config.port()); assertThat(properties.getPort()).isEqualTo(config.port());
assertThat(properties.getProtocol()).isEqualTo(config.protocol());
assertThat(properties.getMaxPacketLength()).isEqualTo(config.maxPacketLength()); assertThat(properties.getMaxPacketLength()).isEqualTo(config.maxPacketLength());
assertThat(properties.getPollingFrequency()).isEqualTo(config.pollingFrequency()); assertThat(properties.getPollingFrequency()).isEqualTo(config.pollingFrequency());
assertThat(properties.isPublishUnchangedMeters()).isEqualTo(config.publishUnchangedMeters()); assertThat(properties.isPublishUnchangedMeters()).isEqualTo(config.publishUnchangedMeters());
......
...@@ -1764,12 +1764,13 @@ You can also change the interval at which metrics are sent to Stackdriver: ...@@ -1764,12 +1764,13 @@ You can also change the interval at which metrics are sent to Stackdriver:
==== StatsD ==== StatsD
The StatsD registry pushes metrics over UDP to a StatsD agent eagerly. 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. 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] [source,properties,indent=0,configprops]
---- ----
management.metrics.export.statsd.host=statsd.example.com management.metrics.export.statsd.host=statsd.example.com
management.metrics.export.statsd.port=9125 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): You can also change the StatsD line protocol to use (default to Datadog):
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment