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. -
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic classstatic class -
Field Summary
Fields inherited from interface com.mapr.org.apache.hadoop.metrics.MetricsContext
DEFAULT_PERIOD -
Constructor Summary
ConstructorsModifierConstructorDescriptionprotectedCreates a new instance of AbstractMetricsContext -
Method Summary
Modifier and TypeMethodDescriptionvoidclose()Stops monitoring and frees buffered data, returning this object to its initial state.final MetricsRecordcreateRecord(String recordName) Creates a new AbstractMetricsRecord instance with the givenrecordName.protected abstract voidemitRecord(String contextName, String recordName, OutputRecord outRec) Sends a record to the metrics system.protected voidflush()Called each period after all records have been emitted, this method does nothing.Retrieves all the records managed by this MetricsContext.protected StringgetAttribute(String attributeName) Convenience method for subclasses to access factory attributes.getAttributeTable(String tableName) Returns an attribute-value map derived from the factory attributes by finding all factory attributes that begin with contextName.tableName.Returns the factory by which this context was created.Returns the context name.intReturns the timer period.voidinit(String contextName, ContextFactory factory) Initializes the context.booleanReturns true if monitoring is currently in progress.protected MetricsRecordSubclasses should override this if they subclass MetricsRecordImpl.protected voidparseAndSetPeriod(String attributeName) If a period is set in the attribute passed in, override the default with it.voidregisterUpdater(Updater updater) Registers a callback to be called at time intervals determined by the configuration.protected voidremove(MetricsRecordImpl record) Called by MetricsRecordImpl.remove().protected voidsetPeriod(int period) Sets the timer periodvoidStarts or restarts monitoring, the emitting of metrics records.voidStops monitoring.voidunregisterUpdater(Updater updater) Removes a callback, if it exists.protected voidupdate(MetricsRecordImpl record) Called by MetricsRecordImpl.update().
-
Constructor Details
-
AbstractMetricsContext
protected AbstractMetricsContext()Creates a new instance of AbstractMetricsContext
-
-
Method Details
-
init
Initializes the context.- Specified by:
initin interfaceMetricsContext- Parameters:
contextName- The given name for this contextfactory- The creator of this context
-
getAttribute
Convenience method for subclasses to access factory attributes. -
getAttributeTable
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
Returns the context name.- Specified by:
getContextNamein interfaceMetricsContext- Returns:
- the context name
-
getContextFactory
Returns the factory by which this context was created. -
startMonitoring
Starts or restarts monitoring, the emitting of metrics records.- Specified by:
startMonitoringin interfaceMetricsContext- Throws:
IOException
-
stopMonitoring
public void stopMonitoring()Stops monitoring. This does not free buffered data.- Specified by:
stopMonitoringin interfaceMetricsContext- See Also:
-
isMonitoring
public boolean isMonitoring()Returns true if monitoring is currently in progress.- Specified by:
isMonitoringin interfaceMetricsContext
-
close
public void close()Stops monitoring and frees buffered data, returning this object to its initial state.- Specified by:
closein interfaceMetricsContext
-
createRecord
Creates a new AbstractMetricsRecord instance with the givenrecordName. Throws an exception if the metrics implementation is configured with a fixed set of record names andrecordNameis not in that set.- Specified by:
createRecordin interfaceMetricsContext- Parameters:
recordName- the name of the record- Throws:
MetricsException- if recordName conflicts with configuration data
-
newRecord
Subclasses should override this if they subclass MetricsRecordImpl.- Parameters:
recordName- the name of the record- Returns:
- newly created instance of MetricsRecordImpl or subclass
-
registerUpdater
Registers a callback to be called at time intervals determined by the configuration.- Specified by:
registerUpdaterin interfaceMetricsContext- Parameters:
updater- object to be run periodically; it should update some metrics records
-
unregisterUpdater
Removes a callback, if it exists.- Specified by:
unregisterUpdaterin interfaceMetricsContext- Parameters:
updater- object to be removed from the callback list
-
getAllRecords
Retrieves all the records managed by this MetricsContext. Useful for monitoring systems that are polling-based.- Specified by:
getAllRecordsin interfaceMetricsContext- 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
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
Called by MetricsRecordImpl.update(). Creates or updates a row in the internal table of metric data. -
remove
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:
getPeriodin interfaceMetricsContext
-
setPeriod
protected void setPeriod(int period) Sets the timer period -
parseAndSetPeriod
If a period is set in the attribute passed in, override the default with it.
-