MetricBuilder

class MetricBuilder(val baseName: MetricName, val registry: MetricRegistry) extends DeprecatedMetricBuilder

Builds and registers metrics.

class Object
trait Matchable
class Any

Value members

Concrete methods

def cachedGauge[A](name: String, timeout: FiniteDuration)(f: => A): Gauge[A]

Registers a new gauge metric that caches its value for a given duration.

Registers a new gauge metric that caches its value for a given duration.

Example:

import nl.grons.metrics4.scala._
import scala.concurrent.duration._
class UserRepository(db: Database) extends DefaultInstrumented {
 // Defines the gauge.
 metrics.cachedGauge("row-count", 5.minutes) {
   // Does a measurement at most once every 5 minutes.
   db.usersRowCount()
 }
}
Value Params
f

a code block that does a measurement

name

the name of the gauge

timeout

the timeout

def counter(name: String): Counter

Creates a new counter metric.

Creates a new counter metric.

Value Params
name

the name of the counter

def gauge[A](name: String)(f: => A): Gauge[A]

Registers a new gauge metric.

Registers a new gauge metric.

Example:

import nl.grons.metrics4.scala._
class SessionStore(cache: Cache) extends DefaultInstrumented {
 // Defines the gauge.
 metrics.gauge("cache-evictions") {
   // Does a measurement.
   cache.getEvictionsCount()
 }
}
Value Params
f

a code block that does a measurement

name

the name of the gauge

def histogram(name: String): Histogram

Creates a new histogram metric.

Creates a new histogram metric.

Value Params
name

the name of the histogram

def meter(name: String): Meter

Creates a new meter metric.

Creates a new meter metric.

Value Params
name

the name of the meter

def pushGauge[A](name: String, startValue: A): PushGauge[A]

Registers a new gauge metric to which you can push values.

Registers a new gauge metric to which you can push values.

Example:

import nl.grons.metrics4.scala._
class ExternalCacheUpdater extends DefaultInstrumented {
 // Defines a push gauge
 private val cachedItemsCount = metrics.pushGauge[Int]("cached.items.count", 0)

 def updateExternalCache(): Unit = {
   val items = fetchItemsFromDatabase()
   pushItemsToExternalCache(items)
   // Pushes a new measurement to the gauge.
   cachedItemsCount.push(items.size)
 }
}
Value Params
name

the name of the gauge

startValue

the first value of the gauge, typically this is 0, 0L or null.

def pushGaugeWithTimeout[A](name: String, defaultValue: A, timeout: FiniteDuration): PushGaugeWithTimeout[A]

Registers a new gauge metric to which you can push values.

Registers a new gauge metric to which you can push values.

The reported value is reset to defaultValue after the timeout.

Example in which the last pushed measurement is reported for at most 10 minutes.

import nl.grons.metrics4.scala._
import scala.concurrent.duration._
class ExternalCacheUpdater extends DefaultInstrumented {
 // Defines a push gauge
 private val cachedItemsCount = metrics.pushGaugeWithTimeout[Int]("cached.items.count", 0, 10.minutes)

 def updateExternalCache(): Unit = {
   val items = fetchItemsFromDatabase()
   pushItemsToExternalCache(items)
   // Pushes a new measurement to the gauge.
   cachedItemsCount.push(items.size)
 }
}

Note: Cleanup of old values happens only on read. In the absence of a metric reporter or other reader, the last pushed value will continue to take space on the heap. As most values are very small (e.g. an Int), this should not matter much.

Value Params
defaultValue

the first and default value of the gauge, typically this is 0,0Lornull`.

name

the name of the gauge

timeout

the timeout

def timer(name: String): Timer

Creates a new timer metric.

Creates a new timer metric.

Value Params
name

the name of the timer

def unregisterGauges(): Unit

Unregisters all gauges that were created through this builder.

Unregisters all gauges that were created through this builder.

Deprecated and Inherited methods

@deprecated("Please use `cachedGauge(name+\".\"+scope)(f)` instead. The scope parameter has been deprecated and will be removed in v5.0.0.", "4.0.3")
def cachedGauge[A](name: String, timeout: FiniteDuration, scope: String)(f: => A): Gauge[A]

Registers a new gauge metric that caches its value for a given duration.

Registers a new gauge metric that caches its value for a given duration.

Value Params
name

the name of the gauge

scope

(deprecated) the scope of the gauge or null for no scope

timeout

the timeout

Deprecated
Inherited from
DeprecatedMetricBuilder
@deprecated("Please use `counter(name+\".\"+scope)(f)` instead. The scope parameter has been deprecated and will be removed in v5.0.0.", "4.0.3")
def counter(name: String, scope: String): Counter

Creates a new counter metric.

Creates a new counter metric.

Value Params
name

the name of the counter

scope

(deprecated) the scope of the counter or null for no scope

Deprecated
Inherited from
DeprecatedMetricBuilder
@deprecated("Please use `gauge(name+\".\"+scope)(f)` instead. The scope parameter has been deprecated and will be removed in v5.0.0.", "4.0.3")
def gauge[A](name: String, scope: String)(f: => A): Gauge[A]

Registers a new gauge metric.

Registers a new gauge metric.

Value Params
name

the name of the gauge

scope

(deprecated) the scope of the gauge or null for no scope

Deprecated
Inherited from
DeprecatedMetricBuilder
@deprecated("Please use `histogram(name+\".\"+scope)(f)` instead. The scope parameter has been deprecated and will be removed in v5.0.0.", "4.0.3")
def histogram(name: String, scope: String): Histogram

Creates a new histogram metric.

Creates a new histogram metric.

Value Params
name

the name of the histogram

scope

(deprecated) the scope of the histogram or null for no scope

Deprecated
Inherited from
DeprecatedMetricBuilder
@deprecated("Please use `meter(name+\".\"+scope)(f)` instead. The scope parameter has been deprecated and will be removed in v5.0.0.", "4.0.3")
def meter(name: String, scope: String): Meter

Creates a new meter metric.

Creates a new meter metric.

Value Params
name

the name of the meter

scope

(deprecated) the scope of the meter or null for no scope

Deprecated
Inherited from
DeprecatedMetricBuilder
@deprecated("Do not use metricNameFor, it is an internal API. This method will be removed in v5.0.0.", "4.0.3")
protected
def metricNameFor(name: String, scope: String): String
Deprecated
Inherited from
DeprecatedMetricBuilder
@deprecated("Please use `timer(name+\".\"+scope)(f)` instead. The scope parameter has been deprecated and will be removed in v5.0.0.", "4.0.3")
def timer(name: String, scope: String): Timer

Creates a new timer metric.

Creates a new timer metric.

Value Params
name

the name of the timer

scope

(deprecated) the scope of the timer or null for no scope

Deprecated
Inherited from
DeprecatedMetricBuilder

Concrete fields

val registry: MetricRegistry