All Superinterfaces:
All Known Implementing Classes:
ConfigObserver, HealthObserver, InfoObserver, LogObserver, MetricsObserver, TracingObserver

public interface Observer extends NamedService
An observer adds observability feature to Helidon ObserveFeature, such as health, metrics.

An observer may register features, services, filters on routing, or do some other magic that is related to observability. Some observers may expose endpoints, some may use a push approach.

Configuration of an observer is located under root configuration node, with ObserveProvider.configKey() key below it.

  • Method Details

    • prototype

      ObserverConfigBase prototype()
      Configuration of this observer.
      configuration of the observer
    • type

      String type()
      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
      type of this observer, should match ObserveProvider.type()
    • name

      default String name()
      Description copied from interface: NamedService
      Name of this implementation, as provided in ConfiguredProvider.create(Config, String).
      Specified by:
      name in interface NamedService
      name of this service
    • register

      void register(ServerFeature.ServerFeatureContext featureContext, List<HttpRouting.Builder> observeEndpointRouting, UnaryOperator<String> endpointFunction)
      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.

      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)