Class MeterRegistryHolder

java.lang.Object
org.opends.server.api.MeterRegistryHolder
All Implemented Interfaces:
MeterRegistry

public final class MeterRegistryHolder extends Object implements MeterRegistry
Decorator for a meter registry. It can:
  • 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.).

  • Field Details

    • TAG_ATTRIBUTE_NAME

      public static final String TAG_ATTRIBUTE_NAME
      The tag to use to map the ldap name.
      See Also:
  • Constructor Details

    • MeterRegistryHolder

      public MeterRegistryHolder(String dimensionalNamePrefix, MeterRegistry registry)
      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 using hierarchicalNamePrefix(String).
      registry - the decorated registry
  • Method Details

    • hierarchicalNamePrefix

      public MeterRegistryHolder hierarchicalNamePrefix(String hierarchicalNamePrefix)
      Sets the prefix for the hierarchical metric names.
      Parameters:
      hierarchicalNamePrefix - the hierarchical name prefix to use
      Returns:
      this object
    • tag

      public MeterRegistryHolder tag(String key, String value)
      Adds a tag that will be automatically added to all meters registered against this meter registry.
      Parameters:
      key - the tag's key
      value - the tag's value
      Returns:
      this meter registry
    • counter

      public Counter counter(Meter.Id id)
      Description copied from interface: MeterRegistry
      Specified by:
      counter in interface MeterRegistry
      Parameters:
      id - The identifier for this counter.
      Returns:
      A new or existing counter.
    • getAttributeName

      public static String getAttributeName(String meterName)
      Returns the LDAP attribute name corresponding to this meter name. This method prefixes the provided meterName with ds-mon-.
      Parameters:
      meterName - the meter name to prefix
      Returns:
      the LDAP attribute name corresponding to this meter name.
    • booleanGauge

      public void booleanGauge(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 the Boolean to a double.
      • true is converted to 1
      • false is converted to 0
      Parameters:
      name - the metric name
      valueFunction - a function which returns any object which will be converted to String
    • booleanGauge

      public void booleanGauge(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 the Boolean to a double.
      • true is converted to 1
      • false is converted to 0
      Parameters:
      name - the metric name
      ldapAttributeName - the LDAP attribute name
      valueFunction - a function which returns any object which will be converted to String
    • dateTimeGauge

      public void dateTimeGauge(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 the GeneralizedTime to a double by using the GeneralizedTime.getTimeInMillis() function.
      Parameters:
      name - the metric name
      valueFunction - a function which returns a GeneralizedTime object 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 the GeneralizedTime to a double by using the GeneralizedTime.getTimeInMillis() function.
      Parameters:
      name - the metric name
      ldapAttributeName - the LDAP attribute name
      valueFunction - a function which returns a GeneralizedTime object that will be converted to String
    • durationGauge

      public void durationGauge(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 the Duration using the Duration.toMillis() method.
      Parameters:
      name - the metric name
      valueFunction - a function which returns a Duration object that will be converted to String
    • doubleGauge

      public void doubleGauge(String name, DoubleSupplier valueFunction)
      Convenience method that creates a gauge returning a double that will be added to the parent meter registry.
      Parameters:
      name - the metric name
      valueFunction - a function which returns any object which will be converted to String
    • numberGauge

      public <V extends Number> void numberGauge(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 the Number to a double by using the Number.doubleValue() function.
      Type Parameters:
      V - type of the value returned by the valueFunction provided
      Parameters:
      name - the metric name
      valueFunction - a function which returns any object which will be converted to String
    • stateSet

      public <T extends Enum<T>> void stateSet(String name, Supplier<T> stateSupplier)
      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 value
      stateSupplier - function returning the actual state
    • monitoringGauge

      public <V> void monitoringGauge(String name, Supplier<V> valueFunction)
      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=monitor and derived monitoring systems (rather than the following endpoints: prometheus, graphite, crest metrics, etc.).

      Type Parameters:
      V - type of the value returned by the valueFunction provided
      Parameters:
      name - the metric name
      valueFunction - a function which returns any object which will be converted to String
    • gauge

      public <T> Gauge gauge(Meter.Id id, T obj, ToDoubleFunction<T> valueFunction)
      Description copied from interface: MeterRegistry
      Specified by:
      gauge in interface MeterRegistry
      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

      public Gauge gauge(String name, Number number)
      Register a gauge that reports the value of the Number.
      Parameters:
      name - Name of the gauge being registered.
      number - Thread-safe implementation of Number used to access the value.
      Returns:
      The number that was passed in so the registration can be done as part of an assignment statement.
    • counter

      public Counter counter(String name)
      Tracks a monotonically increasing value.
      Parameters:
      name - The base metric name
      Returns:
      A new or existing counter.
    • timer

      public Timer timer(String name)
      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: MeterRegistry
      Only used by Timer.builder(String).
      Specified by:
      timer in interface MeterRegistry
      Parameters:
      id - The identifier for this timer.
      histogramConfig - Configuration that governs how distribution statistics are computed.
      Returns:
      A new or existing timer.
    • summary

      public DistributionSummary summary(String name)
      Measures the distribution of samples.
      Parameters:
      name - The base metric name
      Returns:
      A new or existing distribution summary.
    • summary

      public DistributionSummary summary(Meter.Id id, HistogramConfig histogramConfig)
      Description copied from interface: MeterRegistry
      Specified by:
      summary in interface MeterRegistry
      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

      public Meter register(Meter.Id id, Meter.Type type, Iterable<Measurement> measurements)
      Description copied from interface: MeterRegistry
      Register a custom meter type.
      Specified by:
      register in interface MeterRegistry
      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

      public void deregisterMatching(MeterFilter filter)
      Description copied from interface: MeterRegistry
      Deregister meters matching the provided filter.
      Specified by:
      deregisterMatching in interface MeterRegistry
      Parameters:
      filter - a non-null meter filter
    • config

      public MeterRegistry.Config config()
      Specified by:
      config in interface MeterRegistry
      Returns:
      A configuration object used to change the behavior of this registry.
    • more

      public MeterRegistry.More more()
      Description copied from interface: MeterRegistry
      Access to less frequently used meter types and patterns.
      Specified by:
      more in interface MeterRegistry
      Returns:
      Access to additional meter types and patterns.
    • getMeters

      public List<Meter> getMeters()
      Specified by:
      getMeters in interface MeterRegistry
      Returns:
      The set of registered meters.
    • getLdapMeters

      public Map<String,Meter> 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