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

使用?Spring?Boot?Admin?監(jiān)控應(yīng)用狀態(tài)的詳細(xì)過(guò)程

 更新時(shí)間:2022年09月10日 08:29:11   作者:程序員優(yōu)雅哥(\/同)  
這篇文章主要介紹了使用?Spring?Boot?Admin?監(jiān)控應(yīng)用狀態(tài),該模塊采集應(yīng)用的內(nèi)部信息,并暴露給外部的模塊,支持?HTTP?和?JMX,并可以與一些第三方監(jiān)控系統(tǒng)(如?Prometheus)整合,需要的朋友可以參考下

pring Boot Actuator 是 Spring Boot 提供的對(duì)應(yīng)用的自省和監(jiān)控功能,如健康檢查,審計(jì),指標(biāo)收集,HTTP 跟蹤等,可以幫助開(kāi)發(fā)和運(yùn)維人員監(jiān)控和管理 Spring Boot 應(yīng)用。該模塊采集應(yīng)用的內(nèi)部信息,并暴露給外部的模塊,支持 HTTP 和 JMX,并可以與一些第三方監(jiān)控系統(tǒng)(如 Prometheus)整合。

程序員優(yōu)雅哥 SpringBoot 2.7 實(shí)戰(zhàn)基礎(chǔ) - 11 - 使用 Spring Boot Admin 監(jiān)控應(yīng)用狀態(tài)

1 Spring Boot Actuator

Spring Boot Actuator 是 Spring Boot 提供的對(duì)應(yīng)用的自省和監(jiān)控功能,如健康檢查,審計(jì),指標(biāo)收集,HTTP 跟蹤等,可以幫助開(kāi)發(fā)和運(yùn)維人員監(jiān)控和管理 Spring Boot 應(yīng)用。該模塊采集應(yīng)用的內(nèi)部信息,并暴露給外部的模塊,支持 HTTP 和 JMX,并可以與一些第三方監(jiān)控系統(tǒng)(如 Prometheus)整合。

1.1 Actuator endpoint

端點(diǎn) Endpoint 是 Actuator 的核心組成部分,用來(lái)監(jiān)視應(yīng)用程序的各種狀態(tài)。 Spring Boot Actuator 內(nèi)置很多 Endpoint,總體上看分成三類(lèi):

應(yīng)用配置類(lèi):主要包括配置信息、Spring Bean 的信息、配置文件信息、環(huán)境信息等;度量指標(biāo)類(lèi):應(yīng)用在運(yùn)行期間的信息,包括堆棧、健康狀態(tài)、線(xiàn)程池信息、HTTP請(qǐng)求統(tǒng)計(jì)等;操作控制類(lèi):如 shutdown,提供了對(duì)應(yīng)用的關(guān)閉等操作類(lèi)功能。

1.2 添加依賴(lài)

在 pom.xml 中添加 Actuator 的 starter:

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

1.3 訪(fǎng)問(wèn)端點(diǎn)

添加依賴(lài)后,啟動(dòng)服務(wù),可通過(guò)如下請(qǐng)求查看暴露的端點(diǎn):

http://localhost:9099/actuator

該請(qǐng)求返回:

{
	"_links": {
		"self": {
			"href": "http://localhost:9099/actuator",
			"templated": false
		},
		"health-path": {
			"href": "http://localhost:9099/actuator/health/{*path}",
			"templated": true
		},
		"health": {
			"href": "http://localhost:9099/actuator/health",
			"templated": false
		}
	}
}

從返回的結(jié)果可以看出默認(rèn)只開(kāi)放了 /actuator/health 端點(diǎn)。訪(fǎng)問(wèn)該端點(diǎn) http://localhost:9099/actuator/health

{"status":"UP"}

其他未開(kāi)放的端點(diǎn)可以獨(dú)立配置開(kāi)啟或禁用。

在 application.yml 中添加如下配置,開(kāi)放所有的端點(diǎn),并顯示詳細(xì)的 health:

management:
  endpoints:
    web:
      exposure:
        include: '*'
  endpoint:
    health:
      show-details: always

重啟服務(wù),再次查看暴露的端點(diǎn),可以看出有如下端點(diǎn):

2 Spring Boot Admin

Spring Boot Actuator 提供了各種端點(diǎn),Spring Boot Admin 能夠?qū)?Actuator 中的信息進(jìn)行界面化的展示,并提供實(shí)時(shí)報(bào)警功能。

在微服務(wù)環(huán)境中,使用 Spring Boot Admin,通常包括服務(wù)端和客戶(hù)端,服務(wù)端只運(yùn)行 Spring Boot Admin Server,收集各個(gè)客戶(hù)端的數(shù)據(jù),并以可視化界面顯示出來(lái)??蛻?hù)端運(yùn)行 Spring Boot Admin Client,或者通過(guò)服務(wù)發(fā)現(xiàn)與注冊(cè)獲取應(yīng)用的信息。

這里的 demo 我就不在 Spring Boot Admin Server了,將當(dāng)前 hero-springboot-demo 既作為 server、也作為 client 使用。在后面的實(shí)戰(zhàn)篇章中會(huì)獨(dú)立 Admin Server,同時(shí)客戶(hù)端也不使用 client,而是通過(guò)服務(wù)注冊(cè)與發(fā)現(xiàn)。

2.1 添加依賴(lài)

在 pom.xml 中添加 Spring Boot Admin Server 的依賴(lài):

<!-- 實(shí)戰(zhàn)中該依賴(lài)只在獨(dú)立的 Admin Server 中使用,此處僅為測(cè)試 -->
<dependency>
    <groupId>de.codecentric</groupId>
    <artifactId>spring-boot-admin-starter-server</artifactId>
    <version>2.7.4</version>
</dependency>
<!-- 實(shí)戰(zhàn)中客戶(hù)端也不需要添加該依賴(lài),而是通過(guò)服務(wù)發(fā)現(xiàn)與注冊(cè),此處僅為測(cè)試 -->
<dependency>
    <groupId>de.codecentric</groupId>
    <artifactId>spring-boot-admin-starter-client</artifactId>
    <version>2.7.4</version>
</dependency>

需要注意版本號(hào),由于 Spring Boot 版本使用的是 2.7.x,Spring Boot Admin Server 的版本也要用 2.7.x,千萬(wàn)別亂搞!

2.2 開(kāi)啟 Admin Server

在啟動(dòng)類(lèi) DemoApplication 上添加注解 @EnableAdminServer 開(kāi)啟 Spring Boot Admin Server。

@EnableAdminServer
@EnableAsync
@MapperScan("com.yygnb.demo.mapper")
@SpringBootApplication
public class DemoApplication {
  ...
}

2.3 配置客戶(hù)端

在 application.yml 中添加如下配置:

  • 配置 Admin Server 的 context-path;
  • 為客戶(hù)端配置 Admin Server 的地址。
spring:
  application:
    name: hero-springboot-demo
  boot:
    admin:
      client:
        url: 'http://localhost:9099/monitor'
      context-path: '/monitor'

2.4 訪(fǎng)問(wèn) Admin Server

重啟服務(wù),在瀏覽器中訪(fǎng)問(wèn) Spring Boot Admin Server:

http://localhost:9099/monitor

可以看到當(dāng)前應(yīng)用的作為客戶(hù)端注冊(cè)到 Admin Server 上:

再次強(qiáng)調(diào),上述操作僅僅針對(duì)demo學(xué)習(xí),非真實(shí)的企業(yè)級(jí)開(kāi)發(fā)!

3 自定義告警

當(dāng)應(yīng)用狀態(tài)異常時(shí),Spring Boot Admin 會(huì)自動(dòng)實(shí)時(shí)告警,而告警的方式可以由我們自定義。這里模擬日志的方式。

在 config 包下創(chuàng)建類(lèi) DemoNotifier,該類(lèi)繼承自 AbstractEventNotifier

@Slf4j
@Component
public class DemoNotifier extends AbstractEventNotifier {

    protected DemoNotifier(InstanceRepository repository) {
        super(repository);
    }

    @Override
    protected Mono<Void> doNotify(InstanceEvent event, Instance instance) {
        return Mono.fromRunnable(() -> log.error("Instance info: {}, {}, {}",
                instance.getRegistration().getName(), event.getInstance(),
                event.getType()));
    }
}

此時(shí),注冊(cè)到這個(gè)Admin Server的其他客戶(hù)端啟動(dòng)、停止等,當(dāng)前應(yīng)用都會(huì)監(jiān)聽(tīng)到事件,輸出日志。實(shí)戰(zhàn)中可以在這里面發(fā)送郵件、消息等。

4 登錄訪(fǎng)問(wèn)

上面配置的 Admin Server 無(wú)需登錄就可以訪(fǎng)問(wèn),在真實(shí)開(kāi)發(fā)中需要登錄后才能訪(fǎng)問(wèn)。admin server 也提供了登錄頁(yè)面。

4.1 添加依賴(lài)

在 pom.xml 添加 Spring Security 的依賴(lài):

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

4.2 配置用戶(hù)名密碼

在 application.yml 中配置登錄的用戶(hù)名和密碼:

spring:
  application:
    name: hero-springboot-demo
  boot:
    admin:
      client:
        url: 'http://localhost:9099/monitor'
      context-path: '/monitor'
  security:
    user:
      name: admin
      password: 111111

上面的配置在之前的基礎(chǔ)上增加了:spring.security.user 的配置。

4.3 添加配置類(lèi)

在 config 包下添加 Spring Security 的配置類(lèi) SecurityConfig

@Configuration
public class SecurityConfig {

    private final String adminContextPath;

    public SecurityConfig(AdminServerProperties adminServerProperties) {
        this.adminContextPath = adminServerProperties.getContextPath();
    }

    @Bean
    public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
        SavedRequestAwareAuthenticationSuccessHandler successHandler =
                new SavedRequestAwareAuthenticationSuccessHandler();
        successHandler.setTargetUrlParameter("redirectTo");
        successHandler.setDefaultTargetUrl(adminContextPath + "/");
        return http.authorizeHttpRequests(auth -> auth.antMatchers(
                                        adminContextPath + "/assets/**",
                                        adminContextPath + "/login",
                                        adminContextPath + "/instances",
                                        adminContextPath + "/actuator/**"
                                ).permitAll()
                                .antMatchers(adminContextPath + "/**").authenticated()
                                .anyRequest().permitAll()
                ).formLogin(form -> form.loginPage(adminContextPath + "/login")
                        .successHandler(successHandler)
                ).logout(logout -> logout.logoutUrl(adminContextPath + "/logout"))
                .csrf(AbstractHttpConfigurer::disable)
                .build();
    }
}

上面配置文件中的 adminContextPath 就是前面配置的 spring.boot.admin.context-path,即 /monitor。

上面配置包括幾個(gè)部分:

  • 僅對(duì)路徑 /monitor/** 請(qǐng)求權(quán)限控制;
  • 登錄頁(yè)面和登錄成功后的默認(rèn)地址;
  • 表單登錄配置;
  • 禁用 CSRF。

4.4 測(cè)試運(yùn)行

重啟服務(wù),訪(fǎng)問(wèn)之前開(kāi)發(fā)的 computer 等接口,可以正常訪(fǎng)問(wèn);如果訪(fǎng)問(wèn) /monitor 等路徑,就會(huì)跳轉(zhuǎn) Spring Boot Admin 提供的登錄頁(yè):

使用配置的用戶(hù)名密碼(admin/111111)登錄,登錄成功后進(jìn)入 Admin Server 頁(yè)面。

感謝你閱讀本文,如果本文給了你一點(diǎn)點(diǎn)幫助或者啟發(fā),還請(qǐng)三連支持一下,點(diǎn)贊、關(guān)注、收藏,作者會(huì)持續(xù)與大家分享更多干貨

相關(guān)文章

  • SpringBoot?@Configuration與@Bean注解使用介紹

    SpringBoot?@Configuration與@Bean注解使用介紹

    這篇文章主要介紹了SpringBoot中的@Configuration與@Bean注解,在進(jìn)行項(xiàng)目編寫(xiě)前,我們還需要知道一個(gè)東西,就是SpringBoot對(duì)我們的SpringMVC還做了哪些配置,包括如何擴(kuò)展,如何定制,只有把這些都搞清楚了,我們?cè)谥笫褂貌艜?huì)更加得心應(yīng)手
    2022-10-10
  • Java多線(xiàn)程中的Balking模式詳解

    Java多線(xiàn)程中的Balking模式詳解

    大家好,本篇文章主要講的是Java多線(xiàn)程中的Balking模式詳解,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話(huà)記得收藏一下
    2022-01-01
  • IntelliJ IDEA像Eclipse一樣打開(kāi)多個(gè)項(xiàng)目的圖文教程

    IntelliJ IDEA像Eclipse一樣打開(kāi)多個(gè)項(xiàng)目的圖文教程

    這篇文章主要介紹了IntelliJ IDEA像Eclipse一樣打開(kāi)多個(gè)項(xiàng)目的方法圖文教程講解,需要的朋友可以參考下
    2018-03-03
  • Java中字符串常見(jiàn)的一些拼接方式總結(jié)

    Java中字符串常見(jiàn)的一些拼接方式總結(jié)

    字符串拼接是我們?cè)贘ava代碼中比較經(jīng)常要做的事情,就是把多個(gè)字符串拼接到一起,下面這篇文章主要給大家總結(jié)介紹了關(guān)于Java中字符串常見(jiàn)的一些拼接方式,需要的朋友可以參考下
    2023-04-04
  • Java 處理超大數(shù)類(lèi)型之BigInteger案例詳解

    Java 處理超大數(shù)類(lèi)型之BigInteger案例詳解

    這篇文章主要介紹了Java 處理超大數(shù)類(lèi)型之BigInteger案例詳解,本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-09-09
  • Java中雙大括號(hào)初始化的理解與使用

    Java中雙大括號(hào)初始化的理解與使用

    最近重讀Java 編程思想,讀到有關(guān)實(shí)例化代碼塊兒的內(nèi)容,使我對(duì)于使用兩個(gè)大括號(hào)進(jìn)行初始化有了更深的理解,下面這篇文章主要給大家介紹了關(guān)于Java中雙大括號(hào)初始化的理解與使用的相關(guān)資料,需要的朋友可以參考下
    2022-06-06
  • java封裝前端查詢(xún)條件通用版

    java封裝前端查詢(xún)條件通用版

    這篇文章主要為大家詳細(xì)介紹了java封裝前端查詢(xún)條件的通用版,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-05-05
  • Java使用DSA密鑰對(duì)生成XML簽名的方法

    Java使用DSA密鑰對(duì)生成XML簽名的方法

    這篇文章主要介紹了Java使用DSA密鑰對(duì)生成XML簽名的方法,實(shí)例分析了java使用DSA密鑰對(duì)生成XML簽名的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-03-03
  • java 算法二分查找和折半查找

    java 算法二分查找和折半查找

    這篇文章主要介紹了java 算法二分查找與折半查找的相關(guān)資料,需要的朋友可以參考下
    2017-05-05
  • java基于socket傳輸zip文件功能示例

    java基于socket傳輸zip文件功能示例

    這篇文章主要介紹了java基于socket傳輸zip文件功能,結(jié)合實(shí)例形式分析了java使用socket進(jìn)行文件傳輸?shù)木唧w操作步驟與服務(wù)器端、客戶(hù)端相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2017-07-07

最新評(píng)論