Marvel: Add indices options to Index Stats/Recovery collectors
Original commit: elastic/x-pack-elasticsearch@a4bc62dff7
This commit is contained in:
parent
b8666f0bca
commit
1ec293a4a6
|
@ -7,6 +7,7 @@ package org.elasticsearch.marvel.agent.collector.indices;
|
||||||
|
|
||||||
import com.google.common.collect.ImmutableList;
|
import com.google.common.collect.ImmutableList;
|
||||||
import org.elasticsearch.action.admin.indices.recovery.RecoveryResponse;
|
import org.elasticsearch.action.admin.indices.recovery.RecoveryResponse;
|
||||||
|
import org.elasticsearch.action.support.IndicesOptions;
|
||||||
import org.elasticsearch.client.Client;
|
import org.elasticsearch.client.Client;
|
||||||
import org.elasticsearch.cluster.ClusterName;
|
import org.elasticsearch.cluster.ClusterName;
|
||||||
import org.elasticsearch.cluster.ClusterService;
|
import org.elasticsearch.cluster.ClusterService;
|
||||||
|
@ -48,6 +49,8 @@ public class IndexRecoveryCollector extends AbstractCollector<IndexRecoveryColle
|
||||||
ImmutableList.Builder<MarvelDoc> results = ImmutableList.builder();
|
ImmutableList.Builder<MarvelDoc> results = ImmutableList.builder();
|
||||||
|
|
||||||
RecoveryResponse recoveryResponse = client.admin().indices().prepareRecoveries()
|
RecoveryResponse recoveryResponse = client.admin().indices().prepareRecoveries()
|
||||||
|
.setIndices(marvelSettings.indices())
|
||||||
|
.setIndicesOptions(IndicesOptions.lenientExpandOpen())
|
||||||
.setActiveOnly(marvelSettings.recoveryActiveOnly())
|
.setActiveOnly(marvelSettings.recoveryActiveOnly())
|
||||||
.get(marvelSettings.recoveryTimeout());
|
.get(marvelSettings.recoveryTimeout());
|
||||||
|
|
||||||
|
|
|
@ -8,6 +8,7 @@ package org.elasticsearch.marvel.agent.collector.indices;
|
||||||
import com.google.common.collect.ImmutableList;
|
import com.google.common.collect.ImmutableList;
|
||||||
import org.elasticsearch.action.admin.indices.stats.IndexStats;
|
import org.elasticsearch.action.admin.indices.stats.IndexStats;
|
||||||
import org.elasticsearch.action.admin.indices.stats.IndicesStatsResponse;
|
import org.elasticsearch.action.admin.indices.stats.IndicesStatsResponse;
|
||||||
|
import org.elasticsearch.action.support.IndicesOptions;
|
||||||
import org.elasticsearch.client.Client;
|
import org.elasticsearch.client.Client;
|
||||||
import org.elasticsearch.cluster.ClusterName;
|
import org.elasticsearch.cluster.ClusterName;
|
||||||
import org.elasticsearch.cluster.ClusterService;
|
import org.elasticsearch.cluster.ClusterService;
|
||||||
|
@ -50,6 +51,7 @@ public class IndexStatsCollector extends AbstractCollector<IndexStatsCollector>
|
||||||
|
|
||||||
IndicesStatsResponse indicesStats = client.admin().indices().prepareStats()
|
IndicesStatsResponse indicesStats = client.admin().indices().prepareStats()
|
||||||
.setIndices(marvelSettings.indices())
|
.setIndices(marvelSettings.indices())
|
||||||
|
.setIndicesOptions(IndicesOptions.lenientExpandOpen())
|
||||||
.get(marvelSettings.indexStatsTimeout());
|
.get(marvelSettings.indexStatsTimeout());
|
||||||
|
|
||||||
long timestamp = System.currentTimeMillis();
|
long timestamp = System.currentTimeMillis();
|
||||||
|
|
|
@ -33,19 +33,20 @@ import static org.hamcrest.Matchers.*;
|
||||||
@ESIntegTestCase.ClusterScope(numDataNodes = 0)
|
@ESIntegTestCase.ClusterScope(numDataNodes = 0)
|
||||||
public class IndexRecoveryCollectorTests extends ESIntegTestCase {
|
public class IndexRecoveryCollectorTests extends ESIntegTestCase {
|
||||||
|
|
||||||
private boolean activeOnly = false;
|
private final boolean activeOnly = false;
|
||||||
|
private final String indexName = "test";
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected Settings nodeSettings(int nodeOrdinal) {
|
protected Settings nodeSettings(int nodeOrdinal) {
|
||||||
return settingsBuilder()
|
return settingsBuilder()
|
||||||
.put(super.nodeSettings(nodeOrdinal))
|
.put(super.nodeSettings(nodeOrdinal))
|
||||||
.put(MarvelSettingsService.INDEX_RECOVERY_ACTIVE_ONLY, activeOnly)
|
.put(MarvelSettingsService.INDEX_RECOVERY_ACTIVE_ONLY, activeOnly)
|
||||||
|
.put(MarvelSettingsService.INDICES, indexName)
|
||||||
.build();
|
.build();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testIndexRecoveryCollector() throws Exception {
|
public void testIndexRecoveryCollector() throws Exception {
|
||||||
final String indexName = "test";
|
|
||||||
|
|
||||||
logger.info("--> start first node");
|
logger.info("--> start first node");
|
||||||
final String node1 = internalCluster().startNode();
|
final String node1 = internalCluster().startNode();
|
||||||
|
@ -58,7 +59,7 @@ public class IndexRecoveryCollectorTests extends ESIntegTestCase {
|
||||||
assertNotNull(results);
|
assertNotNull(results);
|
||||||
assertThat(results, is(empty()));
|
assertThat(results, is(empty()));
|
||||||
|
|
||||||
logger.info("--> create index on node: {}", node1);
|
logger.info("--> create index [{}] on node [{}]", indexName, node1);
|
||||||
assertAcked(prepareCreate(indexName, 1, settingsBuilder().put(SETTING_NUMBER_OF_SHARDS, 3).put(SETTING_NUMBER_OF_REPLICAS, 1)));
|
assertAcked(prepareCreate(indexName, 1, settingsBuilder().put(SETTING_NUMBER_OF_SHARDS, 3).put(SETTING_NUMBER_OF_REPLICAS, 1)));
|
||||||
|
|
||||||
logger.info("--> indexing sample data");
|
logger.info("--> indexing sample data");
|
||||||
|
@ -66,8 +67,13 @@ public class IndexRecoveryCollectorTests extends ESIntegTestCase {
|
||||||
for (int i = 0; i < numDocs; i++) {
|
for (int i = 0; i < numDocs; i++) {
|
||||||
client().prepareIndex(indexName, "foo").setSource("value", randomInt()).get();
|
client().prepareIndex(indexName, "foo").setSource("value", randomInt()).get();
|
||||||
}
|
}
|
||||||
flushAndRefresh(indexName);
|
|
||||||
|
logger.info("--> create a second index [other] that won't be part of stats collection", indexName, node1);
|
||||||
|
client().prepareIndex("other", "bar").setSource("value", randomInt()).get();
|
||||||
|
|
||||||
|
flushAndRefresh();
|
||||||
assertHitCount(client().prepareCount(indexName).get(), numDocs);
|
assertHitCount(client().prepareCount(indexName).get(), numDocs);
|
||||||
|
assertHitCount(client().prepareCount("other").get(), 1L);
|
||||||
|
|
||||||
logger.info("--> start second node");
|
logger.info("--> start second node");
|
||||||
final String node2 = internalCluster().startNode();
|
final String node2 = internalCluster().startNode();
|
||||||
|
@ -109,6 +115,7 @@ public class IndexRecoveryCollectorTests extends ESIntegTestCase {
|
||||||
assertThat(shardRecoveries.size(), greaterThan(0));
|
assertThat(shardRecoveries.size(), greaterThan(0));
|
||||||
|
|
||||||
for (ShardRecoveryResponse shardRecovery : shardRecoveries) {
|
for (ShardRecoveryResponse shardRecovery : shardRecoveries) {
|
||||||
|
assertThat(shardRecovery.getIndex(), equalTo(indexName));
|
||||||
assertThat(shardRecovery.recoveryState().getType(), anyOf(equalTo(RecoveryState.Type.RELOCATION), equalTo(RecoveryState.Type.STORE), equalTo(RecoveryState.Type.REPLICA)));
|
assertThat(shardRecovery.recoveryState().getType(), anyOf(equalTo(RecoveryState.Type.RELOCATION), equalTo(RecoveryState.Type.STORE), equalTo(RecoveryState.Type.REPLICA)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue