Spring Boot Actuator для не загрузочного приложения - измените базовый путь конечных точек
Мы разрабатываем веб-приложение на основе Spring (4.1.1), и я пытаюсь интегрировать Actuator, чтобы получить от него полезную информацию.
Наш стек: Spring 4.1.1
Это не загрузочное приложение, поэтому после прочтения множества вопросов и статей я добавил следующий код:
pom.xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-actuator</artifactId>
<version>1.1.12.RELEASE</version>
</dependency>
ActuatorConfig.java
@Configuration
@Import(EndpointAutoConfiguration.class)
public class ActuatorConfig {
@Bean
@Autowired
public ManagementServerProperties myManagementServerProperties() {
ManagementServerProperties manag = new ManagementServerProperties();
manag.setContextPath("/actuator");
return manag;
}
@Bean
@Autowired
// Define the HandlerMapping similar to RequestHandlerMapping to expose the
@DependsOn("myManagementServerProperties")
public EndpointHandlerMapping endpointHandlerMapping(Collection<? extends MvcEndpoint> endpoints) {
return new EndpointHandlerMapping(endpoints);
}
@Bean
@Autowired
// define the HealthPoint endpoint
@DependsOn("myManagementServerProperties")
public HealthMvcEndpoint healthMvcEndpoint(HealthEndpoint delegate) {
return new HealthMvcEndpoint(delegate);
}
@Bean
@Autowired
// define the Info endpoint
@DependsOn("myManagementServerProperties")
public EndpointMvcAdapter infoMvcEndPoint(InfoEndpoint delegate) {
return new EndpointMvcAdapter(delegate);
}
@Bean
@Autowired
// define the beans endpoint
@DependsOn("myManagementServerProperties")
public EndpointMvcAdapter beansEndPoint(BeansEndpoint delegate) {
return new EndpointMvcAdapter(delegate);
}
@Bean
@Autowired
// define the mappings endpoint
@DependsOn("myManagementServerProperties")
public EndpointMvcAdapter requestMappingEndPoint(RequestMappingEndpoint delegate) {
return new EndpointMvcAdapter(delegate);
}
@Bean
@Autowired
// define the HealthPoint endpoint
@DependsOn("myManagementServerProperties")
public EndpointMvcAdapter dumpMvcEndpoint(DumpEndpoint delegate) {
return new EndpointMvcAdapter(delegate);
}
@Bean
@Autowired
// define the MetricsEndpoint endpoint
@DependsOn("myManagementServerProperties")
public MetricsMvcEndpoint metricsMvcEndpoint(MetricsEndpoint delegate) {
return new MetricsMvcEndpoint(delegate);
}
@Bean
@Autowired
@DependsOn("myManagementServerProperties")
public EnvironmentMvcEndpoint environmentMvcEndpoint(EnvironmentEndpoint delegate) {
return new EnvironmentMvcEndpoint(delegate);
}
С этой конфигурацией я могу фактически назвать те конечные точки, которые я объявил:
2018-02-09 12:33:47,083 [localhost-startStop-1] INFO org.springframework.boot.actuate.endpoint.mvc.EndpointHandlerMapping - Mapped "{[/dump],methods=[GET],params=[],headers=[],consumes=[],produces=[],custom=[]}" onto public java.lang.Object org.springframework.boot.actuate.endpoint.mvc.EndpointMvcAdapter.invoke()
2018-02-09 12:33:47,084 [localhost-startStop-1] INFO org.springframework.boot.actuate.endpoint.mvc.EndpointHandlerMapping - Mapped "{[/metrics/{name:.*}],methods=[GET],params=[],headers=[],consumes=[],produces=[],custom=[]}" onto public java.lang.Object org.springframework.boot.actuate.endpoint.mvc.MetricsMvcEndpoint.value(java.lang.String)
2018-02-09 12:33:47,084 [localhost-startStop-1] INFO org.springframework.boot.actuate.endpoint.mvc.EndpointHandlerMapping - Mapped "{[/metrics],methods=[GET],params=[],headers=[],consumes=[],produces=[],custom=[]}" onto public java.lang.Object org.springframework.boot.actuate.endpoint.mvc.EndpointMvcAdapter.invoke()
2018-02-09 12:33:47,084 [localhost-startStop-1] INFO org.springframework.boot.actuate.endpoint.mvc.EndpointHandlerMapping - Mapped "{[/beans],methods=[GET],params=[],headers=[],consumes=[],produces=[],custom=[]}" onto public java.lang.Object org.springframework.boot.actuate.endpoint.mvc.EndpointMvcAdapter.invoke()
2018-02-09 12:33:47,084 [localhost-startStop-1] INFO org.springframework.boot.actuate.endpoint.mvc.EndpointHandlerMapping - Mapped "{[/health],methods=[],params=[],headers=[],consumes=[],produces=[],custom=[]}" onto public java.lang.Object org.springframework.boot.actuate.endpoint.mvc.HealthMvcEndpoint.invoke()
2018-02-09 12:33:47,084 [localhost-startStop-1] INFO org.springframework.boot.actuate.endpoint.mvc.EndpointHandlerMapping - Mapped "{[/info],methods=[GET],params=[],headers=[],consumes=[],produces=[],custom=[]}" onto public java.lang.Object org.springframework.boot.actuate.endpoint.mvc.EndpointMvcAdapter.invoke()
2018-02-09 12:33:47,084 [localhost-startStop-1] INFO org.springframework.boot.actuate.endpoint.mvc.EndpointHandlerMapping - Mapped "{[/mappings],methods=[GET],params=[],headers=[],consumes=[],produces=[],custom=[]}" onto public java.lang.Object org.springframework.boot.actuate.endpoint.mvc.EndpointMvcAdapter.invoke()
2018-02-09 12:33:47,085 [localhost-startStop-1] INFO org.springframework.boot.actuate.endpoint.mvc.EndpointHandlerMapping - Mapped "{[/env/{name:.*}],methods=[GET],params=[],headers=[],consumes=[],produces=[],custom=[]}" onto public java.lang.Object org.springframework.boot.actuate.endpoint.mvc.EnvironmentMvcEndpoint.value(java.lang.String)
2018-02-09 12:33:47,085 [localhost-startStop-1] INFO org.springframework.boot.actuate.endpoint.mvc.EndpointHandlerMapping - Mapped "{[/env],methods=[GET],params=[],headers=[],consumes=[],produces=[],custom=[]}" onto public java.lang.Object org.springframework.boot.actuate.endpoint.mvc.EndpointMvcAdapter.invoke()
Чего я хочу добиться - это изменить базовый путь всех этих конечных точек на что-то вроде \ actator, чтобы я мог вызвать:
https://mydomain:8443/myapp/api/actuator/dump
https://mydomain:8443/myapp/api/actuator/metrics
То, что я попробовал после просмотра в Интернете, учитывая, что это не загрузочное приложение, добавляет эту конфигурацию и мой класс ActuatorConfig:
@Bean
@Autowired
public ManagementServerProperties myManagementServerProperties() {
ManagementServerProperties manag = new ManagementServerProperties();
manag.setContextPath("/actuator");
return manag;
}
Я пытался использовать @DependsOn
аннотация, чтобы убедиться, что myManagementServerProperties был создан перед конечными точками привода, но ничего не изменилось.
Что я делаю неправильно?