You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by ab...@apache.org on 2017/02/15 19:00:56 UTC
[52/52] [abbrv] lucene-solr:jira/solr-9858: SOLR-9858 Improve
configuration of replica and overseer reporters.
SOLR-9858 Improve configuration of replica and overseer reporters.
Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/f0ea3b79
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/f0ea3b79
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/f0ea3b79
Branch: refs/heads/jira/solr-9858
Commit: f0ea3b792cc7288489453476e3a23e89e71b63a7
Parents: 537cbf7
Author: Andrzej Bialecki <ab...@apache.org>
Authored: Wed Feb 15 19:59:17 2017 +0100
Committer: Andrzej Bialecki <ab...@apache.org>
Committed: Wed Feb 15 19:59:17 2017 +0100
----------------------------------------------------------------------
.../org/apache/solr/core/CoreContainer.java | 2 +-
.../handler/admin/MetricsCollectorHandler.java | 31 ++++++++--
.../apache/solr/metrics/SolrMetricManager.java | 1 -
.../reporters/solr/SolrOverseerReporter.java | 62 +++++++++++++++++---
.../reporters/solr/SolrReplicaReporter.java | 41 +++++++++----
.../metrics/reporters/solr/SolrReporter.java | 62 +++++++++++++-------
.../src/test-files/solr/solr-solrreporter.xml | 22 ++++++-
.../reporters/solr/SolrCloudReportersTest.java | 4 +-
8 files changed, 174 insertions(+), 51 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/f0ea3b79/solr/core/src/java/org/apache/solr/core/CoreContainer.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/core/CoreContainer.java b/solr/core/src/java/org/apache/solr/core/CoreContainer.java
index a659cf5..b23937d 100644
--- a/solr/core/src/java/org/apache/solr/core/CoreContainer.java
+++ b/solr/core/src/java/org/apache/solr/core/CoreContainer.java
@@ -515,7 +515,7 @@ public class CoreContainer {
configSetsHandler = createHandler(CONFIGSETS_HANDLER_PATH, cfg.getConfigSetsHandlerClass(), ConfigSetsHandler.class);
metricsHandler = createHandler(METRICS_PATH, MetricsHandler.class.getName(), MetricsHandler.class);
metricsCollectorHandler = createHandler(MetricsCollectorHandler.HANDLER_PATH, MetricsCollectorHandler.class.getName(), MetricsCollectorHandler.class);
- // nocommit add some configuration here
+ // may want to add some configuration here in the future
metricsCollectorHandler.init(null);
containerHandlers.put(AUTHZ_PATH, securityConfHandler);
securityConfHandler.initializeMetrics(metricManager, SolrInfoMBean.Group.node.toString(), AUTHZ_PATH);
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/f0ea3b79/solr/core/src/java/org/apache/solr/handler/admin/MetricsCollectorHandler.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/handler/admin/MetricsCollectorHandler.java b/solr/core/src/java/org/apache/solr/handler/admin/MetricsCollectorHandler.java
index 829541e..fd47768 100644
--- a/solr/core/src/java/org/apache/solr/handler/admin/MetricsCollectorHandler.java
+++ b/solr/core/src/java/org/apache/solr/handler/admin/MetricsCollectorHandler.java
@@ -51,7 +51,30 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
- * Handler to collect and aggregate metric reports.
+ * Handler to collect and aggregate metric reports. Each report indicates the target registry where
+ * metrics values should be collected and aggregated. Mtrics with the same names are
+ * aggregated using {@link AggregateMetric} instances, which track the source of updates and
+ * their count, as well as providing simple statistics over collected values.
+ *
+ * Each report consists of {@link SolrInputDocument}-s that are expected to contain
+ * the following fields:
+ * <ul>
+ * <li>{@link SolrReporter#GROUP_ID} - (required) specifies target registry name where metrics will be grouped.</li>
+ * <li>{@link SolrReporter#REPORTER_ID} - (required) id of the reporter that sent this update. This can be eg.
+ * node name or replica name or other id that uniquely identifies the source of metrics values.</li>
+ * <li>{@link MetricUtils#METRIC_NAME} - (required) metric name (in the source registry)</li>
+ * <li>{@link SolrReporter#LABEL_ID} - (optional) label to prepend to metric names in the target registry.</li>
+ * <li>{@link SolrReporter#REGISTRY_ID} - (optional) name of the source registry.</li>
+ * </ul>
+ * Remaining fields are assumed to be single-valued, and to contain metric attributes and their values. Example:
+ * <pre>
+ * <doc>
+ * <field name="_group_">solr.core.collection1.shard1.leader</field>
+ * <field name="_reporter_">solr.core.collection1.shard1.replica1.core_node3</field>
+ * <field name="metric">INDEX.merge.errors</field>
+ * <field name="value">0</field>
+ * </doc>
+ * </pre>
*/
public class MetricsCollectorHandler extends RequestHandlerBase {
private static final Logger log = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
@@ -127,7 +150,7 @@ public class MetricsCollectorHandler extends RequestHandlerBase {
}
String metricName = (String)doc.getFieldValue(MetricUtils.METRIC_NAME);
if (metricName == null) {
- log.warn("Missing metric " + MetricUtils.METRIC_NAME + " field in document, skipping: " + doc);
+ log.warn("Missing " + MetricUtils.METRIC_NAME + " field in document, skipping: " + doc);
return;
}
doc.remove(MetricUtils.METRIC_NAME);
@@ -135,13 +158,13 @@ public class MetricsCollectorHandler extends RequestHandlerBase {
doc.remove(SolrReporter.REGISTRY_ID);
String groupId = (String)doc.getFieldValue(SolrReporter.GROUP_ID);
if (groupId == null) {
- log.warn("Missing metric " + SolrReporter.GROUP_ID + " field in document, skipping: " + doc);
+ log.warn("Missing " + SolrReporter.GROUP_ID + " field in document, skipping: " + doc);
return;
}
doc.remove(SolrReporter.GROUP_ID);
String reporterId = (String)doc.getFieldValue(SolrReporter.REPORTER_ID);
if (reporterId == null) {
- log.warn("Missing metric " + SolrReporter.REPORTER_ID + " field in document, skipping: " + doc);
+ log.warn("Missing " + SolrReporter.REPORTER_ID + " field in document, skipping: " + doc);
return;
}
doc.remove(SolrReporter.REPORTER_ID);
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/f0ea3b79/solr/core/src/java/org/apache/solr/metrics/SolrMetricManager.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/metrics/SolrMetricManager.java b/solr/core/src/java/org/apache/solr/metrics/SolrMetricManager.java
index 28b8833..af920b1 100644
--- a/solr/core/src/java/org/apache/solr/metrics/SolrMetricManager.java
+++ b/solr/core/src/java/org/apache/solr/metrics/SolrMetricManager.java
@@ -913,7 +913,6 @@ public class SolrMetricManager {
if (!cc.isZooKeeperAware()) {
return;
}
- // load even for non-leader replicas, as their status may change unexpectedly
Map<String, String> attrs = new HashMap<>();
attrs.put("name", "overseerDefault");
attrs.put("group", "overseer");
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/f0ea3b79/solr/core/src/java/org/apache/solr/metrics/reporters/solr/SolrOverseerReporter.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/metrics/reporters/solr/SolrOverseerReporter.java b/solr/core/src/java/org/apache/solr/metrics/reporters/solr/SolrOverseerReporter.java
index 7f5de69..f1f22a9 100644
--- a/solr/core/src/java/org/apache/solr/metrics/reporters/solr/SolrOverseerReporter.java
+++ b/solr/core/src/java/org/apache/solr/metrics/reporters/solr/SolrOverseerReporter.java
@@ -7,6 +7,7 @@ import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
+import java.util.Map;
import java.util.concurrent.TimeUnit;
import java.util.function.Supplier;
@@ -15,6 +16,7 @@ import org.apache.solr.cloud.Overseer;
import org.apache.solr.cloud.ZkController;
import org.apache.solr.common.cloud.SolrZkClient;
import org.apache.solr.common.cloud.ZkNodeProps;
+import org.apache.solr.common.util.NamedList;
import org.apache.solr.core.CoreContainer;
import org.apache.solr.core.SolrInfoMBean;
import org.apache.solr.handler.admin.MetricsCollectorHandler;
@@ -25,6 +27,29 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
+ * This reporter sends selected metrics from local registries to {@link Overseer}.
+ * <p>Example configuration:</p>
+ * <pre>
+ * <reporter name="test" group="overseer">
+ * <str name="handler">/admin/metrics/collector</str>
+ * <int name="period">11</int>
+ * <lst name="report">
+ * <str name="group">overseer</str>
+ * <str name="label">jvm</str>
+ * <str name="registry">solr\.jvm</str>
+ * <str name="filter">memory\.total\..*</str>
+ * <str name="filter">memory\.heap\..*</str>
+ * <str name="filter">os\.SystemLoadAverage</str>
+ * <str name="filter">threads\.count</str>
+ * </lst>
+ * <lst name="report">
+ * <str name="group">overseer</str>
+ * <str name="label">leader.$1</str>
+ * <str name="registry">solr\.core\.(.*)\.leader</str>
+ * <str name="filter">UPDATE\./update/.*</str>
+ * </lst>
+ * </reporter>
+ * </pre>
*
*/
public class SolrOverseerReporter extends SolrMetricReporter {
@@ -32,22 +57,25 @@ public class SolrOverseerReporter extends SolrMetricReporter {
public static final String OVERSEER_GROUP = SolrMetricManager.overridableRegistryName(SolrInfoMBean.Group.overseer.toString());
- public static final List<SolrReporter.Specification> DEFAULT_METRICS = new ArrayList<SolrReporter.Specification>() {{
- add(new SolrReporter.Specification(OVERSEER_GROUP, "jetty",
+ public static final List<SolrReporter.Report> DEFAULT_REPORTS = new ArrayList<SolrReporter.Report>() {{
+ add(new SolrReporter.Report(OVERSEER_GROUP, "jetty",
SolrMetricManager.overridableRegistryName(SolrInfoMBean.Group.jetty.toString()),
Collections.emptySet())); // all metrics
- add(new SolrReporter.Specification(OVERSEER_GROUP, "jvm",
+ add(new SolrReporter.Report(OVERSEER_GROUP, "jvm",
SolrMetricManager.overridableRegistryName(SolrInfoMBean.Group.jvm.toString()),
new HashSet<String>() {{
add("memory\\.total\\..*");
add("memory\\.heap\\..*");
add("os\\.SystemLoadAverage");
+ add("os\\.FreePhysicalMemorySize");
+ add("os\\.FreeSwapSpaceSize");
+ add("os\\.OpenFileDescriptorCount");
add("threads\\.count");
}})); // all metrics
// XXX anything interesting here?
//add(new SolrReporter.Specification(OVERSEER_GROUP, "node", SolrMetricManager.overridableRegistryName(SolrInfoMBean.Group.node.toString()),
// Collections.emptySet())); // all metrics
- add(new SolrReporter.Specification(OVERSEER_GROUP, "leader.$1", "solr\\.core\\.(.*)\\.leader",
+ add(new SolrReporter.Report(OVERSEER_GROUP, "leader.$1", "solr\\.core\\.(.*)\\.leader",
new HashSet<String>(){{
add("UPDATE\\./update/.*");
add("QUERY\\./select.*");
@@ -58,7 +86,7 @@ public class SolrOverseerReporter extends SolrMetricReporter {
private String handler = MetricsCollectorHandler.HANDLER_PATH;
private int period = 60;
- private List<SolrReporter.Specification> metrics = DEFAULT_METRICS;
+ private List<SolrReporter.Report> reports = new ArrayList<>();
private SolrReporter reporter;
@@ -80,17 +108,35 @@ public class SolrOverseerReporter extends SolrMetricReporter {
this.period = period;
}
+ public void setReport(List<Map> reportConfig) {
+ if (reportConfig == null || reportConfig.isEmpty()) {
+ return;
+ }
+ reportConfig.forEach(map -> {
+ SolrReporter.Report r = SolrReporter.Report.fromMap(map);
+ if (r != null) {
+ reports.add(r);
+ }
+ });
+ }
+
// for unit tests
- public int getPeriod() {
+ int getPeriod() {
return period;
}
+ List<SolrReporter.Report> getReports() {
+ return reports;
+ }
+
@Override
protected void validate() throws IllegalStateException {
if (period < 1) {
log.info("Turning off node reporter, period=" + period);
}
- // start in setCoreContainer(...)
+ if (reports.isEmpty()) { // set defaults
+ reports = DEFAULT_REPORTS;
+ }
}
@Override
@@ -111,7 +157,7 @@ public class SolrOverseerReporter extends SolrMetricReporter {
HttpClient httpClient = cc.getUpdateShardHandler().getHttpClient();
ZkController zk = cc.getZkController();
String reporterId = zk.getNodeName();
- reporter = SolrReporter.Builder.forRegistries(metricManager, metrics)
+ reporter = SolrReporter.Builder.forRegistries(metricManager, reports)
.convertRatesTo(TimeUnit.SECONDS)
.convertDurationsTo(TimeUnit.MILLISECONDS)
.withHandler(handler)
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/f0ea3b79/solr/core/src/java/org/apache/solr/metrics/reporters/solr/SolrReplicaReporter.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/metrics/reporters/solr/SolrReplicaReporter.java b/solr/core/src/java/org/apache/solr/metrics/reporters/solr/SolrReplicaReporter.java
index 06a4f92..a303ffc 100644
--- a/solr/core/src/java/org/apache/solr/metrics/reporters/solr/SolrReplicaReporter.java
+++ b/solr/core/src/java/org/apache/solr/metrics/reporters/solr/SolrReplicaReporter.java
@@ -18,8 +18,10 @@ package org.apache.solr.metrics.reporters.solr;
import java.io.IOException;
import java.lang.invoke.MethodHandles;
+import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
+import java.util.List;
import java.util.concurrent.TimeUnit;
import java.util.function.Supplier;
@@ -35,19 +37,32 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
- * This class reports selected metrics from replicas to a shard leader.
+ * This class reports selected metrics from replicas to shard leader.
+ * <p>Example configuration:</p>
+ * <pre>
+ * <reporter name="test" group="replica">
+ * <int name="period">11</int>
+ * <str name="filter">UPDATE\./update/.*requests</str>
+ * <str name="filter">QUERY\./select.*requests</str>
+ * </reporter>
+ * </pre>
*/
public class SolrReplicaReporter extends SolrMetricReporter {
private static final Logger log = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
- public static final String[] DEFAULT_METRICS = {
- "TLOG.*", "REPLICATION.*", "INDEX.flush.*", "INDEX.merge.major.*", "UPDATE\\./update/.*requests", "QUERY\\./select.*requests"
- };
+ public static final List<String> DEFAULT_FILTERS = new ArrayList(){{
+ add("TLOG.*");
+ add("REPLICATION.*");
+ add("INDEX.flush.*");
+ add("INDEX.merge.major.*");
+ add("UPDATE\\./update/.*requests");
+ add("QUERY\\./select.*requests");
+ }};
private String groupId;
private String handler = MetricsCollectorHandler.HANDLER_PATH;
private int period = 60;
- private String[] metrics = DEFAULT_METRICS;
+ private List<String> filters = new ArrayList<>();
private SolrReporter reporter;
@@ -75,18 +90,15 @@ public class SolrReplicaReporter extends SolrMetricReporter {
}
// for unit tests
- public int getPeriod() {
+ int getPeriod() {
return period;
}
- public void setMetrics(String prefixList) {
- if (prefixList == null || prefixList.isEmpty()) {
+ public void setFilter(List<String> filterConfig) {
+ if (filterConfig == null || filterConfig.isEmpty()) {
return;
}
- String[] newMetrics = prefixList.split("[\\s,]+");
- if (newMetrics.length > 0) {
- metrics = newMetrics;
- }
+ filters = filterConfig;
}
@Override
@@ -94,6 +106,9 @@ public class SolrReplicaReporter extends SolrMetricReporter {
if (period < 1) {
log.info("Turning off replica reporter, period=" + period);
}
+ if (filters.isEmpty()) {
+ filters = DEFAULT_FILTERS;
+ }
// start in inform(...) only when core is available
}
@@ -118,7 +133,7 @@ public class SolrReplicaReporter extends SolrMetricReporter {
}
// our id is coreNodeName
String id = core.getCoreDescriptor().getCloudDescriptor().getCoreNodeName();
- SolrReporter.Specification spec = new SolrReporter.Specification(groupId, null, registryName, Arrays.asList(metrics));
+ SolrReporter.Report spec = new SolrReporter.Report(groupId, null, registryName, filters);
reporter = SolrReporter.Builder.forRegistries(metricManager, Collections.singletonList(spec))
.convertRatesTo(TimeUnit.SECONDS)
.convertDurationsTo(TimeUnit.MILLISECONDS)
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/f0ea3b79/solr/core/src/java/org/apache/solr/metrics/reporters/solr/SolrReporter.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/metrics/reporters/solr/SolrReporter.java b/solr/core/src/java/org/apache/solr/metrics/reporters/solr/SolrReporter.java
index a2fe50b..3e8597d 100644
--- a/solr/core/src/java/org/apache/solr/metrics/reporters/solr/SolrReporter.java
+++ b/solr/core/src/java/org/apache/solr/metrics/reporters/solr/SolrReporter.java
@@ -66,36 +66,58 @@ public class SolrReporter extends ScheduledReporter {
/**
* Specification of what registries and what metrics to send.
*/
- public static final class Specification {
+ public static final class Report {
public String groupPattern;
public String labelPattern;
public String registryPattern;
- public Set<String> metricPatterns = new HashSet<>();
+ public Set<String> metricFilters = new HashSet<>();
/**
- * Create a specification
- * @param groupPattern logical group for these metrics. This is used in {@link MetricsCollectorHandler} to select
- * the target registry for metrics to aggregate. It may contain back-references to capture groups from
- * {@code registryPattern}
- * @param labelPattern name of this group of metrics. This is used in {@link MetricsCollectorHandler} to prefix
- * metric names. May be null or empty. It may contain back-references to capture groups from
- * {@code registryPattern}.
+ * Create a report specification
+ * @param groupPattern logical group for these metrics. This is used in {@link MetricsCollectorHandler}
+ * to select the target registry for metrics to aggregate. Must not be null or empty.
+ * It may contain back-references to capture groups from {@code registryPattern}
+ * @param labelPattern name of this group of metrics. This is used in {@link MetricsCollectorHandler}
+ * to prefix metric names. May be null or empty. It may contain back-references
+ * to capture groups from {@code registryPattern}.
* @param registryPattern pattern for selecting matching registries, see {@link SolrMetricManager#registryNames(String...)}
- * @param metricPatterns patterns for selecting matching metrics, see {@link SolrMetricManager.RegexFilter}
+ * @param metricFilters patterns for selecting matching metrics, see {@link SolrMetricManager.RegexFilter}
*/
- public Specification(String groupPattern, String labelPattern, String registryPattern, Collection<String> metricPatterns) {
+ public Report(String groupPattern, String labelPattern, String registryPattern, Collection<String> metricFilters) {
this.groupPattern = groupPattern;
this.labelPattern = labelPattern;
this.registryPattern = registryPattern;
- if (metricPatterns != null) {
- this.metricPatterns.addAll(metricPatterns);
+ if (metricFilters != null) {
+ this.metricFilters.addAll(metricFilters);
}
}
+
+ public static Report fromMap(Map<?, ?> map) {
+ String groupPattern = (String)map.get("group");
+ String labelPattern = (String)map.get("label");
+ String registryPattern = (String)map.get("registry");
+ Object oFilters = map.get("filter");
+ Collection<String> metricFilters = Collections.emptyList();
+ if (oFilters != null) {
+ if (oFilters instanceof String) {
+ metricFilters = Collections.singletonList((String)oFilters);
+ } else if (oFilters instanceof Collection) {
+ metricFilters = (Collection<String>)oFilters;
+ } else {
+ log.warn("Invalid report filters, ignoring: " + oFilters);
+ }
+ }
+ if (groupPattern == null || registryPattern == null) {
+ log.warn("Invalid report configuration, group and registry required!: " + map);
+ return null;
+ }
+ return new Report(groupPattern, labelPattern, registryPattern, metricFilters);
+ }
}
public static class Builder {
private final SolrMetricManager metricManager;
- private final List<Specification> metrics;
+ private final List<Report> metrics;
private String reporterId;
private TimeUnit rateUnit;
private TimeUnit durationUnit;
@@ -112,11 +134,11 @@ public class SolrReporter extends ScheduledReporter {
* and the corresponding metrics prefixes, see {@link org.apache.solr.metrics.SolrMetricManager.PrefixFilter}.
* @return builder
*/
- public static Builder forRegistries(SolrMetricManager metricManager, List<Specification> metrics) {
+ public static Builder forRegistries(SolrMetricManager metricManager, List<Report> metrics) {
return new Builder(metricManager, metrics);
}
- private Builder(SolrMetricManager metricManager, List<Specification> metrics) {
+ private Builder(SolrMetricManager metricManager, List<Report> metrics) {
this.metricManager = metricManager;
this.metrics = metrics;
this.rateUnit = TimeUnit.SECONDS;
@@ -245,16 +267,16 @@ public class SolrReporter extends ScheduledReporter {
Pattern registryPattern;
MetricFilter filter;
- CompiledSpecification(Specification spec) throws PatternSyntaxException {
+ CompiledSpecification(Report spec) throws PatternSyntaxException {
this.group = spec.groupPattern;
this.label = spec.labelPattern;
this.registryPattern = Pattern.compile(spec.registryPattern);
- this.filter = new SolrMetricManager.RegexFilter(spec.metricPatterns);
+ this.filter = new SolrMetricManager.RegexFilter(spec.metricFilters);
}
}
public SolrReporter(HttpClient httpClient, Supplier<String> urlProvider, SolrMetricManager metricManager,
- List<Specification> metrics, String handler,
+ List<Report> metrics, String handler,
String reporterId, TimeUnit rateUnit, TimeUnit durationUnit,
SolrParams params, boolean skipHistograms, boolean skipAggregateValues, boolean cloudClient) {
super(null, "solr-reporter", MetricFilter.ALL, rateUnit, durationUnit);
@@ -268,7 +290,7 @@ public class SolrReporter extends ScheduledReporter {
this.clientCache = new SolrClientCache(httpClient);
this.specs = new ArrayList<>();
metrics.forEach(spec -> {
- MetricFilter filter = new SolrMetricManager.RegexFilter(spec.metricPatterns);
+ MetricFilter filter = new SolrMetricManager.RegexFilter(spec.metricFilters);
try {
CompiledSpecification cs = new CompiledSpecification(spec);
specs.add(cs);
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/f0ea3b79/solr/core/src/test-files/solr/solr-solrreporter.xml
----------------------------------------------------------------------
diff --git a/solr/core/src/test-files/solr/solr-solrreporter.xml b/solr/core/src/test-files/solr/solr-solrreporter.xml
index 1351e38..05420d4 100644
--- a/solr/core/src/test-files/solr/solr-solrreporter.xml
+++ b/solr/core/src/test-files/solr/solr-solrreporter.xml
@@ -39,10 +39,28 @@
<metrics>
<reporter name="test" group="replica">
- <int name="period">111</int>
+ <int name="period">11</int>
+ <str name="filter">UPDATE\./update/.*requests</str>
+ <str name="filter">QUERY\./select.*requests</str>
</reporter>
<reporter name="test" group="overseer">
- <int name="period">111</int>
+ <str name="handler">/admin/metrics/collector</str>
+ <int name="period">11</int>
+ <lst name="report">
+ <str name="group">overseer</str>
+ <str name="label">jvm</str>
+ <str name="registry">solr\.jvm</str>
+ <str name="filter">memory\.total\..*</str>
+ <str name="filter">memory\.heap\..*</str>
+ <str name="filter">os\.SystemLoadAverage</str>
+ <str name="filter">threads\.count</str>
+ </lst>
+ <lst name="report">
+ <str name="group">overseer</str>
+ <str name="label">leader.$1</str>
+ <str name="registry">solr\.core\.(.*)\.leader</str>
+ <str name="filter">UPDATE\./update/.*</str>
+ </lst>
</reporter>
</metrics>
</solr>
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/f0ea3b79/solr/core/src/test/org/apache/solr/metrics/reporters/solr/SolrCloudReportersTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/metrics/reporters/solr/SolrCloudReportersTest.java b/solr/core/src/test/org/apache/solr/metrics/reporters/solr/SolrCloudReportersTest.java
index 261d186..1539e16 100644
--- a/solr/core/src/test/org/apache/solr/metrics/reporters/solr/SolrCloudReportersTest.java
+++ b/solr/core/src/test/org/apache/solr/metrics/reporters/solr/SolrCloudReportersTest.java
@@ -64,7 +64,7 @@ public class SolrCloudReportersTest extends SolrCloudTestCase {
assertNotNull(reporter);
assertTrue(reporter.toString(), reporter instanceof SolrOverseerReporter);
SolrOverseerReporter sor = (SolrOverseerReporter)reporter;
- assertEquals(111, sor.getPeriod());
+ assertEquals(11, sor.getPeriod());
for (String registryName : metricManager.registryNames(".*\\.shard[0-9]\\.core.*")) {
reporters = metricManager.getReporters(registryName);
assertEquals(reporters.toString(), 1, reporters.size());
@@ -72,7 +72,7 @@ public class SolrCloudReportersTest extends SolrCloudTestCase {
assertNotNull(reporter);
assertTrue(reporter.toString(), reporter instanceof SolrReplicaReporter);
SolrReplicaReporter srr = (SolrReplicaReporter)reporter;
- assertEquals(111, srr.getPeriod());
+ assertEquals(11, srr.getPeriod());
}
for (String registryName : metricManager.registryNames(".*\\.leader")) {
reporters = metricManager.getReporters(registryName);