javascript
在传统Spring应用中使用spring-boot-actuator模块提供监控端点
在之前發(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)用來(lái)檢查應(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)用中我們是否也能引入該模塊來(lái)提供這些有用的監(jiān)控端點(diǎn)呢?下面我們就來(lái)介紹整合的詳細(xì)步驟:
第一步:引入相關(guān)依賴
由于在傳統(tǒng)Spring應(yīng)用中,我們不能直接使用Starter POMs。所以,我們需要拆解了來(lái)引入到傳統(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)用中沒(méi)有自動(dòng)化配置功能,所以我們需要手工的來(lái)創(chuàng)建配置并啟用Spring Boot Actuator的監(jiān)控端點(diǎn)。比如,我們先來(lái)創(chuàng)建一個(gè)實(shí)現(xiàn)/health端點(diǎn)的配置,具體如下:
({ EndpointAutoConfiguration.class, HealthIndicatorAutoConfiguration.class}) public class MyAppSpringConfig { public EndpointHandlerMapping endpointHandlerMapping( Collection<? extends MvcEndpoint> endpoints) { return new EndpointHandlerMapping(endpoints); } public HealthMvcEndpoint healthMvcEndpoint(HealthEndpoint delegate) { return new HealthMvcEndpoint(delegate, false); } } |
其中,@Import中引入的org.springframework.boot.actuate.autoconfigure.EndpointAutoConfiguration類(lèi)是Spring Boot Actuator的基礎(chǔ)配置類(lèi)。org.springframework.boot.actuate.autoconfigure.HealthIndicatorAutoConfiguration類(lèi)是/health端點(diǎn)的基礎(chǔ)配置,具體內(nèi)容本文不做詳細(xì)展開(kāi),讀者可自行查看。而在該配置類(lèi)中,還創(chuàng)建了兩個(gè)Bean,其中EndpointHandlerMapping是org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping的子類(lèi),它用來(lái)加載所有的監(jiān)控端點(diǎn);而HealthMvcEndpoint是具體的/health端點(diǎn)實(shí)現(xiàn)。
在完成上面配置之后,我們就可以啟動(dòng)Spring應(yīng)用,此時(shí)就可以看控制臺(tái)中看到打印出了/health端點(diǎn),我們可以嘗試訪問(wèn)該端點(diǎn)來(lái)獲取當(dāng)前實(shí)例的健康狀況。
除了在傳統(tǒng)應(yīng)用中可以加載/health端點(diǎn)之外,我們也可以如法炮制地創(chuàng)建其他端點(diǎn),比如:獲取各個(gè)度量指標(biāo)的/metrics端點(diǎn),可以通過(guò)如下配置實(shí)現(xiàn):
({ EndpointAutoConfiguration.class, PublicMetricsAutoConfiguration.class, HealthIndicatorAutoConfiguration.class}) public class MyAppSpringConfig { public EndpointHandlerMapping endpointHandlerMapping( Collection<? extends MvcEndpoint> endpoints) { return new EndpointHandlerMapping(endpoints); } public HealthMvcEndpoint healthMvcEndpoint(HealthEndpoint delegate) { return new HealthMvcEndpoint(delegate, false); } public EndpointMvcAdapter metricsEndPoint(MetricsEndpoint delegate) { return new EndpointMvcAdapter(delegate); } } |
這里,我們主要增加了兩個(gè)內(nèi)容:
- @Import中增加引入PublicMetricsAutoConfiguration配置類(lèi)
- 創(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ù)分享。
總結(jié)
以上是生活随笔為你收集整理的在传统Spring应用中使用spring-boot-actuator模块提供监控端点的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Spring Cloud Alibaba
- 下一篇: Spring Cloud实战小贴士:Zu