#java #spring #spring-boot #spring-boot-actuator
#java #spring #spring-boot #привод spring-boot-
Вопрос:
Я добавил зависимости в pom.xml
совершенно новое приложение Spring Boot, как описано в документации Spring
<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>
и добавил следующие свойства к application.yml
, чтобы просто предоставить /health
и /info
конечные точки
management:
endpoints:
web:
exposure:
include:
- info
- health
jmx:
exposure:
exclude: "*"
endpoint:
info:
enabled: true
health:
enabled: true
но не может достичь указанных конечных точек при запуске приложения через localhost:8080/health
и localhost:8080/info
— есть ответ HTTP 404.
Я что-то упускаю? Заранее благодарим вас за помощь!
Комментарии:
1. если ваше приложение выполняется на
localhost:8080/
(без контекстного пути), оно должно работать / трудно сказать, чего не хватает… конфигурация соответствует значениям по умолчанию / может быть опущена, за исключением тойjmx
части, которая, похоже, также имеет плохой отступ (по крайней мере, в сообщении).2. Я думаю, что URL-адрес должен быть localhost:8080/your_context_path/actuator/health
3. @RebaiAhmed вы совершенно правы! наконец, я нашел это в spring.io/guides/gs/actuator-service . Если вы хотите — укажите это в отдельном ответе, чтобы я мог пометить как решение, или я отвечу сам в противном случае. Спасибо!
4. Вы можете сделать это своим ответом 🙂 @DmitryAdonin
Ответ №1:
Существуют две возможные конфигурации, которые могут изменить конечные точки привода / работоспособности и / info:
Во-первых, сервер spring boot mvc, предположим, что у вас это так:
server:
port: 8080
servlet:
context-path: /test
Во-вторых, сервер управления приводом:
management:
server:
#port: #don't change it, then the port for actuator will be the same as server.port above
endpoints:
web:
base-path: /actuator #the default value for sring boot 2.x is /actuator, even you don't specify it, don't forget to include this in the URL
exposure:
include: "*"
endpoint:
health:
show-details: always
Таким образом, правильные URL-адреса для доступа к Actuator должны быть :
http://localhost:8080/test/actuator/info
http://localhost:8080/test/actuator/health
В целом шаблон URL для посещения конечных точек привода должен быть:
http://localhost:{server.port}/{server.servlet.context-path}/{management.endpoints.web.base-path}/**
Вы можете сравнить свои конфигурации с этим примером, чтобы увидеть, что вызывает ошибку 404.
Комментарии:
1. @Qui Zhou вы совершенно правы! наконец, я нашел это в spring.io/guides/gs/actuator-service немного странно, что это не было упомянуто в docs.spring.io/spring-boot/docs/current/reference/html /…
2. Рад, что вы решили проблему! На самом деле я узнал об этом, прочитав документ Spring Boot Actuator: готовые к производству функции (на самом деле он использовал префикс /actuator), а затем выполнил некоторые действия, чтобы проверить это.
3. Еще один момент, который следует отметить, заключается в том, что путь по умолчанию к конечной точке привода будет отличаться в зависимости от того, используется ли spring boot 1.X или 2.X. Например, в 1.X конечной точкой работоспособности привода по умолчанию является просто
[context-root]/health
, в то время как в 2.X путь является[context-root]/actuator/health
.4. @sandboxbohemian Хорошая мысль! Это потому, что в spring boot 1.x значение по умолчанию для
management.endpoints.web.base-path
равно/