在之前發(fā)布的《Spring Boot Actuator監(jiān)控端點(diǎn)小結(jié)》一文中杰刽,我們介紹了Spring Boot Actuator模塊為應(yīng)用提供的強(qiáng)大監(jiān)控能力陷揪。在Spring Boot應(yīng)用中,我們只需要簡(jiǎn)單的引入spring-boot-starter-actuator
依賴就能為應(yīng)用添加各種有用的監(jiān)控端點(diǎn)猬腰。其中鸟废,/health
端點(diǎn)能夠全面檢查應(yīng)用的健康狀態(tài),該端點(diǎn)也被Spring Cloud中的服務(wù)治理(Eureka漆诽、Consul)用來檢查應(yīng)用的健康狀態(tài)侮攀。所以锣枝,在使用Spring Cloud構(gòu)建微服務(wù)架構(gòu)的時(shí)候,如果還存在一些遺留的傳統(tǒng)Spring應(yīng)用時(shí)兰英,我們就需要為這些應(yīng)用也加入/health
端點(diǎn)撇叁。那么在傳統(tǒng)的Spring應(yīng)用中我們是否也能引入該模塊來提供這些有用的監(jiān)控端點(diǎn)呢?下面我們就來介紹整合的詳細(xì)步驟:
第一步:引入相關(guān)依賴
由于在傳統(tǒng)Spring應(yīng)用中畦贸,我們不能直接使用Starter POMs陨闹。所以,我們需要拆解了來引入到傳統(tǒng)Spring應(yīng)用的pom.xml
中薄坏,主要有如下兩個(gè)依賴:
<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>
第二部:手工引入配置
由于在傳統(tǒng)Spring應(yīng)用中沒有自動(dòng)化配置功能趋厉,所以我們需要手工的來創(chuàng)建配置并啟用Spring Boot Actuator的監(jiān)控端點(diǎn)。比如胶坠,我們先來創(chuàng)建一個(gè)實(shí)現(xiàn)/health
端點(diǎn)的配置君账,具體如下:
@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的基礎(chǔ)配置類沈善。org.springframework.boot.actuate.autoconfigure.HealthIndicatorAutoConfiguration
類是/health
端點(diǎn)的基礎(chǔ)配置乡数,具體內(nèi)容本文不做詳細(xì)展開,讀者可自行查看闻牡。而在該配置類中净赴,還創(chuàng)建了兩個(gè)Bean,其中EndpointHandlerMapping
是org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping
的子類罩润,它用來加載所有的監(jiān)控端點(diǎn)玖翅;而HealthMvcEndpoint
是具體的/health
端點(diǎn)實(shí)現(xiàn)。
在完成上面配置之后割以,我們就可以啟動(dòng)Spring應(yīng)用金度,此時(shí)就可以看控制臺(tái)中看到打印出了/health
端點(diǎn),我們可以嘗試訪問該端點(diǎn)來獲取當(dāng)前實(shí)例的健康狀況拳球。
除了在傳統(tǒng)應(yīng)用中可以加載/health
端點(diǎn)之外审姓,我們也可以如法炮制地創(chuàng)建其他端點(diǎn),比如:獲取各個(gè)度量指標(biāo)的/metrics
端點(diǎn)祝峻,可以通過如下配置實(shí)現(xiàn):
@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);
}
}
這里魔吐,我們主要增加了兩個(gè)內(nèi)容:
-
@Import
中增加引入PublicMetricsAutoConfiguration
配置類 - 創(chuàng)建
/metrics
端點(diǎn)的實(shí)現(xiàn)Bean
到這里,本文的內(nèi)容就介紹完了莱找,更多關(guān)于傳統(tǒng)Spring應(yīng)用與Spring Boot/Cloud的配合使用酬姆。敬請(qǐng)關(guān)注我的博客和公眾號(hào),獲取持續(xù)分享奥溺。