Package org.onlab.metrics
Class MetricsManager
- java.lang.Object
-
- org.onlab.metrics.MetricsManager
-
- All Implemented Interfaces:
MetricsService
public class MetricsManager extends java.lang.Object implements MetricsService
This class holds the Metrics registry for ONOS. All metrics (Counter, Histogram, Timer, Meter, Gauge) use a hierarchical string-based naming scheme: COMPONENT.FEATURE.NAME. Example: "Topology.Counters.TopologyUpdates". The COMPONENT and FEATURE names have to be registered in advance before a metric can be created. Example:
Gauges are slightly different because they are not created directly in this class, but are allocated by the caller and passed in for registration:private final MetricsManager.MetricsComponent COMPONENT = MetricsManager.registerComponent("Topology"); private final MetricsManager.MetricsFeature FEATURE = COMPONENT.registerFeature("Counters"); private final Counter counterTopologyUpdates = MetricsManager.createCounter(COMPONENT, FEATURE, "TopologyUpdates");private final Gauge<Long> gauge = new Gauge<Long>() { @Override public Long getValue() { return gaugeValue; } }; MetricsManager.registerMetric(COMPONENT, FEATURE, GAUGE_NAME, gauge);
-
-
Constructor Summary
Constructors Constructor Description MetricsManager()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected voidclear()Clears the internal state.com.codahale.metrics.CountercreateCounter(MetricsComponent component, MetricsFeature feature, java.lang.String metricName)Creates a Counter metric.com.codahale.metrics.HistogramcreateHistogram(MetricsComponent component, MetricsFeature feature, java.lang.String metricName)Creates a Histogram metric.com.codahale.metrics.MetercreateMeter(MetricsComponent component, MetricsFeature feature, java.lang.String metricName)Creates a Meter metric.com.codahale.metrics.TimercreateTimer(MetricsComponent component, MetricsFeature feature, java.lang.String metricName)Creates a Timer metric.java.util.Map<java.lang.String,com.codahale.metrics.Counter>getCounters(com.codahale.metrics.MetricFilter filter)Fetches the existing Counters.java.util.Map<java.lang.String,com.codahale.metrics.Gauge>getGauges(com.codahale.metrics.MetricFilter filter)Fetches the existing Gauges.java.util.Map<java.lang.String,com.codahale.metrics.Histogram>getHistograms(com.codahale.metrics.MetricFilter filter)Fetches the existing Histograms.java.util.Map<java.lang.String,com.codahale.metrics.Meter>getMeters(com.codahale.metrics.MetricFilter filter)Fetches the existing Meters.com.codahale.metrics.MetricRegistrygetMetricRegistry()Fetches existing metric registry.java.util.Map<java.lang.String,com.codahale.metrics.Metric>getMetrics()Fetches the existing Meters.java.util.Map<java.lang.String,com.codahale.metrics.Timer>getTimers(com.codahale.metrics.MetricFilter filter)Fetches the existing Timers.voidnotifyReporters()Notifies the changes on metric registry to all registered reporters.MetricsComponentregisterComponent(java.lang.String name)Registers a component.<T extends com.codahale.metrics.Metric>
TregisterMetric(MetricsComponent component, MetricsFeature feature, java.lang.String metricName, T metric)Registers an already created Metric.voidregisterReporter(MetricsReporter reporter)Registers a reporter to receive any changes on metric registry.voidremoveMatching(com.codahale.metrics.MetricFilter filter)Removes all Metrics that match a given filter.booleanremoveMetric(MetricsComponent component, MetricsFeature feature, java.lang.String metricName)Removes the metric with the given name.voidunregisterReporter(MetricsReporter reporter)Unregisters the given metric reporter.
-
-
-
Method Detail
-
clear
protected void clear()
Clears the internal state.
-
registerComponent
public MetricsComponent registerComponent(java.lang.String name)
Registers a component.- Specified by:
registerComponentin interfaceMetricsService- Parameters:
name- name of the Component to register- Returns:
- MetricsComponent object that can be used to create Metrics.
-
getMetricRegistry
public com.codahale.metrics.MetricRegistry getMetricRegistry()
Fetches existing metric registry.- Specified by:
getMetricRegistryin interfaceMetricsService- Returns:
- metric registry
-
createCounter
public com.codahale.metrics.Counter createCounter(MetricsComponent component, MetricsFeature feature, java.lang.String metricName)
Creates a Counter metric.- Specified by:
createCounterin interfaceMetricsService- Parameters:
component- component the Counter is defined infeature- feature the Counter is defined inmetricName- local name of the metric- Returns:
- the created Counter Meteric
-
createHistogram
public com.codahale.metrics.Histogram createHistogram(MetricsComponent component, MetricsFeature feature, java.lang.String metricName)
Creates a Histogram metric.- Specified by:
createHistogramin interfaceMetricsService- Parameters:
component- component the Histogram is defined infeature- feature the Histogram is defined inmetricName- local name of the metric- Returns:
- the created Histogram Metric
-
createTimer
public com.codahale.metrics.Timer createTimer(MetricsComponent component, MetricsFeature feature, java.lang.String metricName)
Creates a Timer metric.- Specified by:
createTimerin interfaceMetricsService- Parameters:
component- component the Timer is defined infeature- feature the Timer is defined inmetricName- local name of the metric- Returns:
- the created Timer Metric
-
createMeter
public com.codahale.metrics.Meter createMeter(MetricsComponent component, MetricsFeature feature, java.lang.String metricName)
Creates a Meter metric.- Specified by:
createMeterin interfaceMetricsService- Parameters:
component- component the Meter is defined infeature- feature the Meter is defined inmetricName- local name of the metric- Returns:
- the created Meter Metric
-
registerMetric
public <T extends com.codahale.metrics.Metric> T registerMetric(MetricsComponent component, MetricsFeature feature, java.lang.String metricName, T metric)
Registers an already created Metric. This is used for situation where a caller needs to allocate its own Metric, but still register it with the system.- Specified by:
registerMetricin interfaceMetricsService- Type Parameters:
T- Metric type- Parameters:
component- component the Metric is defined infeature- feature the Metric is defined inmetricName- local name of the metricmetric- Metric to register- Returns:
- the registered Metric
-
registerReporter
public void registerReporter(MetricsReporter reporter)
Registers a reporter to receive any changes on metric registry.- Specified by:
registerReporterin interfaceMetricsService- Parameters:
reporter- metric reporter
-
unregisterReporter
public void unregisterReporter(MetricsReporter reporter)
Unregisters the given metric reporter.- Specified by:
unregisterReporterin interfaceMetricsService- Parameters:
reporter- metric reporter
-
notifyReporters
public void notifyReporters()
Notifies the changes on metric registry to all registered reporters.- Specified by:
notifyReportersin interfaceMetricsService
-
removeMetric
public boolean removeMetric(MetricsComponent component, MetricsFeature feature, java.lang.String metricName)
Removes the metric with the given name.- Specified by:
removeMetricin interfaceMetricsService- Parameters:
component- component the Metric is defined infeature- feature the Metric is defined inmetricName- local name of the metric- Returns:
- true if the metric existed and was removed, otherwise false
-
getTimers
public java.util.Map<java.lang.String,com.codahale.metrics.Timer> getTimers(com.codahale.metrics.MetricFilter filter)
Fetches the existing Timers.- Specified by:
getTimersin interfaceMetricsService- Parameters:
filter- filter to use to select Timers- Returns:
- a map of the Timers that match the filter, with the key as the name String to the Timer.
-
getGauges
public java.util.Map<java.lang.String,com.codahale.metrics.Gauge> getGauges(com.codahale.metrics.MetricFilter filter)
Fetches the existing Gauges.- Specified by:
getGaugesin interfaceMetricsService- Parameters:
filter- filter to use to select Gauges- Returns:
- a map of the Gauges that match the filter, with the key as the name String to the Gauge.
-
getCounters
public java.util.Map<java.lang.String,com.codahale.metrics.Counter> getCounters(com.codahale.metrics.MetricFilter filter)
Fetches the existing Counters.- Specified by:
getCountersin interfaceMetricsService- Parameters:
filter- filter to use to select Counters- Returns:
- a map of the Counters that match the filter, with the key as the name String to the Counter.
-
getMeters
public java.util.Map<java.lang.String,com.codahale.metrics.Meter> getMeters(com.codahale.metrics.MetricFilter filter)
Fetches the existing Meters.- Specified by:
getMetersin interfaceMetricsService- Parameters:
filter- filter to use to select Meters- Returns:
- a map of the Meters that match the filter, with the key as the name String to the Meter.
-
getHistograms
public java.util.Map<java.lang.String,com.codahale.metrics.Histogram> getHistograms(com.codahale.metrics.MetricFilter filter)
Fetches the existing Histograms.- Specified by:
getHistogramsin interfaceMetricsService- Parameters:
filter- filter to use to select Histograms- Returns:
- a map of the Histograms that match the filter, with the key as the name String to the Histogram.
-
removeMatching
public void removeMatching(com.codahale.metrics.MetricFilter filter)
Removes all Metrics that match a given filter.- Specified by:
removeMatchingin interfaceMetricsService- Parameters:
filter- filter to use to select the Metrics to remove.
-
getMetrics
public java.util.Map<java.lang.String,com.codahale.metrics.Metric> getMetrics()
Fetches the existing Meters.- Specified by:
getMetricsin interfaceMetricsService- Returns:
- a map of all metrics with the key as the name String to the Meter.
-
-