Maven:
<dependency>
<groupId>com.palominolabs.metrics</groupId>
<artifactId>metrics-guice</artifactId>
<version>[the latest version]</version>
</dependency>
Gradle:
compile 'com.palominolabs.metrics:metrics-guice:[the latest version]'
// somewhere in your Guice module setup
install(new MetricsInstrumentationModule(yourFavoriteMetricRegistry));
The MetricsInstrumentationModule
you installed above will create and appropriately invoke a Timer for @Timed
methods, a Meter for @Metered
methods, a Counter for @Counted
methods, and a Gauge for @Gauge
methods. @ExceptionMetered
is also supported; this creates a Meter
that measures how often a method throws exceptions.
The annotations have some configuration options available for metric name, etc. You can also provide a custom MetricNamer
implementation if the default name scheme does not work for you.
If you have a method like this:
class SuperCriticalFunctionality {
public void doSomethingImportant() {
// critical business logic
}
}
and you want to use a Timer to measure duration, etc, you could always do it by hand:
public void doSomethingImportant() {
// timer is some Timer instance
Timer.Context context = timer.time();
try {
// critical business logic
} finally {
context.stop();
}
}
However, if you're instantiating that class with Guice, you could just do this:
@Timed
public void doSomethingImportant() {
// critical business logic
}
This module started from the state of metrics-guice immediately before it was removed from the main metrics repo in dropwizard/metrics@e058f76dabf3f805d1c220950a4f42c2ec605ecd.