Jochen Christ
Jochen Christ

Reputation: 767

Spring Boot 2.0.0.M6: Show all metrics with one request

With Spring Boot 2.0.0.M6 and the new actuator metrics endpoint, when I request

GET /application/metrics

the only the names of the metrics are shown

{
  "names" : [ "data.source.active.connections", "jvm.buffer.memory.used", "jvm.memory.used", "jvm.buffer.count", "logback.events", "process.uptime", "jvm.memory.committed", "data.source.max.connections", "http.server.requests", "system.load.average.1m", "jvm.buffer.total.capacity", "jvm.memory.max", "process.start.time", "cpu", "data.source.min.connections" ]
}

Clearly I can access a specific metric using GET /application/metrics/jvm.memory.used

But is there a way to see all metrics with one request?

Upvotes: 6

Views: 1831

Answers (2)

c.sankhala
c.sankhala

Reputation: 909

Spring boot 2 has removed this functionality by default, but if this is requirement of your application then this custom implementation will serve your purpose: https://github.com/csankhala/spring-metrics-grabber

Add dependency in you application from local repository

compile("org.springframework.boot:spring-metrics-grabber:1.0.0-SNAPSHOT");
compile("org.springframework.boot:spring-boot-starter-actuator");

Add MetricxEndpoint.class to @SpringBootApplication scan path

import org.springframework.metricx.controller.MetricxEndpoint;

@SpringBootApplication(scanBasePackageClasses = { MetricxEndpoint.class, YourSpringBootApplication.class })
public class YourSpringBootApplication {
    public static void main(String[] args) {
        new SpringApplication(YourSpringBootApplication.class).run(args);
    }
}

All Metrics will be published on '/metricx' endpoint with name and value both

Pattern search is also supported e.g. '/metricx/jvm.*'

Upvotes: 0

glytching
glytching

Reputation: 47895

That's how the metrics endpoint behaves in the Spring Boot 2.0.0M* releases. There are only two read operations defined in the endpoint class:

  • ListNamesResponse listNames()
    • Resolves to GET /application/metrics
  • MetricResponse metric(@Selector String requiredMetricName, @Nullable List<String> tag)
    • Resolves to GET /application/metrics/jvm.memory.used

Metrics support has changed quite dramatically in 2.x (now backed by Micrometer) and the Spring Boot 2.x upgrade guide is lacking any details on metrics at the moment but it's a work in progress, so presumably more details will arive as Spring Boot 2.0 gets closer to a GA release.

I suspect the move from hierarchical metrics to dimensional metrics resulted in the maintainers deeming the 1.x (hierarchical) metrics display to be no longer viable/suitable.

Upvotes: 1

Related Questions