public class SolrMetricManager extends Object
MetricRegistry instances, and provides several
 helper methods for managing various aspects of metrics reporting:
 SolrMetricReporter-s specific to a named registry.MetricRegistry instances are automatically created when first referenced by name. Similarly,
 instances of Metric implementations, such as Meter, Counter, Timer and
 Histogram are automatically created and registered under hierarchical names, in a specified
 registry, when meter(String, String, String...) and other similar methods are called.
 This class enforces a common prefix (REGISTRY_NAME_PREFIX) in all registry
 names.
Solr uses several different registries for collecting metrics belonging to different groups, using
 SolrInfoMBean.Group as the main name of the registry (plus the
 above-mentioned prefix). Instances of SolrMetricManager are created for each CoreContainer,
 and most registries are local to each instance, with the exception of two global registries:
 solr.jetty and solr.jvm, which are shared between all CoreContainer-s
| Modifier and Type | Class and Description | 
|---|---|
| static class  | SolrMetricManager.AndFilter | 
| static class  | SolrMetricManager.OrFilter | 
| static class  | SolrMetricManager.PrefixFilterAn implementation of  MetricFilterthat selects metrics
 with names that start with one of prefixes. | 
| static class  | SolrMetricManager.RegexFilterAn implementation of  MetricFilterthat selects metrics
 with names that match regular expression patterns. | 
| Modifier and Type | Field and Description | 
|---|---|
| static String | JETTY_REGISTRYRegistry name for Jetty-specific metrics. | 
| static String | JVM_REGISTRYRegistry name for JVM-specific metrics. | 
| static String | REGISTRY_NAME_PREFIXCommon prefix for all registry names that Solr uses. | 
| Constructor and Description | 
|---|
| SolrMetricManager() | 
| Modifier and Type | Method and Description | 
|---|---|
| Set<String> | clearMetrics(String registry,
            String... metricPath)Remove some metrics from a named registry | 
| void | clearRegistry(String registry)Remove all metrics from a specified registry. | 
| boolean | closeReporter(String registry,
             String name)Close and unregister a named  SolrMetricReporterfor a registry. | 
| Set<String> | closeReporters(String registry)Close and unregister all  SolrMetricReporter-s for a registry. | 
| com.codahale.metrics.Counter | counter(String registry,
       String metricName,
       String... metricPath)Create or get an existing named  Counter | 
| static String | enforcePrefix(String name)Enforces the leading  REGISTRY_NAME_PREFIXin a name. | 
| static String | getRegistryName(SolrInfoMBean.Group group,
               String... names)Helper method to construct a properly prefixed registry name based on the group. | 
| Map<String,SolrMetricReporter> | getReporters(String registry)Get a map of reporters for a registry. | 
| com.codahale.metrics.Histogram | histogram(String registry,
         String metricName,
         String... metricPath)Create or get an existing named  Histogram | 
| void | loadReporter(String registry,
            SolrResourceLoader loader,
            PluginInfo pluginInfo)Create and register an instance of  SolrMetricReporter. | 
| void | loadReporters(PluginInfo[] pluginInfos,
             SolrResourceLoader loader,
             SolrInfoMBean.Group group,
             String... registryNames)Create and register  SolrMetricReporter-s specific to aSolrInfoMBean.Group. | 
| com.codahale.metrics.Meter | meter(String registry,
     String metricName,
     String... metricPath)Create or get an existing named  Meter | 
| static String | mkName(String name,
      String... path)This method creates a hierarchical name with arbitrary levels of hierarchy | 
| static String | overridableRegistryName(String registry)Allows named registries to be renamed using System properties. | 
| void | register(String registry,
        com.codahale.metrics.Metric metric,
        boolean force,
        String metricName,
        String... metricPath)Register an instance of  Metric. | 
| void | registerAll(String registry,
           com.codahale.metrics.MetricSet metrics,
           boolean force,
           String... metricPath)Register all metrics in the provided  MetricSet, optionally skipping those that
 already exist. | 
| void | registerGauge(String registry,
             com.codahale.metrics.Gauge<?> gauge,
             boolean force,
             String metricName,
             String... metricPath) | 
| com.codahale.metrics.MetricRegistry | registry(String registry)Get (or create if not present) a named registry | 
| Set<String> | registryNames()Return a set of existing registry names. | 
| Set<String> | registryNames(Pattern... patterns) | 
| Set<String> | registryNames(String... patterns)Return set of existing registry names that match a regex pattern | 
| void | removeRegistry(String registry)Remove a named registry. | 
| void | swapRegistries(String registry1,
              String registry2)Swap registries. | 
| com.codahale.metrics.Timer | timer(String registry,
     String metricName,
     String... metricPath)Create or get an existing named  Timer | 
public static final String REGISTRY_NAME_PREFIX
public static final String JETTY_REGISTRY
SolrMetricManager.public static final String JVM_REGISTRY
SolrMetricManager.public Set<String> registryNames(String... patterns) throws PatternSyntaxException
patterns - regex patterns. NOTE: users need to make sure that patterns that
                 don't start with a wildcard use the full registry name starting with
                 REGISTRY_NAME_PREFIXPatternSyntaxExceptionpublic com.codahale.metrics.MetricRegistry registry(String registry)
registry - name of the registrypublic void removeRegistry(String registry)
registry - name of the registry to removepublic void swapRegistries(String registry1, String registry2)
SolrCore rename or swap operations. NOTE:
 this operation is not supported for shared registries.registry1 - source registryregistry2 - target registry. Note: when used after core rename the target registry doesn't
                  exist, so the swap operation will only rename the existing registry without creating
                  an empty one under the previous name.public void registerAll(String registry, com.codahale.metrics.MetricSet metrics, boolean force, String... metricPath) throws Exception
MetricSet, optionally skipping those that
 already exist.registry - registry namemetrics - metric set to registerforce - if true then already existing metrics with the same name will be replaced.
                     When false and a metric with the same name already exists an exception
                     will be thrown.metricPath - (optional) additional top-most metric name path elementsException - if a metric with this name already exists.public void clearRegistry(String registry)
registry - registry namepublic Set<String> clearMetrics(String registry, String... metricPath)
registry - registry namemetricPath - (optional) top-most metric name path elements. If empty then
        this is equivalent to calling clearRegistry(String),
        otherwise non-empty elements will be joined using dotted notation
        to form a fully-qualified prefix. Metrics with names that start
        with the prefix will be removed.public com.codahale.metrics.Meter meter(String registry, String metricName, String... metricPath)
Meterregistry - registry namemetricName - metric name, either final name or a fully-qualified name
                   using dotted notationmetricPath - (optional) additional top-most metric name path elementsMeterpublic com.codahale.metrics.Timer timer(String registry, String metricName, String... metricPath)
Timerregistry - registry namemetricName - metric name, either final name or a fully-qualified name
                   using dotted notationmetricPath - (optional) additional top-most metric name path elementsTimerpublic com.codahale.metrics.Counter counter(String registry, String metricName, String... metricPath)
Counterregistry - registry namemetricName - metric name, either final name or a fully-qualified name
                   using dotted notationmetricPath - (optional) additional top-most metric name path elementsCounterpublic com.codahale.metrics.Histogram histogram(String registry, String metricName, String... metricPath)
Histogramregistry - registry namemetricName - metric name, either final name or a fully-qualified name
                   using dotted notationmetricPath - (optional) additional top-most metric name path elementsHistogrampublic void register(String registry, com.codahale.metrics.Metric metric, boolean force, String metricName, String... metricPath)
Metric.registry - registry namemetric - metric instanceforce - if true then an already existing metric with the same name will be replaced.
                     When false and a metric with the same name already exists an exception
                     will be thrown.metricName - metric name, either final name or a fully-qualified name
                   using dotted notationmetricPath - (optional) additional top-most metric name path elementspublic void registerGauge(String registry, com.codahale.metrics.Gauge<?> gauge, boolean force, String metricName, String... metricPath)
public static String mkName(String name, String... path)
name - the final segment of the name, must not be null or empty.path - optional path segments, starting from the top level. Empty or null
             segments will be skipped.public static String overridableRegistryName(String registry)
For example, in order to collect metrics from related cores in a single registry you could specify the following system properties:
... -Dsolr.core.collection1=solr.core.allCollections -Dsolr.core.collection2=solr.core.allCollectionsNOTE: Once a registry is renamed in a way that its metrics are combined with another repository it is no longer possible to retrieve the original metrics until this renaming is removed and the Solr
SolrInfoMBean.Group of components that reported to that name is restarted.registry - The name of the registrypublic static String enforcePrefix(String name)
REGISTRY_NAME_PREFIX in a name.name - input name, possibly without the prefixpublic static String getRegistryName(SolrInfoMBean.Group group, String... names)
group - reporting groupnames - optional child elements of the registry name. If exactly one element is provided
              and it already contains the required prefix and group name then this value will be used,
              and the group parameter will be ignored.public void loadReporters(PluginInfo[] pluginInfos, SolrResourceLoader loader, SolrInfoMBean.Group group, String... registryNames)
SolrMetricReporter-s specific to a SolrInfoMBean.Group.
 Note: reporters that specify neither "group" nor "registry" attributes are treated as universal -
 they will always be loaded for any group. These two attributes may also contain multiple comma- or
 whitespace-separated values, in which case the reporter will be loaded for any matching value from
 the list. If both attributes are present then only "group" attribute will be processed.pluginInfos - plugin configurationsloader - resource loadergroup - selected group, not nullregistryNames - optional child registry name elementspublic void loadReporter(String registry, SolrResourceLoader loader, PluginInfo pluginInfo) throws Exception
SolrMetricReporter.registry - reporter is associated with this registryloader - loader to use when creating an instance of the reporterpluginInfo - plugin configuration. Plugin "name" and "class" attributes are required.Exception - if any argument is missing or invalidpublic boolean closeReporter(String registry, String name)
SolrMetricReporter for a registry.registry - registry namename - reporter namepublic Set<String> closeReporters(String registry)
SolrMetricReporter-s for a registry.registry - registry namepublic Map<String,SolrMetricReporter> getReporters(String registry)
registry - registry nameCopyright © 2000-2017 Apache Software Foundation. All Rights Reserved.