Spring Boot 2 - Actuator Metrics Endpoint not working

前端 未结 12 1359
迷失自我
迷失自我 2020-12-08 00:35

In my Spring Boot App (2.0.0.M7) application.properties I set

management.endpoint.metrics.enabled=true

However, when i hit

         


        
相关标签:
12条回答
  • 2020-12-08 01:05

    I would like to enhance the OP's answer with more information as I struggled a bit before finally stumbling upon this solution and there seem to be lots of confusion about changes to actuator behavior with Spring Boot 2

    What hasn't changed

    You need to include a dependency to spring-boot-starter-actuator

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
    </dependencies>
    

    If you want to access actuator endpoints via HTTP, you also need to add a dependency to spring-boot-starter-web

    So your pom dependencies will look like below

        <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
    </dependencies>
    

    Changes introduced in Spring Boot 2

    1. Endpoints like /health, /metrics etc. are no longer available at the default root context. They are available from now on at http://{host}:{port}/actuator. Also, it doesn't matter whether your application's all other endpoints begin with some other context such as /hello -- actuator is available at /actuator and not at /hello/actuator.

    2. Response from /actuator endpoint is by default HATEOAS enabled. Prior to Spring Boot 2, this was the case only if HATEOAS is on the classpath and explicitly enabled in application.yml

    3. To make an actuator endpoint available via HTTP, it needs to be both enabled and exposed.

      By default:

      • only the /health and /info endpoints are exposed, regardless of Spring Security being present and configured in your application.

      • all endpoints but /shutdown are enabled (though only /health and /info are exposed)

    4. If you want to expose all of the endpoints (not always a good idea), you may do so by adding management.endpoints.web.exposure.include=* to application.properties. Don't forget to quote the wildcard if you're using yml-configurations.

    5. Old properties starting with endpoints.xyz are deprecated in favor of properties starting with management.xyz

    For a full documentation, see official doc and also the migration guide

    0 讨论(0)
  • 2020-12-08 01:06

    According micrometer docs .Spring Boot 2.0.x supports Micrometer out of the box via Spring Boot Actuator.
    The endpoint metric is disabled by default, in line with Spring Boot 2’s litmus test that any endpoint that potentially exposes sensitive data about an application should be disabled by default. It can be enabled by setting:

    management.endpoints.web.exposure.include: metrics

    Navigating to /actuator/metrics displays a list of available meter names.

    To access them, use something like this: http://localhost:8080/actuator/metrics/jvm.memory.used

    0 讨论(0)
  • 2020-12-08 01:12

    As @senseiwu mentioned, Unlike the previous versions, Actuator in spring boot 2 comes with most endpoints disabled. Would we want to enable all of them, we could set

    management.endpoints.web.exposure.include=* 
    

    Alternatively, we could list endpoints that should be enabled.

    You can easily use hal-browser which is a useful UI, mapped to "/" path by adding following dependencies:

    <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
    <dependency>
                <groupId>org.springframework.data</groupId>
                <artifactId>spring-data-rest-hal-browser</artifactId>
    </dependency>
    

    In the hal-browser you need to type /actuator to see all endpoints. It has been tested in Spring Boot 2.3.0.M2 and works perfectly. You can learn more in the following links:

    Spring REST and HAL Browser

    Spring Boot Actuator

    0 讨论(0)
  • 2020-12-08 01:15

    "*" has a special meaning in YAML, so be sure to add quotes if you want to include (or exclude) all endpoints, as shown in the following example:

    management:
      endpoints:
        web:
          exposure:
            include: "*"
    
    0 讨论(0)
  • 2020-12-08 01:16

    Add the following line to your application.properties file:

    management.endpoints.web.exposure.include=metrics

    That's all.

    0 讨论(0)
  • 2020-12-08 01:16

    Okay i found the solution. I have added another line in application.properties

    management.endpoints.web.expose=*
    

    However, securing the actuator endoints is important

    Read here: https://docs.spring.io/spring-boot/docs/current/reference/html/production-ready-monitoring.html

    0 讨论(0)
提交回复
热议问题