為Spring Boot應(yīng)用設(shè)置健康檢查
對(duì)于Spring Boot的應(yīng)用,除了使用HTTP或TCP端口檢測(cè)來進(jìn)行應(yīng)用健康檢查之外,您也可以使用Actuator組件實(shí)現(xiàn)定制化健康檢查。本文介紹如何通過Actuator組件為Spring Boot應(yīng)用設(shè)置健康檢查。
背景信息
Actuator組件是Spring Boot提供的用來對(duì)應(yīng)用系統(tǒng)進(jìn)行自省和監(jiān)控的功能模塊,借助于Actuator,您可以很方便地查看并統(tǒng)計(jì)應(yīng)用系統(tǒng)的某些監(jiān)控指標(biāo)。您也可以通過Actuator組件自定義您的健康檢查程序。更多信息,請(qǐng)參見Spring Boot Actuator官方文檔。
操作步驟
在Maven中添加所需依賴。
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency>
設(shè)置application.properties配置文件,顯示健康檢查詳細(xì)信息。
management.endpoints.web.base-path= / # Actuator 2.0之前默認(rèn)基礎(chǔ)訪問路徑是"/"(則健康檢查為“/health”),2.0及之后默認(rèn)訪問路徑是"/actuator" (則健康檢查為“/actuator/health”)。 management.endpoint.health.show-details=always # 顯示健康檢查詳細(xì)信息,默認(rèn)為never,即不顯示。
您可以通過Actuator組件提供的自動(dòng)配置的健康指示器或者自定義檢查程序?qū)?yīng)用進(jìn)行檢查。
通過自動(dòng)配置的健康檢查器。
Actuator有些自動(dòng)配置加載的健康檢查指示器(HealthIndicator),例如若應(yīng)用中使用了Redis、MongoDB,那么RedisHealthIndicator以及MongoHealthIndicator就會(huì)被作為健康檢查的一部分。更多關(guān)于自動(dòng)加載的配置信息,請(qǐng)參見自動(dòng)配置加載。
您也可以禁用所有自動(dòng)配置的健康指示器,或者禁用某個(gè)指示器的健康檢查。
management.health.defaults.enable=false # 禁用所有默認(rèn)健康檢查指示器。 management.health.mongo.enable=false # 禁用MongoDB健康檢查指示器。
說明請(qǐng)您根據(jù)應(yīng)用,選擇需要開啟的健康檢查指示器。如果您開啟了全部的指示器,可能會(huì)導(dǎo)致健康檢查持續(xù)失敗。
通過自定義檢查程序。此時(shí)您可以通過/health/custom路徑來單獨(dú)獲取這個(gè)健康指示器的結(jié)果。
新建CustomHealthIndicator.java文件,輸入代碼,實(shí)現(xiàn)您業(yè)務(wù)中特定的檢查內(nèi)容。例如檢查數(shù)據(jù)庫連接是否正常,線程池狀態(tài)等。示例代碼如下所示:
@Component public class CustomHealthIndicator extends AbstractHealthIndicator { @Override protected void doHealthCheck(Health.Builder builder) throws Exception { # 實(shí)現(xiàn)您業(yè)務(wù)中特定的檢查內(nèi)容。 if (checkSomething()) { builder.up().withDetail("Item", "xxx").withDetail("error", "null"); } else { builder.down().withDetail("Item", "xxx").withDetail("error", "xxxErrorCode"); } } }
設(shè)置完成后,運(yùn)行應(yīng)用,進(jìn)行健康檢查。
通過直接訪問默認(rèn)端口進(jìn)行健康檢查。示例命令如下:
curl 127.0.0.21:8080/health/custom # custom為健康檢查指示器類名前綴,請(qǐng)以您定義的類名為準(zhǔn)。
說明Actuator 2.0版本之前默認(rèn)基礎(chǔ)訪問路徑是/,則健康檢查路徑為/health。
Actuator 2.0及之后版本默認(rèn)訪問路徑是/actuator, 則健康檢查路徑為/actuator/health。
返回示例如下:
{"status":"UP","details":{"custom":{"status":"UP","details":{"Item","xxx","error","null"}}}}
狀態(tài)說明如下:
UP:HTTP狀態(tài)碼為200,說明健康檢查成功。
DOWN:HTTP狀態(tài)碼為503,說明健康檢查失敗。
說明如果這個(gè)檢查路徑中包含了多個(gè)健康指示器的結(jié)果(例如檢查的路徑是/health),只要有一個(gè)指示器的結(jié)果為DOWN,HTTP狀態(tài)碼就會(huì)是503,即健康檢查失敗。
在SAE控制臺(tái)配置健康檢查。具體步驟,請(qǐng)參見設(shè)置健康檢查。