Search code examples
spring-bootprometheusspring-micrometer

How to enable DiskSpaceMetrics in io.micrometer


io.micrometer contains disk space metrics (io.micrometer.core.instrument.binder.jvm.DiskSpaceMetrics) but it doesn't seems to be enabled by default. There are no metric data. How do i enable this metric that it can be used by prometheus?


Solution

  • Metrics about disk space are exposed as part of the health endpoint, which is provided by Spring Boot Actuator (dependency: org.springframework.boot:spring-boot-starter-actuator).

    The health endpoint can be enabled as follows in the application.properties file (by default, it should be enabled):

    management.endpoints.web.exposure.include=health
    

    Then, you can enable detailed disk space information as follows:

    management.endpoint.health.show-components=always
    management.endpoint.health.show-details=always
    management.health.diskspace.enabled=true
    

    In production, you might want to use when_authorized instead of always, so that the information is not publicly available.

    Finally, you can see the disk info through the HTTP endpoint /actuator/health.

    More info in the official docs.


    The same metrics for Prometheus will be added in a future Spring Boot version. There's an open PR to add auto configuration for that. In the meantime, you can configure a bean yourself taking inspiration from the PR.

    @Bean
    public DiskSpaceMetrics diskSpaceMetrics() {
        return new DiskSpaceMetrics(new File("."));
    }