javascript
在传统Spring应用中使用spring-boot-actuator模块提供监控端点
在之前發(fā)布的《Spring Boot Actuator監(jiān)控端點小結(jié)》一文中,我們介紹了Spring Boot Actuator模塊為應(yīng)用提供的強大監(jiān)控能力。在Spring Boot應(yīng)用中,我們只需要簡單的引入spring-boot-starter-actuator依賴就能為應(yīng)用添加各種有用的監(jiān)控端點。其中,/health端點能夠全面檢查應(yīng)用的健康狀態(tài),該端點也被Spring Cloud中的服務(wù)治理(Eureka、Consul)用來檢查應(yīng)用的健康狀態(tài)。所以,在使用Spring Cloud構(gòu)建微服務(wù)架構(gòu)的時候,如果還存在一些遺留的傳統(tǒng)Spring應(yīng)用時,我們就需要為這些應(yīng)用也加入/health端點。那么在傳統(tǒng)的Spring應(yīng)用中我們是否也能引入該模塊來提供這些有用的監(jiān)控端點呢?下面我們就來介紹整合的詳細步驟:
第一步:引入相關(guān)依賴
由于在傳統(tǒng)Spring應(yīng)用中,我們不能直接使用Starter POMs。所以,我們需要拆解了來引入到傳統(tǒng)Spring應(yīng)用的pom.xml中,主要有如下兩個依賴:
| <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)用中沒有自動化配置功能,所以我們需要手工的來創(chuàng)建配置并啟用Spring Boot Actuator的監(jiān)控端點。比如,我們先來創(chuàng)建一個實現(xiàn)/health端點的配置,具體如下:
({ 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類是Spring Boot Actuator的基礎(chǔ)配置類。org.springframework.boot.actuate.autoconfigure.HealthIndicatorAutoConfiguration類是/health端點的基礎(chǔ)配置,具體內(nèi)容本文不做詳細展開,讀者可自行查看。而在該配置類中,還創(chuàng)建了兩個Bean,其中EndpointHandlerMapping是org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping的子類,它用來加載所有的監(jiān)控端點;而HealthMvcEndpoint是具體的/health端點實現(xiàn)。
在完成上面配置之后,我們就可以啟動Spring應(yīng)用,此時就可以看控制臺中看到打印出了/health端點,我們可以嘗試訪問該端點來獲取當前實例的健康狀況。
除了在傳統(tǒng)應(yīng)用中可以加載/health端點之外,我們也可以如法炮制地創(chuàng)建其他端點,比如:獲取各個度量指標的/metrics端點,可以通過如下配置實現(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); } } |
這里,我們主要增加了兩個內(nèi)容:
- @Import中增加引入PublicMetricsAutoConfiguration配置類
- 創(chuàng)建/metrics端點的實現(xiàn)Bean
到這里,本文的內(nèi)容就介紹完了,更多關(guān)于傳統(tǒng)Spring應(yīng)用與Spring Boot/Cloud的配合使用。敬請關(guān)注我的博客和公眾號,獲取持續(xù)分享。
總結(jié)
以上是生活随笔為你收集整理的在传统Spring应用中使用spring-boot-actuator模块提供监控端点的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Spring Cloud Alibaba
- 下一篇: 最全多线程经典面试题和答案