@PublicAPI(stability=VOLATILE, mayExtend=true) public abstract class MonitorProvider extends Object implements MeterBinder
Modifier and Type | Field and Description |
---|---|
protected MeterRegistryHolder |
registry
The possibly null meter registry holder.
|
Constructor and Description |
---|
MonitorProvider() |
Modifier and Type | Method and Description |
---|---|
protected abstract void |
addMonitorObjectClassNames(Attribute objectClassAttribute)
Adds to the provided attribute the objectclass names that should be included in the monitor entry created from
this monitor provider.
|
abstract void |
bindTo(MeterRegistry registry)
.
|
protected abstract Dn |
computeMonitorInstanceDn()
Returns the monitor instance DN for this monitor provider.
|
static Dn |
configurationDnToMonitorDn(Dn configDn)
Convenience method for mapping a component's configuration DN to its equivalent monitoring DN.
|
void |
deregisterAll()
Deregisters all the meters registered by this monitor provider.
|
Entry |
getMonitorEntry()
Generates and returns a monitor entry based on the contents of this monitor provider.
|
Dn |
getMonitorInstanceDn()
Returns the DN of this monitor provider.
|
String |
toString() |
protected MeterRegistryHolder registry
bindTo(MeterRegistry)
method.public static Dn configurationDnToMonitorDn(Dn configDn)
For example, a component with the name cn=LDAP,cn=Connection Handlers,cn=config
will be mapped to cn=LDAP,cn=Connection Handlers,cn=monitor
.
configDn
- The component's configuration DN.public final Dn getMonitorInstanceDn()
protected abstract Dn computeMonitorInstanceDn()
protected abstract void addMonitorObjectClassNames(Attribute objectClassAttribute)
objectClassAttribute
- the objectClass attribute where to add the object class namespublic abstract void bindTo(MeterRegistry registry)
Implementations MUST set the registry
field by creating a new MeterRegistryHolder
, and
specifying the appropriate prefix for the dimensional model and also the hierarchical model if they are
different. This can be done using a parameter on the constructor, or the
MeterRegistryHolder.hierarchicalNamePrefix(String)
method. Tags common to all metrics for this monitor
provider can also be set using the MeterRegistryHolder.tag(String, String)
method.
Attribute names are then registered by calling factory methods on the registry
field.
(Please remove the comments when using this code as a template)
public void bindTo(final MeterRegistry parent) {
// create the MeterRegistryHolder wrapping OpenDJ's MeterRegistry
registry = new MeterRegistryHolder("dimensional-name-prefix", parent)
.tag("label", "dimension")
.hierarchicalNamePrefix("hierarchical-name-prefix.dimension");
// register the metrics against the wrapper
registry.numberGauge("gauge", numberSupplier); // use lambdas or method references here
timer = registry.timer("requests-submitted");
// set a different name for the metric in cn=monitor, dimensional model and hierarchical model
Gauge.doubleGauge(dimensionalName, supplier)
.hierarchicalName(hierarchicalName)
.tag(MeterRegistryHolder.TAG_ATTRIBUTE_NAME, "cn-monitor-name") // drop the "ds-mon-" prefix here
.register(registry);
// this gauge will only output to cn=monitor based monitoring endpoints
registry.monitoringGauge("only-visible-in-cn-monitor", supplier);
}
bindTo
in interface MeterBinder
public void deregisterAll()
public Entry getMonitorEntry()
Copyright 2010-2022 ForgeRock AS.