Spring Boot教程(十三)在傳統Spring應用中使用spring-boot-actuator模塊提供監控端點

第一步:引入相關依賴

因爲在傳統Spring應用中,咱們不能直接使用Starter POMs。因此,咱們須要拆解了來引入到傳統Spring應用的pom.xml中,主要有以下兩個依賴:html

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-actuator</artifactId>
    <version>1.4.3.RELEASE</version>
    <type>jar</type>
</dependency>
<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-validator</artifactId>
    <version>4.3.2.Final</version>
</dependency>

第二部:手工引入配置

因爲在傳統Spring應用中沒有自動化配置功能,因此咱們須要手工的來建立配置並啓用Spring Boot Actuator的監控端點。好比,咱們先來建立一個實現/health端點的配置,具體以下:web

@Configuration
@Import({ EndpointAutoConfiguration.class,
        HealthIndicatorAutoConfiguration.class})
public class MyAppSpringConfig {

    @Bean
    public EndpointHandlerMapping endpointHandlerMapping(
            Collection<? extends MvcEndpoint> endpoints) {
        return new EndpointHandlerMapping(endpoints);
    }

    @Bean
    public HealthMvcEndpoint healthMvcEndpoint(HealthEndpoint delegate) {
        return new HealthMvcEndpoint(delegate, false);
    }

}

其中,@Import中引入的org.springframework.boot.actuate.autoconfigure.EndpointAutoConfiguration類是Spring Boot Actuator的基礎配置類。org.springframework.boot.actuate.autoconfigure.HealthIndicatorAutoConfiguration類是/health端點的基礎配置,具體內容本文不作詳細展開,讀者可自行查看。而在該配置類中,還建立了兩個Bean,其中EndpointHandlerMappingorg.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping的子類,它用來加載全部的監控端點;而HealthMvcEndpoint是具體的/health端點實現。spring

在完成上面配置以後,咱們就能夠啓動Spring應用,此時就能夠看控制檯中看到打印出了/health端點,咱們能夠嘗試訪問該端點來獲取當前實例的健康情況。mvc

除了在傳統應用中能夠加載/health端點以外,咱們也能夠如法炮製地建立其餘端點,好比:獲取各個度量指標的/metrics端點,能夠經過以下配置實現:app

@Configuration
@Import({ EndpointAutoConfiguration.class,
        PublicMetricsAutoConfiguration.class,
        HealthIndicatorAutoConfiguration.class})
public class MyAppSpringConfig {

    @Bean
    public EndpointHandlerMapping endpointHandlerMapping(
            Collection<? extends MvcEndpoint> endpoints) {
        return new EndpointHandlerMapping(endpoints);
    }

    @Bean
    public HealthMvcEndpoint healthMvcEndpoint(HealthEndpoint delegate) {
        return new HealthMvcEndpoint(delegate, false);
    }

    @Bean
    public EndpointMvcAdapter metricsEndPoint(MetricsEndpoint delegate) {
        return new EndpointMvcAdapter(delegate);
    }
  
}

這裏,咱們主要增長了兩個內容:spring-boot

  • @Import中增長引入PublicMetricsAutoConfiguration配置類
  • 建立/metrics端點的實現Bean

源碼來源spa

相關文章
相關標籤/搜索