java.lang.Object
io.helidon.webserver.observe.metrics.MetricsObserver
All Implemented Interfaces:
RuntimeType.Api<MetricsObserverConfig>, NamedService, Observer

public class MetricsObserver extends Object implements Observer, RuntimeType.Api<MetricsObserverConfig>
Support for metrics for Helidon WebServer.

By default, creates the /metrics endpoint with three sub-paths: application, vendor and base.

To register with web server, discovered from classpath:


 Routing.builder()
        .register(ObserveFeature.create())
 
See ObserveFeature.just(io.helidon.webserver.observe.spi.Observer...) to customize observer setup.

This class supports finer grained configuration using Helidon Config: create(io.helidon.common.config.Config).

The application metrics registry is then available as follows:


  req.context().get(MetricRegistry.class).ifPresent(reg -> reg.counter("myCounter").inc());
 
  • Method Details

    • builder

      public static MetricsObserverConfig.Builder builder()
      Create a new builder to configure Metrics observer.
      Returns:
      a new builder
    • create

      public static MetricsObserver create(MetricsObserverConfig config)
      Create a new Metrics observer using the provided configuration.
      Parameters:
      config - configuration
      Returns:
      a new observer
    • create

      public static MetricsObserver create(Consumer<MetricsObserverConfig.Builder> consumer)
      Create a new Metrics observer customizing its configuration.
      Parameters:
      consumer - configuration consumer
      Returns:
      a new observer
    • create

      public static MetricsObserver create()
      Create a new Metrics observer with default configuration.
      Returns:
      a new observer
    • create

      public static MetricsObserver create(Config config)
      Create a new Metrics observer from configuration.
      Parameters:
      config - configuration of this observer
      Returns:
      a new observer
    • prototype

      public MetricsObserverConfig prototype()
      Description copied from interface: Observer
      Configuration of this observer.
      Specified by:
      prototype in interface Observer
      Specified by:
      prototype in interface RuntimeType.Api<MetricsObserverConfig>
      Returns:
      configuration of the observer
    • type

      public String type()
      Description copied from interface: Observer
      Type of this observer, to make sure we do not configure an observer both from ServiceLoader and using programmatic approach. If it is desired to have more than one observer of the same type, always use programmatic approach
      Specified by:
      type in interface NamedService
      Specified by:
      type in interface Observer
      Returns:
      type of this observer, should match ObserveProvider.type()
    • register

      public void register(ServerFeature.ServerFeatureContext featureContext, List<HttpRouting.Builder> observeEndpointRouting, UnaryOperator<String> endpointFunction)
      Description copied from interface: Observer
      Register the observer features, services, and/or filters. This is used by the observe feature. Do NOT use this method directly, kindly start with ObserveFeature and register it with the server builder.

      Implementations of observers should register all they need through an HttpFeature, to make sure the weight of the ObserveFeature is honored when routing is set up. If you do not use an HttpFeature, the registration will always happen later than the default (business) routing feature.

      Specified by:
      register in interface Observer
      Parameters:
      featureContext - access to all routing builders, for cases where this observer needs to register additional components to other sockets
      observeEndpointRouting - routing builders that expose observability endpoints, and this feature must use these to register any endpoints exposed for observability
      endpointFunction - function to obtain the final endpoint for observers that expose observe endpoints (such as /observe/health would be provider for health by default)
    • configureVendorMetrics

      public void configureVendorMetrics(HttpRouting.Builder rules)
      Configure Helidon specific metrics.
      Parameters:
      rules - rules to use