Capturing JVM- and application-level metrics. So you know what's going on.
This is the Scala API for Coda Hale'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 (Scala 2.10 only).
- Future support (Scala 2.10 only).
Please consult the table below to see which versions of metrics-scala are available for which scala versions.
Note that only the versions 2.1.4 and 2.1.5 support OSGI.
Metrics- scala version |
Metrics- core version |
Scala version | |||||
2.9.1 | 2.9.1-1 | 2.9.2 | 2.9.3 | 2.10.x | |||
2.1.2 | same | ✓ | ✓ | ✓ | |||
2.1.3 | same | ✓ | ✓ | ✓ | |||
2.1.4 | same | ✓ | ✓ | ✓ | |||
2.1.5 | same | ✓ | ✓ | ✓ | ✓ | ||
2.2.0 | same | ✓ | ✓ | ✓ | ✓ | ✓ | |
3.0.0 | same | ✓ | ✓ | ✓ | ✓ | ✓ | |
3.0.1 | same | ✓ | ✓ | ✓ | ✓ | ✓ | |
3.0.2 | 3.0.1 | ✓ | ✓ | ✓ | ✓ | ✓ | |
3.0.3 (Akka 2.2.0) | 3.0.1 | ✓ | ✓ | ✓ | ✓ | ✓ | |
3.0.3_a2.1.0 (Akka 2.1.0) | 3.0.1 | ✓ |
If you need another version mix please open an issue, or sent an email to the metrics mailing list.
SBT:
libraryDependencies += "nl.grons" %% "metrics-scala" % "3.0.3"
Maven:
<properties>
<scala.version>2.10.0</scala.version>
<scala.dep.version>2.10</scala.dep.version>
</properties>
<dependency>
<groupId>nl.grons</groupId>
<artifactId>metrics-scala_${scala.dep.version}</artifactId>
<version>3.0.3</version>
</dependency>
Note: For scala versions before 2.10, you need to use the full scala version in the artifact name; e.g. metrics-scala_2.9.1-1
.
Note: If you depend on JMX: 2.2.0 has a small bug that makes it inconvenient to use JMX.
If you found 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 Erik van Oosten (3.0.0 and later)
Published under Apache Software License 2.0, see LICENSE