- java.lang.Object
-
- io.helidon.servicecommon.rest.HelidonRestServiceSupport
-
- io.helidon.metrics.MetricsSupport
-
- All Implemented Interfaces:
MetricsSupport
,RestServiceSupport
,Service
public final class MetricsSupport extends HelidonRestServiceSupport implements MetricsSupport
Support for metrics for Helidon Web Server.By defaults creates the /metrics endpoint with three sub-paths: application, vendor and base.
To register with web server:
Routing.builder() .register(MetricsSupport.create())
This class supports finer grained configuration using Helidon Config:
create(Config)
. The following configuration parameters can be used:Configuration parameters key default value description helidon.metrics.context /metrics Context root under which the rest endpoints are available helidon.metrics.base.${metricName}.enabled true Can control which base metrics are exposed, set to false to disable a base metric The application metrics registry is then available as follows:
req.context().get(MetricRegistry.class).ifPresent(reg -> reg.counter("myCounter").inc());
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
MetricsSupport.Builder
A fluent API builder to build instances ofMetricsSupport
.
-
Constructor Summary
Constructors Modifier Constructor Description protected
MetricsSupport(MetricsSettings metricsSettings, RestServiceSettings restServiceSettings)
protected
MetricsSupport(MetricsSupport.Builder builder)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description static MetricsSupport.Builder
builder()
Deprecated.UseMetricsSupport.builder()
instead.void
configureVendorMetrics(String routingName, Routing.Rules rules)
Configure vendor metrics on the provided routing.static MetricsSupport
create()
Create an instance to be registered with Web Server with all defaults.static MetricsSupport
create(Config config)
Create an instance to be registered with Web Server maybe overriding default values with configured values.static MetricsSupport
create(MetricsSettings metricsSettings, RestServiceSettings restServiceSettings)
Create an instance to be registered with Web Server with the specific metrics settings.protected void
onShutdown()
protected void
postConfigureEndpoint(Routing.Rules defaultRules, Routing.Rules serviceEndpointRoutingRules)
Finish configuring metrics endpoint on the provided routing rules.void
prepareMetricsEndpoints(String endpointContext, Routing.Rules serviceEndpointRoutingRules)
Prepares the family of/metrics
endpoints.static String
toPrometheusData(String name, Metric metric, boolean withHelpType)
Formats a metric in Prometheus format.static String
toPrometheusData(MetricID metricID, Metric metric, boolean withHelpType)
Formats a metric in Prometheus format.void
update(Routing.Rules rules)
Method invoked by the web server to update routing rules.-
Methods inherited from class io.helidon.servicecommon.rest.HelidonRestServiceSupport
configureEndpoint, configureEndpoint, context, logger
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface io.helidon.metrics.serviceapi.MetricsSupport
configureEndpoint
-
-
-
-
Constructor Detail
-
MetricsSupport
protected MetricsSupport(MetricsSupport.Builder builder)
-
MetricsSupport
protected MetricsSupport(MetricsSettings metricsSettings, RestServiceSettings restServiceSettings)
-
-
Method Detail
-
create
public static MetricsSupport create()
Create an instance to be registered with Web Server with all defaults.- Returns:
- a new instance built with default values (for context, base metrics enabled)
-
create
public static MetricsSupport create(MetricsSettings metricsSettings, RestServiceSettings restServiceSettings)
Create an instance to be registered with Web Server with the specific metrics settings.- Parameters:
metricsSettings
- metrics settings to use for initializing metricsrestServiceSettings
- REST service settings for managing the endpoint- Returns:
- a new instance built with the specified metrics settings
-
create
public static MetricsSupport create(Config config)
Create an instance to be registered with Web Server maybe overriding default values with configured values.- Parameters:
config
- Config instance to use to (maybe) override configuration of this component. See class javadoc for supported configuration keys.- Returns:
- a new instance configured withe config provided
-
builder
@Deprecated(since="2.5.2", forRemoval=false) public static MetricsSupport.Builder builder()
Deprecated.UseMetricsSupport.builder()
instead.Create a new builder to construct an instance.- Returns:
- A new builder instance
-
toPrometheusData
public static String toPrometheusData(MetricID metricID, Metric metric, boolean withHelpType)
Formats a metric in Prometheus format.- Parameters:
metricID
- theMetricID
for the metric to be formattedmetric
- theMetric
containing the data to be formattedwithHelpType
- flag controlling serialization of HELP and TYPE- Returns:
- metric info in Prometheus format
-
toPrometheusData
public static String toPrometheusData(String name, Metric metric, boolean withHelpType)
Formats a metric in Prometheus format.- Parameters:
name
- the name of the metricmetric
- theMetric
containing the data to be formattedwithHelpType
- flag controlling serialization of HELP and TYPE- Returns:
- metric info in Prometheus format
-
configureVendorMetrics
public void configureVendorMetrics(String routingName, Routing.Rules rules)
Configure vendor metrics on the provided routing. This method is exclusive toupdate(io.helidon.webserver.Routing.Rules)
(e.g. you should not use both, as otherwise you would duplicate the metrics)- Specified by:
configureVendorMetrics
in interfaceMetricsSupport
- Parameters:
routingName
- name of the routing (may be null)rules
- routing builder or routing rules
-
postConfigureEndpoint
protected void postConfigureEndpoint(Routing.Rules defaultRules, Routing.Rules serviceEndpointRoutingRules)
Finish configuring metrics endpoint on the provided routing rules. This method just adds the endpoint/metrics
(or appropriate one as configured). For simple routings, just registerMetricsSupport
instance. This method is exclusive toupdate(io.helidon.webserver.Routing.Rules)
(e.g. you should not use both, as otherwise you would register the endpoint twice)- Specified by:
postConfigureEndpoint
in classHelidonRestServiceSupport
- Parameters:
defaultRules
- routing rules for default routing (also acceptsRouting.Builder
)serviceEndpointRoutingRules
- possibly different rules for the metrics endpoint routing
-
prepareMetricsEndpoints
public void prepareMetricsEndpoints(String endpointContext, Routing.Rules serviceEndpointRoutingRules)
Description copied from interface:MetricsSupport
Prepares the family of/metrics
endpoints.By default, requests to the metrics endpoints trigger a 404 response with an explanatory message that metrics are disabled. Implementations of this interface can provide more informative endpoints.
- Specified by:
prepareMetricsEndpoints
in interfaceMetricsSupport
- Parameters:
endpointContext
- context (typically /metrics)serviceEndpointRoutingRules
- routing rules to update with the disabled metrics endpoints
-
update
public void update(Routing.Rules rules)
Method invoked by the web server to update routing rules. Register this instance with webserver throughRouting.Builder.register(io.helidon.webserver.Service...)
rather than calling this method directly. If multiple sockets (and routings) should be supported, you can use theHelidonRestServiceSupport.configureEndpoint(io.helidon.webserver.Routing.Rules, io.helidon.webserver.Routing.Rules)
, andconfigureVendorMetrics(String, io.helidon.webserver.Routing.Rules)
methods.- Specified by:
update
in interfaceMetricsSupport
- Specified by:
update
in interfaceService
- Parameters:
rules
- a routing rules to update
-
onShutdown
protected void onShutdown()
- Overrides:
onShutdown
in classHelidonRestServiceSupport
-
-