Class AbstractMetricsContext

java.lang.Object
com.mapr.org.apache.hadoop.metrics.spi.AbstractMetricsContext
All Implemented Interfaces:
MetricsContext
Direct Known Subclasses:
GangliaContext, NullContext

@Public @Evolving public abstract class AbstractMetricsContext extends 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 Details

    • AbstractMetricsContext

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

    • init

      public void init(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 String getAttribute(String attributeName)
      Convenience method for subclasses to access factory attributes.
    • getAttributeTable

      protected Map<String,String> getAttributeTable(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 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 IOException
      Starts or restarts monitoring, the emitting of metrics records.
      Specified by:
      startMonitoring in interface MetricsContext
      Throws:
      IOException
    • stopMonitoring

      public void stopMonitoring()
      Stops monitoring. This does not free buffered data.
      Specified by:
      stopMonitoring in interface MetricsContext
      See Also:
    • 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(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(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 Map<String,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(String contextName, String recordName, OutputRecord outRec) throws IOException
      Sends a record to the metrics system.
      Throws:
      IOException
    • flush

      protected void flush() throws 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:
      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(String attributeName)
      If a period is set in the attribute passed in, override the default with it.