Skip to content

Commit 22ac1ed

Browse files
committed
Adding configuration variables needed for StatsD metric support
1 parent 30a9872 commit 22ac1ed

2 files changed

Lines changed: 44 additions & 0 deletions

File tree

dd-trace-api/src/main/java/datadog/trace/api/Config.java

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,10 @@ public class Config {
8787
public static final String JMX_FETCH_STATSD_HOST = "jmxfetch.statsd.host";
8888
public static final String JMX_FETCH_STATSD_PORT = "jmxfetch.statsd.port";
8989

90+
public static final String HEALTH_METRICS_ENABLED = "trace.health.metrics.enabled";
91+
public static final String HEALTH_METRICS_STATSD_HOST = "trace.health.metrics.statsd.host";
92+
public static final String HEALTH_METRICS_STATSD_PORT = "trace.health.metrics.statsd.port";
93+
9094
public static final String LOGS_INJECTION_ENABLED = "logs.injection";
9195

9296
public static final String SERVICE_TAG = "service";
@@ -127,6 +131,9 @@ public class Config {
127131

128132
public static final int DEFAULT_JMX_FETCH_STATSD_PORT = 8125;
129133

134+
public static final boolean DEFAULT_METRICS_ENABLED = false;
135+
// No default constants for metrics statsd support -- falls back to jmx fetch values
136+
130137
public static final boolean DEFAULT_LOGS_INJECTION_ENABLED = false;
131138

132139
private static final String SPLIT_BY_SPACE_OR_COMMA_REGEX = "[,\\s]+";
@@ -190,6 +197,11 @@ public enum PropagationStyle {
190197
@Getter private final String jmxFetchStatsdHost;
191198
@Getter private final Integer jmxFetchStatsdPort;
192199

200+
// These values are default-ed to those of jmx fetch values as needed
201+
@Getter private final boolean healthMetricsEnabled;
202+
@Getter private final String healthMetricsStatsdHost;
203+
@Getter private final Integer healthMetricsStatsdPort;
204+
193205
@Getter private final boolean logsInjectionEnabled;
194206

195207
@Getter private final boolean reportHostName;
@@ -300,6 +312,12 @@ public enum PropagationStyle {
300312
jmxFetchStatsdPort =
301313
getIntegerSettingFromEnvironment(JMX_FETCH_STATSD_PORT, DEFAULT_JMX_FETCH_STATSD_PORT);
302314

315+
// Writer.Builder createMonitor will use the values of the JMX fetch & agent to fill-in defaults
316+
healthMetricsEnabled =
317+
getBooleanSettingFromEnvironment(HEALTH_METRICS_ENABLED, DEFAULT_METRICS_ENABLED);
318+
healthMetricsStatsdHost = getSettingFromEnvironment(HEALTH_METRICS_STATSD_HOST, null);
319+
healthMetricsStatsdPort = getIntegerSettingFromEnvironment(HEALTH_METRICS_STATSD_PORT, null);
320+
303321
logsInjectionEnabled =
304322
getBooleanSettingFromEnvironment(LOGS_INJECTION_ENABLED, DEFAULT_LOGS_INJECTION_ENABLED);
305323

@@ -417,6 +435,14 @@ private Config(final Properties properties, final Config parent) {
417435
jmxFetchStatsdPort =
418436
getPropertyIntegerValue(properties, JMX_FETCH_STATSD_PORT, parent.jmxFetchStatsdPort);
419437

438+
healthMetricsEnabled =
439+
getPropertyBooleanValue(properties, HEALTH_METRICS_ENABLED, DEFAULT_METRICS_ENABLED);
440+
healthMetricsStatsdHost =
441+
properties.getProperty(HEALTH_METRICS_STATSD_HOST, parent.healthMetricsStatsdHost);
442+
healthMetricsStatsdPort =
443+
getPropertyIntegerValue(
444+
properties, HEALTH_METRICS_STATSD_PORT, parent.healthMetricsStatsdPort);
445+
420446
logsInjectionEnabled =
421447
getBooleanSettingFromEnvironment(LOGS_INJECTION_ENABLED, DEFAULT_LOGS_INJECTION_ENABLED);
422448

dd-trace-api/src/test/groovy/datadog/trace/api/ConfigTest.groovy

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,9 @@ import static datadog.trace.api.Config.TRACE_ENABLED
4040
import static datadog.trace.api.Config.TRACE_REPORT_HOSTNAME
4141
import static datadog.trace.api.Config.TRACE_RESOLVER_ENABLED
4242
import static datadog.trace.api.Config.WRITER_TYPE
43+
import static datadog.trace.api.Config.HEALTH_METRICS_ENABLED
44+
import static datadog.trace.api.Config.HEALTH_METRICS_STATSD_HOST
45+
import static datadog.trace.api.Config.HEALTH_METRICS_STATSD_PORT
4346

4447
class ConfigTest extends DDSpecification {
4548
@Rule
@@ -93,6 +96,9 @@ class ConfigTest extends DDSpecification {
9396
config.jmxFetchRefreshBeansPeriod == null
9497
config.jmxFetchStatsdHost == null
9598
config.jmxFetchStatsdPort == DEFAULT_JMX_FETCH_STATSD_PORT
99+
config.healthMetricsEnabled == false
100+
config.healthMetricsStatsdHost == null
101+
config.healthMetricsStatsdPort == null
96102
config.toString().contains("unnamed-java-app")
97103

98104
where:
@@ -136,6 +142,9 @@ class ConfigTest extends DDSpecification {
136142
prop.setProperty(JMX_FETCH_REFRESH_BEANS_PERIOD, "200")
137143
prop.setProperty(JMX_FETCH_STATSD_HOST, "statsd host")
138144
prop.setProperty(JMX_FETCH_STATSD_PORT, "321")
145+
prop.setProperty(HEALTH_METRICS_ENABLED, "true")
146+
prop.setProperty(HEALTH_METRICS_STATSD_HOST, "metrics statsd host")
147+
prop.setProperty(HEALTH_METRICS_STATSD_PORT, "654")
139148

140149
when:
141150
Config config = Config.get(prop)
@@ -169,6 +178,9 @@ class ConfigTest extends DDSpecification {
169178
config.jmxFetchRefreshBeansPeriod == 200
170179
config.jmxFetchStatsdHost == "statsd host"
171180
config.jmxFetchStatsdPort == 321
181+
config.healthMetricsEnabled == true
182+
config.healthMetricsStatsdHost == "metrics statsd host"
183+
config.healthMetricsStatsdPort == 654
172184
}
173185

174186
def "specify overrides via system properties"() {
@@ -203,6 +215,9 @@ class ConfigTest extends DDSpecification {
203215
System.setProperty(PREFIX + JMX_FETCH_REFRESH_BEANS_PERIOD, "200")
204216
System.setProperty(PREFIX + JMX_FETCH_STATSD_HOST, "statsd host")
205217
System.setProperty(PREFIX + JMX_FETCH_STATSD_PORT, "321")
218+
System.setProperty(PREFIX + HEALTH_METRICS_ENABLED, "true")
219+
System.setProperty(PREFIX + HEALTH_METRICS_STATSD_HOST, "metrics statsd host")
220+
System.setProperty(PREFIX + HEALTH_METRICS_STATSD_PORT, "654")
206221

207222
when:
208223
Config config = new Config()
@@ -236,6 +251,9 @@ class ConfigTest extends DDSpecification {
236251
config.jmxFetchRefreshBeansPeriod == 200
237252
config.jmxFetchStatsdHost == "statsd host"
238253
config.jmxFetchStatsdPort == 321
254+
config.healthMetricsEnabled == true
255+
config.healthMetricsStatsdHost == "metrics statsd host"
256+
config.healthMetricsStatsdPort == 654
239257
}
240258

241259
def "specify overrides via env vars"() {

0 commit comments

Comments
 (0)