Spring Boot Actuator微服務(wù)服務(wù)監(jiān)控
作者:xcbeyond
瘋狂源自夢(mèng)想,技術(shù)成就輝煌!微信公眾號(hào):《程序猿技術(shù)大咖》號(hào)主,專注后端開發(fā)多年,擁有豐富的研發(fā)經(jīng)驗(yàn),樂于技術(shù)輸出、分享,現(xiàn)階段從事微服務(wù)架構(gòu)項(xiàng)目的研發(fā)工作,涉及架構(gòu)設(shè)計(jì)、技術(shù)選型、業(yè)務(wù)研發(fā)等工作。對(duì)于Java、微服務(wù)、數(shù)據(jù)庫、Docker有深入了解,并有大量的調(diào)優(yōu)經(jīng)驗(yàn)。
1、Spring Boot Actuator介紹
Spring Boot Actuator是Spring Boot中一個(gè)比較強(qiáng)大的特性功能,能夠幫助你監(jiān)控和管理你的應(yīng)用程序,通過提供的restful api接口來監(jiān)管、審計(jì)、收集應(yīng)用的運(yùn)行情況,針對(duì)微服務(wù)而言它是必不可少的一個(gè)組件。
有如下特性:
Endpoints
Spring Boot Actuator的核心部分,它用來監(jiān)視應(yīng)用程序及交互,spring-boot-actuator中已經(jīng)內(nèi)置了非常多的Endpoints(health、info、beans、httptrace、shutdown)等等,同時(shí)也允許我們自己擴(kuò)展自己的端點(diǎn)。例如:health端點(diǎn)提供了應(yīng)用程序的基本健康信息。
使用了actuator后,并不代表所有內(nèi)置的端點(diǎn)都能夠訪問,啟用了并不代表可以直接訪問,還需要配置參數(shù)(management.endpoints.web.exposure.include)將其暴露出來。
內(nèi)置Endpoints
Metrics
Spring Boot Actuator通過集成Micrometer來提供一些監(jiān)控指標(biāo)標(biāo)準(zhǔn),詳細(xì)可參考:https://docs.spring.io/spring-boot/docs/current/reference/html/production-ready-metrics.html
Audit
Spring Boot Actuator有一個(gè)比較靈活的審計(jì)框架,那就是Audit,可以將事件發(fā)布到AuditEventRepository。一旦Spring Security正在運(yùn)行,它會(huì)默認(rèn)自動(dòng)發(fā)布身份驗(yàn)證事件。這對(duì)于認(rèn)證審計(jì)非常有用,并且還可以基于身份驗(yàn)證失敗實(shí)施鎖定策略,或自定義擴(kuò)展一些審計(jì)功能,你可以實(shí)現(xiàn)已提供的接口AbstractAuthenticationAuditListener 和AbstractAuthorizationAuditListener。
看完上面這些特性,是不是有一種馬上上手嘗試一下的沖動(dòng)了吧。Spring Boot Actuator將會(huì)為你的服務(wù)監(jiān)控和管理提供很多的便利,不必閉門造車了。
2、開發(fā)配置
導(dǎo)入依賴包
在pom.xml中添加spring-boot-starter-actuator的依賴。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
屬性配置
在application.yml文件中配置actuator的相關(guān)配置,其中info開頭的屬性,就是訪問info端點(diǎn)中顯示的相關(guān)內(nèi)容,值得注意的十spring boot2.x中,默認(rèn)只開放了info、health兩個(gè)端點(diǎn),其余的需要自己通過配置management.endpoints.web.exposure.include屬性來加載(有include自然就有exclude)。如果想單獨(dú)操作某個(gè)端點(diǎn)可以使用management.endpoint.端點(diǎn).enabled屬性進(jìn)行啟用或者禁用。
info:
head: head
body: body
management:
endpoints:
web:
exposure:
#加載所有的端點(diǎn),默認(rèn)只加載了info、health
include: '*'
endpoint:
health:
show-details: always
#可以關(guān)閉指定的端點(diǎn)
shutdown:
enabled: false
3、總結(jié)
Spring Boot Actuator組件作為微服務(wù)中服務(wù)監(jiān)控的核心,Spring Boot Admin也是基于這個(gè)Actuator開發(fā)的,所以當(dāng)涉及到服務(wù)監(jiān)控相關(guān)的,可以優(yōu)先考慮從Actuator入手。
參考文檔:
https://docs.spring.io/spring-boot/docs/current/reference/html/production-ready-metrics.html
https://docs.spring.io/spring-boot/docs/current/reference/html/production-ready-auditing.html