【Spring Boot】利用 Spring Boot Admin 進行項目監控管理

来源:https://www.cnblogs.com/jojop/archive/2019/08/22/11392117.html
-Advertisement-
Play Games

利用 Spring Boot Admin 進行項目監控管理 一、Spring Boot Admin 是什麼 Spring Boot Admin (SBA) 是一個社區開源項目,用於管理和監視 Spring Boot 應用程式。應用程式通過 的方式註冊到 Spring Boot 管理客戶端,或者通過 ...


利用 Spring Boot Admin 進行項目監控管理

一、Spring Boot Admin 是什麼

Spring Boot Admin (SBA) 是一個社區開源項目,用於管理和監視 Spring Boot 應用程式。應用程式通過 http 的方式註冊到 Spring Boot 管理客戶端,或者通過 Spring Cloud 的服務發現機制,然後針對 actuator 介面將數據通過 Vue.js 進行可視化管理。

對於我們來說,我們可以通過 Spring Boot Admin 瀏覽所有被監控的 Spring Boot 項目,詳細的 Health 信息、記憶體信息、JVM 系統和環境屬性、垃圾回收信息等。

二、Spring Boot Admin 起步

Spring Boot Admin 由兩種角色組成:一種是 Server 端;一種是 Client 端,即要被監控的應用。下麵分別進行兩種角色的配置:

Spring Boot Admin Server

引入依賴 [pom.xml]

<dependency>
    <groupId>de.codecentric</groupId>
    <artifactId>spring-boot-admin-starter-server</artifactId>        
    <version>2.0.0</version>
</dependency>

@EnableAdminServer 註解

@SpringBootApplication
@EnableAdminServer
public class AdminApplication {

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

}

application.yml 配置

spring:
  application:
    name: spring-boot-admin-server

server:
  port: 8080

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

啟動後訪問 http://localhost:8080 就可以看見一個 UI 界面

此時應用和實例都是,是因為我們沒有註冊客戶端,接下來我們實現來客戶端。

Spring Boot Admin Client

引入客戶端依賴 [pom.xml]

<dependency>
    <groupId>de.codecentric</groupId>
    <artifactId>spring-boot-admin-starter-client</artifactId>
    <version>2.0.0</version>
</dependency>

程式入口沒有特別需要修改的地方

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

application.yml 配置

spring:
  application:
    name: spring-boot-admin-client
  boot:
    admin:
      client:
        url: http://localhost:8080

server:
  port: 8081

此時再訪問 localhost:8080 就可以發現新增了一個應用實例,如下圖所示:

那麼到這裡我們一個基本的 Spring Boot Admin 應用就配置成功了。

點擊菜單欄中的 wallboard,再點擊要查看的應用程式,就可以訪問應用的信息,如記憶體狀態信息等:

三、SBA 結合 Spring Cloud 註冊中心

除了上面案例中,直接在客戶端中配置相應的 SBA 配置外,還可以配合 Spring Cloud 的服務註冊與發現應用(例如:Eureka, Consul) ,接下來演示如何配置:

新建統一的依賴管理

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    
    <groupId>com.jojo</groupId>
    <artifactId>admin-demo-dependencies</artifactId>
    <version>1.0.0-SNAPSHOT</version>
    <packaging>pom</packaging>

    <name>admin-demo-dependencies</name>
    <description>Demo project for Spring Boot Admin</description>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.0.RELEASE</version>
        <relativePath/>
    </parent>

    <properties>
        <!-- Environment Settings -->
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
        <!-- Spring Settings -->
        <spring-cloud.version>Finchley.SR2</spring-cloud.version>
        <spring-boot-admin.version>2.1.0</spring-boot-admin.version>
    </properties>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

搭載服務註冊中心

引入依賴

<dependencies>
    <!-- Spring Boot Begin -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
    <!-- Spring Boot End -->

    <!-- Spring Cloud Begin -->
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
    </dependency>
    <!-- Spring Cloud End -->
</dependencies>

應用程式入口

@SpringBootApplication
@EnableEurekaServer
public class EurekaServerApplication {
    public static void main(String[] args) {
        SpringApplication.run(EurekaServerApplication.class, args);
    }
}

application.yml

spring:
  application:
    name: admin-demo-eureka

server:
  port: 8761

eureka:
  instance:
    hostname: localhost
  client:
    service-url:
      default-zone: http://${eureka.instance.hostname}:${server.port}/eureka
    register-with-eureka: false
    fetch-registry: false

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

配置成功後啟動應用程式,訪問 localhost:8761,可以看到類似下圖的 UI 界面:

創建 SBA 服務端

引入依賴

<dependency>
    <groupId>de.codecentric</groupId>
    <artifactId>spring-boot-admin-starter-server</artifactId>
    <version>2.1.0</version>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
    <groupId>org.jolokia</groupId>
    <artifactId>jolokia-core</artifactId>
</dependency>

應用程式入口

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

application.yml 配置

spring:
  application:
    name: admin-demo-admin-server
server:
  port: 8769
eureka:
  client:
    registryFetchIntervalSeconds: 5
    service-url:
      defaultZone: ${EUREKA_SERVICE_URL:http://localhost:8761}/eureka/
  instance:
    leaseRenewalIntervalInSeconds: 10
    health-check-url-path: /actuator/health
management:
  endpoints:
    web:
      exposure:
        include: "*"
  endpoint:
    health:
      show-details: ALWAYS

創建 SBA 客戶端

引入依賴

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-webflux</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

applicaion.yml 配置文件

spring:
  application:
    name: admin-demo-admin-client
server:
  port: 8762
eureka:
  instance:
    leaseRenewalIntervalInSeconds: 10
    health-check-url-path: /actuator/health

  client:
    registryFetchIntervalSeconds: 5
    service-url:
      defaultZone: ${EUREKA_SERVICE_URL:http://localhost:8761}/eureka/
management:
  endpoints:
    web:
      exposure:
        include: "*"
  endpoint:
    health:
      show-details: ALWAYS

應用程式入口

@SpringBootApplication
@EnableDiscoveryClient
public class AdminClientApplication {
    public static void main(String[] args) {
        SpringApplication.run(AdminClientApplication.class, args);
    }
}

將三個應用啟動後,訪問 localhost:8769 就可以監控各個應用的運行情況了:

四、集成郵件通知

SBA 中也可以集成郵件通知,當註冊的服務下線、宕機時,向指定的郵箱發送信息郵件。其配置也十分容易,只需要在 yaml 配置文件中配置郵箱的發送方和郵件的收件方,以及在 pom 文件中引入 `` 的依賴即可。下麵演示這段配置:

pom.xml配置:加入 mail 的依賴

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

application.yml:在配置文件中配置收件人以及發件方信息,並且開啟郵箱提醒

spring:
  boot:
    admin:
      notify:
        mail:
          enabled: true
          from: [email protected]
          
...

spring.mail.host: smtp.example.com
spring.mail.username: [email protected]
spring.mail.password: # 授權碼
spring.boot.admin.notify.mail.to: [email protected]

配置並啟動完成後,可以嘗試將 Client 項目中止:

然後打開收件方的郵箱,就可以看見 SBA 發送的郵件了

五、參考

SBA 官方文檔:https://codecentric.github.io/spring-boot-admin/current/


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 函數 函數:即方法 函數就是一段預先設置的功能代碼塊,可以反覆調用,根據輸入參數的不同,返回不同的值。 為什麼使用函數: 1.方便調用 2.代碼重用,利於維護 3.便於修改,便於重構 4.簡化邏輯,利於編程 1、聲明函數 聲明函數 Function Declaration 的三種方法 1)funct ...
  • 在HTML頭部標簽加上如下代碼即可 <meta name="referrer" content="no-referrer"/> ...
  • 10:14:11獨立開發者在開發移動端產品時,為了更高效,通常會使用Web技術來開發移動端項目,可以同時適配Android、iOS、H5,稍加改動還可適配微信小程式。 在使用Vue.js開發移動端頁面的時候,預設的組件轉場效果過於生硬,根本就沒有動畫效果。於是我用Vue提供的組件過渡功能,寫了個仿微 ...
  • 官網:www.fhadmin.org 特別註意: Springboot 工作流 前後分離 + 跨域 版本 (許可權控制到菜單和按鈕) 後臺框架:springboot2.1.2+ activiti6.0.0+ mybaits+maven+介面 前端頁面:html +vue.js 形式 jquery aj ...
  • 在上一篇文章中,說了什麼是類。而在最後留下了一個問題:“湯姆和瑪麗把一隻大象往一個冰箱裡面裝”。這句話跟類又有什麼關係? 通過對比最開始的句子:“一隻動物被兩個人往一個家電裡面裝”。可以看到,現在這兩個不同的句子都描述著同樣的一個場景,意思都差不多,但這個場景中不同句子描述的事物不同。 那在這兩個句 ...
  • 系統設計:關於高可用系統的一些技術方案 可靠的系統是業務穩定、快速發展的基石。那麼,如何做到系統高可靠、高可用呢?下麵從技術方面介紹幾種提高系統可靠性、可用性的方法。 擴展 擴展是最常見的提升系統可靠性的方法,系統的擴展可以避免單點故障,即一個節點出現了問題造成整個系統無法正常工作。換一個角度講,一 ...
  • “類”是面向對象中一個重要的概念,有了類我們才能去討論什麼是封裝、繼承、多態。 什麼是類?先看下麵這張圖片。 現在你看到這張圖片後,根據圖片中表達的內容造一個句子吧。思考中........,OK,把自己想好的句子記在心裡,然後看下麵我的句子。o(* ̄︶ ̄*)o “一隻動物被兩個人往一個家電裡面裝” ...
  • 1.InteliJ IDEA設置快捷鍵 1.1. IDEA快捷鍵修改—代碼提示 IDEA中當現有的快捷鍵被系統中其他軟體(比如輸入法)占用時,我們可以自定義修改快捷鍵。比如,IDEA中的代碼自動提示快捷鍵和eclipse的不一樣,不是Alt + /,此時可以通過修改快捷鍵來設置。 修改方式: ①選擇 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...