亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Spring Boot Actuator自定義健康檢查教程

 更新時(shí)間:2021年07月23日 08:48:48   作者:夢(mèng)想畫家  
這篇文章主要介紹了Spring Boot Actuator自定義健康檢查教程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

健康檢查是Spring Boot Actuator中重要端點(diǎn)之一,可以非常容易查看應(yīng)用運(yùn)行至狀態(tài)。本文在前文的基礎(chǔ)上介紹如何自定義健康檢查。

1. 概述

本節(jié)我們簡單說明下依賴及啟用配置,展示缺省健康信息。首先需要引入依賴:

compile("org.springframework.boot:spring-boot-starter-actuator")

現(xiàn)在通過http://localhost:8080/actuator/health端點(diǎn)進(jìn)行驗(yàn)證:

{"status":"UP"}

缺省該端點(diǎn)返回應(yīng)用中很多組件的匯總健康信息,但可以修改屬性配置展示詳細(xì)內(nèi)容:

management:
  endpoint:
    health:
      show-details: always

現(xiàn)在再次訪問返回結(jié)果如下:

{
  "status": "UP",
  "components": {
    "diskSpace": {
      "status": "UP",
      "details": {
        "total": 214748360704,
        "free": 112483500032,
        "threshold": 10485760,
        "exists": true
      }
    },
    "ping": {
      "status": "UP"
    }
  }
}

查看DiskSpaceHealthIndicatorProperties文件的源碼:

@ConfigurationProperties(prefix = "management.health.diskspace")
public class DiskSpaceHealthIndicatorProperties {
 /**
  * Path used to compute the available disk space.
  */
 private File path = new File(".");
 /**
  * Minimum disk space that should be available.
  */
 private DataSize threshold = DataSize.ofMegabytes(10);
 public File getPath() {
  return this.path;
 }
 public void setPath(File path) {
  this.path = path;
 }
 public DataSize getThreshold() {
  return this.threshold;
 }
 public void setThreshold(DataSize threshold) {
  Assert.isTrue(!threshold.isNegative(), "threshold must be greater than or equal to 0");
  this.threshold = threshold;
 }
}

上面結(jié)果顯示當(dāng)前項(xiàng)目啟動(dòng)的路徑 . ,報(bào)警值 為10M ,這些屬性都可以通過配置進(jìn)行修改。

2. 預(yù)定義健康指標(biāo)

上面Json響應(yīng)顯示“ping”和“diskSpace”檢查。這些檢查也稱為健康指標(biāo),如果應(yīng)用引用了數(shù)據(jù)源,Spring會(huì)增加db健康指標(biāo);同時(shí)“diskSpace”是缺省配置。

Spring Boot包括很多預(yù)定義的健康指標(biāo),下面列出其中一部分:

  • DataSourceHealthIndicator
  • MongoHealthIndicator
  • Neo4jHealthIndicator
  • CassandraHealthIndicator
  • RedisHealthIndicator
  • CassandraHealthIndicator
  • RabbitHealthIndicator
  • CouchbaseHealthIndicator
  • DiskSpaceHealthIndicator (見上面示例)
  • ElasticsearchHealthIndicator
  • InfluxDbHealthIndicator
  • JmsHealthIndicator
  • MailHealthIndicator
  • SolrHealthIndicator

如果在Spring Boot應(yīng)用中使用Mongo或Solr等,則Spring Boot會(huì)自動(dòng)增加相應(yīng)健康指標(biāo)。

3. 自定義健康指標(biāo)

Spring Boot提供了一捆預(yù)定義健康指標(biāo),但并沒有阻止你增加自己的健康指標(biāo)。一般有兩種自定義類型檢查:

單個(gè)健康指標(biāo)組件和組合健康指標(biāo)組件。

3.1 自定義單個(gè)指標(biāo)組件

自定義需要實(shí)現(xiàn)HealthIndicator接口并重新health()方法,同時(shí)增加@Component注解。假設(shè)示例應(yīng)用程序與服務(wù)A(啟動(dòng))和服務(wù)B(關(guān)閉)通信。如果任一服務(wù)宕機(jī),應(yīng)用程序?qū)⒈灰暈殄礄C(jī)。因此,我們將寫入兩個(gè)運(yùn)行狀況指標(biāo)。

@Component
public class ServiceAHealthIndicator implements HealthIndicator {
    private final String message_key = "Service A";
    @Override
    public Health health() {
        if (!isRunningServiceA()) {
            return Health.down().withDetail(message_key, "Not Available").build();
        }
        return Health.up().withDetail(message_key, "Available").build();
    }
    private Boolean isRunningServiceA() {
        Boolean isRunning = true;
        // Logic Skipped
        return isRunning;
    }
}
@Component
public class ServiceBHealthIndicator implements HealthIndicator {
    private final String message_key = "Service B";
    @Override
    public Health health() {
        if (!isRunningServiceB()) {
            return Health.down().withDetail(message_key, "Not Available").build();
        }
        return Health.up().withDetail(message_key, "Available").build();
    }
    private Boolean isRunningServiceB() {
        Boolean isRunning = false;
        // Logic Skipped
        return isRunning;
    }
}

現(xiàn)在,我們看到健康監(jiān)控響應(yīng)中增加的指標(biāo)。ServerA狀態(tài)是UP,ServiceB是DOWN,因此整個(gè)監(jiān)控檢測狀態(tài)為DOWN.

{
  "status": "DOWN",
  "components": {
    "diskSpace": {
      "status": "UP",
      "details": {
        "total": 214748360704,
        "free": 112483229696,
        "threshold": 10485760,
        "exists": true
      }
    },
    "ping": {
      "status": "UP"
    },
    "serviceA": {
      "status": "UP",
      "details": {
        "Service A": "Available"
      }
    },
    "serviceB": {
      "status": "DOWN",
      "details": {
        "Service B": "Not Available"
      }
    }
  }
}

3.2 自定義組合健康檢查

前面示例很容易查看各個(gè)指標(biāo)各自的狀態(tài)。但有時(shí)需要基于幾個(gè)指標(biāo)查看資源的狀態(tài),則需要使用 HealthContributor ,該接口沒有定義方法,僅用于標(biāo)記。如果一個(gè)服務(wù)有另外兩個(gè)動(dòng)作組合進(jìn)行實(shí)現(xiàn),只有兩者同時(shí)工作該服務(wù)狀態(tài)才算正常。最后使用 CompositeHealthContributors組合多個(gè)指標(biāo):

public class ServiceAHealthIndicator 
    implements HealthIndicator, HealthContributor {
...
}

下面定義組合健康檢查指標(biāo):

@Component("UserServiceAPI")
public class UserServiceAPIHealthContributor 
    implements CompositeHealthContributor {
  
  private Map<String, HealthContributor> 
          contributors = new LinkedHashMap<>();
  @Autowired
  public UserServiceAPIHealthContributor(
      ServiceAHealthIndicator serviceAHealthIndicator, ServiceBHealthIndicator serviceBHealthIndicator) {
  
    contributors.put("serverA",  serviceAHealthIndicator);
    contributors.put("serverB", serviceBHealthIndicator);
  }
  /**
   *  return list of health contributors
   */
  @Override
  public Iterator<NamedContributor<HealthContributor>> iterator() {
    return contributors.entrySet().stream()
       .map((entry) -> NamedContributor.of(entry.getKey(), entry.getValue())).iterator();
  }
  
  @Override
  public HealthContributor getContributor(String name) {
    return contributors.get(name);
  }
}

現(xiàn)在我們使用serverA和serverB組合新的檢查UserServiceAPI。

4. 總結(jié)

本文我們學(xué)習(xí)了Spring Boot健康指標(biāo)及相關(guān)配置、以及預(yù)定義的健康指標(biāo),同時(shí)介紹了如何自定義健康指標(biāo)。

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 多用多學(xué)之Java中的Set,List,Map詳解

    多用多學(xué)之Java中的Set,List,Map詳解

    下面小編就為大家?guī)硪黄嘤枚鄬W(xué)之Java中的Set,List,Map詳解。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-06-06
  • IntelliJ IDEA修改內(nèi)存大小,使得idea運(yùn)行更流暢

    IntelliJ IDEA修改內(nèi)存大小,使得idea運(yùn)行更流暢

    今天小編就為大家分享一篇關(guān)于IntelliJ IDEA修改內(nèi)存大小,使得idea運(yùn)行更流暢的文章,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2018-10-10
  • 創(chuàng)建動(dòng)態(tài)代理對(duì)象bean,并動(dòng)態(tài)注入到spring容器中的操作

    創(chuàng)建動(dòng)態(tài)代理對(duì)象bean,并動(dòng)態(tài)注入到spring容器中的操作

    這篇文章主要介紹了創(chuàng)建動(dòng)態(tài)代理對(duì)象bean,并動(dòng)態(tài)注入到spring容器中的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2021-02-02
  • Go Java算法之比較版本號(hào)方法詳解

    Go Java算法之比較版本號(hào)方法詳解

    這篇文章主要為大家介紹了Go Java算法之比較版本號(hào)方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08
  • Socket編程簡單示例(聊天服務(wù)器)

    Socket編程簡單示例(聊天服務(wù)器)

    socket編程是在不同的進(jìn)程間進(jìn)行網(wǎng)絡(luò)通訊的一種協(xié)議,下面這篇文章主要給大家介紹了關(guān)于Socket編程簡單示例的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-02-02
  • Java實(shí)戰(zhàn)之酒店人事管理系統(tǒng)的實(shí)現(xiàn)

    Java實(shí)戰(zhàn)之酒店人事管理系統(tǒng)的實(shí)現(xiàn)

    這篇文章主要介紹了如何用Java實(shí)現(xiàn)酒店人事管理系統(tǒng),文中采用的技術(shù)有:JSP、Spring、SpringMVC、MyBatis等,感興趣的小伙伴可以學(xué)習(xí)一下
    2022-03-03
  • Java類的加載時(shí)機(jī)與過程

    Java類的加載時(shí)機(jī)與過程

    這篇文章主要介紹了Java類的加載時(shí)機(jī)與過程,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2021-12-12
  • Java中double精度丟失問題原因及解決辦法

    Java中double精度丟失問題原因及解決辦法

    使用Java double進(jìn)行運(yùn)算時(shí),經(jīng)常出現(xiàn)精度丟失的問題,總是在一個(gè)正確的結(jié)果左右偏0.0000**1,這篇文章主要給大家介紹了關(guān)于Java中double精度丟失問題原因及解決辦法,需要的朋友可以參考下
    2024-01-01
  • 詳解spring security四種實(shí)現(xiàn)方式

    詳解spring security四種實(shí)現(xiàn)方式

    這篇文章主要介紹了詳解spring security四種實(shí)現(xiàn)方式,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • Java11?中基于嵌套關(guān)系的訪問控制優(yōu)化問題

    Java11?中基于嵌套關(guān)系的訪問控制優(yōu)化問題

    在?Java?語言中,類和接口可以相互嵌套,這種組合之間可以不受限制的彼此訪問,包括訪問彼此的構(gòu)造函數(shù)、字段、方法,接下來通過本文給大家介紹Java11中基于嵌套關(guān)系的訪問控制優(yōu)化問題,感興趣的朋友一起看看吧
    2022-01-01

最新評(píng)論