2
2
3
3
import com .google .common .collect .ImmutableList ;
4
4
import datadog .trace .api .Config ;
5
+ import java .io .IOException ;
6
+ import java .io .InputStream ;
7
+ import java .net .URL ;
8
+ import java .nio .charset .StandardCharsets ;
9
+ import java .util .ArrayList ;
10
+ import java .util .Collections ;
5
11
import java .util .List ;
6
12
import java .util .Map ;
7
13
import lombok .extern .slf4j .Slf4j ;
14
+ import org .apache .commons .io .IOUtils ;
8
15
import org .datadog .jmxfetch .App ;
9
16
import org .datadog .jmxfetch .AppConfig ;
10
17
@@ -27,6 +34,7 @@ private static void run(final Config config) {
27
34
return ;
28
35
}
29
36
37
+ final List <String > internalMetricsConfigs = getInternalMetricFiles ();
30
38
final List <String > metricsConfigs = config .getJmxFetchMetricsConfigs ();
31
39
final Integer checkPeriod = config .getJmxFetchCheckPeriod ();
32
40
final Integer refreshBeansPeriod = config .getJmxFetchRefreshBeansPeriod ();
@@ -36,7 +44,8 @@ private static void run(final Config config) {
36
44
final String logLevel = getLogLevel ();
37
45
38
46
log .error (
39
- "JMXFetch config: {} {} {} {} {} {} {}" ,
47
+ "JMXFetch config: {} {} {} {} {} {} {} {}" ,
48
+ internalMetricsConfigs ,
40
49
metricsConfigs ,
41
50
checkPeriod ,
42
51
refreshBeansPeriod ,
@@ -47,6 +56,7 @@ private static void run(final Config config) {
47
56
final AppConfig appConfig =
48
57
AppConfig .create (
49
58
DEFAULT_CONFIGS ,
59
+ internalMetricsConfigs ,
50
60
metricsConfigs ,
51
61
checkPeriod ,
52
62
refreshBeansPeriod ,
@@ -95,6 +105,29 @@ private static String getReporter(final Config config) {
95
105
return "statsd:" + host + ":" + config .getJmxFetchStatsdPort ();
96
106
}
97
107
108
+ private static List <String > getInternalMetricFiles () {
109
+ try {
110
+ final InputStream metricConfigsStream =
111
+ JMXFetch .class .getResourceAsStream ("metricconfigs.txt" );
112
+ if (metricConfigsStream == null ) {
113
+ log .debug ("metricconfigs not found. returning empty set" );
114
+ return Collections .emptyList ();
115
+ } else {
116
+ final String configs = IOUtils .toString (metricConfigsStream , StandardCharsets .UTF_8 );
117
+ final String [] split = configs .split ("\n " );
118
+ final List <String > result = new ArrayList <>(split .length );
119
+ for (final String config : split ) {
120
+ final URL resource = JMXFetch .class .getResource ("metricconfigs/" + config );
121
+ result .add (resource .getPath ().split ("\\ .jar!/" )[1 ]);
122
+ }
123
+ return result ;
124
+ }
125
+ } catch (final IOException e ) {
126
+ log .debug ("error reading metricconfigs. returning empty set" , e );
127
+ return Collections .emptyList ();
128
+ }
129
+ }
130
+
98
131
private static String getLogLocation () {
99
132
return System .getProperty ("org.slf4j.simpleLogger.logFile" , "System.err" );
100
133
}
0 commit comments