Class AbstractMetricGroup<A extends AbstractMetricGroup<?>>
- java.lang.Object
-
- org.apache.flink.runtime.metrics.groups.AbstractMetricGroup<A>
-
- Type Parameters:
A
- The type of the parent MetricGroup
- All Implemented Interfaces:
org.apache.flink.metrics.MetricGroup
- Direct Known Subclasses:
ComponentMetricGroup
,GenericMetricGroup
,ProcessMetricGroup
,ResourceManagerMetricGroup
,SlotManagerMetricGroup
@Internal public abstract class AbstractMetricGroup<A extends AbstractMetricGroup<?>> extends Object implements org.apache.flink.metrics.MetricGroup
AbstractMetricGroup
that contains key functionality for adding metrics and groups.IMPORTANT IMPLEMENTATION NOTE
This class uses locks for adding and removing metrics objects. This is done to prevent resource leaks in the presence of concurrently closing a group and adding metrics and subgroups. Since closing groups recursively closes the subgroups, the lock acquisition order must be strictly from parent group to subgroup. If at any point, a subgroup holds its group lock and calls a parent method that also acquires the lock, it will create a deadlock condition.
An AbstractMetricGroup can be
closed
. Upon closing, the group de-register all metrics from any metrics reporter and any internal maps. Note that even closed metrics groups return Counters, Gauges, etc to the code, to prevent exceptions in the monitored code. These metrics simply do not get reported any more, when created on a closed group.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description protected static class
AbstractMetricGroup.ChildType
Enum for indicating which child group should be created.
-
Field Summary
Fields Modifier and Type Field Description protected static org.slf4j.Logger
LOG
protected A
parent
The parent group containing this group.protected QueryScopeInfo
queryServiceScopeInfo
The metrics query service scope represented by this group, lazily computed.protected MetricRegistry
registry
The registry that this metrics group belongs to.protected Map<String,String>[]
variables
The map containing all variables and their associated values, lazily computed.
-
Constructor Summary
Constructors Constructor Description AbstractMetricGroup(MetricRegistry registry, String[] scope, A parent)
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description org.apache.flink.metrics.MetricGroup
addGroup(String name)
org.apache.flink.metrics.MetricGroup
addGroup(String key, String value)
protected void
addMetric(String name, org.apache.flink.metrics.Metric metric)
Adds the given metric to the group and registers it at the registry, if the group is not yet closed, and if no metric with the same name has been registered before.void
addSpan(org.apache.flink.traces.SpanBuilder spanBuilder)
void
close()
org.apache.flink.metrics.Counter
counter(String name)
<C extends org.apache.flink.metrics.Counter>
Ccounter(String name, C counter)
protected GenericMetricGroup
createChildGroup(String name, AbstractMetricGroup.ChildType childType)
protected String
createLogicalScope(org.apache.flink.metrics.CharacterFilter filter, char delimiter)
protected abstract QueryScopeInfo
createQueryServiceMetricInfo(org.apache.flink.metrics.CharacterFilter filter)
Creates the metric query service scope for this group.<T,G extends org.apache.flink.metrics.Gauge<T>>
Ggauge(String name, G gauge)
Map<String,String>
getAllVariables()
Map<String,String>
getAllVariables(int reporterIndex, Set<String> excludedVariables)
protected abstract String
getGroupName(org.apache.flink.metrics.CharacterFilter filter)
Returns the name for this group, meaning what kind of entity it represents, for example "taskmanager".String
getLogicalScope(org.apache.flink.metrics.CharacterFilter filter)
Returns the logical scope of this group, for example"taskmanager.job.task"
.String
getLogicalScope(org.apache.flink.metrics.CharacterFilter filter, char delimiter)
Returns the logical scope of this group, for example"taskmanager.job.task"
.String
getMetricIdentifier(String metricName)
Returns the fully qualified metric name, for example"host-7.taskmanager-2.window_word_count.my-mapper.metricName"
.String
getMetricIdentifier(String metricName, org.apache.flink.metrics.CharacterFilter filter)
Returns the fully qualified metric name, for example"host-7.taskmanager-2.window_word_count.my-mapper.metricName"
.String
getMetricIdentifier(String metricName, org.apache.flink.metrics.CharacterFilter filter, int reporterIndex, char delimiter)
Returns the fully qualified metric name using the configured delimiter for the reporter with the given index, for example"host-7.taskmanager-2.window_word_count.my-mapper.metricName"
.QueryScopeInfo
getQueryServiceMetricInfo(org.apache.flink.metrics.CharacterFilter filter)
Returns the metric query service scope for this group.String[]
getScopeComponents()
Gets the scope as an array of the scope components, for example["host-7", "taskmanager-2", "window_word_count", "my-mapper"]
.<H extends org.apache.flink.metrics.Histogram>
Hhistogram(String name, H histogram)
boolean
isClosed()
<M extends org.apache.flink.metrics.Meter>
Mmeter(String name, M meter)
protected void
putVariables(Map<String,String> variables)
Enters all variables specific to thisAbstractMetricGroup
and their associated values into the map.
-
-
-
Field Detail
-
LOG
protected static final org.slf4j.Logger LOG
-
parent
protected final A extends AbstractMetricGroup<?> parent
The parent group containing this group.
-
variables
protected volatile Map<String,String>[] variables
The map containing all variables and their associated values, lazily computed.
-
registry
protected final MetricRegistry registry
The registry that this metrics group belongs to.
-
queryServiceScopeInfo
protected QueryScopeInfo queryServiceScopeInfo
The metrics query service scope represented by this group, lazily computed.
-
-
Constructor Detail
-
AbstractMetricGroup
public AbstractMetricGroup(MetricRegistry registry, String[] scope, A parent)
-
-
Method Detail
-
getAllVariables
public Map<String,String> getAllVariables()
- Specified by:
getAllVariables
in interfaceorg.apache.flink.metrics.MetricGroup
-
getAllVariables
public Map<String,String> getAllVariables(int reporterIndex, Set<String> excludedVariables)
-
putVariables
protected void putVariables(Map<String,String> variables)
Enters all variables specific to thisAbstractMetricGroup
and their associated values into the map.- Parameters:
variables
- map to enter variables and their values into
-
getLogicalScope
public String getLogicalScope(org.apache.flink.metrics.CharacterFilter filter)
Returns the logical scope of this group, for example"taskmanager.job.task"
.- Parameters:
filter
- character filter which is applied to the scope components- Returns:
- logical scope
-
getLogicalScope
public String getLogicalScope(org.apache.flink.metrics.CharacterFilter filter, char delimiter)
Returns the logical scope of this group, for example"taskmanager.job.task"
.- Parameters:
filter
- character filter which is applied to the scope components- Returns:
- logical scope
-
createLogicalScope
protected String createLogicalScope(org.apache.flink.metrics.CharacterFilter filter, char delimiter)
-
getGroupName
protected abstract String getGroupName(org.apache.flink.metrics.CharacterFilter filter)
Returns the name for this group, meaning what kind of entity it represents, for example "taskmanager".- Parameters:
filter
- character filter which is applied to the name- Returns:
- logical name for this group
-
getScopeComponents
public String[] getScopeComponents()
Gets the scope as an array of the scope components, for example["host-7", "taskmanager-2", "window_word_count", "my-mapper"]
.- Specified by:
getScopeComponents
in interfaceorg.apache.flink.metrics.MetricGroup
- See Also:
getMetricIdentifier(String)
-
getQueryServiceMetricInfo
public QueryScopeInfo getQueryServiceMetricInfo(org.apache.flink.metrics.CharacterFilter filter)
Returns the metric query service scope for this group.- Parameters:
filter
- character filter- Returns:
- query service scope
-
createQueryServiceMetricInfo
protected abstract QueryScopeInfo createQueryServiceMetricInfo(org.apache.flink.metrics.CharacterFilter filter)
Creates the metric query service scope for this group.- Parameters:
filter
- character filter- Returns:
- query service scope
-
getMetricIdentifier
public String getMetricIdentifier(String metricName)
Returns the fully qualified metric name, for example"host-7.taskmanager-2.window_word_count.my-mapper.metricName"
.- Specified by:
getMetricIdentifier
in interfaceorg.apache.flink.metrics.MetricGroup
- Parameters:
metricName
- metric name- Returns:
- fully qualified metric name
-
getMetricIdentifier
public String getMetricIdentifier(String metricName, org.apache.flink.metrics.CharacterFilter filter)
Returns the fully qualified metric name, for example"host-7.taskmanager-2.window_word_count.my-mapper.metricName"
.- Specified by:
getMetricIdentifier
in interfaceorg.apache.flink.metrics.MetricGroup
- Parameters:
metricName
- metric namefilter
- character filter which is applied to the scope components if not null.- Returns:
- fully qualified metric name
-
getMetricIdentifier
public String getMetricIdentifier(String metricName, org.apache.flink.metrics.CharacterFilter filter, int reporterIndex, char delimiter)
Returns the fully qualified metric name using the configured delimiter for the reporter with the given index, for example"host-7.taskmanager-2.window_word_count.my-mapper.metricName"
.- Parameters:
metricName
- metric namefilter
- character filter which is applied to the scope components if not null.reporterIndex
- index of the reporter whose delimiter should be useddelimiter
- delimiter to use- Returns:
- fully qualified metric name
-
close
public void close()
-
isClosed
public final boolean isClosed()
-
addSpan
public void addSpan(org.apache.flink.traces.SpanBuilder spanBuilder)
- Specified by:
addSpan
in interfaceorg.apache.flink.metrics.MetricGroup
-
counter
public org.apache.flink.metrics.Counter counter(String name)
- Specified by:
counter
in interfaceorg.apache.flink.metrics.MetricGroup
-
counter
public <C extends org.apache.flink.metrics.Counter> C counter(String name, C counter)
- Specified by:
counter
in interfaceorg.apache.flink.metrics.MetricGroup
-
gauge
public <T,G extends org.apache.flink.metrics.Gauge<T>> G gauge(String name, G gauge)
- Specified by:
gauge
in interfaceorg.apache.flink.metrics.MetricGroup
-
histogram
public <H extends org.apache.flink.metrics.Histogram> H histogram(String name, H histogram)
- Specified by:
histogram
in interfaceorg.apache.flink.metrics.MetricGroup
-
meter
public <M extends org.apache.flink.metrics.Meter> M meter(String name, M meter)
- Specified by:
meter
in interfaceorg.apache.flink.metrics.MetricGroup
-
addMetric
protected void addMetric(String name, org.apache.flink.metrics.Metric metric)
Adds the given metric to the group and registers it at the registry, if the group is not yet closed, and if no metric with the same name has been registered before.- Parameters:
name
- the name to register the metric undermetric
- the metric to register
-
addGroup
public org.apache.flink.metrics.MetricGroup addGroup(String name)
- Specified by:
addGroup
in interfaceorg.apache.flink.metrics.MetricGroup
-
addGroup
public org.apache.flink.metrics.MetricGroup addGroup(String key, String value)
- Specified by:
addGroup
in interfaceorg.apache.flink.metrics.MetricGroup
-
createChildGroup
protected GenericMetricGroup createChildGroup(String name, AbstractMetricGroup.ChildType childType)
-
-