diff --git a/README.md b/README.md index 170e376c..181a3a4d 100644 --- a/README.md +++ b/README.md @@ -68,6 +68,10 @@ GET localhost:9200/_plugins/_performanceanalyzer/config GET localhost:9200/_plugins/_performanceanalyzer/cluster/config {"currentPerformanceAnalyzerClusterState":9,"shardsPerCollection":0,"batchMetricsRetentionPeriodMinutes":7} + +GET localhost:9200/_plugins/_performanceanalyzer/cluster/config?verbose + +{"currentPerformanceAnalyzerClusterState":{"PerformanceAnalyzerEnabled":false,"RcaEnabled":false,"LoggingEnabled":false,"BatchMetricsEnabled":false,"ThreadContentionMonitoringEnabled":false},"shardsPerCollection":0,"batchMetricsRetentionPeriodMinutes":7 ``` The default retention period is 7 minutes. However, the cluster owner can adjust this by setting `batch-metrics-retention-period-minutes` in performance-analyzer.properties (note, setting this value will require a restart so that the cluster can read the new value upon startup). The value must be between 1 and 60 minutes (inclusive) — the range is capped like so in order to prevent excessive data retention on the cluster, which would eat up a lot of storage. diff --git a/licenses/performanceanalyzer-rca-3.0.0.0-SNAPSHOT.jar.sha1 b/licenses/performanceanalyzer-rca-3.0.0.0-SNAPSHOT.jar.sha1 deleted file mode 100644 index d0fb378b..00000000 --- a/licenses/performanceanalyzer-rca-3.0.0.0-SNAPSHOT.jar.sha1 +++ /dev/null @@ -1 +0,0 @@ -5f095985e19dc87f62919f3bf4c2c29beee1006e \ No newline at end of file diff --git a/src/main/java/org/opensearch/performanceanalyzer/config/setting/handler/PerformanceAnalyzerClusterSettingHandler.java b/src/main/java/org/opensearch/performanceanalyzer/config/setting/handler/PerformanceAnalyzerClusterSettingHandler.java index 4e000406..bd3bd9e8 100644 --- a/src/main/java/org/opensearch/performanceanalyzer/config/setting/handler/PerformanceAnalyzerClusterSettingHandler.java +++ b/src/main/java/org/opensearch/performanceanalyzer/config/setting/handler/PerformanceAnalyzerClusterSettingHandler.java @@ -6,6 +6,8 @@ package org.opensearch.performanceanalyzer.config.setting.handler; +import java.util.LinkedHashMap; +import java.util.Map; import org.opensearch.performanceanalyzer.config.PerformanceAnalyzerController; import org.opensearch.performanceanalyzer.config.setting.ClusterSettingListener; import org.opensearch.performanceanalyzer.config.setting.ClusterSettingsManager; @@ -34,6 +36,13 @@ public class PerformanceAnalyzerClusterSettingHandler implements ClusterSettingL .THREAD_CONTENTION_MONITORING_BIT .ordinal(); + static final String PA_ENABLED_KEY = "PerformanceAnalyzerEnabled"; + static final String RCA_ENABLED_KEY = "RcaEnabled"; + static final String LOGGING_ENABLED_KEY = "LoggingEnabled"; + static final String BATCH_METRICS_ENABLED_KEY = "BatchMetricsEnabled"; + static final String THREAD_CONTENTION_MONITORING_ENABLED_KEY = + "ThreadContentionMonitoringEnabled"; + private final PerformanceAnalyzerController controller; private final ClusterSettingsManager clusterSettingsManager; @@ -136,6 +145,22 @@ public int getCurrentClusterSettingValue() { return currentClusterSetting; } + public Map getCurrentClusterSettingValueVerbose() { + Map statusMap = new LinkedHashMap(); + statusMap.put(PA_ENABLED_KEY, getPAStateFromSetting(currentClusterSetting.intValue())); + statusMap.put(RCA_ENABLED_KEY, getRcaStateFromSetting(currentClusterSetting.intValue())); + statusMap.put( + LOGGING_ENABLED_KEY, getLoggingStateFromSetting(currentClusterSetting.intValue())); + statusMap.put( + BATCH_METRICS_ENABLED_KEY, + getBatchMetricsStateFromSetting(currentClusterSetting.intValue())); + statusMap.put( + THREAD_CONTENTION_MONITORING_ENABLED_KEY, + getThreadContentionMonitoringStateFromSetting(currentClusterSetting.intValue())); + + return statusMap; + } + /** * Gets the cluster settings from the controller. * diff --git a/src/main/java/org/opensearch/performanceanalyzer/http_action/config/PerformanceAnalyzerClusterConfigAction.java b/src/main/java/org/opensearch/performanceanalyzer/http_action/config/PerformanceAnalyzerClusterConfigAction.java index 01bbeadf..37a3ea1f 100644 --- a/src/main/java/org/opensearch/performanceanalyzer/http_action/config/PerformanceAnalyzerClusterConfigAction.java +++ b/src/main/java/org/opensearch/performanceanalyzer/http_action/config/PerformanceAnalyzerClusterConfigAction.java @@ -160,6 +160,7 @@ public List replacedRoutes() { @Override protected RestChannelConsumer prepareRequest(final RestRequest request, final NodeClient client) throws IOException { + request.param("verbose"); if (request.method() == RestRequest.Method.POST && request.content().length() > 0) { Map map = XContentHelper.convertToMap(request.content(), false, XContentType.JSON).v2(); @@ -200,7 +201,11 @@ protected RestChannelConsumer prepareRequest(final RestRequest request, final No try { XContentBuilder builder = channel.newBuilder(); builder.startObject(); - builder.field(CURRENT, clusterSettingHandler.getCurrentClusterSettingValue()); + builder.field( + CURRENT, + request.paramAsBoolean("verbose", false) + ? clusterSettingHandler.getCurrentClusterSettingValueVerbose() + : clusterSettingHandler.getCurrentClusterSettingValue()); builder.field(SHARDS_PER_COLLECTION, nodeStatsSettingHandler.getNodeStatsSetting()); builder.field( BATCH_METRICS_RETENTION_PERIOD_MINUTES, diff --git a/src/test/java/org/opensearch/performanceanalyzer/config/setting/handler/PerformanceAnalyzerClusterSettingHandlerTests.java b/src/test/java/org/opensearch/performanceanalyzer/config/setting/handler/PerformanceAnalyzerClusterSettingHandlerTests.java index 78196017..e89ef446 100644 --- a/src/test/java/org/opensearch/performanceanalyzer/config/setting/handler/PerformanceAnalyzerClusterSettingHandlerTests.java +++ b/src/test/java/org/opensearch/performanceanalyzer/config/setting/handler/PerformanceAnalyzerClusterSettingHandlerTests.java @@ -9,6 +9,8 @@ import static org.mockito.MockitoAnnotations.initMocks; import static org.powermock.api.mockito.PowerMockito.when; +import java.util.LinkedHashMap; +import java.util.Map; import org.junit.Before; import org.junit.Test; import org.mockito.Mock; @@ -19,6 +21,16 @@ public class PerformanceAnalyzerClusterSettingHandlerTests { private static final Boolean DISABLED_STATE = Boolean.FALSE; private static final Boolean ENABLED_STATE = Boolean.TRUE; + private final Map ALL_ENABLED_CLUSTER = + createStatusMap( + ENABLED_STATE, ENABLED_STATE, ENABLED_STATE, ENABLED_STATE, ENABLED_STATE); + private final Map ALL_DISABLED_CLUSTER = + createStatusMap( + DISABLED_STATE, DISABLED_STATE, DISABLED_STATE, DISABLED_STATE, DISABLED_STATE); + private final Map MIXED_STATUS_CLUSTER = + createStatusMap( + ENABLED_STATE, ENABLED_STATE, DISABLED_STATE, DISABLED_STATE, DISABLED_STATE); + private PerformanceAnalyzerClusterSettingHandler clusterSettingHandler; @Mock private PerformanceAnalyzerController mockPerformanceAnalyzerController; @@ -37,6 +49,8 @@ public void disabledClusterStateTest() { new PerformanceAnalyzerClusterSettingHandler( mockPerformanceAnalyzerController, mockClusterSettingsManager); assertEquals(0, clusterSettingHandler.getCurrentClusterSettingValue()); + assertEquals( + ALL_DISABLED_CLUSTER, clusterSettingHandler.getCurrentClusterSettingValueVerbose()); } @Test @@ -47,6 +61,8 @@ public void enabledClusterStateTest() { new PerformanceAnalyzerClusterSettingHandler( mockPerformanceAnalyzerController, mockClusterSettingsManager); assertEquals(31, clusterSettingHandler.getCurrentClusterSettingValue()); + assertEquals( + ALL_ENABLED_CLUSTER, clusterSettingHandler.getCurrentClusterSettingValueVerbose()); } @Test @@ -57,6 +73,8 @@ public void paDisabledClusterStateTest() { new PerformanceAnalyzerClusterSettingHandler( mockPerformanceAnalyzerController, mockClusterSettingsManager); assertEquals(0, clusterSettingHandler.getCurrentClusterSettingValue()); + assertEquals( + ALL_DISABLED_CLUSTER, clusterSettingHandler.getCurrentClusterSettingValueVerbose()); } @Test @@ -67,8 +85,12 @@ public void updateClusterStateTest() { new PerformanceAnalyzerClusterSettingHandler( mockPerformanceAnalyzerController, mockClusterSettingsManager); assertEquals(3, clusterSettingHandler.getCurrentClusterSettingValue()); + assertEquals( + MIXED_STATUS_CLUSTER, clusterSettingHandler.getCurrentClusterSettingValueVerbose()); clusterSettingHandler.onSettingUpdate(0); assertEquals(0, clusterSettingHandler.getCurrentClusterSettingValue()); + assertEquals( + ALL_DISABLED_CLUSTER, clusterSettingHandler.getCurrentClusterSettingValueVerbose()); } private void setControllerValues( @@ -86,4 +108,23 @@ private void setControllerValues( when(mockPerformanceAnalyzerController.isThreadContentionMonitoringEnabled()) .thenReturn(threadContentionMonitoringEnabled); } + + private Map createStatusMap( + final Boolean paEnabled, + final Boolean rcaEnabled, + final Boolean loggingEnabled, + final Boolean batchMetricsEnabled, + final Boolean threadContentionMonitoringEnabled) { + Map statusMap = new LinkedHashMap(); + statusMap.put(PerformanceAnalyzerClusterSettingHandler.PA_ENABLED_KEY, paEnabled); + statusMap.put(PerformanceAnalyzerClusterSettingHandler.RCA_ENABLED_KEY, rcaEnabled); + statusMap.put(PerformanceAnalyzerClusterSettingHandler.LOGGING_ENABLED_KEY, loggingEnabled); + statusMap.put( + PerformanceAnalyzerClusterSettingHandler.BATCH_METRICS_ENABLED_KEY, + batchMetricsEnabled); + statusMap.put( + PerformanceAnalyzerClusterSettingHandler.THREAD_CONTENTION_MONITORING_ENABLED_KEY, + threadContentionMonitoringEnabled); + return statusMap; + } }