您好,登錄后才能下訂單哦!
這篇文章主要為大家展示了“SpringBoot指標(biāo)監(jiān)控actuator的示例分析”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“SpringBoot指標(biāo)監(jiān)控actuator的示例分析”這篇文章吧。
首先肯定要說一下SpringBoot的四大核心了:
自動(dòng)裝配:簡單配置甚至零配置即可運(yùn)行項(xiàng)目
起步依賴:場(chǎng)景啟動(dòng)器
Actuator:指標(biāo)監(jiān)控
命令行界面 :命令行
未來每一個(gè)微服務(wù)在云上部署以后,我們都需要對(duì)其進(jìn)行監(jiān)控、追蹤、審計(jì)、控制等。SpringBoot就抽取了Actuator場(chǎng)景,使得我們每個(gè)微服務(wù)快速引用即可獲得生產(chǎn)級(jí)別的應(yīng)用監(jiān)控、審計(jì)等功能。
要開啟指標(biāo)監(jiān)控功能,首先需要在pom文件種添加如下依賴:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency>
然后在配置文件中先做如下配置:
server: port: 8080 # 暴露所有監(jiān)控信息為HTTP management: endpoints: enabled-by-default: true # 默認(rèn)開啟所有監(jiān)控端點(diǎn)信息 web: exposure: include: '*' # 以web方式暴露所有端點(diǎn)
然后啟動(dòng)項(xiàng)目,進(jìn)行測(cè)試:
下圖中測(cè)試得到的內(nèi)容就是目前項(xiàng)目中可以監(jiān)控到的各種指標(biāo)參數(shù)信息。
在指標(biāo)監(jiān)控這個(gè)功能中,有一個(gè)經(jīng)常提到的詞叫:端點(diǎn)。那么常用常見的端點(diǎn)如下圖:???
上面我們?cè)L問指標(biāo)監(jiān)控的url是:http://localhost:8080/actuator/ 即可獲取到所有端點(diǎn)信息。那么如果想要獲取某個(gè)端點(diǎn)信息,url就應(yīng)該是:
http://localhost:8080/actuator/endpointName/detailPath。
健康檢查端點(diǎn),我們一般用于在云平臺(tái),平臺(tái)會(huì)定時(shí)的檢查應(yīng)用的健康狀況,我們就需要Health Endpoint可以為平臺(tái)返回當(dāng)前應(yīng)用的一系列組件健康狀況的集合。
重要的幾點(diǎn):
health endpoint返回的結(jié)果,應(yīng)該是一系列健康檢查后的一個(gè)匯總報(bào)告
很多的健康檢查默認(rèn)已經(jīng)自動(dòng)配置好了,比如:數(shù)據(jù)庫、redis等
可以很容易的添加自定義的健康檢查機(jī)制
提供詳細(xì)的、層級(jí)的、空間指標(biāo)信息,這些信息可以被pull(主動(dòng)推送)或者push(被動(dòng)獲?。┓绞降玫?;
通過Metrics對(duì)接多種監(jiān)控系統(tǒng)
簡化核心Metrics開發(fā)
添加自定義Metrics或者擴(kuò)展已有Metrics
上面的這些測(cè)試結(jié)果就是我們根據(jù)當(dāng)前項(xiàng)目,獲取到某個(gè)端點(diǎn)的詳細(xì)指標(biāo)信息。
除此之外,我們也可以對(duì)這些端點(diǎn)進(jìn)行手動(dòng)開啟或者禁用。(參見下面的配置文件)
server: port: 8080 # 暴露所有監(jiān)控信息為HTTP management: endpoints: enabled-by-default: false # 默認(rèn)開啟所有監(jiān)控端點(diǎn)信息 web: exposure: include: '*' # 以web方式暴露所有端點(diǎn) # 需要開啟或者禁用某個(gè)Endpoint # 配置模式為 management.endpoint.<endpointName>.enabled = true/false endpoint: health: show-details: always # 總是顯示health端點(diǎn)的詳細(xì)信息 enabled: true info: enabled: true beans: enabled: true
上面的測(cè)試截圖就是我們手動(dòng)的開啟某些端點(diǎn)、同時(shí)關(guān)閉了某些端點(diǎn)之后的結(jié)果。
以上的所有內(nèi)容都是在使用SpringBoot為我們提供的官方的Endpoint,那么我們也是可以自定義Endpoint的(也即定制化Endpoint)。
有兩種方式:①繼承AbstractHealthIndicator抽象類(doHealthCheck(Health.Builder builder)方法);②實(shí)現(xiàn)HealthIndicator接口(重寫health()方法)。我是用第一種方法簡單做個(gè)測(cè)試吧。
package com.szh.boot.health; import org.springframework.boot.actuate.health.AbstractHealthIndicator; import org.springframework.boot.actuate.health.Health; import org.springframework.boot.actuate.health.Status; import org.springframework.stereotype.Component; import java.util.HashMap; import java.util.Map; /** * */ @Component public class MyComHealthIndicator extends AbstractHealthIndicator { /** * 真實(shí)的檢查方法 * @param builder * @throws Exception */ @Override protected void doHealthCheck(Health.Builder builder) throws Exception { Map<String,Object> map = new HashMap<>(); //模擬檢查過程 if (1 == 1) { // builder.up(); //健康 builder.status(Status.UP); map.put("count",1); map.put("ms",100); } else { // builder.down(); //宕機(jī) builder.status(Status.DOWN); map.put("error","連接超時(shí)"); map.put("ms",3000); } builder.withDetail("code",20001) .withDetails(map); } }
配置文件如下:???
server: port: 8080 # 暴露所有監(jiān)控信息為HTTP management: endpoints: enabled-by-default: false # 默認(rèn)開啟所有監(jiān)控端點(diǎn)信息 web: exposure: include: '*' # 以web方式暴露所有端點(diǎn) # 需要開啟或者禁用某個(gè)Endpoint # 配置模式為 management.endpoint.<endpointName>.enabled = true/false endpoint: health: show-details: always # 總是顯示health端點(diǎn)的詳細(xì)信息 enabled: true
然后我們啟動(dòng)測(cè)試,訪問路徑:http://localhost:8080/actuator/health。從結(jié)果中看到有一個(gè)端點(diǎn)myCom就是我們自定義的(命名方式就是 MyComHealthIndicator 類去掉后面的 HealthIndicator)。
首先在配置文件中添加如下內(nèi)容:(最后幾行)
server: port: 8080 # 暴露所有監(jiān)控信息為HTTP management: endpoints: enabled-by-default: false # 默認(rèn)開啟所有監(jiān)控端點(diǎn)信息 web: exposure: include: '*' # 以web方式暴露所有端點(diǎn) # 需要開啟或者禁用某個(gè)Endpoint # 配置模式為 management.endpoint.<endpointName>.enabled = true/false endpoint: health: show-details: always # 總是顯示health端點(diǎn)的詳細(xì)信息 enabled: true info: enabled: true beans: enabled: true info: appName: spring-boot-actuator-endpoint-info version: 2.0.0 mavenProjectName: @project.artifactId@ mavenProjectVersion: @project.version@
然后創(chuàng)建一個(gè)類,實(shí)現(xiàn) InfoContributor 這個(gè)接口,并且重寫接口中的 contribute(Info.Builder builder) 方法。
package com.szh.boot.info; import org.springframework.boot.actuate.info.Info; import org.springframework.boot.actuate.info.InfoContributor; import org.springframework.stereotype.Component; import java.util.Collections; /** * */ @Component public class ExampleInfoContributor implements InfoContributor { @Override public void contribute(Info.Builder builder) { builder.withDetail("example", Collections.singletonMap("key","value")); } }
最后我們啟動(dòng)測(cè)試一下,訪問路徑:http://localhost:8080/actuator/info。得到的數(shù)據(jù)就是我們上面通過代碼寫好的內(nèi)容。
以上是“SpringBoot指標(biāo)監(jiān)控actuator的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。