trait DefaultInstrumented extends InstrumentedBuilder with CheckedBuilder
A mixin trait for creating a class that publishes metrics and health checks to the "default" registries.
This follows the Dropwizard 1.0.0+ application convention of storing the metric registry to
SharedMetricRegistries under the name "default"
. This was extended with storing the health check registry to
SharedHealthCheckRegistries under the same name.
After mixing in this trait, metrics and health checks can be defined. For example:
class Example(db: Database) extends DefaultInstrumented { // Define a health check: healthCheck("alive") { workerThreadIsActive() } // Define a timer metric: private[this] val loading = metrics.timer("loading") // Use the timer metric: def loadStuff(): Seq[Row] = loading.time { db.fetchRows() } }
See InstrumentedBuilder for instruction on overriding the metric base name or using hdrhistograms. See CheckedBuilder for instructions on overriding the timeout for scala.concurrent.Future executions.
- Alphabetic
- By Inheritance
- DefaultInstrumented
- CheckedBuilder
- InstrumentedBuilder
- BaseBuilder
- AnyRef
- Any
- Hide All
- Show All
- Public
- Protected
Value Members
- final def !=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def ##: Int
- Definition Classes
- AnyRef → Any
- final def ==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def asInstanceOf[T0]: T0
- Definition Classes
- Any
- def clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.CloneNotSupportedException]) @native()
- final def eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- def equals(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef → Any
- def finalize(): Unit
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.Throwable])
- final def getClass(): Class[_ <: AnyRef]
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
- def hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
- def healthCheck[T](name: String, unhealthyMessage: String = "Health check failed")(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, orUnit
.- 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
- Definition Classes
- CheckedBuilder
- A check result of
- final def isInstanceOf[T0]: Boolean
- Definition Classes
- Any
- lazy val metricBaseName: MetricName
The base name for all metrics created from this builder.
The base name for all metrics created from this builder.
- Definition Classes
- BaseBuilder
- lazy val metricBuilder: MetricBuilder
- Attributes
- protected
- Definition Classes
- InstrumentedBuilder
- lazy val metricRegistry: MetricRegistry
The MetricRegistry where created metrics are registered.
The MetricRegistry where created metrics are registered.
- Definition Classes
- DefaultInstrumented → InstrumentedBuilder
- def metrics: MetricBuilder
The MetricBuilder that can be used for creating timers, counters, etc.
The MetricBuilder that can be used for creating timers, counters, etc.
- Definition Classes
- InstrumentedBuilder
- final def ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- final def notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
- final def notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
- lazy 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.
- Definition Classes
- DefaultInstrumented → CheckedBuilder
- final def synchronized[T0](arg0: => T0): T0
- Definition Classes
- AnyRef
- def toString(): String
- Definition Classes
- AnyRef → Any
- final def wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException]) @native()