Class MeterRegistryFactory
- java.lang.Object
-
- io.helidon.integrations.micrometer.MeterRegistryFactory
-
public final class MeterRegistryFactory extends Object
Provides access to theMeterRegistry
Helidon SE uses to collect meters and report their metrics.In reality, we use a
CompositeMeterRegistry
to which we, by default, add aPrometheusMeterRegistry
and to which the developer can add, via either configuration or builder, otherMeterRegistry
instances.Using the factory
Use this factory in either of two ways:
-
Access the singleton instance via
getInstance()
orgetInstance(Builder)
. The factory remembers the factory instance, lazily instantiated by the most recent invocation of either method. -
A custom instance via
create()
orcreate(Config)
. Instances of the factory created this way are independent of the singleton created bygetInstance()
orgetInstance(Builder)
.
Adding developer-requested registries
In Micrometer, different registries report their contents in different formats. Further, there is no common abstract method defined on
MeterRegistry
which all implementations override; eachMeterRegistry
has its own particular way of furnishing metrics output. By default, we use aPrometheusMeterRegistry
to support Prometheus/OpenMetrics format. Developers can enroll other registries to support other formats. We need to know which registry to use in response to receiving an HTTP request for Micrometer metrics output.To allow us to do this, when our code or developer's enrolls a registry, it also passes a function that accepts a
ServerRequest
and returns anOptional<Handler>
. The function is expected to inspect the request, and if it wants to process that request (which means, if that registry should be used to respond to that request), it returns anOptional.of
aHandler
. The handler uses the registry-specific mechanism for retrieving formatted meter and metrics information and sets and returns the HTTP response. If the function decides that its corresponding meter registry is not suitable for that particular request, it returns anOptional.empty()
.When a Micrometer request arrives, the Helidon code invokes the functions associated with all enrolled registries, in the order of enrollment. The first function that returns a non-empty
Optional
wins and must populate and return theServerResponse
. -
Access the singleton instance via
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
MeterRegistryFactory.Builder
Builder for constructingMeterRegistryFactory
instances.static class
MeterRegistryFactory.BuiltInRegistryType
Available built-in registry types.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static MeterRegistryFactory.Builder
builder()
Returns a newBuilder
for constructing aMeterRegistryFactory
.static MeterRegistryFactory
create()
Creates a new factory using default settings (no config).static MeterRegistryFactory
create(Config config)
Creates a new factory using the specified config.static MeterRegistryFactory
getInstance()
Returns the singleton instance of the factory.static MeterRegistryFactory
getInstance(MeterRegistryFactory.Builder builder)
Creates and saves as the singleton a new factory.io.micrometer.core.instrument.MeterRegistry
meterRegistry()
Returns theMeterRegistry
associated with this factory instance.
-
-
-
Method Detail
-
create
public static MeterRegistryFactory create()
Creates a new factory using default settings (no config).- Returns:
- initialized MeterRegistryFactory
-
create
public static MeterRegistryFactory create(Config config)
Creates a new factory using the specified config.- Parameters:
config
- the config to use in initializing the factory- Returns:
- initialized MeterRegistryFactory
-
getInstance
public static MeterRegistryFactory getInstance()
Returns the singleton instance of the factory.- Returns:
- factory singleton
-
getInstance
public static MeterRegistryFactory getInstance(MeterRegistryFactory.Builder builder)
Creates and saves as the singleton a new factory.- Parameters:
builder
- the Builder to use in constructing the new singleton instance- Returns:
- MeterRegistryFactory using the Builder
-
builder
public static MeterRegistryFactory.Builder builder()
Returns a newBuilder
for constructing aMeterRegistryFactory
.- Returns:
- initialized builder
-
meterRegistry
public io.micrometer.core.instrument.MeterRegistry meterRegistry()
Returns theMeterRegistry
associated with this factory instance.- Returns:
- the meter registry
-
-