Class HealthPeriodicLogger

All Implemented Interfaces:
Closeable, AutoCloseable, ClusterStateListener, LifecycleComponent, SchedulerEngine.Listener, Releasable

public class HealthPeriodicLogger extends AbstractLifecycleComponent implements ClusterStateListener, SchedulerEngine.Listener
This class periodically logs the results of the Health API to the standard Elasticsearch server log file. It a lifecycle aware component because it health depends on other lifecycle aware components. This means: - We do not schedule any jobs until the lifecycle state is STARTED - When the lifecycle state becomes STOPPED, do not schedule any more runs, but we do let the current one finish - When the lifecycle state becomes CLOSED, we will interrupt the current run as well.
  • Field Details

  • Method Details

    • create

      public static HealthPeriodicLogger create(Settings settings, ClusterService clusterService, Client client, HealthService healthService, TelemetryProvider telemetryProvider)
      Creates a new HealthPeriodicLogger. This creates a scheduled job using the SchedulerEngine framework and runs it on the current health node.
      Parameters:
      settings - the cluster settings, used to get the interval setting.
      clusterService - the cluster service, used to know when the health node changes.
      client - the client used to call the Health Service.
      healthService - the Health Service, where the actual Health API logic lives.
      telemetryProvider - used to get the meter registry for metrics
    • clusterChanged

      public void clusterChanged(ClusterChangedEvent event)
      Description copied from interface: ClusterStateListener
      Called when cluster state changes.

      Cluster states are applied one-by-one which means they can be a performance bottleneck. Implementations of this method should therefore be fast, so please consider forking work into the background rather than doing everything inline.

      Specified by:
      clusterChanged in interface ClusterStateListener
    • doStart

      protected void doStart()
      Description copied from class: AbstractLifecycleComponent
      Start this component. Typically that means doing things like launching background processes and registering listeners on other components. Other components have been initialized by this point, but may not yet be started.

      If this method throws an exception then the startup process will fail, but this component will not be stopped before it is closed.

      This method is called while synchronized on AbstractLifecycleComponent.lifecycle. It is only called once in the lifetime of a component, although it may not be called at all if the startup process encountered some kind of fatal error, such as the failure of some other component to initialize or start.

      Specified by:
      doStart in class AbstractLifecycleComponent
    • doStop

      protected void doStop()
      Stopping means that the periodic health logger will not schedule any more runs. If the logger is currently running it will let this run finish, but it will cancel any future scheduling, and it will deregister the cluster state listener.
      Specified by:
      doStop in class AbstractLifecycleComponent
    • doClose

      protected void doClose() throws IOException
      Description copied from class: AbstractLifecycleComponent
      Close this component. Typically that means doing the reverse of whatever happened during initialization, such as releasing resources acquired there.

      This method is called while synchronized on AbstractLifecycleComponent.lifecycle. It is called once in the lifetime of a component. If the component was started then it will be stopped before it is closed, and once it is closed it will not be started or stopped.

      Specified by:
      doClose in class AbstractLifecycleComponent
      Throws:
      IOException
    • triggered

      public void triggered(SchedulerEngine.Event event)
      Specified by:
      triggered in interface SchedulerEngine.Listener