溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

SpringBoot指標(biāo)監(jiān)控actuator的示例分析

發(fā)布時(shí)間:2022-03-04 11:27:37 來源:億速云 閱讀:177 作者:小新 欄目:開發(fā)技術(shù)

這篇文章主要為大家展示了“SpringBoot指標(biāo)監(jiān)控actuator的示例分析”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“SpringBoot指標(biāo)監(jiān)控actuator的示例分析”這篇文章吧。

1.寫在前面

首先肯定要說一下SpringBoot的四大核心了:

  • 自動(dòng)裝配:簡單配置甚至零配置即可運(yùn)行項(xiàng)目

  • 起步依賴:場(chǎng)景啟動(dòng)器

  • Actuator:指標(biāo)監(jiān)控

  • 命令行界面 :命令行

2.SpringBoot Actuator

未來每一個(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ù)信息。

SpringBoot指標(biāo)監(jiān)控actuator的示例分析

在指標(biāo)監(jiān)控這個(gè)功能中,有一個(gè)經(jīng)常提到的詞叫:端點(diǎn)。那么常用常見的端點(diǎn)如下圖:???

SpringBoot指標(biāo)監(jiān)控actuator的示例分析

上面我們?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ī)制

SpringBoot指標(biāo)監(jiān)控actuator的示例分析

SpringBoot指標(biāo)監(jiān)控actuator的示例分析

SpringBoot指標(biāo)監(jiān)控actuator的示例分析

提供詳細(xì)的、層級(jí)的、空間指標(biāo)信息,這些信息可以被pull(主動(dòng)推送)或者push(被動(dòng)獲?。┓绞降玫?;

  • 通過Metrics對(duì)接多種監(jiān)控系統(tǒng)

  • 簡化核心Metrics開發(fā)

  • 添加自定義Metrics或者擴(kuò)展已有Metrics

SpringBoot指標(biāo)監(jiān)控actuator的示例分析

SpringBoot指標(biāo)監(jiān)控actuator的示例分析

上面的這些測(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

SpringBoot指標(biāo)監(jiān)控actuator的示例分析

SpringBoot指標(biāo)監(jiān)控actuator的示例分析

上面的測(cè)試截圖就是我們手動(dòng)的開啟某些端點(diǎn)、同時(shí)關(guān)閉了某些端點(diǎn)之后的結(jié)果。

3.定制化Endpoint

3.1 定制health端點(diǎn)信息

以上的所有內(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)。

SpringBoot指標(biāo)監(jiān)控actuator的示例分析

3.2 定制info端點(diǎn)信息

首先在配置文件中添加如下內(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的示例分析

以上是“SpringBoot指標(biāo)監(jiān)控actuator的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細(xì)節(jié)

免責(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)容。

AI