@@ -45,12 +45,17 @@ public void addClusterSettingsListeners(ClusterService clusterService, APMTeleme
45
45
clusterSettings .addSettingsUpdateConsumer (TELEMETRY_TRACING_ENABLED_SETTING , enabled -> {
46
46
apmTracer .setEnabled (enabled );
47
47
this .setAgentSetting ("instrument" , Boolean .toString (enabled ));
48
+ // The agent records data other than spans, e.g. JVM metrics, so we toggle this setting in order to
49
+ // minimise its impact to a running Elasticsearch.
50
+ boolean recording = enabled || clusterSettings .get (TELEMETRY_METRICS_ENABLED_SETTING );
51
+ this .setAgentSetting ("recording" , Boolean .toString (recording ));
48
52
});
49
53
clusterSettings .addSettingsUpdateConsumer (TELEMETRY_METRICS_ENABLED_SETTING , enabled -> {
50
54
apmMeterService .setEnabled (enabled );
51
55
// The agent records data other than spans, e.g. JVM metrics, so we toggle this setting in order to
52
56
// minimise its impact to a running Elasticsearch.
53
- this .setAgentSetting ("recording" , Boolean .toString (enabled ));
57
+ boolean recording = enabled || clusterSettings .get (TELEMETRY_TRACING_ENABLED_SETTING );
58
+ this .setAgentSetting ("recording" , Boolean .toString (recording ));
54
59
});
55
60
clusterSettings .addSettingsUpdateConsumer (TELEMETRY_TRACING_NAMES_INCLUDE_SETTING , apmTracer ::setIncludeNames );
56
61
clusterSettings .addSettingsUpdateConsumer (TELEMETRY_TRACING_NAMES_EXCLUDE_SETTING , apmTracer ::setExcludeNames );
@@ -59,11 +64,16 @@ public void addClusterSettingsListeners(ClusterService clusterService, APMTeleme
59
64
}
60
65
61
66
/**
62
- * Copies APM settings from the provided settings object into the corresponding system properties.
67
+ * Initialize APM settings from the provided settings object into the corresponding system properties.
68
+ * Later updates to these settings are synchronized using update consumers.
63
69
* @param settings the settings to apply
64
70
*/
65
- public void syncAgentSystemProperties (Settings settings ) {
66
- this .setAgentSetting ("recording" , Boolean .toString (TELEMETRY_TRACING_ENABLED_SETTING .get (settings )));
71
+ public void initAgentSystemProperties (Settings settings ) {
72
+ boolean tracing = TELEMETRY_TRACING_ENABLED_SETTING .get (settings );
73
+ boolean metrics = TELEMETRY_METRICS_ENABLED_SETTING .get (settings );
74
+
75
+ this .setAgentSetting ("recording" , Boolean .toString (tracing || metrics ));
76
+ this .setAgentSetting ("instrument" , Boolean .toString (tracing ));
67
77
// Apply values from the settings in the cluster state
68
78
APM_AGENT_SETTINGS .getAsMap (settings ).forEach (this ::setAgentSetting );
69
79
}
0 commit comments