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