Browse Source

Merge pull request #22125 from lndobryden

* gh-22125:
  Polish "Add StatsD transport protocol configuration option"
  Add StatsD transport protocol configuration option

Closes gh-22125
pull/22164/head
Andy Wilkinson 6 years ago
parent
commit
1a93066116
  1. 16
      spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/statsd/StatsdProperties.java
  2. 6
      spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/statsd/StatsdPropertiesConfigAdapter.java
  3. 4
      spring-boot-project/spring-boot-actuator-autoconfigure/src/main/resources/META-INF/additional-spring-configuration-metadata.json
  4. 3
      spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/statsd/StatsdPropertiesTests.java
  5. 3
      spring-boot-project/spring-boot-docs/src/docs/asciidoc/production-ready-features.adoc

16
spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/statsd/StatsdProperties.java

@ -1,5 +1,5 @@ @@ -1,5 +1,5 @@
/*
* Copyright 2012-2019 the original author or authors.
* Copyright 2012-2020 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.
@ -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 io.micrometer.statsd.StatsdFlavor;
import io.micrometer.statsd.StatsdProtocol;
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;
/**
* 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 class StatsdProperties { @@ -102,6 +108,14 @@ public class StatsdProperties {
this.port = port;
}
public StatsdProtocol getProtocol() {
return this.protocol;
}
public void setProtocol(StatsdProtocol protocol) {
this.protocol = protocol;
}
public Integer getMaxPacketLength() {
return this.maxPacketLength;
}

6
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 java.time.Duration; @@ -20,6 +20,7 @@ import java.time.Duration;
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 class StatsdPropertiesConfigAdapter extends PropertiesConfigAdapter<Stats @@ -65,6 +66,11 @@ public class StatsdPropertiesConfigAdapter extends PropertiesConfigAdapter<Stats
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);

4
spring-boot-project/spring-boot-actuator-autoconfigure/src/main/resources/META-INF/additional-spring-configuration-metadata.json

@ -463,6 +463,10 @@ @@ -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,

3
spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/statsd/StatsdPropertiesTests.java

@ -1,5 +1,5 @@ @@ -1,5 +1,5 @@
/*
* Copyright 2012-2019 the original author or authors.
* Copyright 2012-2020 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.
@ -36,6 +36,7 @@ class StatsdPropertiesTests { @@ -36,6 +36,7 @@ class StatsdPropertiesTests {
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());

3
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: @@ -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):

Loading…
Cancel
Save