HealthChecksSupport
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
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
- Inherited from:
- CheckedBuilder