Skip to content

Commit 9a7618b

Browse files
authored
add jmxfetch telemetry in code (#467)
* failing attempt * removed logic for adding jmx_tele into a init conf * temp debug logs * added logic for in-code check configuration * updated some formatting * simplified process * fixed some formating * changed names * removed tags and added changelog
1 parent e30e615 commit 9a7618b

File tree

3 files changed

+50
-1
lines changed

3 files changed

+50
-1
lines changed

CHANGELOG.md

+3-1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ Changelog
22
=========
33
# Next / TBD
44

5+
* [FEATURE] Adds a configurable jmxfetch telemetry check to improve jmxfetch observability [#467][]
56
* [FEATURE] Added an option to enable removal of extra quotation marks during tag extraction from Java management beans' parameters/attributes [#469][]
67

78
# 0.47.10 / 2023-08-10
@@ -748,9 +749,10 @@ Changelog
748749
[#432]: https://github.com/DataDog/jmxfetch/issues/432
749750
[#436]: https://github.com/DataDog/jmxfetch/issues/436
750751
[#437]: https://github.com/DataDog/jmxfetch/issues/437
752+
[#467]: https://github.com/DataDog/jmxfetch/issues/467
751753
[#457]: https://github.com/DataDog/jmxfetch/issues/457
752754
[#449]: https://github.com/DataDog/jmxfetch/issues/449
753-
[#469]: https://github.com/DataDog/jmxfetch/pull/469
755+
[#469]: https://github.com/DataDog/jmxfetch/issues/469
754756
[@alz]: https://github.com/alz
755757
[@aoking]: https://github.com/aoking
756758
[@arrawatia]: https://github.com/arrawatia

src/main/java/org/datadog/jmxfetch/App.java

+37
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
import java.util.Arrays;
2929
import java.util.Collection;
3030
import java.util.Collections;
31+
import java.util.HashMap;
3132
import java.util.Iterator;
3233
import java.util.List;
3334
import java.util.ListIterator;
@@ -899,6 +900,15 @@ public void init(final boolean forceNewConnection) {
899900
}
900901
}
901902

903+
// Enables jmxfetch telemetry if there are other checks active and it's been enabled
904+
if (appConfig.getJmxfetchTelemetry() && newInstances.size() >= 1) {
905+
log.info("Adding jmxfetch telemetry check");
906+
final Instance instance = instantiate(getTelemetryInstanceConfig(),
907+
getTelemetryInitConfig(), "jmxfetch_telemetry_check",
908+
this.appConfig);
909+
newInstances.add(instance);
910+
}
911+
902912
final List<InstanceTask<Void>> instanceInitTasks =
903913
new ArrayList<>(newInstances.size());
904914
for (Instance instance : newInstances) {
@@ -947,6 +957,33 @@ public TaskStatusHandler invoke(
947957
}
948958
}
949959

960+
private Map<String,Object> getTelemetryInitConfig() {
961+
Map<String,Object> config = new HashMap<String,Object>();
962+
config.put("is_jmx",true);
963+
return config;
964+
}
965+
966+
private Map<String,Object> getTelemetryInstanceConfig() {
967+
Map<String,Object> config = new HashMap<String,Object>();
968+
config.put("name","jmxfetch_telemetry_instance");
969+
config.put("collect_default_jvm_metrics",true);
970+
config.put("new_gc_metrics",true);
971+
config.put("process_name_regex",".*org.datadog.jmxfetch.App.*");
972+
973+
List<Object> conf = new ArrayList<Object>();
974+
Map<String,Object> confMap = new HashMap<String,Object>();
975+
Map<String,Object> includeMap = new HashMap<String,Object>();
976+
includeMap.put("domain","jmxfetch");
977+
confMap.put("include", includeMap);
978+
conf.add(confMap);
979+
config.put("conf",conf);
980+
981+
List<String> tags = new ArrayList<String>();
982+
config.put("tags", tags);
983+
984+
return config;
985+
}
986+
950987
static TaskStatusHandler processRecoveryResults(
951988
final Instance instance,
952989
final Future<Void> future,

src/main/java/org/datadog/jmxfetch/AppConfig.java

+10
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,12 @@ public class AppConfig {
122122
required = false)
123123
private boolean statsdTelemetry;
124124

125+
@Parameter(
126+
names = {"--jmxfetch_telemetry", "-jt"},
127+
description = "Enable additional jmxfetch telemetry reporting",
128+
required = false)
129+
private boolean jmxfetchTelemetry;
130+
125131
@Parameter(
126132
names = {"--statsd_queue_size", "-sq"},
127133
description = "Maximum number of unprocessed messages in the StatsD client queue.",
@@ -411,6 +417,10 @@ public boolean getStatsdTelemetry() {
411417
return statsdTelemetry;
412418
}
413419

420+
public boolean getJmxfetchTelemetry() {
421+
return jmxfetchTelemetry;
422+
}
423+
414424
public int getStatsdQueueSize() {
415425
return statsdQueueSize;
416426
}

0 commit comments

Comments
 (0)