HealthChecksSupport

org.scalatra.metrics.HealthChecksSupport
trait HealthChecksSupport extends CheckedBuilder, MetricsBootstrap

Attributes

Graph
Supertypes
trait CheckedBuilder
trait BaseBuilder
class Object
trait Matchable
class Any
Show all

Members list

Value members

Concrete methods

def checkHealth[T](name: String)(checker: => T)(implicit toMagnet: ByName[T] => HealthCheckMagnet): HealthCheck
def checkHealth[T](name: String, unhealthyMessage: String)(checker: => T)(implicit toMagnet: ByName[T] => HealthCheckMagnet): HealthCheck
def healthCheckName(name: String): MetricName
def runHealthCheck(name: String): Result
def runHealthChecks(): SortedMap[String, Result]

Inherited methods

def healthCheck[T](name: String, unhealthyMessage: String)(checker: => T)(implicit toMagnet: ByName[T] => HealthCheckMagnet): HealthCheck

Converts a code block to a com.codahale.metrics.health.HealthCheck and registers it.

Converts a code block to a com.codahale.metrics.health.HealthCheck and registers it.

Use it as follows:

object Application {
 // The application wide health check registry.
 val healthCheckRegistry = new com.codahale.metrics.health.HealthCheckRegistry()
}
trait Checked extends CheckedBuilder {
 val registry = Application.healthCheckRegistry
}

class ExampleWorker extends Checked {
 healthCheck("alive") { workerThreadIsActive() }
}

The code block must have a result of type Boolean, Try, Either, Future, com.codahale.metrics.health.HealthCheck.Result, or Unit.

  • A check result of true indicates healthy, false indicates unhealthy.
  • A check result of type Success indicates healthy, Failure indicates unhealthy. The embedded value (after applying .toString) or throwable is used as (un)healthy message.
  • A check result of type Future will have 3 seconds to execute (by default). The result of the execution will be treated as Success or Failure.
  • A check result of type Right indicates healthy, Left[Any] or Left[Throwable] indicates unhealthy. The embedded value (after applying .toString) or throwable is used as (un)healthy message.
  • If the check result is of type com.codahale.metrics.health.HealthCheck.Result, the result is passed unchanged.
  • A check result of type Unit indicates healthy.
  • If a checker throws an exception, the result is considered unhealthy with the throwable as unhealthy message.

It is also possible to override the health check base name. For example:

class ExampleWorker extends Checked {
 override lazy val metricBaseName = MetricName("Overridden.Base.Name")
 healthCheck("alive") { workerThreadIsActive() }
}

To change the timeout for Future execution, set an implicit duration:

class ExampleWorker extends Checked {
 implicit private val timeout = 10.seconds
 healthCheck("alive")(Future { workerThreadIsActive() })
}

NOTE: only one health check can be registered under a name (including the base name, which is derived from the
class name by default). A common cause for multiple registrations is when a class that defines a health check is
instantiated multiple times. Since metrics-core 4.1.0 subsequent registrations lead to an exception. Earlier
versions silently ignore subsequent registrations.

@param name the name of the health check
@param unhealthyMessage the unhealthy message for checkers that return `false`, defaults to `"Health check failed"`
@param checker the code block that does the health check

Attributes

Inherited from:
CheckedBuilder

Concrete fields

val registry: HealthCheckRegistry

The com.codahale.metrics.health.HealthCheckRegistry where created metrics are registered.

The com.codahale.metrics.health.HealthCheckRegistry where created metrics are registered.

Attributes

Inherited fields

lazy val metricBaseName: MetricName

The base name for all metrics created from this builder.

The base name for all metrics created from this builder.

Attributes

Inherited from:
BaseBuilder

Implicits

Inherited implicits

implicit def healthCheckRegistry: HealthCheckRegistry

Attributes

Inherited from:
MetricsBootstrap
implicit def metricRegistry: MetricRegistry

Attributes

Inherited from:
MetricsBootstrap