Spring integration for Metrics
The metrics-spring module integrates Dropwizard Metrics library with Spring, and provides XML and Java configuration.
This module does the following:
@Timed, @Metered, @ExceptionMetered, and @CountedGauge for beans which have members annotated with @Gauge and @CachedGauge@MetricHealthCheckRegistry any beans which extend the class HealthCheckCurrent version is 3.1.3, which is compatible with Metrics 3.1.2
com.ryantenney.metrics
metrics-spring
3.1.3
As of version 3, metrics-spring may be configured using XML or Java, depending on your personal preference.
Spring Context XML:
Java Annotation Config:
…The `` element is required, and has 4 optional arguments:
metric-registry - the id of the MetricRegistry bean with which the generated metrics should be registered. If omitted a new MetricRegistry bean is created.health-check-registry - the id of the HealthCheckRegistry bean with which to register any beans which extend the class HealthCheck. If omitted a new HealthCheckRegistry bean is created.proxy-target-class - if set to true, always creates CGLIB proxies instead of defaulting to JDK proxies. This may be necessary if you use class-based autowiring.expose-proxy - if set to true, the target can access the proxy which wraps it by calling AopContext.currentProxy().The `` element constructs a new MetricRegistry or retrieves a shared registry:
id - the bean name with which to register the MetricRegistry beanname - the name of the MetricRegistry, if present, this calls SharedMetricRegistries.getOrCreate(name)The `` element constructs a new HealthCheckRegistry:
id - the bean name with which to register the HealthCheckRegistry beanThe `` element creates and starts a reporter:
id - the bean namemetric-registry - the id of the MetricRegistry bean for which the reporter should retrieve metricstype - the type of the reporter. Additional types may be registered through SPI (more on this later).console: ConsoleReporterjmx: JmxReporterslf4j: Slf4jReporterganglia: GangliaReporter (requires metrics-ganglia)graphite: GraphiteReporter (requires metrics-graphite)The `` element registers with the MetricRegistry a bean which extends implements Metric or MetricSet
metric-registry - the id of the MetricRegistry bean with which the metrics are to be registeredmetrics:name attribute on the bean element - specifies the name with which the metric will be registered. Optional if the bean is a MetricSet.A @Configuration class annotated with @EnableMetrics is functionally equivalent to using the `` element.
proxyTargetClass - if set to true, always creates CGLIB proxies instead of defaulting to JDK proxies. This may be necessary if you use class-based autowiring.exposeProxy - if set to true, the target can access the proxy which wraps it by calling AopContext.currentProxy().The class may also implement the interface MetricsConfigurer, or extend the abstract class MetricsConfigurerAdapter
getMetricRegistry() - return the MetricRegistry instance with which metrics should be registered. If omitted a new MetricRegistry instance is created.getHealthCheckRegistry() - return the HealthCheckRegistry instance with which to register any beans which extend the class HealthCheck. If omitted a new HealthCheckRegistry instance is created.configureReporters(MetricRegistry) - configure reportersDue to limitations of Spring AOP only public methods can be proxied, so @Timed, @Metered, @ExceptionMetered, and @Counted have no effect on non-public methods. Additionally, calling an annotated method from within the same class will not go through the proxy.
public class Foo {
@Timed
public void bar() { /* … */ }
public void baz() {
this.bar(); // doesn't pass through the proxy
// fix: reengineer
// workaround: enable `expose-proxy` and change to:
((Foo) AopContext.currentProxy()).bar(); // hideous, but it works
}
}As @Gauge doesn’t involve a proxy, it may be used on non-public fields and methods.
Additionally, @InjectMetric may be used on non-public, non-final fields.
Please see the Shade Readme
Javadocs are hosted at http://ryantenney.github.io/metrics-spring/docs/
YourKit is kindly supporting this open source project with its full-featured Java Profiler. YourKit, LLC is the creator of innovative and intelligent tools for profiling Java and .NET applications. Take a look at YourKit's leading software products: YourKit Java Profiler and YourKit .NET Profiler.
Copyright (c) 2012-2017 Ryan Tenney
Portions Copyright (c) 2012-2013 Martello Technologies
Published under Apache Software License 2.0, see LICENSE
No open issues yet, or sync has not completed.