<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          實戰(zhàn):使用Spring Boot Admin實現(xiàn)運(yùn)維監(jiān)控平臺

          共 5263字,需瀏覽 11分鐘

           ·

          2021-12-09 21:12

          我們知道,使用Actuator可以收集應(yīng)用系統(tǒng)的健康狀態(tài)、內(nèi)存、線程、堆棧、配置等信息,比較全面地監(jiān)控了Spring Boot應(yīng)用的整個生命周期。但是還有一個問題:如何呈現(xiàn)這些采集到的應(yīng)用監(jiān)控數(shù)據(jù)、性能數(shù)據(jù)呢?在這樣的背景下,就誕生了另一個開源軟件Spring Boot Admin。下面就來介紹什么是Spring Boot Admin以及如何使用Spring Boot Admin搭建完整的運(yùn)維監(jiān)控平臺。


          一、什么是Spring Boot Admin

          Spring Boot Admin是一個管理和監(jiān)控Spring Boot應(yīng)用程序的開源項目,在對單一應(yīng)用服務(wù)監(jiān)控的同時也提供了集群監(jiān)控方案,支持通過eureka、consul、zookeeper等注冊中心的方式實現(xiàn)多服務(wù)監(jiān)控與管理。Spring Boot Admin UI部分使用Vue JS將數(shù)據(jù)展示在前端。

          Spring Boot Admin分為服務(wù)端(spring-boot-admin-server)和客戶端(spring-boot-admin-client)兩個組件:

          • spring-boot-admin-server通過采集actuator端點(diǎn)數(shù)據(jù)顯示在spring-boot-admin-ui上,已知的端點(diǎn)幾乎都有進(jìn)行采集。

          • spring-boot-admin-client是對Actuator的封裝,提供應(yīng)用系統(tǒng)的性能監(jiān)控數(shù)據(jù)。此外,還可以通過spring-boot-admin動態(tài)切換日志級別、導(dǎo)出日志、導(dǎo)出heapdump、監(jiān)控各項性能指標(biāo)等。

          Spring Boot Admin服務(wù)器端負(fù)責(zé)收集各個客戶的數(shù)據(jù)。各臺客戶端配置服務(wù)器地址,啟動后注冊到服務(wù)器。服務(wù)器不停地請求客戶端的信息(通過Actuator接口)。具體架構(gòu)如下圖所示。

          上圖為Spring Boot Admin的整體架構(gòu),在每個Spring Boot應(yīng)用程序上增加Spring Boot Admin Client組件。這樣每個Spring Boot應(yīng)用即Admin客戶端,Admin服務(wù)端通過請求Admin客戶端的接口收集所有的Spring Boot應(yīng)用信息并進(jìn)行數(shù)據(jù)呈現(xiàn),從而實現(xiàn)Spring Boot應(yīng)用監(jiān)控。


          二、使用Spring Boot Admin搭建運(yùn)維監(jiān)控平臺

          下面就通過示例,演示如何使用Spring Boot Admin 搭建運(yùn)維監(jiān)控平臺。

          1、創(chuàng)建服務(wù)器端

          Spring Boot Admin服務(wù)器端主要負(fù)責(zé)收集各個客戶的數(shù)據(jù)。建立一個Spring Boot Admin服務(wù)器端只需要簡單的兩步。下面通過示例演示創(chuàng)建Spring Boot Admin服務(wù)器端的過程。

          1. 配置依賴

          創(chuàng)建新的Spring Boot項目,在新建的項目中添加Spring Boot Admin服務(wù)器端的依賴JAR包:spring-boot-admin-starter-server。

          <dependency>   <groupId>de.codecentricgroupId>   <artifactId>spring-boot-admin-starter-serverartifactId>   <version>2.1.3version>dependency><dependency>   <groupId>org.springframework.bootgroupId>   <artifactId>spring-boot-starter-webartifactId>dependency>

          上面,我們添加加spring-boot-starter-web是為了讓應(yīng)用處于啟動狀態(tài)。


          2. 配置啟動端口

          修改系統(tǒng)配置文件application.properties,配置服務(wù)端的啟動端口為8000:

          server.port=8000


          3. 啟用Admin服務(wù)器

          使用@EnableAdminServer注解啟動Admin服務(wù)器,示例代碼如下:

          @SpringBootApplication// 啟用Admin服務(wù)器@EnableAdminServerpublic class AdminServerApplication {    public static void main(String[] args) {       SpringApplication.run(AdminServerApplication.class, args);    }}

          4. 運(yùn)行測試

          完成以上3步之后,啟動服務(wù)器端,在瀏覽器中訪問http://localhost:8000,可以看到如下所示的界面。


          從Admin服務(wù)端的啟動界面可以看到,Applications頁面會展示應(yīng)用數(shù)量、實例數(shù)量和狀態(tài)3個信息。這里由于沒有啟動客戶端,因此顯示出“No applications registered.”的信息。


          2、創(chuàng)建客戶端

          接下來我們創(chuàng)建一個客戶端并注冊到服務(wù)器端。

          1. 配置依賴

          創(chuàng)建新的Spring Boot項目,在新建的項目中添加Spring Boot Admin客戶端的依賴JAR包:spring-boot-admin-starter-server。

          <dependency>    <groupId>de.codecentricgroupId>    <artifactId>spring-boot-admin-starter-clientartifactId>    <version>2.1.0version>dependency><dependency>    <groupId>org.springframework.bootgroupId>    <artifactId>spring-boot-starter-webartifactId>dependency>

          上面的示例,我們添加了是spring-boot-admin-starter-client注解,它會自動添加Actuator相關(guān)依賴,所以這里不需要重復(fù)添加Actuator的相關(guān)依賴。


          2. 配置客戶端

          修改application.properties配置文件,增加如下配置:

          server.port=8001spring.application.name=Admin Clientspring.boot.admin.client.url=http://localhost:8000management.endpoints.web.exposure.include=*

          關(guān)配置說明如下:

          • server.port:當(dāng)前應(yīng)用設(shè)置端口為8001。

          • spring.application.name:設(shè)置Application名稱,其默認(rèn)名稱都是spring-boot-application。

          • spring.boot.admin.client.url:配置Admin服務(wù)器的地址。

          • management.endpoints.web.exposure.include=*:打開客戶端Actuator的監(jiān)控。


          3. 運(yùn)行驗證

          配置完成后啟動客戶端,客戶端會自動注冊到Admin服務(wù)器,Admin服務(wù)器檢查到客戶端的變化并展示其應(yīng)用信息。重新刷新地址http://localhost:8000后,可以看到如圖15-7所示的頁面。

          客戶端啟動之后,Admin服務(wù)器界面的Application數(shù)量會增加。單擊Application下的數(shù)值可以查看完整的應(yīng)用信息。頁面會展示被監(jiān)控的應(yīng)用列表,單擊應(yīng)用名稱會進(jìn)入此應(yīng)用的詳細(xì)監(jiān)控信息頁面。


          這個頁面會實時顯示應(yīng)用的運(yùn)行監(jiān)控信息,包括之前介紹的Actuator所有的端點(diǎn)數(shù)據(jù)信息。

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


          三、告警提醒功能

          雖然Spring Boot Admin提供了強(qiáng)大的監(jiān)控功能,但它不能存儲歷史數(shù)據(jù),我們不可能一直盯著系統(tǒng),為此,Spring Boot Admin提供了強(qiáng)大的提醒功能,能夠在發(fā)生服務(wù)狀態(tài)變更的時候發(fā)出告警。支持的Email等提醒功能,同時也支持自定義告警提醒。

          下面就來介紹Spring Boot Admin的告警提醒功能。

          1、郵件提醒

          設(shè)置Spring Boot Admin的郵件提醒,需要用到Spring Boot的郵件組件:spring-boot-starter-mail。這里只展示郵件提醒功能的使用。

          1. 配置依賴

          修改前面的服務(wù)器端,在pom.xml 文件中,增加郵件組件,示例代碼如下:

          <dependency>            <groupId>org.springframework.bootgroupId>            <artifactId>spring-boot-starter-mailartifactId>        dependency>


          1. 修改系統(tǒng)配置

          修改application.properties 系統(tǒng)配置文件,增加郵件發(fā)送配置,和告警通知配置,示例代碼如下:

          # 郵件服務(wù)配置spring.mail.host=smtp.163.comspring.mail.username=18618243664@163.comspring.mail.password=#郵箱授權(quán)碼 spring.mail.properties.mail.smtp.auth=truespring.mail.properties.mail.smtp.ssl.enable=true#告警接收spring.boot.admin.notify.mail.enabled=truespring.boot.admin.notify.mail.to=417114764@qq.comspring.boot.admin.notify.mail.from=18618243664@163.com

          上面,我們配置了Spring Boot 發(fā)送郵件的相關(guān)配置,這個是通用的。然后配置了告警消息的接收地址。


          1. 驗證測試

          我們再次啟動服務(wù)端和客戶端,然后停止客戶端,模擬應(yīng)用宕機(jī)的情況。這樣Spring Boot Admin 就會發(fā)送告警郵件提醒。

          2、自定義告警提醒

          除了郵件提醒之外,通常我們還需要其他的提醒方式,比如:短信,日志等。我們可以通過自定義的方式實現(xiàn)自定義的消息告警方式。

          Spring Boot Admin 實現(xiàn)自定義告警提醒也非常簡單,只要實現(xiàn)Notifier接口即可。具體實現(xiàn)方式:繼承AbstractEventNotifier 或AbstractStatusChangeNotifier這兩個類。然后重寫doNotify中實現(xiàn)具體的業(yè)務(wù)邏輯。

          下面通過示例演示自定義告警提醒功能:

          首先,創(chuàng)建AppStatusNotifier類,實現(xiàn)告警提醒功能,示例代碼如下:

          ** * 自定義的事件通知者 * @author weiz * */@Servicepublic class AppStatusNotifier extends AbstractEventNotifier {    private static final Logger LOGGER = LoggerFactory.getLogger(LoggingNotifier.class);    public AppStatusNotifier(InstanceRepository repository) {        super(repository);    }    @Override    protected Mono doNotify(InstanceEvent event, Instance instance) {        return Mono.fromRunnable(() -> {            if (event instanceof InstanceStatusChangedEvent) {                LOGGER.info("Instance {} ({}) is {}", instance.getRegistration().getName(), event.getInstance(),                        ((InstanceStatusChangedEvent) event).getStatusInfo().getStatus());            }            else {                LOGGER.info("Instance {} ({}) {}", instance.getRegistration().getName(), event.getInstance(),                        event.getType());            }        });    }}

          然后,再次運(yùn)行服務(wù)端和客戶端。啟動成功之后,再關(guān)掉客戶端,模擬應(yīng)用宕機(jī)的情況。

          我們看到服務(wù)端后臺日志顯示,服務(wù)端已經(jīng)收到了客戶端狀態(tài)改變的告警消息。客戶端狀態(tài)已經(jīng)變?yōu)镺FFLINE。


          最后

          以上,就將Spring Boot Admin搭建運(yùn)維監(jiān)控平臺介紹完畢


          瀏覽 116
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  免费看日本A片 | 91青娱乐在线视频 | 小早川怜子 无码 在线 | 国产精品国产三级国产专区53 | 国产一卡二卡三卡四卡在线观看 |