In my Spring Boot App (2.0.0.M7) application.properties I set
management.endpoint.metrics.enabled=true
However, when i hit
localhost:8080/actuator/metrics
I get 404.
Whats the solution?
In my Spring Boot App (2.0.0.M7) application.properties I set
management.endpoint.metrics.enabled=true
However, when i hit
localhost:8080/actuator/metrics
I get 404.
Whats the solution?
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
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
.
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
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)
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.
endpoints.xyz
are deprecated in favor of properties starting with management.xyz
For a full documentation, see official doc and also the migration guide
Add the following line to your application.properties
file:
management.endpoints.web.exposure.include=metrics
That's all.
What worked for me is the following (in YAML format) working with spring boot 2 release:
management:
endpoints:
web:
exposure:
include: info, health, metrics
metrics:
export:
atlas:
enabled: false
also specific documentation can be found here
"*" 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: "*"
You need to add the below props in your application.properties
file. I had the same issue until I added the below props.
management.endpoints.beans.enabled=false
management.endpoints.web.exposure.include=*
Had the same issue upgrading from Spring Boot 1.5.15 to 2.1.4
Needed to modify the original dependency for the Spring Boot actuator in my pom.xml
from:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-actuator</artifactId>
</dependency>
to:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
notice the addition of the word starter
in the artifactId
.
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
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
The following configuration works for me
server.servlet.context-path=/travel management.endpoints.web.exposure.include=*
Then you need to add context path: http://localhost:8080/travel/actuator/metrics/
management:
endpoints:
web:
base-path: "/"
exposure:
include: '*'
it should works like that. *
means expose all endpoints
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:
Adding the below property in application.properties solved the issues for me:
management.health.defaults.enabled=false
Put here the full config for micrometer. The following one is working fine for me. I use it for ELK stack
management:
metrics:
enable:
jvm: true
all: true
export:
elastic:
enables: true
step: 10s
index: micrometer-${spring.application.name}
host: http://localhost:9200
simple:
enabled: true
distribution:
percentiles-histogram:
http:
server:
requests: true
sla:
http:
server:
requests: 100ms, 400ms, 500ms, 2000ms
percentiles:
http:
server:
requests: 0.5, 0.9, 0.95, 0.99
endpoint:
metrics:
enabled: true
endpoints:
web:
exposure:
include: '*'