Class MetricRegistry


  • public abstract class MetricRegistry
    extends java.lang.Object
    The registry that stores metrics and their metadata. The MetricRegistry provides methods to register, create and retrieve metrics and their respective metadata.
    See Also:
    MetricFilter
    • Constructor Detail

      • MetricRegistry

        public MetricRegistry()
    • Method Detail

      • name

        public static java.lang.String name​(java.lang.String name,
                                            java.lang.String... names)
        Concatenates elements to form a dotted name, eliding any null values or empty strings.
        Parameters:
        name - the first element of the name
        names - the remaining elements of the name
        Returns:
        name and names concatenated by periods
      • name

        public static java.lang.String name​(java.lang.Class<?> klass,
                                            java.lang.String... names)
        Concatenates a class name and elements to form a dotted name, eliding any null values or empty strings.
        Parameters:
        klass - the first element of the name
        names - the remaining elements of the name
        Returns:
        klass and names concatenated by periods
      • register

        public abstract <T extends Metric> T register​(java.lang.String name,
                                                      T metric)
                                               throws java.lang.IllegalArgumentException
        Given a Metric, registers it under a MetricID with the given name and with no tags. A Metadata object will be registered with the name and type. However, if a Metadata object is already registered with this metric name and is not equal to the created Metadata object then an exception will be thrown.
        Type Parameters:
        T - the type of the metric
        Parameters:
        name - the name of the metric
        metric - the metric
        Returns:
        metric
        Throws:
        java.lang.IllegalArgumentException - if the name is already registered or if Metadata with different values has already been registered with the name
      • register

        public abstract <T extends Metric> T register​(Metadata metadata,
                                                      T metric)
                                               throws java.lang.IllegalArgumentException
        Given a Metric and Metadata, registers the metric with a MetricID with the name provided by the Metadata and with no tags.

        Note: If a Metadata object is already registered under this metric name and is not equal to the provided Metadata object then an exception will be thrown.

        Type Parameters:
        T - the type of the metric
        Parameters:
        metadata - the metadata
        metric - the metric
        Returns:
        metric
        Throws:
        java.lang.IllegalArgumentException - if the name is already registered or if Metadata with different values has already been registered with the name
        Since:
        1.1
      • register

        public abstract <T extends Metric> T register​(Metadata metadata,
                                                      T metric,
                                                      Tag... tags)
                                               throws java.lang.IllegalArgumentException
        Given a Metric and Metadata, registers both under a MetricID with the name provided by the Metadata and with the provided Tags.

        Note: If a Metadata object is already registered under this metric name and is not equal to the provided Metadata object then an exception will be thrown.

        Type Parameters:
        T - the type of the metric
        Parameters:
        metadata - the metadata
        metric - the metric
        tags - the tags of the metric
        Returns:
        metric
        Throws:
        java.lang.IllegalArgumentException - if the name is already registered or if Metadata with different values has already been registered with the name
        Since:
        2.0
      • counter

        public abstract Counter counter​(java.lang.String name)
        Return the Counter registered under the MetricID with this name and with no tags; or create and register a new Counter if none is registered. If a Counter was created, a Metadata object will be registered with the name and type. If a Metadata object is already registered with this metric name then that Metadata will be used.
        Parameters:
        name - the name of the metric
        Returns:
        a new or pre-existing Counter
      • counter

        public abstract Counter counter​(java.lang.String name,
                                        Tag... tags)
        Return the Counter registered under the MetricID with this name and with the provided Tags; or create and register a new Counter if none is registered. If a Counter was created, a Metadata object will be registered with the name and type. If a Metadata object is already registered with this metric name then that Metadata will be used.
        Parameters:
        name - the name of the metric
        tags - the tags of the metric
        Returns:
        a new or pre-existing Counter
        Since:
        2.0
      • counter

        public abstract Counter counter​(Metadata metadata)
        Return the Counter registered under the MetricID with the Metadata's name and with no tags; or create and register a new Counter if none is registered. If a Counter was created, the provided Metadata object will be registered.

        Note: During retrieval or creation, if a Metadata object is already registered under this metric name and is not equal to the provided Metadata object then an exception will be thrown.

        Parameters:
        metadata - the name of the metric
        Returns:
        a new or pre-existing Counter
      • counter

        public abstract Counter counter​(Metadata metadata,
                                        Tag... tags)
        Return the Counter registered under the MetricID with the Metadata's name and with the provided Tags; or create and register a new Counter if none is registered. If a Counter was created, the provided Metadata object will be registered.

        Note: During retrieval or creation, if a Metadata object is already registered under this metric name and is not equal to the provided Metadata object then an exception will be thrown.

        Parameters:
        metadata - the name of the metric
        tags - the tags of the metric
        Returns:
        a new or pre-existing Counter
        Since:
        2.0
      • concurrentGauge

        public abstract ConcurrentGauge concurrentGauge​(java.lang.String name,
                                                        Tag... tags)
        Return the ConcurrentGauge registered under the MetricID with this name and with the provided Tags; or create and register a new ConcurrentGauge if none is registered. If a ConcurrentGauge was created, a Metadata object will be registered with the name and type.
        Parameters:
        name - the name of the metric
        tags - the tags of the metric
        Returns:
        a new or pre-existing ConcurrentGauge
      • concurrentGauge

        public abstract ConcurrentGauge concurrentGauge​(Metadata metadata,
                                                        Tag... tags)
        Return the ConcurrentGauge registered under the MetricID with the Metadata's name and with the provided Tags; or create and register a new ConcurrentGauge if none is registered. If a ConcurrentGauge was created, the provided Metadata object will be registered.

        Note: During retrieval or creation, if a Metadata object is already registered under this metric name and is not equal to the provided Metadata object then an exception will be thrown.

        Parameters:
        metadata - the name of the metric
        tags - the tags of the metric
        Returns:
        a new or pre-existing ConcurrentGauge
      • histogram

        public abstract Histogram histogram​(java.lang.String name)
        Return the Histogram registered under the MetricID with this name and with no tags; or create and register a new Histogram if none is registered. If a Histogram was created, a Metadata object will be registered with the name and type. If a Metadata object is already registered with this metric name then that Metadata will be used.
        Parameters:
        name - the name of the metric
        Returns:
        a new or pre-existing Histogram
      • histogram

        public abstract Histogram histogram​(java.lang.String name,
                                            Tag... tags)
        Return the Histogram registered under the MetricID with this name and with the provided Tags; or create and register a new Histogram if none is registered. If a Histogram was created, a Metadata object will be registered with the name and type. If a Metadata object is already registered with this metric name then that Metadata will be used.
        Parameters:
        name - the name of the metric
        tags - the tags of the metric
        Returns:
        a new or pre-existing Histogram
        Since:
        2.0
      • histogram

        public abstract Histogram histogram​(Metadata metadata)
        Return the Histogram registered under the MetricID with the Metadata's name and with no tags; or create and register a new Histogram if none is registered. If a Histogram was created, the provided Metadata object will be registered.

        Note: During retrieval or creation, if a Metadata object is already registered under this metric name and is not equal to the provided Metadata object then an exception will be thrown.

        Parameters:
        metadata - the name of the metric
        Returns:
        a new or pre-existing Histogram
      • histogram

        public abstract Histogram histogram​(Metadata metadata,
                                            Tag... tags)
        Return the Histogram registered under the MetricID with the Metadata's name and with the provided Tags; or create and register a new Histogram if none is registered. If a Histogram was created, the provided Metadata object will be registered.

        Note: During retrieval or creation, if a Metadata object is already registered under this metric name and is not equal to the provided Metadata object then an exception will be thrown.

        Parameters:
        metadata - the name of the metric
        tags - the tags of the metric
        Returns:
        a new or pre-existing Histogram
        Since:
        2.0
      • meter

        public abstract Meter meter​(java.lang.String name)
        Return the Meter registered under the MetricID with this name and with no tags; or create and register a new Meter if none is registered. If a Meter was created, a Metadata object will be registered with the name and type. If a Metadata object is already registered with this metric name then that Metadata will be used.
        Parameters:
        name - the name of the metric
        Returns:
        a new or pre-existing Meter
      • meter

        public abstract Meter meter​(java.lang.String name,
                                    Tag... tags)
        Return the Meter registered under the MetricID with this name and with the provided Tags; or create and register a new Meter if none is registered. If a Meter was created, a Metadata object will be registered with the name and type. If a Metadata object is already registered with this metric name then that Metadata will be used.
        Parameters:
        name - the name of the metric
        tags - the tags of the metric
        Returns:
        a new or pre-existing Meter
        Since:
        2.0
      • meter

        public abstract Meter meter​(Metadata metadata)
        Return the Meter registered under the MetricID with the Metadata's name and with no tags; or create and register a new Meter if none is registered. If a Meter was created, the provided Metadata object will be registered.

        Note: During retrieval or creation, if a Metadata object is already registered under this metric name and is not equal to the provided Metadata object then an exception will be thrown.

        Parameters:
        metadata - the name of the metric
        Returns:
        a new or pre-existing Meter
      • meter

        public abstract Meter meter​(Metadata metadata,
                                    Tag... tags)
        Return the Meter registered under the MetricID with the Metadata's name and with the provided Tags; or create and register a new Meter if none is registered. If a Meter was created, the provided Metadata object will be registered.

        Note: During retrieval or creation, if a Metadata object is already registered under this metric name and is not equal to the provided Metadata object then an exception will be thrown.

        Parameters:
        metadata - the name of the metric
        tags - the tags of the metric
        Returns:
        a new or pre-existing Meter
        Since:
        2.0
      • timer

        public abstract Timer timer​(java.lang.String name)
        Return the Timer registered under the MetricID with this name and with no tags; or create and register a new Timer if none is registered. If a Timer was created, a Metadata object will be registered with the name and type. If a Metadata object is already registered with this metric name then that Metadata will be used.
        Parameters:
        name - the name of the metric
        Returns:
        a new or pre-existing Timer
      • timer

        public abstract Timer timer​(java.lang.String name,
                                    Tag... tags)
        Return the Timer registered under the MetricID with this name and with the provided Tags; or create and register a new Timer if none is registered. If a Timer was created, a Metadata object will be registered with the name and type. If a Metadata object is already registered with this metric name then that Metadata will be used.
        Parameters:
        name - the name of the metric
        tags - the tags of the metric
        Returns:
        a new or pre-existing Timer
        Since:
        2.0
      • timer

        public abstract Timer timer​(Metadata metadata)
        Return the Timer registered under the the MetricID with the Metadata's name and with no tags; or create and register a new Timer if none is registered. If a Timer was created, the provided Metadata object will be registered.

        Note: During retrieval or creation, if a Metadata object is already registered under this metric name and is not equal to the provided Metadata object then an exception will be thrown.

        Parameters:
        metadata - the name of the metric
        Returns:
        a new or pre-existing Timer
      • timer

        public abstract Timer timer​(Metadata metadata,
                                    Tag... tags)
        Return the Timer registered under the the MetricID with the Metadata's name and with the provided Tags; or create and register a new Timer if none is registered. If a Timer was created, the provided Metadata object will be registered.

        Note: During retrieval or creation, if a Metadata object is already registered under this metric name and is not equal to the provided Metadata object then an exception will be thrown.

        Parameters:
        metadata - the name of the metric
        tags - the tags of the metric
        Returns:
        a new or pre-existing Timer
        Since:
        2.0
      • simpleTimer

        public abstract SimpleTimer simpleTimer​(java.lang.String name)
        Return the SimpleTimer registered under the MetricID with this name and with no tags; or create and register a new SimpleTimer if none is registered. If a SimpleTimer was created, a Metadata object will be registered with the name and type. If a Metadata object is already registered with this metric name then that Metadata will be used.
        Parameters:
        name - the name of the metric
        Returns:
        a new or pre-existing SimpleTimer
        Since:
        2.3
      • simpleTimer

        public abstract SimpleTimer simpleTimer​(java.lang.String name,
                                                Tag... tags)
        Return the SimpleTimer registered under the MetricID with this name and with the provided Tags; or create and register a new SimpleTimer if none is registered. If a SimpleTimer was created, a Metadata object will be registered with the name and type. If a Metadata object is already registered with this metric name then that Metadata will be used.
        Parameters:
        name - the name of the metric
        tags - the tags of the metric
        Returns:
        a new or pre-existing SimpleTimer
        Since:
        2.3
      • simpleTimer

        public abstract SimpleTimer simpleTimer​(Metadata metadata)
        Return the SimpleTimer registered under the the MetricID with the Metadata's name and with no tags; or create and register a new SimpleTimer if none is registered. If a SimpleTimer was created, the provided Metadata object will be registered.

        Note: During retrieval or creation, if a Metadata object is already registered under this metric name and is not equal to the provided Metadata object then an exception will be thrown.

        Parameters:
        metadata - the name of the metric
        Returns:
        a new or pre-existing SimpleTimer
        Since:
        2.3
      • simpleTimer

        public abstract SimpleTimer simpleTimer​(Metadata metadata,
                                                Tag... tags)
        Return the SimpleTimer registered under the the MetricID with the Metadata's name and with the provided Tags; or create and register a new SimpleTimer if none is registered. If a SimpleTimer was created, the provided Metadata object will be registered.

        Note: During retrieval or creation, if a Metadata object is already registered under this metric name and is not equal to the provided Metadata object then an exception will be thrown.

        Parameters:
        metadata - the name of the metric
        tags - the tags of the metric
        Returns:
        a new or pre-existing SimpleTimer
        Since:
        2.3
      • remove

        public abstract boolean remove​(java.lang.String name)
        Removes all metrics with the given name.
        Parameters:
        name - the name of the metric
        Returns:
        whether or not the metric was removed
      • remove

        public abstract boolean remove​(MetricID metricID)
        Removes the metric with the given MetricID
        Parameters:
        metricID - the MetricID of the metric
        Returns:
        whether or not the metric was removed
        Since:
        2.0
      • removeMatching

        public abstract void removeMatching​(MetricFilter filter)
        Removes all metrics which match the given filter.
        Parameters:
        filter - a filter
      • getNames

        public abstract java.util.SortedSet<java.lang.String> getNames()
        Returns a set of the names of all the metrics in the registry.
        Returns:
        the names of all the metrics
      • getMetricIDs

        public abstract java.util.SortedSet<MetricID> getMetricIDs()
        Returns a set of the MetricIDs of all the metrics in the registry.
        Returns:
        the MetricIDs of all the metrics
      • getGauges

        public abstract java.util.SortedMap<MetricID,​Gauge> getGauges()
        Returns a map of all the gauges in the registry and their MetricIDs.
        Returns:
        all the gauges in the registry
      • getGauges

        public abstract java.util.SortedMap<MetricID,​Gauge> getGauges​(MetricFilter filter)
        Returns a map of all the gauges in the registry and their MetricIDs which match the given filter.
        Parameters:
        filter - the metric filter to match
        Returns:
        all the gauges in the registry
      • getCounters

        public abstract java.util.SortedMap<MetricID,​Counter> getCounters()
        Returns a map of all the counters in the registry and their MetricIDs.
        Returns:
        all the counters in the registry
      • getCounters

        public abstract java.util.SortedMap<MetricID,​Counter> getCounters​(MetricFilter filter)
        Returns a map of all the counters in the registry and their MetricIDs which match the given filter.
        Parameters:
        filter - the metric filter to match
        Returns:
        all the counters in the registry
      • getConcurrentGauges

        public abstract java.util.SortedMap<MetricID,​ConcurrentGauge> getConcurrentGauges()
        Returns a map of all the concurrent gauges in the registry and their MetricIDs.
        Returns:
        all the concurrent gauges in the registry
      • getConcurrentGauges

        public abstract java.util.SortedMap<MetricID,​ConcurrentGauge> getConcurrentGauges​(MetricFilter filter)
        Returns a map of all the concurrent gauges in the registry and their MetricIDs which match the given filter.
        Parameters:
        filter - the metric filter to match
        Returns:
        all the concurrent gauges in the registry
      • getHistograms

        public abstract java.util.SortedMap<MetricID,​Histogram> getHistograms()
        Returns a map of all the histograms in the registry and their MetricIDs.
        Returns:
        all the histograms in the registry
      • getHistograms

        public abstract java.util.SortedMap<MetricID,​Histogram> getHistograms​(MetricFilter filter)
        Returns a map of all the histograms in the registry and their MetricIDs which match the given filter.
        Parameters:
        filter - the metric filter to match
        Returns:
        all the histograms in the registry
      • getMeters

        public abstract java.util.SortedMap<MetricID,​Meter> getMeters()
        Returns a map of all the meters in the registry and their MetricIDs.
        Returns:
        all the meters in the registry
      • getMeters

        public abstract java.util.SortedMap<MetricID,​Meter> getMeters​(MetricFilter filter)
        Returns a map of all the meters in the registry and their MetricIDs which match the given filter.
        Parameters:
        filter - the metric filter to match
        Returns:
        all the meters in the registry
      • getTimers

        public abstract java.util.SortedMap<MetricID,​Timer> getTimers()
        Returns a map of all the timers in the registry and their MetricIDs.
        Returns:
        all the timers in the registry
      • getTimers

        public abstract java.util.SortedMap<MetricID,​Timer> getTimers​(MetricFilter filter)
        Returns a map of all the timers in the registry and their MetricIDs which match the given filter.
        Parameters:
        filter - the metric filter to match
        Returns:
        all the timers in the registry
      • getSimpleTimers

        public abstract java.util.SortedMap<MetricID,​SimpleTimer> getSimpleTimers()
        Returns a map of all the simple timers in the registry and their MetricIDs.
        Returns:
        all the timers in the registry
      • getSimpleTimers

        public abstract java.util.SortedMap<MetricID,​SimpleTimer> getSimpleTimers​(MetricFilter filter)
        Returns a map of all the simple timers in the registry and their MetricIDs which match the given filter.
        Parameters:
        filter - the metric filter to match
        Returns:
        all the timers in the registry
      • getMetrics

        public abstract java.util.Map<MetricID,​Metric> getMetrics()
        Returns a map of all the metrics in the registry and their MetricIDs.
        Returns:
        all the metrics in the registry
      • getMetadata

        public abstract java.util.Map<java.lang.String,​Metadata> getMetadata()
        Returns a map of all the metadata in the registry and their names.
        Returns:
        all the metadata in the registry