Capturing JVM- and application-level metrics. So you know what's going on.
This is the Scala API for Dropwizard's Metrics library.
Initially this project started out as a line for line copy of the Metrics-scala module, released for multiple scala versions. Metrics dropped the scala module in version 3.0.0 and this project continued separately with the help of @scullxbones.
- Usage
- Manual
- Manual (version 2.x)
- Features
- Available versions
- Download
- Support
- License
Metrics-scala provides an easy way to create metrics and health checks in Scala. Metrics-core requires an application wide MetricRegistry
. Create an Instrumented
trait that refers to that registry and extends the InstrumentedBuilder
trait.
object YourApplication {
/** The application wide metrics registry. */
val metricRegistry = new com.codahale.metrics.MetricRegistry()
}
trait Instrumented extends nl.grons.metrics.scala.InstrumentedBuilder {
val metricRegistry = YourApplication.metricRegistry
}
Now you can create metrics by using the metrics
metrics builder.
class Example(db: Database) extends Instrumented {
private[this] val loading = metrics.timer("loading")
def loadStuff(): Seq[Row] = loading.time {
db.fetchRows()
}
}
For more detailed information see the manual. For more information on Metrics-core 3.x, please see the documentation.
See the change log for API changes compared to the 2.x versions.
- Easy creation of all metrics types.
- Easy creation of Health Checks.
- Almost invisible syntax for using timers (see example above).
- Scala specific methods on metrics (e.g.
+=
on counters). - Derives proper metrics names for Scala objects and closures.
- Actor support.
- Future support.
- Hdrhistogram support.
This table shows the most relevant versions of metrics-scala. For the full list see all available versions.
Metrics- scala version |
Metrics- core version |
Akka version |
Scala version | Hdr version (*) |
|
2.10 | 2.11 | ||||
2.1.5 | 2.1.5 | ✓ | ✓ | ||
3.5.4 | 3.1.2 | ✓ | ✓ | 1.1.0/2.1.6 | |
3.5.4_a2.2 | 3.1.2 | 2.2.5 | ✓ | 1.1.0/2.1.6 | |
3.5.4_a2.3 | 3.1.2 | 2.3.15 / 2.4.x | ✓ | ✓ | 1.1.0/2.1.6 |
If you need another version mix please open an issue, or sent an email to the metrics mailing list.
Note: If Akka has a newer minor-version, you can use that instead of the version metrics-scala was build against. (If you use Akka 2.4, you can use the build for Akka 2.3 as Akka 2.4 is binary compatible with Akka 2.3.)
(*) Hdr is an optional dependency. The first number is the version of "org.mpierce.metrics.reservoir" % "hdrhistogram-metrics-reservoir"
, the second the version of "org.hdrhistogram" % "HdrHistogram"
. See also hdrhistogram manual page.
SBT:
libraryDependencies += "nl.grons" %% "metrics-scala" % "3.5.4_a2.3"
Maven:
<properties>
<scala.version>2.11.0</scala.version>
<scala.dep.version>2.11</scala.dep.version>
</properties>
<dependency>
<groupId>nl.grons</groupId>
<artifactId>metrics-scala_${scala.dep.version}</artifactId>
<version>3.5.4_a2.3</version>
</dependency>
To use hdrhistogram additional dependencies are needed. See the hdrhistogram manual page.
If you find a bug, please open an issue, better yet: send a pull request. For questions, please sent an email to the metrics mailing list.
Copyright (c) 2010-2012 Coda Hale, Yammer.com (before 3.0.0)
Copyright (c) 2013-2016 Erik van Oosten (3.0.0 and later)
Published under Apache Software License 2.0, see LICENSE