亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

SpringBoot-Admin的使用

vslam / 3177人閱讀

摘要:端項(xiàng)目依賴添加是為了使應(yīng)用處于啟動(dòng)狀態(tài),會(huì)自動(dòng)添加相關(guān)依賴。接下來(lái)以作為服務(wù)發(fā)現(xiàn)的示例來(lái)進(jìn)行演示,實(shí)際上也可以使用或者。最后是一個(gè)用方式監(jiān)聽(tīng)的使用連接端

前情提要】Spring Boot Actuator 提供了對(duì)單個(gè) Spring Boot 應(yīng)用的監(jiān)控,信息包含應(yīng)用狀態(tài)、內(nèi)存、線程、堆棧等,比較全面的監(jiān)控了 Spring Boot 應(yīng)用的整個(gè)生命周期。但是這樣監(jiān)控也有一些問(wèn)題:第一,所有的監(jiān)控都需要調(diào)用固定的接口來(lái)查看,如果全面查看應(yīng)用狀態(tài)需要調(diào)用很多接口,并且接口返回的 JSON 信息不方便運(yùn)營(yíng)人員理解;第二,如果 Spring Boot 應(yīng)用集群非常大,每個(gè)應(yīng)用都需要調(diào)用不同的接口來(lái)查看監(jiān)控信息,操作非常繁瑣低效。在這樣的背景下,就誕生了另外一個(gè)開(kāi)源軟件:Spring Boot Admin。

壹、什么是Spring Boot Admin

Spring Boot Admin 是一個(gè)管理和監(jiān)控 Spring Boot 應(yīng)用程序的開(kāi)源軟件,每個(gè)應(yīng)用都認(rèn)為是一個(gè)客戶端,通過(guò) HTTP 或者使用 Eureka 注冊(cè)到 admin server 中進(jìn)行展示,Spring Boot Admin UI 部分使用 Vue.js 將數(shù)據(jù)展示在前端。

Spring Boot Admin 是一個(gè)針對(duì) Spring Boot 的 Actuator 接口進(jìn)行 UI 美化封裝的監(jiān)控工具,它可以在列表中瀏覽所有被監(jiān)控 spring-boot 項(xiàng)目的基本信息、詳細(xì)的 Health 信息、內(nèi)存信息、JVM 信息、垃圾回收信息、各種配置信息(比如數(shù)據(jù)源、緩存列表和命中率)等,還可以直接修改 logger 的 level。

值得注意的是 Spring Boot Admin 并不是 Spring Boot 官方出品的開(kāi)源軟件,但是其軟件質(zhì)量和使用廣泛度都非常的高,并且 Spring Boot Admin 會(huì)及時(shí)隨著 Spring Boot 的更新而更新,當(dāng) Spring Boot 推出 2.X 版本時(shí) Spring Boot Admin 也及時(shí)進(jìn)行了更新。

Spring Boot Admin 2.x 不僅是跟著支持了 Spring Boot 2.x,還在 1.x 的基礎(chǔ)上進(jìn)行了大量的更新和優(yōu)化:

重新規(guī)劃了項(xiàng)目依賴包,讓項(xiàng)目中更方便的集成 Spring Boot Admin
1.x 前端使用了 Angular.js,2.x 使用 Vue 對(duì)界面進(jìn)行了重寫(xiě),界面美觀度提升幅度非常高
提供了支持 Spring Cloud 的組件
其他更新,具體參考:Changes with 2.x

Spring Boot Admin 分為服務(wù)端和客戶端,服務(wù)端其實(shí)就是一個(gè)監(jiān)控后臺(tái)用來(lái)匯總展示所有的監(jiān)控信息,客戶端就是我們的應(yīng)用,使用時(shí)需要先啟動(dòng)服務(wù)端,在啟動(dòng)客戶端的時(shí)候打開(kāi) Actuator 的接口,并指向服務(wù)端的地址,這樣服務(wù)端會(huì)定時(shí)讀取相關(guān)信息以達(dá)到監(jiān)控的目的。

接下來(lái)演示如何使用 Spring Boot Admin 對(duì) Spring Boot 應(yīng)用進(jìn)行監(jiān)控。

貳、監(jiān)控單體應(yīng)用

先給大家展示如何使用 Spring Boot Admin 監(jiān)控單個(gè) Spring Boot 應(yīng)用。

Admin Server 端 項(xiàng)目依賴

  de.codecentric
  spring-boot-admin-starter-server
  2.1.0


  org.springframework.boot
  spring-boot-starter-web

2.x 下只需要添加此一個(gè)包即可,其他組件會(huì)自動(dòng)依賴添加。

配置文件

server.port=8000

服務(wù)端設(shè)置端口為:8000。

啟動(dòng)類
@EnableAdminServer
@SpringBootApplication
public class AdminServerApplication {

  public static void main(String[] args) {
    SpringApplication.run(AdminServerApplication.class, args);
  }
}

完成上面三步之后,啟動(dòng)服務(wù)端,訪問(wèn)網(wǎng)址 http://localhost:8000 可以看到以下界面:

因?yàn)閯倖?dòng)沒(méi)有應(yīng)用,因此顯示:No applications registered.,同時(shí)根據(jù)上圖也可以看出 applications 頁(yè)面會(huì)展示項(xiàng)目的應(yīng)用數(shù)、實(shí)例數(shù)和狀態(tài)三個(gè)信息。

接下來(lái)我們構(gòu)建一個(gè)客戶端,并注冊(cè)到服務(wù)端。

Admin Client 端 項(xiàng)目依賴

  
    de.codecentric
    spring-boot-admin-starter-client
    2.1.0
  
  
    org.springframework.boot
    spring-boot-starter-web
  

添加 spring-boot-starter-web 是為了使應(yīng)用處于啟動(dòng)狀態(tài),spring-boot-admin-starter-client 會(huì)自動(dòng)添加 Actuator 相關(guān)依賴。

配置文件
server.port=8001
spring.application.name=Admin Client
spring.boot.admin.client.url=http://localhost:8000  
management.endpoints.web.exposure.include=*
spring.boot.admin.client.url 配置 Admin Server 的地址
management.endpoints.web.exposure.include=* 打開(kāi)客戶端 Actuator 的監(jiān)控
啟動(dòng)類
@SpringBootApplication
public class AdminClientApplication {
  public static void main(String[] args) {
    SpringApplication.run(AdminClientApplication.class, args);
  }
}

配置完成之后,啟動(dòng) Client 端,Admin 服務(wù)端會(huì)自動(dòng)檢查到客戶端的變化,并展示其應(yīng)用:

頁(yè)面會(huì)展示被監(jiān)控的服務(wù)列表,點(diǎn)擊項(xiàng)目名稱會(huì)進(jìn)入此應(yīng)用的詳細(xì)監(jiān)控信息:

通過(guò)上圖可以看出,Spring Boot Admin 以圖形化的形式展示了應(yīng)用的各項(xiàng)信息,這些信息大多都來(lái)自于 Spring Boot Actuator 提供的接口。利用圖形化的形式很容易看到應(yīng)用的各項(xiàng)參數(shù)變化,甚至有些頁(yè)面還可以進(jìn)行一些操作,比如改變打印日志的級(jí)別等。

點(diǎn)擊 journal 頁(yè)面可以看到應(yīng)用狀態(tài)變化的歷史過(guò)程:

點(diǎn)擊第一個(gè)菜單 wallboard 可以以更形象的方式查看應(yīng)用數(shù)量啟動(dòng)的時(shí)間等。

叁、監(jiān)控微服務(wù)

如果我們使用的是單個(gè) Spring Boot 應(yīng)用,就需要在每一個(gè)被監(jiān)控的應(yīng)用中配置 Admin Server 的地址信息;如果應(yīng)用都注冊(cè)在 Eureka 中就不需要再對(duì)每個(gè)應(yīng)用進(jìn)行配置,Spring Boot Admin 會(huì)自動(dòng)從注冊(cè)中心抓取應(yīng)用的相關(guān)信息。

如果使用了 Spring Cloud 的服務(wù)發(fā)現(xiàn)功能,就不需要再多帶帶添加 Admin Client 客戶端,僅僅需要 Spring Boot Server,其他內(nèi)容會(huì)自動(dòng)進(jìn)行配置。

接下來(lái)以 Eureka 作為服務(wù)發(fā)現(xiàn)的示例來(lái)進(jìn)行演示,實(shí)際上也可以使用 Consul 或者 Zookeeper。

(1)服務(wù)端和客戶端添加 spring-cloud-starter-eureka 到包依賴中


    org.springframework.cloud
    spring-cloud-starter-netflix-eureka-client

(2)啟動(dòng)類添加注解

@Configuration
@EnableAutoConfiguration
@EnableDiscoveryClient
@EnableAdminServer
public class SpringBootAdminApplication {
    public static void main(String[] args) {
        SpringApplication.run(SpringBootAdminApplication.class, args);
    }

    @Configuration
    public static class SecurityPermitAllConfig extends WebSecurityConfigurerAdapter {
        @Override
        protected void configure(HttpSecurity http) throws Exception {
            http.authorizeRequests().anyRequest().permitAll()  
                .and().csrf().disable();
        }
    }
}

使用類 SecurityPermitAllConfig 關(guān)閉了安全驗(yàn)證。

(3)在客戶端中配置服務(wù)發(fā)現(xiàn)的地址

eureka:   
  instance:
    leaseRenewalIntervalInSeconds: 10
    health-check-url-path: /actuator/health
    metadata-map:
      startup: ${random.int}    #needed to trigger info and endpoint update after restart
  client:
    registryFetchIntervalSeconds: 5
    serviceUrl:
      defaultZone: ${EUREKA_SERVICE_URL:http://localhost:8761}/eureka/

management:
  endpoints:
    web:
      exposure:
        include: "*"  
  endpoint:
    health:
      show-details: ALWAYS

Spring Cloud 提供了示例代碼可以參考這里:spring-boot-admin-sample-eureka。

重啟啟動(dòng)服務(wù)端和客戶端之后,訪問(wèn)服務(wù)端的相關(guān)地址就可以看到監(jiān)控頁(yè)面了。

肆、安全控制

Spring Boot Admin 后臺(tái)有很多的敏感信息和操作,如果公司不做權(quán)限控制可能會(huì)影響到公司系統(tǒng)的安全性。Spring Boot Admin 也考慮到了這個(gè)因素,可以利用前面的 Spring Security 做安全訪問(wèn)控制,在 spring-boot-admin-server 上進(jìn)行改造。

(1)添加 Spring Boot Security 依賴包


    org.springframework.boot
    spring-boot-starter-security

(2)添加安全訪問(wèn)控制

和前面的 Security 配置一樣,給項(xiàng)目添加訪問(wèn)控制。

@Configuration
public  class SecuritySecureConfig extends WebSecurityConfigurerAdapter {
    private final String adminContextPath;

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

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        // @formatter:off
        SavedRequestAwareAuthenticationSuccessHandler successHandler = new SavedRequestAwareAuthenticationSuccessHandler();
        successHandler.setTargetUrlParameter("redirectTo");
        successHandler.setDefaultTargetUrl(adminContextPath + "/");

        http.authorizeRequests()
            .antMatchers(adminContextPath + "/assets/**").permitAll() 
            .antMatchers(adminContextPath + "/login").permitAll()
            .anyRequest().authenticated() 
            .and()
        .formLogin().loginPage(adminContextPath + "/login").successHandler(successHandler).and() 
        .logout().logoutUrl(adminContextPath + "/logout").and()
        .httpBasic().and() 
        .csrf()
            .csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse())  
            .ignoringAntMatchers(
                adminContextPath + "/instances",   
                adminContextPath + "/actuator/**"  
            );
    }
}

    antMatchers(adminContextPath + "/assets/**").permitAll() 所有靜態(tài)內(nèi)容不做安全驗(yàn)證
    anyRequest().authenticated() 其他請(qǐng)求均需要驗(yàn)證
    formLogin() 配置登錄
    logout() 配置登出
    httpBasic() 支持 HTTP,引導(dǎo) Spring Boot Admin 客戶端注冊(cè)
    csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse()) 打開(kāi)跨站點(diǎn)請(qǐng)求保護(hù) Cookies
    adminContextPath + "/instances" 取消跨站點(diǎn)請(qǐng)求保護(hù) "/instances",方便 Admin 客戶端注冊(cè)
    adminContextPath + "/actuator/** " 取消跨站點(diǎn)請(qǐng)求保護(hù) "/actuator/**",可以讓 Admin 監(jiān)控到 Actuator 的相關(guān)接口

然后可以給 security 設(shè)置一個(gè)用戶名和密碼:

spring.security.user.name=admin
spring.security.user.password=admin

配置完成之后重啟 Admin Server 端,訪問(wèn)網(wǎng)址 http://localhost:8000 就會(huì)發(fā)現(xiàn)需要一個(gè)登錄的用戶名和密碼了。

使用剛才設(shè)置的用戶名和密碼登錄之后,發(fā)現(xiàn)注冊(cè)到 Server 端的服務(wù)數(shù)成為 0 了,這是客戶端統(tǒng)一也需要配置帳戶名和密碼信息。

spring.security.user.name=admin
spring.security.user.password=admin

配置完成之后重新啟動(dòng),在服務(wù)端就又可以查看監(jiān)控到的應(yīng)用了。

伍、其他方式

如果 Actuator 的端口被使用 HTTP 認(rèn)證保護(hù),那么 Spring Boot Admin Server 訪問(wèn)的時(shí)候需要憑證信息,這時(shí)候可以使用 metadata 的方式對(duì)賬戶和密碼進(jìn)行配置。

直接使用客戶端注冊(cè)的方式:
spring.boot.admin.client:
    url: http://localhost:8080
    instance:
      metadata:
        user.name: ${spring.security.user.name}
        user.password: ${spring.security.user.password}
使用 Eureka 進(jìn)行注冊(cè)的方式:
eureka:
  instance:
    metadata-map:
      user.name: ${spring.security.user.name}
      user.password: ${spring.security.user.password}

Eureka 中的 metadataMap 是專門(mén)用來(lái)存放一些自定義的數(shù)據(jù),當(dāng)注冊(cè)中心或者其他服務(wù)需要此服務(wù)的某些配置時(shí)可以在 metadataMap 里取。實(shí)際上,每個(gè) instance 都有各自的 metadataMap,map 中存放著需要用到的屬性。例如,上面配置中的 eureka.instance.metadata-map.user.name,當(dāng)這個(gè)服務(wù)成功注冊(cè)到 Eureka 上,Spring Boot Admin 就會(huì)拿到這個(gè) instance,進(jìn)而拿到 metadataMap 里的屬性,然后放入請(qǐng)求頭,向此服務(wù)發(fā)送請(qǐng)求,訪問(wèn)此服務(wù)的 Actuator 開(kāi)放的端點(diǎn)。

陸、郵件告警

Spring Boot Admin 將微服務(wù)中所有應(yīng)用信息在后臺(tái)進(jìn)行了展示,非常方便我們對(duì)微服務(wù)整體的監(jiān)控和治理。但是我們的運(yùn)營(yíng)人員也不可能一天 24 小時(shí)盯著監(jiān)控后臺(tái),因此如果服務(wù)有異常的時(shí)候,有對(duì)應(yīng)的郵件告警就太好了,其實(shí) Spring Boot Admin 也給出了支持。

我們對(duì)上面的示例項(xiàng)目 spring-boot-admin-server 進(jìn)行改造。

添加依賴

  org.springframework.boot
  spring-boot-starter-mail
增加了郵件發(fā)送的 starter 包。 配置文件
spring.mail.host=smtp.qq.com
spring.mail.username=xxx@qq.com
spring.mail.password=xxx
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true
spring.mail.properties.mail.smtp.starttls.required=true
spring.boot.admin.notify.mail.from=yyyy@qq.com
spring.boot.admin.notify.mail.to=zzz@qq.com

在配置文件中添加郵件發(fā)送相關(guān)信息:郵件的發(fā)送者、接受者、協(xié)議、移動(dòng)授權(quán)碼等

配置完成后,重新啟動(dòng)項(xiàng)目 spring-boot-admin-server,這樣 Admin Server 就具備了郵件告警的功能,默認(rèn)情況下 Admin Server 對(duì) Eureka 中的服務(wù)上下線都進(jìn)行了監(jiān)控,當(dāng)服務(wù)上下線的時(shí)候我們就會(huì)收到相應(yīng)的告警郵件。

當(dāng)然這只是最基本的郵件監(jiān)控,在實(shí)際的使用過(guò)程中,需要根據(jù)情況對(duì)郵件告警內(nèi)容進(jìn)行自定義,比如監(jiān)控堆內(nèi)存的使用情況,當(dāng)?shù)竭_(dá)一定比例的時(shí)候進(jìn)行告警等。

【寫(xiě)在后面的話】Spring Boot Admin 解決了我們對(duì)大規(guī)模 Spring Boot 應(yīng)用監(jiān)控的需求,Spring Boot Admin 充分利用了 Actuator 開(kāi)放的相關(guān)接口,采用優(yōu)秀的圖形界面將這些信息進(jìn)行了展示,方便我們更加直觀的查看集群中應(yīng)用的狀態(tài)。Spring Boot Admin 不僅可以監(jiān)控單個(gè) Spring Boot 應(yīng)用,也可以結(jié)合 Spring Cloud 監(jiān)控注冊(cè)到服務(wù)中心的所有應(yīng)用狀態(tài),再結(jié)合報(bào)警系統(tǒng)的使用就可以隨時(shí)感知到應(yīng)用的狀態(tài)變化。在實(shí)際工作中 Spring Boot Admin 是我們?cè)诤笃谶\(yùn)營(yíng)中頻繁用到的一個(gè)組件,應(yīng)該作為重點(diǎn)關(guān)注。

最后是一個(gè)用http方式監(jiān)聽(tīng)的demo:Spring Boot Admin使用http連接server端

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/76087.html

相關(guān)文章

  • 基于SpringCloud FinchleySR1 SpringBoot 2x vue elemen

    摘要:介紹是基于微服務(wù)基礎(chǔ)腳手架對(duì)于日常開(kāi)發(fā)而言提供基礎(chǔ)權(quán)限控制,動(dòng)態(tài)菜單,才用前后端分離架構(gòu),前臺(tái)采用后臺(tái)使用提供接口。對(duì)于以后開(kāi)發(fā),只需要在添加業(yè)務(wù)模塊即可,大大減少工作量。 介紹 panda是基于SpringCloud Finchley.SR1 、SpringBoot 2.x、 vue、element-ui 微服務(wù)基礎(chǔ)腳手架對(duì)于日常開(kāi)發(fā)而言提供基礎(chǔ)權(quán)限控制,動(dòng)態(tài)菜單,才用前后端分離架構(gòu)...

    lansheng228 評(píng)論0 收藏0
  • Spring 指南(目錄)

    摘要:指南無(wú)論你正在構(gòu)建什么,這些指南都旨在讓你盡快提高工作效率使用團(tuán)隊(duì)推薦的最新項(xiàng)目版本和技術(shù)。使用進(jìn)行消息傳遞了解如何將用作消息代理。安全架構(gòu)的主題指南,這些位如何組合以及它們?nèi)绾闻c交互。使用的主題指南以及如何為應(yīng)用程序創(chuàng)建容器鏡像。 Spring 指南 無(wú)論你正在構(gòu)建什么,這些指南都旨在讓你盡快提高工作效率 — 使用Spring團(tuán)隊(duì)推薦的最新Spring項(xiàng)目版本和技術(shù)。 入門(mén)指南 這些...

    only_do 評(píng)論0 收藏0
  • 不得不提前端性能優(yōu)化

    摘要:對(duì)于廣大的前端開(kāi)發(fā)人員來(lái)說(shuō),網(wǎng)站構(gòu)建本是家常便飯其中也不得不涉及到性能優(yōu)化的問(wèn)題。將不影響首屏的資源和當(dāng)前屏幕資源不用的資源放到用戶需要時(shí)才加載,可以大大提升重要資源的顯示速度和降低總體流量按需加載會(huì)導(dǎo)致大量重繪,影響渲染性能。對(duì)于廣大的前端開(kāi)發(fā)人員來(lái)說(shuō),網(wǎng)站構(gòu)建本是家常便飯;其中也不得不涉及到性能優(yōu)化的問(wèn)題。之前也有接觸過(guò),今天總結(jié)一下這方面的技巧,下面是我的一下認(rèn)知,歡迎探討: ? Nu...

    xushaojieaaa 評(píng)論0 收藏0
  • MongoDB指南---12、使用explain()和hint()、何時(shí)不應(yīng)該使用索引

    摘要:表示本次查詢使用了索引,具體來(lái)說(shuō),是使用了和上的索引,。建立索引時(shí),或者是每執(zhí)行次查詢之后,查詢優(yōu)化器都會(huì)重新評(píng)估查詢計(jì)劃。上一篇文章指南使用復(fù)合索引操作符如何使用索引索引對(duì)象和數(shù)組索引基數(shù)下一篇文章指南索引類型 上一篇文章:MongoDB指南---11、使用復(fù)合索引、$操作符如何使用索引、索引對(duì)象和數(shù)組、索引基數(shù)下一篇文章:MongoDB指南---13、索引類型 使用explain...

    LiangJ 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<