Class MonitorProvider
- java.lang.Object
-
- org.opends.server.api.MonitorProvider
-
- All Implemented Interfaces:
MeterBinder
- Direct Known Subclasses:
EntryCache,HealthStatusMonitorProvider,JvmMonitorProvider,KeyManagerProvider.CertificateMonitor,LocalBackendMonitor,ReplicationServerDomain
@PublicAPI(stability=VOLATILE, mayExtend=true) public abstract class MonitorProvider extends Object implements MeterBinder
This class defines the set of methods and structures that must be implemented by a Directory Server module that can provide usage, performance, availability, or other kinds of monitor information to clients.
-
-
Field Summary
Fields Modifier and Type Field Description protected MeterRegistryHolderregistryThe possibly null meter registry holder.
-
Constructor Summary
Constructors Constructor Description MonitorProvider()
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description protected abstract voidaddMonitorObjectClassNames(Attribute objectClassAttribute)Adds to the provided attribute the objectclass names that should be included in the monitor entry created from this monitor provider.abstract voidbindTo(MeterRegistry registry).protected abstract DncomputeMonitorInstanceDn()Returns the monitor instance DN for this monitor provider.static DnconfigurationDnToMonitorDn(Dn configDn)Convenience method for mapping a component's configuration DN to its equivalent monitoring DN.voidderegisterAll()Deregisters all the meters registered by this monitor provider.EntrygetMonitorEntry(Schema schema)Generates and returns a monitor entry based on the contents of this monitor provider.DngetMonitorInstanceDn()Returns the DN of this monitor provider.StringtoString()
-
-
-
Field Detail
-
registry
protected MeterRegistryHolder registry
The possibly null meter registry holder. When not-null, subclasses must set this field in thebindTo(MeterRegistry)method.
-
-
Method Detail
-
configurationDnToMonitorDn
public static Dn configurationDnToMonitorDn(Dn configDn)
Convenience method for mapping a component's configuration DN to its equivalent monitoring DN.For example, a component with the name
cn=LDAP,cn=Connection Handlers,cn=configwill be mapped tocn=LDAP,cn=Connection Handlers,cn=monitor.- Parameters:
configDn- The component's configuration DN.- Returns:
- The equivalent monitor DN.
-
getMonitorInstanceDn
public final Dn getMonitorInstanceDn()
Returns the DN of this monitor provider. It should be unique among all monitor providers, including all instances of the same monitor provider.- Returns:
- The DN of this monitor provider.
-
computeMonitorInstanceDn
protected abstract Dn computeMonitorInstanceDn()
Returns the monitor instance DN for this monitor provider.- Returns:
- the monitor instance DN.
-
addMonitorObjectClassNames
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. This method should be implemented by child classes to make it easier to search for monitor entries of a specific type.- Parameters:
objectClassAttribute- the objectClass attribute where to add the object class names
-
bindTo
public abstract void bindTo(MeterRegistry registry)
.Implementation considerations
Implementations MUST set the
registryfield by creating a newMeterRegistryHolder, 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 theMeterRegistryHolder.hierarchicalNamePrefix(String)method. Tags common to all metrics for this monitor provider can also be set using theMeterRegistryHolder.tag(String, String)method.Attribute names are then registered by calling factory methods on the
registryfield.Sample dummy implementation
(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); }- Specified by:
bindToin interfaceMeterBinder
-
deregisterAll
public void deregisterAll()
Deregisters all the meters registered by this monitor provider.
-
getMonitorEntry
public Entry getMonitorEntry(Schema schema)
Generates and returns a monitor entry based on the contents of this monitor provider.- Parameters:
schema- the schema- Returns:
- The monitor entry generated from the information of this provided monitor provider.
-
-