Make xpack.monitoring.enabled setting a no-op (#55617) (#56061)

* Make xpack.monitoring.enabled setting a no-op

This commit turns xpack.monitoring.enabled into a no-op. Mostly, this involved
removing the setting from the setup for integration tests. Monitoring may
introduce some complexity for test setup and teardown, so we should keep an eye
out for turbulence and failures

* Docs for making deprecated setting a no-op
This commit is contained in:
William Brafford 2020-05-01 16:42:11 -04:00 committed by GitHub
parent 69f50fe79f
commit d53c941c41
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
24 changed files with 28 additions and 114 deletions

View File

@ -296,9 +296,11 @@ In Elasticsearch 7.8.0, the following settings no longer have any effect, and
have been deprecated:
* `xpack.ilm.enabled`
* `xpack.monitoring.enabled`
In other words, even if `xpack.ilm.enabled` is set to `false`, the ILM APIs
will be available.
Previously, these settings could be set to `false` in order to disable the
feature's APIs in a cluster. As of 7.8.0, these basic license features are
always enabled for the {default-dist}.
If you have disabled ILM so that you can use another tool to manage Watcher
indices, the newly introduced `xpack.watcher.use_ilm_index_management` setting
@ -308,7 +310,6 @@ Additionally, the following settings have been deprecated:
* `xpack.enrich.enabled`
* `xpack.flattened.enabled`
* `xpack.monitoring.enabled`
* `xpack.rollup.enabled`
* `xpack.slm.enabled`
* `xpack.sql.enabled`
@ -316,4 +317,4 @@ Additionally, the following settings have been deprecated:
* `xpack.vectors.enabled`
In future releases, it will not be possible to disable the APIs for Enrichment,
Flattened mappings, Monitoring, Rollup, SLM, SQL, Transforms, and Vectors.
Flattened mappings, Rollup, SLM, SQL, Transforms, and Vectors.

View File

@ -30,10 +30,6 @@ To learn about monitoring in general, see <<monitor-elasticsearch-cluster>>.
. Configure your cluster to collect monitoring data:
.. Verify that the deprecated `xpack.monitoring.enabled` setting is not set to
`false` on any node in the cluster. For more information, see
<<monitoring-settings>>.
.. Verify that the `xpack.monitoring.elasticsearch.collection.enabled` setting
is `true`, which is its default value, on each node in the cluster.
+

View File

@ -118,8 +118,6 @@ Add the following setting in the {kib} configuration file (`kibana.yml`):
xpack.monitoring.kibana.collection.enabled: false
----------------------------------
Leave the `xpack.monitoring.enabled` set to its default value (`true`).
For more information, see
{kibana-ref}/monitoring-settings-kb.html[Monitoring settings in {kib}].
--

View File

@ -28,12 +28,7 @@ For more information, see <<monitor-elasticsearch-cluster>>.
`xpack.monitoring.enabled`::
deprecated:[7.8.0,Basic License features should always be enabled] +
Set to `true` (default) to enable {es} {monitoring} for {es} on the node.
+
--
NOTE: To enable data collection, you must also set `xpack.monitoring.collection.enabled`
to `true`. Its default value is `false`.
--
This deprecated setting has no effect.
[float]
[[monitoring-collection-settings]]

View File

@ -45,7 +45,6 @@ public abstract class CcrSingleNodeTestCase extends ESSingleNodeTestCase {
protected Settings nodeSettings() {
Settings.Builder builder = Settings.builder();
builder.put(XPackSettings.SECURITY_ENABLED.getKey(), false);
builder.put(XPackSettings.MONITORING_ENABLED.getKey(), false);
builder.put(XPackSettings.WATCHER_ENABLED.getKey(), false);
builder.put(XPackSettings.MACHINE_LEARNING_ENABLED.getKey(), false);
builder.put(LicenseService.SELF_GENERATED_LICENSE_TYPE.getKey(), "trial");

View File

@ -61,7 +61,12 @@ public class XPackSettings {
/** Setting for enabling or disabling security. Defaults to true. */
public static final Setting<Boolean> SECURITY_ENABLED = Setting.boolSetting("xpack.security.enabled", true, Setting.Property.NodeScope);
/** Setting for enabling or disabling monitoring. */
/**
* Setting for enabling or disabling monitoring.
* <p>
* This setting is now a no-op: setting it to false is permitted, but does nothing.
*/
@Deprecated // since = "7.8.0"
public static final Setting<Boolean> MONITORING_ENABLED = Setting.boolSetting("xpack.monitoring.enabled", true,
Property.NodeScope, Property.Deprecated);

View File

@ -32,9 +32,8 @@ public class MonitoringFeatureSetUsage extends XPackFeatureSet.Usage {
}
}
public MonitoringFeatureSetUsage(boolean available, boolean enabled,
boolean collectionEnabled, Map<String, Object> exporters) {
super(XPackField.MONITORING, available, enabled);
public MonitoringFeatureSetUsage(boolean available, boolean collectionEnabled, Map<String, Object> exporters) {
super(XPackField.MONITORING, available, true);
this.exporters = exporters;
this.collectionEnabled = collectionEnabled;
}

View File

@ -37,7 +37,6 @@ public class LicensesManagerServiceTests extends ESSingleNodeTestCase {
return Settings.builder()
.put(super.nodeSettings())
.put(XPackSettings.SECURITY_ENABLED.getKey(), false)
.put(XPackSettings.MONITORING_ENABLED.getKey(), false)
.put(XPackSettings.WATCHER_ENABLED.getKey(), false)
.put(XPackSettings.GRAPH_ENABLED.getKey(), false)
.put(XPackSettings.MACHINE_LEARNING_ENABLED.getKey(), false)

View File

@ -25,7 +25,6 @@ public abstract class AbstractEqlIntegTestCase extends ESIntegTestCase {
protected Settings nodeSettings(int nodeOrdinal) {
Settings.Builder settings = Settings.builder().put(super.nodeSettings(nodeOrdinal));
settings.put(XPackSettings.SECURITY_ENABLED.getKey(), false);
settings.put(XPackSettings.MONITORING_ENABLED.getKey(), false);
settings.put(XPackSettings.WATCHER_ENABLED.getKey(), false);
settings.put(XPackSettings.GRAPH_ENABLED.getKey(), false);
settings.put(XPackSettings.MACHINE_LEARNING_ENABLED.getKey(), false);

View File

@ -98,7 +98,6 @@ public class IndexLifecycleInitialisationTests extends ESIntegTestCase {
settings.put(XPackSettings.MACHINE_LEARNING_ENABLED.getKey(), false);
settings.put(XPackSettings.SECURITY_ENABLED.getKey(), false);
settings.put(XPackSettings.WATCHER_ENABLED.getKey(), false);
settings.put(XPackSettings.MONITORING_ENABLED.getKey(), false);
settings.put(XPackSettings.GRAPH_ENABLED.getKey(), false);
settings.put(LifecycleSettings.LIFECYCLE_POLL_INTERVAL, "1s");

View File

@ -47,7 +47,6 @@ public class SnapshotLifecycleInitialisationTests extends ESSingleNodeTestCase {
settings.put(XPackSettings.MACHINE_LEARNING_ENABLED.getKey(), false);
settings.put(XPackSettings.SECURITY_ENABLED.getKey(), false);
settings.put(XPackSettings.WATCHER_ENABLED.getKey(), false);
settings.put(XPackSettings.MONITORING_ENABLED.getKey(), false);
settings.put(XPackSettings.GRAPH_ENABLED.getKey(), false);
settings.put(Environment.PATH_REPO_SETTING.getKey(), repositoryLocation);

View File

@ -44,7 +44,6 @@ public abstract class MlSingleNodeTestCase extends ESSingleNodeTestCase {
newSettings.put(LicenseService.SELF_GENERATED_LICENSE_TYPE.getKey(), "trial");
// Disable security otherwise delete-by-query action fails to get authorized
newSettings.put(XPackSettings.SECURITY_ENABLED.getKey(), false);
newSettings.put(XPackSettings.MONITORING_ENABLED.getKey(), false);
newSettings.put(XPackSettings.WATCHER_ENABLED.getKey(), false);
// Disable ILM history index so that the tests don't have to clean it up
newSettings.put(LifecycleSettings.LIFECYCLE_HISTORY_INDEX_ENABLED_SETTING.getKey(), false);

View File

@ -26,7 +26,6 @@ public class AnnotationIndexIT extends MlSingleNodeTestCase {
protected Settings nodeSettings() {
Settings.Builder newSettings = Settings.builder();
newSettings.put(super.nodeSettings());
newSettings.put(XPackSettings.MONITORING_ENABLED.getKey(), false);
newSettings.put(XPackSettings.SECURITY_ENABLED.getKey(), false);
newSettings.put(XPackSettings.WATCHER_ENABLED.getKey(), false);
return newSettings.build();

View File

@ -95,7 +95,6 @@ public abstract class BaseMlIntegTestCase extends ESIntegTestCase {
settings.put(XPackSettings.SECURITY_ENABLED.getKey(), false);
settings.put(LicenseService.SELF_GENERATED_LICENSE_TYPE.getKey(), "trial");
settings.put(XPackSettings.WATCHER_ENABLED.getKey(), false);
settings.put(XPackSettings.MONITORING_ENABLED.getKey(), false);
settings.put(XPackSettings.GRAPH_ENABLED.getKey(), false);
settings.put(LifecycleSettings.LIFECYCLE_HISTORY_INDEX_ENABLED_SETTING.getKey(), false);
return settings.build();

View File

@ -34,7 +34,6 @@ import org.elasticsearch.script.ScriptService;
import org.elasticsearch.threadpool.ThreadPool;
import org.elasticsearch.watcher.ResourceWatcherService;
import org.elasticsearch.xpack.core.XPackPlugin;
import org.elasticsearch.xpack.core.XPackSettings;
import org.elasticsearch.xpack.core.monitoring.MonitoringField;
import org.elasticsearch.xpack.core.monitoring.action.MonitoringBulkAction;
import org.elasticsearch.xpack.core.ssl.SSLService;
@ -66,7 +65,6 @@ import java.util.Map;
import java.util.Set;
import java.util.function.Supplier;
import static java.util.Collections.emptyList;
import static java.util.Collections.singletonList;
import static org.elasticsearch.common.settings.Setting.boolSetting;
@ -85,7 +83,6 @@ public class Monitoring extends Plugin implements ActionPlugin, ReloadablePlugin
true, Setting.Property.Dynamic, Setting.Property.NodeScope, Setting.Property.Deprecated);
protected final Settings settings;
private final boolean enabled;
private final boolean transportClientMode;
private Exporters exporters;
@ -93,7 +90,6 @@ public class Monitoring extends Plugin implements ActionPlugin, ReloadablePlugin
public Monitoring(Settings settings) {
this.settings = settings;
this.transportClientMode = XPackPlugin.transportClientMode(settings);
this.enabled = XPackSettings.MONITORING_ENABLED.get(settings);
}
// overridable by tests
@ -101,10 +97,6 @@ public class Monitoring extends Plugin implements ActionPlugin, ReloadablePlugin
protected XPackLicenseState getLicenseState() { return XPackPlugin.getSharedLicenseState(); }
protected LicenseService getLicenseService() { return XPackPlugin.getSharedLicenseService(); }
boolean isEnabled() {
return enabled;
}
boolean isTransportClient() {
return transportClientMode;
}
@ -114,7 +106,7 @@ public class Monitoring extends Plugin implements ActionPlugin, ReloadablePlugin
List<Module> modules = new ArrayList<>();
modules.add(b -> {
XPackPlugin.bindFeatureSet(b, MonitoringFeatureSet.class);
if (transportClientMode || enabled == false) {
if (transportClientMode) {
b.bind(MonitoringService.class).toProvider(Providers.of(null));
b.bind(Exporters.class).toProvider(Providers.of(null));
}
@ -129,10 +121,6 @@ public class Monitoring extends Plugin implements ActionPlugin, ReloadablePlugin
NodeEnvironment nodeEnvironment, NamedWriteableRegistry namedWriteableRegistry,
IndexNameExpressionResolver expressionResolver,
Supplier<RepositoriesService> repositoriesServiceSupplier) {
if (enabled == false) {
return Collections.emptyList();
}
final ClusterSettings clusterSettings = clusterService.getClusterSettings();
final CleanerService cleanerService = new CleanerService(settings, clusterSettings, threadPool, getLicenseState());
final SSLService dynamicSSLService = getSslService().createDynamicSSLService();
@ -161,9 +149,6 @@ public class Monitoring extends Plugin implements ActionPlugin, ReloadablePlugin
@Override
public List<ActionHandler<? extends ActionRequest, ? extends ActionResponse>> getActions() {
if (false == enabled) {
return emptyList();
}
return singletonList(new ActionHandler<>(MonitoringBulkAction.INSTANCE, TransportMonitoringBulkAction.class));
}
@ -171,9 +156,6 @@ public class Monitoring extends Plugin implements ActionPlugin, ReloadablePlugin
public List<RestHandler> getRestHandlers(Settings settings, RestController restController, ClusterSettings clusterSettings,
IndexScopedSettings indexScopedSettings, SettingsFilter settingsFilter, IndexNameExpressionResolver indexNameExpressionResolver,
Supplier<DiscoveryNodes> nodesInCluster) {
if (false == enabled) {
return emptyList();
}
return singletonList(new RestMonitoringBulkAction());
}

View File

@ -8,11 +8,9 @@ package org.elasticsearch.xpack.monitoring;
import org.elasticsearch.action.ActionListener;
import org.elasticsearch.common.Nullable;
import org.elasticsearch.common.inject.Inject;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.license.XPackLicenseState;
import org.elasticsearch.xpack.core.XPackFeatureSet;
import org.elasticsearch.xpack.core.XPackField;
import org.elasticsearch.xpack.core.XPackSettings;
import org.elasticsearch.xpack.core.monitoring.MonitoringFeatureSetUsage;
import org.elasticsearch.xpack.monitoring.exporter.Exporter;
import org.elasticsearch.xpack.monitoring.exporter.Exporters;
@ -22,17 +20,14 @@ import java.util.Map;
public class MonitoringFeatureSet implements XPackFeatureSet {
private final boolean enabled;
private final MonitoringService monitoring;
private final XPackLicenseState licenseState;
private final Exporters exporters;
@Inject
public MonitoringFeatureSet(Settings settings,
@Nullable MonitoringService monitoring,
public MonitoringFeatureSet(@Nullable MonitoringService monitoring,
@Nullable XPackLicenseState licenseState,
@Nullable Exporters exporters) {
this.enabled = XPackSettings.MONITORING_ENABLED.get(settings);
this.monitoring = monitoring;
this.licenseState = licenseState;
this.exporters = exporters;
@ -50,7 +45,7 @@ public class MonitoringFeatureSet implements XPackFeatureSet {
@Override
public boolean enabled() {
return enabled;
return true;
}
@Override
@ -62,7 +57,7 @@ public class MonitoringFeatureSet implements XPackFeatureSet {
public void usage(ActionListener<XPackFeatureSet.Usage> listener) {
final boolean collectionEnabled = monitoring != null && monitoring.isMonitoringActive();
listener.onResponse(new MonitoringFeatureSetUsage(available(), enabled(), collectionEnabled, exportersUsage(exporters)));
listener.onResponse(new MonitoringFeatureSetUsage(available(), collectionEnabled, exportersUsage(exporters)));
}
static Map<String, Object> exportersUsage(Exporters exporters) {

View File

@ -10,15 +10,12 @@ import org.elasticsearch.action.support.PlainActionFuture;
import org.elasticsearch.common.bytes.BytesReference;
import org.elasticsearch.common.io.stream.BytesStreamOutput;
import org.elasticsearch.common.io.stream.StreamInput;
import org.elasticsearch.common.settings.Setting;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.xcontent.ToXContent;
import org.elasticsearch.common.xcontent.XContentBuilder;
import org.elasticsearch.license.XPackLicenseState;
import org.elasticsearch.test.ESTestCase;
import org.elasticsearch.test.rest.yaml.ObjectPath;
import org.elasticsearch.xpack.core.XPackFeatureSet;
import org.elasticsearch.xpack.core.XPackSettings;
import org.elasticsearch.xpack.core.XPackFeatureSet.Usage;
import org.elasticsearch.xpack.core.monitoring.MonitoringFeatureSetUsage;
import org.elasticsearch.xpack.monitoring.exporter.Exporter;
@ -44,23 +41,19 @@ public class MonitoringFeatureSetTests extends ESTestCase {
private final Exporters exporters = mock(Exporters.class);
public void testAvailable() {
MonitoringFeatureSet featureSet = new MonitoringFeatureSet(Settings.EMPTY, monitoring, licenseState, exporters);
MonitoringFeatureSet featureSet = new MonitoringFeatureSet(monitoring, licenseState, exporters);
boolean available = randomBoolean();
when(licenseState.isAllowed(XPackLicenseState.Feature.MONITORING)).thenReturn(available);
assertThat(featureSet.available(), is(available));
}
public void testEnabledSetting() {
boolean enabled = randomBoolean();
Settings.Builder settings = Settings.builder();
settings.put("xpack.monitoring.enabled", enabled);
MonitoringFeatureSet featureSet = new MonitoringFeatureSet(settings.build(), monitoring, licenseState, exporters);
assertThat(featureSet.enabled(), is(enabled));
assertSettingDeprecationsAndWarnings(new Setting<?>[] { XPackSettings.MONITORING_ENABLED } );
public void testMonitoringEnabledByDefault() {
MonitoringFeatureSet featureSet = new MonitoringFeatureSet(monitoring, licenseState, exporters);
assertThat(featureSet.enabled(), is(true));
}
public void testEnabledDefault() {
MonitoringFeatureSet featureSet = new MonitoringFeatureSet(Settings.EMPTY, monitoring, licenseState, exporters);
MonitoringFeatureSet featureSet = new MonitoringFeatureSet(monitoring, licenseState, exporters);
assertThat(featureSet.enabled(), is(true));
}
@ -100,7 +93,7 @@ public class MonitoringFeatureSetTests extends ESTestCase {
when(exporters.getEnabledExporters()).thenReturn(exporterList);
when(monitoring.isMonitoringActive()).thenReturn(collectionEnabled);
MonitoringFeatureSet featureSet = new MonitoringFeatureSet(Settings.EMPTY, monitoring, licenseState, exporters);
MonitoringFeatureSet featureSet = new MonitoringFeatureSet(monitoring, licenseState, exporters);
PlainActionFuture<Usage> future = new PlainActionFuture<>();
featureSet.usage(future);
XPackFeatureSet.Usage monitoringUsage = future.get();

View File

@ -1,38 +0,0 @@
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the Elastic License;
* you may not use this file except in compliance with the Elastic License.
*/
package org.elasticsearch.xpack.monitoring;
import org.elasticsearch.client.Client;
import org.elasticsearch.client.transport.TransportClient;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.test.ESTestCase;
import static org.hamcrest.Matchers.is;
public class MonitoringPluginClientTests extends ESTestCase {
public void testModulesWithClientSettings() throws Exception {
Settings settings = Settings.builder()
.put("path.home", createTempDir())
.put(Client.CLIENT_TYPE_SETTING_S.getKey(), TransportClient.CLIENT_TYPE)
.build();
Monitoring plugin = new Monitoring(settings);
assertThat(plugin.isEnabled(), is(true));
assertThat(plugin.isTransportClient(), is(true));
}
public void testModulesWithNodeSettings() throws Exception {
// these settings mimic what ES does when running as a node...
Settings settings = Settings.builder()
.put("path.home", createTempDir())
.put(Client.CLIENT_TYPE_SETTING_S.getKey(), "node")
.build();
Monitoring plugin = new Monitoring(settings);
assertThat(plugin.isEnabled(), is(true));
assertThat(plugin.isTransportClient(), is(false));
}
}

View File

@ -206,7 +206,7 @@ public class ClusterStatsCollectorTests extends BaseCollectorTestCase {
.thenReturn(indices);
final XPackUsageResponse xPackUsageResponse = new XPackUsageResponse(
singletonList(new MonitoringFeatureSetUsage(true, true, false, null)));
singletonList(new MonitoringFeatureSetUsage(true, false, null)));
@SuppressWarnings("unchecked")
final ActionFuture<XPackUsageResponse> xPackUsageFuture = (ActionFuture<XPackUsageResponse>) mock(ActionFuture.class);
@ -305,7 +305,7 @@ public class ClusterStatsCollectorTests extends BaseCollectorTestCase {
when(client.admin()).thenReturn(adminClient);
final XPackUsageResponse xPackUsageResponse = new XPackUsageResponse(
singletonList(new MonitoringFeatureSetUsage(true, true, false, null)));
singletonList(new MonitoringFeatureSetUsage(true, false, null)));
@SuppressWarnings("unchecked")
final ActionFuture<XPackUsageResponse> xPackUsageFuture = (ActionFuture<XPackUsageResponse>) mock(ActionFuture.class);
when(client.execute(same(XPackUsageAction.INSTANCE), any(XPackUsageRequest.class))).thenReturn(xPackUsageFuture);

View File

@ -234,7 +234,7 @@ public class ClusterStatsMonitoringDocTests extends BaseMonitoringDocTestCase<Cl
.maxNodes(2)
.build();
final List<XPackFeatureSet.Usage> usages = singletonList(new MonitoringFeatureSetUsage(false, true, false, null));
final List<XPackFeatureSet.Usage> usages = singletonList(new MonitoringFeatureSetUsage(false, false, null));
final NodeInfo mockNodeInfo = mock(NodeInfo.class);
when(mockNodeInfo.getVersion()).thenReturn(Version.V_6_0_0_alpha2);

View File

@ -138,9 +138,8 @@ public class SecuritySettingsSource extends NodeConfigurationSource {
.put(XPackSettings.SECURITY_ENABLED.getKey(), true)
.put(NetworkModule.TRANSPORT_TYPE_KEY, randomBoolean() ? SecurityField.NAME4 : SecurityField.NIO)
.put(NetworkModule.HTTP_TYPE_KEY, randomBoolean() ? SecurityField.NAME4 : SecurityField.NIO)
//TODO: for now isolate security tests from watcher & monitoring (randomize this later)
//TODO: for now isolate security tests from watcher (randomize this later)
.put(XPackSettings.WATCHER_ENABLED.getKey(), false)
.put(XPackSettings.MONITORING_ENABLED.getKey(), false)
.put(XPackSettings.AUDIT_ENABLED.getKey(), randomBoolean())
.put(LoggingAuditTrail.EMIT_HOST_ADDRESS_SETTING.getKey(), randomBoolean())
.put(LoggingAuditTrail.EMIT_HOST_NAME_SETTING.getKey(), randomBoolean())

View File

@ -23,7 +23,6 @@ public abstract class AbstractSqlIntegTestCase extends ESIntegTestCase {
protected Settings nodeSettings(int nodeOrdinal) {
Settings.Builder settings = Settings.builder().put(super.nodeSettings(nodeOrdinal));
settings.put(XPackSettings.SECURITY_ENABLED.getKey(), false);
settings.put(XPackSettings.MONITORING_ENABLED.getKey(), false);
settings.put(XPackSettings.WATCHER_ENABLED.getKey(), false);
settings.put(XPackSettings.GRAPH_ENABLED.getKey(), false);
settings.put(XPackSettings.MACHINE_LEARNING_ENABLED.getKey(), false);

View File

@ -110,7 +110,6 @@ public abstract class AbstractWatcherIntegrationTestCase extends ESIntegTestCase
protected Settings nodeSettings(int nodeOrdinal) {
return Settings.builder()
.put(super.nodeSettings(nodeOrdinal))
.put(XPackSettings.MONITORING_ENABLED.getKey(), false)
.put(XPackSettings.SECURITY_ENABLED.getKey(), false)
.put(LicenseService.SELF_GENERATED_LICENSE_TYPE.getKey(), "trial")
// we do this by default in core, but for watcher this isn't needed and only adds noise.

View File

@ -60,7 +60,6 @@ public class RejectedExecutionTests extends AbstractWatcherIntegrationTestCase {
return Settings.builder()
.put(super.nodeSettings(nodeOrdinal))
.put(XPackSettings.MONITORING_ENABLED.getKey(), false)
.put(XPackSettings.SECURITY_ENABLED.getKey(), false)
.put(LicenseService.SELF_GENERATED_LICENSE_TYPE.getKey(), "trial")
.put("thread_pool.write.size", 1)