SpringBoot實現(xiàn)項目健康檢查與監(jiān)控
Spring Boot 最主要的特性就是AutoConfig(自動配置),而對于我們這些使用者來說也就是各種starter,
Spring Boot-Actuator 也提供了starter,為我們自動配置,在使用上我們只需要添加starter到我們的依賴中,然后啟動項目即可。
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency>
常用Endpoint
Spring Boot-actuator,提供了許多有用的EndPoint,對Spring Boot應(yīng)用提供各種監(jiān)控,下面說一下我常用的EndPoint:
/health 應(yīng)用的健康狀態(tài)
/configprops 獲取應(yīng)用的配置信息,因為Spring Boot 可能發(fā)布時是單獨的Jar包,配置文件可能包含其中, 當(dāng)我們需要檢查配置文件時可以使用 ConfigpropsEndPoint 進行查看一些配置是否正確。
/trace 最近幾次的http請求信息
HealthEndPoint
當(dāng)我們訪問 http://localhost:8088/health 時,可以看到 HealthEndPoint 給我們提供默認(rèn)的監(jiān)控結(jié)果,包含 磁盤檢測和數(shù)據(jù)庫檢測。
{ "status": "UP", "diskSpace": { "status": "UP", "total": 398458875904, "free": 315106918400, "threshold": 10485760 }, "db": { "status": "UP", "database": "MySQL", "hello": 1 } }
其實看 Spring Boot-actuator 源碼,你會發(fā)現(xiàn) HealthEndPoint 提供的信息不僅限于此,org.springframework.boot.actuate.health 包下 你會發(fā)現(xiàn) ElasticsearchHealthIndicator、RedisHealthIndicator、RabbitHealthIndicator 等
也就是 HealthEndPoint 也提供 ES, Redis 等組件的健康信息。
自定義Indicator 擴展 HealthEndPoint
看源碼 其實 磁盤和數(shù)據(jù)庫健康信息就是 DiskSpaceHealthIndicator、DataSourceHealthIndicator 來實現(xiàn)的,當(dāng)我們對一些我們自定義的組件進行監(jiān)控時, 我們也可以實現(xiàn)個Indicator :
@Component public class User implements HealthIndicator { /** * user監(jiān)控 訪問: http://localhost:8088/health * * @return 自定義Health監(jiān)控 */ @Override public Health health() { return new Health.Builder().withDetail("usercount", 10) //自定義監(jiān)控內(nèi)容 .withDetail("userstatus", "up").up().build(); } }
這時我們再次訪問: http://localhost:8088/health 這時返回的結(jié)果如下,包含了我們自定義的 User 健康信息。
{ "status": "UP", "user": { "status": "UP", "usercount": 10, "userstatus": "up" }, "diskSpace": { "status": "UP", "total": 398458875904, "free": 315097989120, "threshold": 10485760 }, "db": { "status": "UP", "database": "MySQL", "hello": 1 } }
自定義EndPoint
其實除了擴展 HealthEndPoint 來添加一些健康檢查, 我們也可以自定定義一些EndPoint 來提供程序運行時一些信息的展示:
@Configuration public class EndPointAutoConfig { @Bean public Endpoint<Map<String, Object>> customEndPoint() { return new SystemEndPoint(); } } @ConfigurationProperties(prefix="endpoints.customsystem") public class SystemEndPoint extends AbstractEndpoint<Map<String, Object>> { public SystemEndPoint(){ super("customsystem"); } @Override public Map<String, Object> invoke() { Map<String,Object> result= new HashMap<>(); Map<String, String> map = System.getenv(); result.put("username",map.get("USERNAME")); result.put("computername",map.get("COMPUTERNAME")); result.put("userdomain",map.get("USERDOMAIN")); return result; } }
訪問 http://localhost:8088/customsystem 來查看我們自定義的EndPoint ,返回結(jié)果如下:
{ "username": "xxx", "userdomain": "DESKTOP-6EAN1H4", "computername": "DESKTOP-6EAN1H4" }
我們在為Spring Boot應(yīng)用添加actuator后,期望的health接口返回結(jié)果應(yīng)該是類似下面的結(jié)果:
{ status: "UP", diskSpace: { status: "UP", total: 250182889472, free: 31169568768, threshold: 10485760 }, db: { status: "UP", database: "H2", hello: 1 } }
如果只是返回了status
{ status: "UP" }
則需要為應(yīng)用新增配置,以yml配置文件為例,需要添加如下配置:
management: security: enabled: false endpoints: health: sensitive: false
management.endpoint.health.show-details=always
總結(jié)
以上所述是小編給大家介紹的SpringBoot實現(xiàn)項目健康檢查與監(jiān)控,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
相關(guān)文章
自定義SpringBoot的白標(biāo)錯誤頁面的操作方法
Spring Boot的白標(biāo)錯誤頁面是在應(yīng)用程序出現(xiàn)錯誤時(如404或500 HTTP狀態(tài)碼)自動生成的默認(rèn)錯誤頁面,下面小編給大家分享如何自定義SpringBoot的白標(biāo)錯誤頁面,感興趣的朋友跟隨小編一起看看吧2024-06-06java多態(tài)的向上轉(zhuǎn)型的概念及實例分析
在本篇內(nèi)容里小編給大家整理的是一篇關(guān)于java多態(tài)的向上轉(zhuǎn)型的概念及實例分析,對此有興趣的朋友們可以跟著學(xué)習(xí)下。2021-05-05圖解Spring Security 中用戶是如何實現(xiàn)登錄的
這篇文章主要介紹了圖解Spring Security 中用戶是如何實現(xiàn)登錄的,文中通過示例代碼和圖片介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07springboot掃描自定義的servlet和filter代碼詳解
本文是一篇根據(jù)作者工作經(jīng)歷總結(jié)出來的關(guān)于springboot掃描自定義的servlet和filter代碼詳解的文章,小編覺得非常不錯,這里給大家分享下,和朋友們一起學(xué)習(xí),進步。2017-10-10關(guān)于Java Guava ImmutableMap不可變集合源碼分析
這篇文章主要介紹Java Guava不可變集合ImmutableMap的源碼分析的相關(guān)資料,需要的朋友可以參考下面具體的文章內(nèi)容2021-09-09Java中關(guān)鍵字final finally finalize的區(qū)別介紹
這篇文章主要給大家分享的是 Java中final,finally,finalize 到底有什么區(qū)別,文章圍繞final,finally,finalize的相關(guān)資料展開詳細(xì)內(nèi)容,具有一定的參考的價值,需要的朋友可以參考一下2022-04-04SpringCloud微服務(wù)多應(yīng)用腳手架的搭建與部署方式
這篇文章主要介紹了SpringCloud微服務(wù)多應(yīng)用腳手架的搭建與部署方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-07-07