Class AbstractMetricsContext

  • All Implemented Interfaces:
    MetricsContext
    Direct Known Subclasses:
    GangliaContext, NullContext

    @Public
    @Evolving
    public abstract class AbstractMetricsContext
    extends java.lang.Object
    implements MetricsContext
    The main class of the Service Provider Interface. This class should be extended in order to integrate the Metrics API with a specific metrics client library.

    This class implements the internal table of metric data, and the timer on which data is to be sent to the metrics system. Subclasses must override the abstract emitRecord method in order to transmit the data.

    • Constructor Summary

      Constructors 
      Modifier Constructor Description
      protected AbstractMetricsContext()
      Creates a new instance of AbstractMetricsContext
    • Method Summary

      All Methods Instance Methods Abstract Methods Concrete Methods 
      Modifier and Type Method Description
      void close()
      Stops monitoring and frees buffered data, returning this object to its initial state.
      MetricsRecord createRecord​(java.lang.String recordName)
      Creates a new AbstractMetricsRecord instance with the given recordName.
      protected abstract void emitRecord​(java.lang.String contextName, java.lang.String recordName, OutputRecord outRec)
      Sends a record to the metrics system.
      protected void flush()
      Called each period after all records have been emitted, this method does nothing.
      java.util.Map<java.lang.String,​java.util.Collection<OutputRecord>> getAllRecords()
      Retrieves all the records managed by this MetricsContext.
      protected java.lang.String getAttribute​(java.lang.String attributeName)
      Convenience method for subclasses to access factory attributes.
      protected java.util.Map<java.lang.String,​java.lang.String> getAttributeTable​(java.lang.String tableName)
      Returns an attribute-value map derived from the factory attributes by finding all factory attributes that begin with contextName.tableName.
      ContextFactory getContextFactory()
      Returns the factory by which this context was created.
      java.lang.String getContextName()
      Returns the context name.
      int getPeriod()
      Returns the timer period.
      void init​(java.lang.String contextName, ContextFactory factory)
      Initializes the context.
      boolean isMonitoring()
      Returns true if monitoring is currently in progress.
      protected MetricsRecord newRecord​(java.lang.String recordName)
      Subclasses should override this if they subclass MetricsRecordImpl.
      protected void parseAndSetPeriod​(java.lang.String attributeName)
      If a period is set in the attribute passed in, override the default with it.
      void registerUpdater​(Updater updater)
      Registers a callback to be called at time intervals determined by the configuration.
      protected void remove​(MetricsRecordImpl record)
      Called by MetricsRecordImpl.remove().
      protected void setPeriod​(int period)
      Sets the timer period
      void startMonitoring()
      Starts or restarts monitoring, the emitting of metrics records.
      void stopMonitoring()
      Stops monitoring.
      void unregisterUpdater​(Updater updater)
      Removes a callback, if it exists.
      protected void update​(MetricsRecordImpl record)
      Called by MetricsRecordImpl.update().
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • AbstractMetricsContext

        protected AbstractMetricsContext()
        Creates a new instance of AbstractMetricsContext
    • Method Detail

      • init

        public void init​(java.lang.String contextName,
                         ContextFactory factory)
        Initializes the context.
        Specified by:
        init in interface MetricsContext
        Parameters:
        contextName - The given name for this context
        factory - The creator of this context
      • getAttribute

        protected java.lang.String getAttribute​(java.lang.String attributeName)
        Convenience method for subclasses to access factory attributes.
      • getAttributeTable

        protected java.util.Map<java.lang.String,​java.lang.String> getAttributeTable​(java.lang.String tableName)
        Returns an attribute-value map derived from the factory attributes by finding all factory attributes that begin with contextName.tableName. The returned map consists of those attributes with the contextName and tableName stripped off.
      • getContextName

        public java.lang.String getContextName()
        Returns the context name.
        Specified by:
        getContextName in interface MetricsContext
        Returns:
        the context name
      • getContextFactory

        public ContextFactory getContextFactory()
        Returns the factory by which this context was created.
      • startMonitoring

        public void startMonitoring()
                             throws java.io.IOException
        Starts or restarts monitoring, the emitting of metrics records.
        Specified by:
        startMonitoring in interface MetricsContext
        Throws:
        java.io.IOException
      • stopMonitoring

        public void stopMonitoring()
        Stops monitoring. This does not free buffered data.
        Specified by:
        stopMonitoring in interface MetricsContext
        See Also:
        close()
      • isMonitoring

        public boolean isMonitoring()
        Returns true if monitoring is currently in progress.
        Specified by:
        isMonitoring in interface MetricsContext
      • close

        public void close()
        Stops monitoring and frees buffered data, returning this object to its initial state.
        Specified by:
        close in interface MetricsContext
      • createRecord

        public final MetricsRecord createRecord​(java.lang.String recordName)
        Creates a new AbstractMetricsRecord instance with the given recordName. Throws an exception if the metrics implementation is configured with a fixed set of record names and recordName is not in that set.
        Specified by:
        createRecord in interface MetricsContext
        Parameters:
        recordName - the name of the record
        Throws:
        MetricsException - if recordName conflicts with configuration data
      • newRecord

        protected MetricsRecord newRecord​(java.lang.String recordName)
        Subclasses should override this if they subclass MetricsRecordImpl.
        Parameters:
        recordName - the name of the record
        Returns:
        newly created instance of MetricsRecordImpl or subclass
      • registerUpdater

        public void registerUpdater​(Updater updater)
        Registers a callback to be called at time intervals determined by the configuration.
        Specified by:
        registerUpdater in interface MetricsContext
        Parameters:
        updater - object to be run periodically; it should update some metrics records
      • unregisterUpdater

        public void unregisterUpdater​(Updater updater)
        Removes a callback, if it exists.
        Specified by:
        unregisterUpdater in interface MetricsContext
        Parameters:
        updater - object to be removed from the callback list
      • getAllRecords

        public java.util.Map<java.lang.String,​java.util.Collection<OutputRecord>> getAllRecords()
        Retrieves all the records managed by this MetricsContext. Useful for monitoring systems that are polling-based.
        Specified by:
        getAllRecords in interface MetricsContext
        Returns:
        A non-null collection of all monitoring records.
      • emitRecord

        protected abstract void emitRecord​(java.lang.String contextName,
                                           java.lang.String recordName,
                                           OutputRecord outRec)
                                    throws java.io.IOException
        Sends a record to the metrics system.
        Throws:
        java.io.IOException
      • flush

        protected void flush()
                      throws java.io.IOException
        Called each period after all records have been emitted, this method does nothing. Subclasses may override it in order to perform some kind of flush.
        Throws:
        java.io.IOException
      • update

        protected void update​(MetricsRecordImpl record)
        Called by MetricsRecordImpl.update(). Creates or updates a row in the internal table of metric data.
      • remove

        protected void remove​(MetricsRecordImpl record)
        Called by MetricsRecordImpl.remove(). Removes all matching rows in the internal table of metric data. A row matches if it has the same tag names and values as record, but it may also have additional tags.
      • getPeriod

        public int getPeriod()
        Returns the timer period.
        Specified by:
        getPeriod in interface MetricsContext
      • setPeriod

        protected void setPeriod​(int period)
        Sets the timer period
      • parseAndSetPeriod

        protected void parseAndSetPeriod​(java.lang.String attributeName)
        If a period is set in the attribute passed in, override the default with it.