欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Spring Boot 2.x中Actuator的一些知識(shí)點(diǎn)

 更新時(shí)間:2019年09月12日 09:25:52   作者:碼農(nóng)小胖哥  
這篇文章主要給大家介紹了關(guān)于Spring Boot 2.x中Actuator的一些知識(shí)點(diǎn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Spring Boot 2.x具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

1. 前言

Spring Boot 提供了很多開箱即用的starter,其中有一款非常特別的starter——actuator 。它是用來(lái)對(duì)Spring Boot 應(yīng)用進(jìn)行監(jiān)控、指標(biāo)采集、管理,并提供一些很有用的端點(diǎn)(endpoint)來(lái)實(shí)現(xiàn)上述功能。這有助于我們對(duì)Spring Boot 應(yīng)用進(jìn)行監(jiān)視和管理。我們本文將探討Spring Boot 2.x下的actuator的一些知識(shí)點(diǎn)。

2. 集成

像其它starter一樣,通過(guò)非常簡(jiǎn)單的依賴集成即可開箱即用。我們通過(guò)在項(xiàng)目中引入(以maven為例):

 <dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-actuator</artifactId>
 </dependency>

3. endpoints

Actuator的核心是端點(diǎn)(endpoint),我們通過(guò)端點(diǎn)來(lái)獲取應(yīng)用的一些監(jiān)控信息或者通過(guò)端點(diǎn)來(lái)改變系統(tǒng)的一些狀態(tài)。Actuator中內(nèi)置了非常多的端點(diǎn):

id 描述 默認(rèn)是否啟用
auditevents 顯示當(dāng)前應(yīng)用程序的審計(jì)事件信息 Yes
beans 顯示應(yīng)用Spring Beans的完整列表 Yes
caches 顯示可用緩存信息 Yes
conditions 顯示自動(dòng)裝配類的狀態(tài)及及應(yīng)用信息 Yes
configprops 顯示所有 @ConfigurationProperties 列表 Yes
env 顯示 ConfigurableEnvironment 中的屬性 Yes
flyway 顯示 Flyway 數(shù)據(jù)庫(kù)遷移信息 Yes
health 顯示應(yīng)用的健康信息(未認(rèn)證只顯示status,認(rèn)證顯示全部信息詳情) Yes
info 顯示任意的應(yīng)用信息 Yes
liquibase 展示Liquibase 數(shù)據(jù)庫(kù)遷移 Yes
metrics 展示當(dāng)前應(yīng)用的 metrics 信息 Yes
mappings 顯示所有 @RequestMapping 路徑集列表 Yes
scheduledtasks 顯示應(yīng)用程序中的計(jì)劃任務(wù) Yes
sessions 允許從Spring會(huì)話支持的會(huì)話存儲(chǔ)中檢索和刪除用戶會(huì)話。 Yes
shutdown 允許應(yīng)用以優(yōu)雅的方式關(guān)閉(默認(rèn)情況下不啟用) No
threaddump 執(zhí)行一個(gè)線程dump Yes
httptrace 顯示HTTP跟蹤信息(默認(rèn)顯示最后100個(gè)HTTP請(qǐng)求 - 響應(yīng)交換) Yes
heapdump 返回一個(gè)GZip壓縮的hprof堆dump文件 Yes
prometheus Prometheus服務(wù)器抓取的格式顯示metrics信息 Yes

3.1 啟用與關(guān)閉

默認(rèn)情況下除了shutdown是關(guān)閉的其它端點(diǎn)都是啟用的。個(gè)別端點(diǎn)的啟用依賴其他組件,比如我們上篇文章介紹的Prometheus。我們可以在Spring Boot 配置文件中通過(guò)配置(id參見(jiàn)上表)management.endpoint.<id>.enabled來(lái)配置端點(diǎn)是否啟用。

另外我們可以通過(guò)management.endpoints.enabled-by-default來(lái)修改全局端口默認(rèn)配置,以下示例啟用info端點(diǎn)并禁用所有其他端點(diǎn):

# 先設(shè)置所有的端點(diǎn)默認(rèn)為關(guān)閉
management.endpoints.enabled-by-default=false
# 然后開啟info 端點(diǎn)
management.endpoint.info.enabled=true

3.2 開放與封閉

特別需要我們注意的是,以上只是我們開啟的端點(diǎn)功能,并不意味我們把這些端點(diǎn)暴露給應(yīng)用之外的環(huán)境中去。暴露的配置規(guī)則是 management.endpoints.<web|jmx>.exposure.<include|exclude>我們以web為例,通過(guò)以下方式來(lái)暴露web端點(diǎn):

# * 為暴露所有web端點(diǎn),如果暴露的是一個(gè)列表請(qǐng)使用端點(diǎn) id 并以逗號(hào)隔開 
management.endpoints.web.exposure.include='*'

同樣的如果我們要排除一些web端點(diǎn)請(qǐng)用 management.endpoints.web.exposure.exclude來(lái)配置。我們可以通過(guò)/actuator來(lái)列舉暴露的端點(diǎn)。當(dāng)然這個(gè)路徑取決于我們對(duì)management.endpoints.web.basePath的配置。

3.3 安全性

對(duì)于生產(chǎn)環(huán)境來(lái)說(shuō)端點(diǎn)都是敏感的。我們當(dāng)然不希望非法的訪問(wèn)端點(diǎn),特別如/shutdown這種端點(diǎn)。我們可以通過(guò)上面3.1、3.2進(jìn)行關(guān)閉、封閉操作。也可直接配置management.server.port=-1 來(lái)關(guān)閉管理端點(diǎn)?;蛘叽_保在外面的安全框架諸如Spring security的控制之下。即保證 EndpointRequest.toAnyEndpoint()的安全性。

3.4 自定義端點(diǎn)

Spring Boot 2.x 開始,Actuator支持CRUD模型,而不是舊的RW(讀/寫)模型。我們可以按照兩種策略來(lái)自定義:

  • @Endpoint 同時(shí)支持JMX和http
  • @JmxEndpoint 只支持JMX技術(shù)
  • @WebEndpoint 只支持http

通過(guò)在一個(gè)端點(diǎn)類(必須是Spring Bean)上添加上面其中一個(gè)來(lái)表明該類是一個(gè)端點(diǎn)類。

在類的方法使用@ReadOperation,@WriteOperation或@DeleteOperation,這分別會(huì)映射到Http中的 GET、POST、DELETE(對(duì)http來(lái)說(shuō))。 以下是我們自定義的一個(gè)端點(diǎn):

@Component
@Endpoint(id = "features")
public class FeaturesEndpoint {

 private Map<String, Feature> features = new ConcurrentHashMap<>();

 @ReadOperation
 public Map<String, Feature> features() {
  return features;
 }

 @ReadOperation
 public Feature feature(@Selector String name) {
  return features.get(name);
 }

 @WriteOperation
 public void configureFeature(@Selector String name, Feature feature) {
  features.put(name, feature);
 }

 @DeleteOperation
 public void deleteFeature(@Selector String name) {
  features.remove(name);
 }

 public static class Feature {
  private Boolean enabled;

  // [...] getters and setters 
 }

}

注意請(qǐng)務(wù)必保證端點(diǎn)的id在該應(yīng)用中唯一。

3.5 端點(diǎn)擴(kuò)展

假設(shè)我們想要確保我們的應(yīng)用程序的生產(chǎn)實(shí)例永遠(yuǎn)不是SNAPSHOT版本。我們決定通過(guò)更改返回此信息的Actuator端點(diǎn)(/info)來(lái)完成此操作。如果我們的應(yīng)用程序恰好是SNAPSHOT。我們將獲得不同的HTTP狀態(tài)代碼。

我們可以使用@EndpointExtension或其更具體的@EndpointWebExtension、@EndpointJmxExtension輕松擴(kuò)展預(yù)定義端點(diǎn)的行為:

@Component
@EndpointWebExtension(endpoint = InfoEndpoint.class)
public class InfoWebEndpointExtension {
 
 private InfoEndpoint delegate;
 
 // standard constructor
 
 @ReadOperation
 public WebEndpointResponse<Map> info() {
  Map<String, Object> info = this.delegate.info();
  Integer status = getStatus(info);
  return new WebEndpointResponse<>(info, status);
 }
 
 private Integer getStatus(Map<String, Object> info) {
  // return 5xx if this is a snapshot
  return 200;
 }
}

3.6 Spring Boot metrics

運(yùn)維應(yīng)用監(jiān)控依賴于對(duì)應(yīng)用度量(metric)指標(biāo)的抽取。Spring Boot 2.x中的Actuator 對(duì)Micrometer的自動(dòng)配置。 甚至我們可以通過(guò)一個(gè)叫MeterRegistry的Spring Bean來(lái)注冊(cè)一個(gè)自定義的metric指標(biāo)。我們可以通過(guò)/actuator/metrics端點(diǎn)獲取所有的metric指標(biāo)。 也可以通過(guò)/actuator/metrics/{metricName} 來(lái)獲取具體度量的元數(shù)據(jù)。

Micrometer 是一個(gè)應(yīng)用度量門面類庫(kù),類似SLF4。后面我會(huì)專門寫一篇文章來(lái)介紹這個(gè)知識(shí)點(diǎn)。請(qǐng)關(guān)注我的公眾號(hào):Felordcn 以保證第一時(shí)間獲取相關(guān)的知識(shí)。

4. 總結(jié)

本文我們介紹了Spring Boot 2.x中Actuator 組件。該組件可以幫助我們來(lái)獲取系統(tǒng)的一些元信息和一些監(jiān)控度量指標(biāo)。對(duì)于Spring Boot 應(yīng)用十分重要。該組件是一個(gè)生產(chǎn)級(jí)別的工具,我們不應(yīng)該忽略它。

好了,以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。

作者:碼農(nóng)小胖哥

來(lái)源:https://segmentfault.com/a/1190000020361935

相關(guān)文章

  • 基于Java設(shè)計(jì)一個(gè)高并發(fā)的秒殺系統(tǒng)

    基于Java設(shè)計(jì)一個(gè)高并發(fā)的秒殺系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了如何基于Java設(shè)計(jì)一個(gè)高并發(fā)的秒殺系統(tǒng),文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,有需要的小伙伴可以參考下
    2023-10-10
  • SpringBoot 工程中的異常處理方式

    SpringBoot 工程中的異常處理方式

    這篇文章主要介紹了SpringBoot 工程中的異常處理方式,幫助大家更好的理解和學(xué)習(xí)使用springboot框架,感興趣的朋友可以了解下
    2021-02-02
  • 輕松掌握J(rèn)ava備忘錄模式

    輕松掌握J(rèn)ava備忘錄模式

    這篇文章主要幫助大家輕松掌握J(rèn)ava備忘錄模式,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-09-09
  • github上的java項(xiàng)目怎么運(yùn)行(面向小白)

    github上的java項(xiàng)目怎么運(yùn)行(面向小白)

    這篇文章主要介紹了github上的java項(xiàng)目怎么運(yùn)行(面向小白),今天從github把我以前寫的一個(gè)小demo下載下來(lái)了,第一次下載項(xiàng)目,摸索了一個(gè)多小時(shí),才運(yùn)行起來(lái),需要的朋友可以參考下
    2019-06-06
  • Java 關(guān)系運(yùn)算符詳情及案例(上)

    Java 關(guān)系運(yùn)算符詳情及案例(上)

    這篇文章主要介紹了Java 關(guān)系運(yùn)算符詳情及案例實(shí)現(xiàn),Java 也提供了許多類型的運(yùn)算符,可以根據(jù)需要使用它們來(lái)執(zhí)行各種計(jì)算和函數(shù),包括邏輯、算術(shù)、關(guān)系等。它們根據(jù)它們提供的功能進(jìn)行分類,下面將詳細(xì)介紹該內(nèi)容,需要的朋友可以參考一下
    2021-12-12
  • Java 實(shí)戰(zhàn)項(xiàng)目錘煉之網(wǎng)上圖書館管理系統(tǒng)的實(shí)現(xiàn)流程

    Java 實(shí)戰(zhàn)項(xiàng)目錘煉之網(wǎng)上圖書館管理系統(tǒng)的實(shí)現(xiàn)流程

    讀萬(wàn)卷書不如行萬(wàn)里路,只學(xué)書上的理論是遠(yuǎn)遠(yuǎn)不夠的,只有在實(shí)戰(zhàn)中才能獲得能力的提升,本篇文章手把手帶你用Java+jsp+servlet+mysql+ajax實(shí)現(xiàn)一個(gè)網(wǎng)上圖書館管理系統(tǒng),大家可以在過(guò)程中查缺補(bǔ)漏,提升水平
    2021-11-11
  • java組件smartupload實(shí)現(xiàn)上傳文件功能

    java組件smartupload實(shí)現(xiàn)上傳文件功能

    這篇文章主要為大家詳細(xì)介紹了java組件smartupload實(shí)現(xiàn)上傳文件功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-10-10
  • 深入了解Java設(shè)計(jì)模式之UML類圖

    深入了解Java設(shè)計(jì)模式之UML類圖

    UML?即?Unified?Modeling?Language?統(tǒng)一建模語(yǔ)言,是用來(lái)設(shè)計(jì)軟件的可視化建模語(yǔ)言。本文就帶大家了解一下UML中類圖的定義與使用,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2022-11-11
  • 深入淺出重構(gòu)Mybatis與Spring集成的SqlSessionFactoryBean(上)

    深入淺出重構(gòu)Mybatis與Spring集成的SqlSessionFactoryBean(上)

    通常來(lái)講,重構(gòu)是指不改變功能的情況下優(yōu)化代碼,但本文所說(shuō)的重構(gòu)也包括了添加功能。這篇文章主要介紹了重構(gòu)Mybatis與Spring集成的SqlSessionFactoryBean(上)的相關(guān)資料,需要的朋友可以參考下
    2016-11-11
  • java后臺(tái)發(fā)起get請(qǐng)求獲取響應(yīng)數(shù)據(jù)

    java后臺(tái)發(fā)起get請(qǐng)求獲取響應(yīng)數(shù)據(jù)

    這篇文章主要為大家詳細(xì)介紹了java后臺(tái)發(fā)起get請(qǐng)求獲取響應(yīng)數(shù)據(jù),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-08-08

最新評(píng)論