Class MeterRegistryHolder
- All Implemented Interfaces:
MeterRegistry
- prefix the dimensional meter names for added meters
- prefix the hierarchical meter names for added meters (via the
hierarchicalNamePrefix(String)method) - add additional tags for added meters
- forward the meter creation to the decorated
MeterRegistry - compute the LDAP attribute names and types and keep them for later retrieval
Tags and attribute types
For adding tags, a simple rule of thumb is to add component names as tags.
Generally, tag pairs (keys + values) are also used in the Dn of the monitor
provider. Most of the Rdns will typically use cn attribute type, but
for some of them you might want to use another attribute type. A simple rule of thumb is: whatever used as tag could
have its own attribute type.
Use of factory methods
The various *Gauge factory methods help create gauges in the underlying MeterRegistry.
The monitoringGauge(String, Supplier) method may be used to only output a metric to cn=monitor and
derived monitoring systems (and NOT to the following endpoints: prometheus, graphite, crest metrics, etc.).
-
Nested Class Summary
Nested classes/interfaces inherited from interface org.forgerock.monitoring.api.instrument.MeterRegistry
MeterRegistry.Config, MeterRegistry.More -
Field Summary
Fields -
Constructor Summary
ConstructorsConstructorDescriptionMeterRegistryHolder(String dimensionalNamePrefix, MeterRegistry registry) Constructor for this class. -
Method Summary
Modifier and TypeMethodDescriptionvoidbooleanGauge(String name, String ldapAttributeName, Supplier<Boolean> valueFunction) Creates both an object gauge that is never added to the parent meter registry (it only appears in ldap meters), and a gauge returning a double that will be added to the parent meter registry converting theBooleanto a double.voidbooleanGauge(String name, Supplier<Boolean> valueFunction) Creates both an object gauge that is never added to the parent meter registry (it only appears in ldap meters), and a gauge returning a double that will be added to the parent meter registry converting theBooleanto a double.config()Tracks a monotonically increasing value.Only used byCounter.builder(String).voiddateTimeGauge(String name, String ldapAttributeName, Supplier<GeneralizedTime> valueFunction) Creates both an object gauge that is never added to the parent meter registry (it only appears in ldap meters), and a gauge returning a double that will be added to the parent meter registry converting theGeneralizedTimeto a double by using theGeneralizedTime.getTimeInMillis()function.voiddateTimeGauge(String name, Supplier<GeneralizedTime> valueFunction) Creates both an object gauge that is never added to the parent meter registry (it only appears in ldap meters), and a gauge returning a double that will be added to the parent meter registry converting theGeneralizedTimeto a double by using theGeneralizedTime.getTimeInMillis()function.voidDeregisters all the meters registered through this registry.voidderegisterMatching(MeterFilter filter) Deregister meters matching the provided filter.voiddoubleGauge(String name, DoubleSupplier valueFunction) Convenience method that creates a gauge returning a double that will be added to the parent meter registry.voiddurationGauge(String name, Supplier<Duration> valueFunction) Creates both an object gauge that is never added to the parent meter registry (it only appears in ldap meters), and a gauge returning a double that will be added to the parent meter registry converting theDurationusing theDuration.toMillis()method.<T> FunctionCounterfunctionCounter(Meter.Id id, T obj, ToDoubleFunction<T> valueFunction) Register a gauge that reports the value of theNumber.<T> Gaugegauge(Meter.Id id, T obj, ToDoubleFunction<T> valueFunction) Only used byGauge.builder(String, Object, ToDoubleFunction).static StringgetAttributeName(String meterName) Returns the LDAP attribute name corresponding to this meter name.Returns a Map from ldap attribute names to the corresponding meters.hierarchicalNamePrefix(String hierarchicalNamePrefix) Sets the prefix for the hierarchical metric names.<V> voidmonitoringGauge(String name, Supplier<V> valueFunction) Creates an object gauge that is never added to the parent meter registry (it only appears in ldap meters).more()Access to less frequently used meter types and patterns.<V extends Number>
voidnumberGauge(String name, Supplier<V> valueFunction) Creates both an object gauge that is never added to the parent meter registry (it only appears in ldap meters), and a gauge returning a double that will be added to the parent meter registry converting theNumberto a double by using theNumber.doubleValue()function.register(Meter.Id id, Meter.Type type, Iterable<Measurement> measurements) Register a custom meter type.<T extends Enum<T>>
voidCreates both a metric, containing the actual state value, that is never added to the parent meter registry (it only appears in ldap meters), and a gauge for each state that will be added to the parent meter registry.Measures the distribution of samples.summary(Meter.Id id, HistogramConfig histogramConfig) Only used byDistributionSummary.builder(String).Adds a tag that will be automatically added to all meters registered against this meter registry.Measures the time taken for short tasks and the count of these tasks.timer(Meter.Id id, HistogramConfig histogramConfig, PauseDetector pauseDetectorOverride) Only used byTimer.builder(String).Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface org.forgerock.monitoring.api.instrument.MeterRegistry
find, forEachMeter, get
-
Field Details
-
TAG_ATTRIBUTE_NAME
The tag to use to map the ldap name.- See Also:
-
-
Constructor Details
-
MeterRegistryHolder
Constructor for this class.- Parameters:
dimensionalNamePrefix- prefix for the dimensional metric names. It will be used as a prefix for the hierarchical metric names, unless a different one is set usinghierarchicalNamePrefix(String).registry- the decorated registry
-
-
Method Details
-
hierarchicalNamePrefix
Sets the prefix for the hierarchical metric names.- Parameters:
hierarchicalNamePrefix- the hierarchical name prefix to use- Returns:
- this object
-
tag
Adds a tag that will be automatically added to all meters registered against this meter registry.- Parameters:
key- the tag's keyvalue- the tag's value- Returns:
- this meter registry
-
counter
Description copied from interface:MeterRegistryOnly used byCounter.builder(String).- Specified by:
counterin interfaceMeterRegistry- Parameters:
id- The identifier for this counter.- Returns:
- A new or existing counter.
-
getAttributeName
Returns the LDAP attribute name corresponding to this meter name. This method prefixes the providedmeterNamewith ds-mon-.- Parameters:
meterName- the meter name to prefix- Returns:
- the LDAP attribute name corresponding to this meter name.
-
booleanGauge
Creates both an object gauge that is never added to the parent meter registry (it only appears in ldap meters), and a gauge returning a double that will be added to the parent meter registry converting theBooleanto a double.- true is converted to 1
- false is converted to 0
- Parameters:
name- the metric namevalueFunction- a function which returns any object which will be converted to String
-
booleanGauge
Creates both an object gauge that is never added to the parent meter registry (it only appears in ldap meters), and a gauge returning a double that will be added to the parent meter registry converting theBooleanto a double.- true is converted to 1
- false is converted to 0
- Parameters:
name- the metric nameldapAttributeName- the LDAP attribute namevalueFunction- a function which returns any object which will be converted to String
-
dateTimeGauge
Creates both an object gauge that is never added to the parent meter registry (it only appears in ldap meters), and a gauge returning a double that will be added to the parent meter registry converting theGeneralizedTimeto a double by using theGeneralizedTime.getTimeInMillis()function.- Parameters:
name- the metric namevalueFunction- a function which returns aGeneralizedTimeobject that will be converted to String
-
dateTimeGauge
public void dateTimeGauge(String name, String ldapAttributeName, Supplier<GeneralizedTime> valueFunction) Creates both an object gauge that is never added to the parent meter registry (it only appears in ldap meters), and a gauge returning a double that will be added to the parent meter registry converting theGeneralizedTimeto a double by using theGeneralizedTime.getTimeInMillis()function.- Parameters:
name- the metric nameldapAttributeName- the LDAP attribute namevalueFunction- a function which returns aGeneralizedTimeobject that will be converted to String
-
durationGauge
Creates both an object gauge that is never added to the parent meter registry (it only appears in ldap meters), and a gauge returning a double that will be added to the parent meter registry converting theDurationusing theDuration.toMillis()method.- Parameters:
name- the metric namevalueFunction- a function which returns aDurationobject that will be converted to String
-
doubleGauge
Convenience method that creates a gauge returning a double that will be added to the parent meter registry.- Parameters:
name- the metric namevalueFunction- a function which returns any object which will be converted to String
-
numberGauge
Creates both an object gauge that is never added to the parent meter registry (it only appears in ldap meters), and a gauge returning a double that will be added to the parent meter registry converting theNumberto a double by using theNumber.doubleValue()function.- Type Parameters:
V- type of the value returned by thevalueFunctionprovided- Parameters:
name- the metric namevalueFunction- a function which returns any object which will be converted to String
-
stateSet
Creates both a metric, containing the actual state value, that is never added to the parent meter registry (it only appears in ldap meters), and a gauge for each state that will be added to the parent meter registry. The gauges return 1 when the evaluated state is the actual one and return 0 otherwise.- Type Parameters:
T- the enum listing the possible states- Parameters:
name- the metric name, also used as a dimension holding the evaluated state's valuestateSupplier- function returning the actual state
-
monitoringGauge
Creates an object gauge that is never added to the parent meter registry (it only appears in ldap meters).In particular, this method may be used to only output a metric to
cn=monitorand derived monitoring systems (rather than the following endpoints: prometheus, graphite, crest metrics, etc.).- Type Parameters:
V- type of the value returned by thevalueFunctionprovided- Parameters:
name- the metric namevalueFunction- a function which returns any object which will be converted to String
-
functionCounter
Description copied from interface:MeterRegistry- Specified by:
functionCounterin interfaceMeterRegistry- Type Parameters:
T- The type of the object upon which the value function derives a measurement.- Parameters:
id- The id that uniquely identifies the function counter.obj- The state object from which the count function derives a measurement.valueFunction- A monotonically increasing count function.- Returns:
- A new function counter.
-
gauge
Description copied from interface:MeterRegistryOnly used byGauge.builder(String, Object, ToDoubleFunction).- Specified by:
gaugein interfaceMeterRegistry- Type Parameters:
T- The type of the state object from which the gauge value is extracted.- Parameters:
id- The identifier for this gauge.obj- State object used to compute a value.valueFunction- Function that is applied on the value for the number.- Returns:
- A new or existing long task timer.
-
gauge
Register a gauge that reports the value of theNumber.- Parameters:
name- Name of the gauge being registered.number- Thread-safe implementation ofNumberused to access the value.- Returns:
- The number that was passed in so the registration can be done as part of an assignment statement.
-
counter
Tracks a monotonically increasing value.- Parameters:
name- The base metric name- Returns:
- A new or existing counter.
-
timer
Measures the time taken for short tasks and the count of these tasks.- Parameters:
name- The base metric name- Returns:
- A new or existing timer.
-
timer
public Timer timer(Meter.Id id, HistogramConfig histogramConfig, PauseDetector pauseDetectorOverride) Description copied from interface:MeterRegistryOnly used byTimer.builder(String).- Specified by:
timerin interfaceMeterRegistry- Parameters:
id- The identifier for this timer.histogramConfig- Configuration that governs how distribution statistics are computed.- Returns:
- A new or existing timer.
-
summary
Measures the distribution of samples.- Parameters:
name- The base metric name- Returns:
- A new or existing distribution summary.
-
summary
Description copied from interface:MeterRegistryOnly used byDistributionSummary.builder(String).- Specified by:
summaryin interfaceMeterRegistry- Parameters:
id- The identifier for this distribution summary.histogramConfig- Configuration that governs how distribution statistics are computed.- Returns:
- A new or existing distribution summary.
-
register
Description copied from interface:MeterRegistryRegister a custom meter type.- Specified by:
registerin interfaceMeterRegistry- Parameters:
id- Id of the meter being registered.type- Meter type, which may be used by naming conventions to normalize the name.measurements- A sequence of measurements describing how to sample the meter.- Returns:
- The registry.
-
deregisterMatching
Description copied from interface:MeterRegistryDeregister meters matching the provided filter.- Specified by:
deregisterMatchingin interfaceMeterRegistry- Parameters:
filter- a non-null meter filter
-
config
- Specified by:
configin interfaceMeterRegistry- Returns:
- A configuration object used to change the behavior of this registry.
-
more
Description copied from interface:MeterRegistryAccess to less frequently used meter types and patterns.- Specified by:
morein interfaceMeterRegistry- Returns:
- Access to additional meter types and patterns.
-
getMeters
- Specified by:
getMetersin interfaceMeterRegistry- Returns:
- The set of registered meters.
-
getLdapMeters
Returns a Map from ldap attribute names to the corresponding meters.- Returns:
- a Map from ldap attribute names to the corresponding meters
-
deregisterAll
public void deregisterAll()Deregisters all the meters registered through this registry. This includes:- the meters registered against the parent registry
- the ldap meters
-