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

SpringBoot中如何對actuator進行關(guān)閉

 更新時間:2023年03月09日 11:00:27   作者:菜鳥是大神  
這篇文章主要介紹了SpringBoot中如何對actuator進行關(guān)閉問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

SpringBoot對actuator進行關(guān)閉

management:
  endpoint:
    health:
      show-details: ALWAYS
  endpoints:
    enabled-by-default: false #關(guān)閉監(jiān)控
    web:
      exposure:
        include: '*'

SpringBoot actuator知識梳理

Spring Boot的Actuator。它提供了很多生產(chǎn)級的特性,比如監(jiān)控和度量Spring Boot應(yīng)用程序。Actuator的這些特性可以通過眾多REST端點、遠程shell和JMX獲得。

【使用環(huán)境】

【1】SpringBoot版本2.5.0、JDK11

【2】服務(wù)端口 9999

添加依賴

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

啟動項目,訪問/actuator端點,SpringBoot2.X版本默認只開啟了如下端點

可以通過下面的方式開啟其他的端點,如果需要關(guān)閉某些端點可以在exclude中設(shè)置。

management:
  endpoints:
    web:
      exposure:
        include: "*"
        exclude: ""

重新啟動項目,可以看到現(xiàn)在展示的端點增加了很多

官方文檔:

https://docs.spring.io/spring-boot/docs/current/reference/html/actuator.html#actuator.endpoints

Actuator端點整理

/autoconfig和/conditions 獲取自動配置條件

提供了一份自動配置報告,記錄哪些自動配置條件通過了,哪些沒通過。新版本已經(jīng)調(diào)整為conditions。Spring Boot自動配置構(gòu)建于Spring的條件化配置之上。它提供了眾多帶有@Conditional注解的配置類,根據(jù)條件決定是否要自動配置這些Bean。/autoconfig端點提供了一個報告,列出了計算過的所有條件,根據(jù)條件是否通過進行分組。

端點:http://localhost:9999/actuator/conditions

【舉例】

上面是失敗的一個條件示例,如圖所示是JdbcTemplate,這個類可以幫助我們操作數(shù)據(jù)庫。因為未引入相關(guān)的依賴類所以正如它的提示信息所說:

“message”: “@ConditionalOnClass did not find required class ‘org.springframework.jdbc.core.JdbcTemplate’”

檢查Classpath沒有要求的JdbcTemplate條件不成立,則不會進行自動配置

/beans 獲得Bean裝配報告

要了解應(yīng)用程序中Spring上下文的情況,最重要的端點就是/beans。它會返回一個JSON文檔,描述上下文里每個Bean的情況,包括其Java類型以及注入的其他Bean。

請求端點:/actuator/beans

/env端點查看配置屬性

/env端點會生成應(yīng)用程序可用的所有環(huán)境屬性的列表,無論這些屬性是否用到。這其中包括環(huán)境變量、JVM屬性、命令行參數(shù),以及applicaition.properties或application.yml文件提供的屬性。

端點:/actuator/env

/env提供了一些安全策略保護配置的隱私性。為了避免此類信息暴露到/env里,所有名為password、secret、key(或者名字中最后一段是這些)的屬性在/env里都會加上“*”,參考如下:

/mapping請求URL映射

/mapping端點展示了所有@RequestMapping 請求路徑

請求端點:/actuator/mappings

【測試接口】

    @GetMapping(value = "/hello", produces = "application/json;charset=utf-8")
    public String hello(@RequestParam("name") String name) {
        return "hello world";
    }

每個映射的值都有兩個屬性:bean和method。bean屬性標識了Spring

Bean的名字,映射源自這個Bean。method屬性是映射對應(yīng)方法的全限定方法簽名。

/metrics運行時指標監(jiān)控

/metrics為我們提供了對運行時度量情況的一個監(jiān)控,能夠在運行時快速檢查應(yīng)用程序。

端點:/actuator/metrics

主要的監(jiān)控事項如下:

/metrics端點會返回所有的可用度量值,但你也可能只對某個值感興趣。要獲取單個值,請求時可以在URL后加上對應(yīng)的鍵名。

如上圖所示,查詢jvm最大內(nèi)存,結(jié)果值大約為6G。

/httptrace 追蹤Web請求

/httptrace端點能報告所有Web請求的詳細信息,包括請求方法、路徑、時間戳以及請求和響應(yīng)的頭信息。

【請求端點】/actuator/httptrace

默認情況下httptrace沒有啟用,它要求一個HttpTraceRepository 的對象Bean.

在系統(tǒng)中創(chuàng)建如下配置,提供一個HttpTraceRepository 類型的Bean,這里選擇的是InMemoryHttpTraceRepository內(nèi)存存儲的方式。該方式默認提供最新的100條請求記錄。

import org.springframework.boot.actuate.trace.http.HttpTraceRepository;
import org.springframework.boot.actuate.trace.http.InMemoryHttpTraceRepository;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class HttpTraceActuatorConfiguration {

    @Bean
    public HttpTraceRepository httpTraceRepository() {
        return new InMemoryHttpTraceRepository();
    }

}

/dump 導出線程快照

/dump端點會生成當前線程活動的快照。完整的線程導出報告里會包含應(yīng)用程序的每個線程。其中包含很多線程的特定信息,還有線程相關(guān)的阻塞和鎖狀態(tài)。

【請求端點】/threaddump

【測試】

     Thread thread = new Thread(() -> {
            try {
                Thread.sleep(1000000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }, "測試線程");
        thread.start();

/shutdown 優(yōu)雅的關(guān)閉應(yīng)用程序

/shutdown可以讓應(yīng)用服務(wù)優(yōu)雅的關(guān)閉,默認是關(guān)閉的。假設(shè)你要關(guān)閉運行中的應(yīng)用程序。比方說,在微服務(wù)架構(gòu)中,你有多個微服務(wù)應(yīng)用的實例運行在云上,其中某個實例有問題了,你決定關(guān)閉該實例并重啟這個有問題的應(yīng)用程序。在這個場景中,Actuator的/shutdown端點就很有用了。

優(yōu)雅的關(guān)閉和kill -9的方式是相對的,它不會粗暴的立馬關(guān)閉應(yīng)用,而是會釋放相關(guān)鏈接以及執(zhí)行SpringBoot容器停止后的一些操作,然后再關(guān)閉應(yīng)用。

【端點】/actuator/shutdown 要求POST請求方式

【示例】

在應(yīng)用中添加一個關(guān)閉前處理的鉤子方法

        Runtime.getRuntime().addShutdownHook(new Thread(() -> {
            System.out.println("關(guān)閉應(yīng)用,釋放資源");
        }));

可以看到通過/actuator/shutdown關(guān)閉應(yīng)用可以觸發(fā)這些關(guān)閉處理的鉤子函數(shù),方便我們在應(yīng)用停止時關(guān)閉一些連接以及做一些其他的處理。

整理

【1】上面實踐了一些Actuator端點示例,雖然Actuator提供的功能很強大,但是在如今的集群化,K8S容器化應(yīng)用部署下,這些直接訪問某些應(yīng)用的情況就變得很少了,比如監(jiān)控Zipkin 、Spring Cloud Sleuth等等,內(nèi)存監(jiān)控這一塊K8S容器化平臺也有很多。但是,去學習實踐這樣的一個工具也是很值得的,如果后面有類似監(jiān)控、關(guān)閉應(yīng)用、獲取請求URL映射、獲取配置等等,那么我們就可以去看看Actuator是如何做的,學習和擴展。

【2】本次的學習時看的《SpringBoot實戰(zhàn)》書籍的學習筆記,該書Actuator章節(jié)后在后面也提及了很多進階的知識,因為具體應(yīng)用場景不多,下面就簡單的整理下,把一些知識點記錄下來,如果后面需要在重點實踐學習下。

【3】《SpringBoot實戰(zhàn)》書籍關(guān)于Actuator介紹的一些使用可能在當下的版本中有些出入,這里貼上官方文檔地址,參考對比下https://docs.spring.io/spring-boot/docs/current/reference/html/actuator.html#actuator.enabling

【4】Actuator通過REST端點提供了不少非常有用的信息。另一個深入運行中應(yīng)用程序內(nèi)部的方式是使用遠程shell。Spring Boot集成了CRaSH,一種能嵌入任意Java應(yīng)用程序的shell。Spring Boot還擴展了CRaSH,添加了不少Spring Boot特有的命令,提供了與Actuator端點類似的功能。該工具附上應(yīng)用上,會在啟動時提供一個訪問秘鑰,我們通過ssh user@localhost -p 2000 的方式就可以去訪問,并且執(zhí)行一些命令去查看應(yīng)用數(shù)據(jù)。

【5】除了REST端點和遠程shell,Actuator還把它的端點以MBean的方式發(fā)布了出來,可以通過JMX來查看和管理。使用JMX是管理Spring Boot應(yīng)用程序的一個好方法,如果你已在用JMX管理應(yīng)用程序中的其他MBean,則尤其如此。

【6】前面我們使用了Actuator所提供好的一些內(nèi)置端點,我們也可以根據(jù)自己的需求擴展定制Actuator。

  • 實際上,Actuator有多種定制方式,包括以下五項。
  • 1:重命名端點。將默認的端點修改為我們自定義的端點地址。
  • 2:啟用和禁用端點。
  • 3:自定義度量信息。
  • 4:創(chuàng)建自定義倉庫來存儲跟蹤數(shù)據(jù)。
  • 5:插入自定義的健康指示器。

【7】到這里我們可以看到通過Actuator我們可以看到系統(tǒng)的很多信息,這對于開發(fā)者而言很好,但是在安全層面來說,如果不加以限制,那么系統(tǒng)的安全將會有很大隱患。Actuator的端點保護可以用和其他URL路徑一樣的方式——使用Spring Security。在Spring Boot應(yīng)用程序中,這意味著將Security起步依賴作為構(gòu)建依賴加入,然后讓安全相關(guān)的自動配置來保護應(yīng)用程序,其中當然也包括了Actuator端點。舉例來說,你想要保護/shutdown端點,僅允許擁有ADMIN權(quán)限的用戶訪問

總結(jié)

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

相關(guān)文章

  • Mybatis 一對多和多對一關(guān)聯(lián)查詢問題

    Mybatis 一對多和多對一關(guān)聯(lián)查詢問題

    這篇文章主要介紹了Mybatis 一對多和多對一關(guān)聯(lián)查詢問題,需要的朋友可以參考下
    2017-04-04
  • java案例實戰(zhàn)之字符串轉(zhuǎn)換為二進制

    java案例實戰(zhàn)之字符串轉(zhuǎn)換為二進制

    最近遇到個需求,要求編寫一個程序,從鍵盤錄入一個字符串,將字符串轉(zhuǎn)換為二進制數(shù),下面這篇文章主要給大家介紹了關(guān)于java字符串轉(zhuǎn)換為二進制的相關(guān)資料,需要的朋友可以參考下
    2023-06-06
  • 解決bufferedReader.readLine()讀到最后發(fā)生阻塞的問題

    解決bufferedReader.readLine()讀到最后發(fā)生阻塞的問題

    這篇文章主要介紹了解決bufferedReader.readLine()讀到最后發(fā)生阻塞的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • SpringBoot異步實現(xiàn) 的8種方式

    SpringBoot異步實現(xiàn) 的8種方式

    在同步操作中,執(zhí)行到?發(fā)送短信?的時候,我們必須等待這個方法徹底執(zhí)行完才能執(zhí)行?贈送積分?這個操作,如果?贈送積分?這個動作執(zhí)行時間較長,發(fā)送短信需要等待,這就是典型的同步場景,這篇文章主要介紹了SpringBoot異步實現(xiàn) 的8種方式,需要的朋友可以參考下
    2023-11-11
  • Mybatis-Plus進階分頁與樂觀鎖插件及通用枚舉和多數(shù)據(jù)源詳解

    Mybatis-Plus進階分頁與樂觀鎖插件及通用枚舉和多數(shù)據(jù)源詳解

    這篇文章主要介紹了Mybatis-Plus的分頁插件與樂觀鎖插件還有通用枚舉和多數(shù)據(jù)源的相關(guān)介紹,文中代碼附有詳細的注釋,感興趣的朋友來看看吧
    2022-03-03
  • 為何Java8需要引入新的日期與時間庫

    為何Java8需要引入新的日期與時間庫

    這篇文章主要給大家介紹了關(guān)于Java8為什么需要引入新的日期與時間庫的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-11-11
  • Java實現(xiàn)SHA算法的方法詳解

    Java實現(xiàn)SHA算法的方法詳解

    這篇文章主要介紹了Java實現(xiàn)SHA算法的方法,結(jié)合實例形式較為詳細的分析了Java實現(xiàn)sha算法的原理、實現(xiàn)與使用相關(guān)操作技巧,需要的朋友可以參考下
    2018-03-03
  • IntelliJ IDEA遠程Debug Linux的Java程序,找問題不要只會看日志了(推薦)

    IntelliJ IDEA遠程Debug Linux的Java程序,找問題不要只會看日志了(推薦)

    這篇文章主要介紹了IntelliJ IDEA遠程Debug Linux的Java程序,找問題不要只會看日志了,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-09-09
  • IP查詢系統(tǒng)的異步回調(diào)案例

    IP查詢系統(tǒng)的異步回調(diào)案例

    本文主要分享了IP查詢系統(tǒng)的異步回調(diào)案例,具有很好的參考價值,下面跟著小編一起來看下吧
    2017-02-02
  • 使用CXF和Jersey框架來進行Java的WebService編程

    使用CXF和Jersey框架來進行Java的WebService編程

    這篇文章主要介紹了使用CXF和Jersey框架來進行Java的WebService編程,Web service是一個平臺獨立的低耦合的自包含的基于可編程的web的應(yīng)用程序,需要的朋友可以參考下
    2015-12-12

最新評論