Trying to integrate Coda Hale Metrics in spring bo

2019-07-12 20:26发布

I have followed the indication that adding the coda hale metrics library into the classpath would automatically autoconfigure the metrics.

That works, I get the injected metricRegistry bean.

However, how to I expose these new metrics in the /metrics endpoint?

Thanks!

3条回答
Juvenile、少年°
2楼-- · 2019-07-12 20:40

That's not the way it's supposed to work. Codahale has some metric types that do not map to Spring Boot ones, so you are supposed to use the Codahale native APIs for reporting once you start collecting metrics that way. Boot is only providing the service abstraction for Gauge and Counter at that point.

UPDATE: Spring Boot also adds Codahale metrics to the /metrics endpoint since 1.2.0 (see MetricRegistryMetricReader).

查看更多
迷人小祖宗
3楼-- · 2019-07-12 20:48

There's some integration magic accomplished by http://www.ryantenney.com/metrics-spring/ that wires codahale metrics into the actuator /health endpoint.

With this dependency included,

compile 'com.ryantenney.metrics:metrics-spring:3.0.0-RC2'

you can "enableMetrics" in your application configuration

@EnableMetrics
public class ApplicationConfiguration {
    ...

This allows you to time each request with the @timed annotation:

@Timed
@RequestMapping(method=RequestMethod.GET)
public @ResponseBody
Foo foo() {
    ...

and to have your other interactions with MetricRegistry aggregate into the actuator /health endpoint.

I've put together an example application which implements this integration:

https://github.com/benschw/consul-cluster-puppet/tree/master/demo

and written a more in depth tutorial here: http://txt.fliglio.com/2014/10/spring-boot-actuator/

查看更多
来,给爷笑一个
4楼-- · 2019-07-12 21:03

I update a metrics histogram using spring-boot like this:

        gauge.submit("histogram." + name + ".millis", durationMillis);
查看更多
登录 后发表回答