Spring Boot (十): Spring Boot Admin 監控 Spring Boot 應用

1. 引言

在上一篇文章《Spring Boot (九): 微服務應用監控 Spring Boot Actuator 詳解》咱們介紹了 Spring Boot 基於 Spring Boot Actuator 的服務監控, Spring Boot Actuator 提供了對單個 Spring Boot 的監控,信息包含:應用狀態、內存、線程、堆棧等等,比較全面的監控了 Spring Boot 應用的整個生命週期。可是, Spring Boot Actuator 只爲咱們提供了監控的數據接口,並且返回的數據量很是的大,咱們不可能經過人工肉眼的方式去分析這些返回的數據,確定是但願能有一個圖形化的界面幫助咱們去分析這些信息,同時,在微服務的體系中,咱們的服務數量是很是多的,這一樣不方便咱們人工管理,在這樣的背景下,誕生了另外一個開源軟件,也是本篇文章要介紹的: Spring Boot Adminhtml

2. Spring Boot Admin 簡介

Spring Boot Admin 是一個 Web 應用,用於管理和監視 Spring Boot 應用程序的運行狀態。每一個 Spring Boot 應用程序都被視爲客戶端並註冊到管理服務器。背後的數據採集是由 Spring Boot Actuator 端點提供。前端 Spring Boot Admin UI 展現使用 VueJs 將數據展現在前端。前端

本文將介紹如何使用 Spring Boot Admin 對 Spring Boot 進行監控。java

3. 工程實戰

3.1 建立父工程 spring-boot-admin

依賴文件 pom.xml 以下:git

代碼清單:spring-boot-admin/pom.xmlgithub


<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <java.version>1.8</java.version>
    <spring-cloud.version>Greenwich.SR3</spring-cloud.version>
    <spring-boot-admin.version>2.1.5</spring-boot-admin.version>
</properties>

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

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
</dependencies>

<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>
        <dependency>
            <groupId>de.codecentric</groupId>
            <artifactId>spring-boot-admin-dependencies</artifactId>
            <version>${spring-boot-admin.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>
  • <dependencyManagement> 中增長 spring-boot-admin-dependencies 的版本配置,由於 spring-boot-admin 有關的版本信息未集成在 spring-boot-dependencies 中,咱也不知道爲啥,咱也不敢問。

3.2 建立子工程 spring-boot-admin-server

Spring Boot Admin 能夠用做單臺服務的監控,也可用於集羣的監控,咱們先介紹單臺服務的監控配置。web

pom.xml 配置文件以下:spring

代碼清單:spring-boot-admin/spring-boot-admin-server/pom.xml瀏覽器


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

注意: 若是隻是單臺服務使用,只需引入 spring-boot-admin-starter-server 的依賴便可, spring-cloud-starter-netflix-eureka-client 此依賴是 Spring Boot Admin 基於 Eureka 服務中心會使用到的依賴。springboot

配置文件 application.yml 以下:服務器

代碼清單:spring-boot-admin/spring-boot-admin-server/src/main/resources/application.yml


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

注意: 單機版本無需配置其中的 eureka.***.*** 等相關內容。

啓動主類 SpringBootAdminServerApplication.java 以下:

代碼清單:spring-boot-admin/spring-boot-admin-server/src/main/java/com/springboot/springbootadminserver/SpringBootAdminServerApplication.java


@SpringBootApplication
@EnableAdminServer
@EnableEurekaClient
public class SpringBootAdminServerApplication {

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

}

注意: 單機版本無需添加 @EnableEurekaClient 註解。

3.3 建立子工程 spring-boot-admin-clienta

此工程爲 Spring Boot Admin 單機版演示用例。

pom.xml 以下:spring-boot-admin/spring-boot-admin-clienta/pom.xml

代碼清單:


<dependency>
    <groupId>de.codecentric</groupId>
    <artifactId>spring-boot-admin-starter-client</artifactId>
</dependency>
  • 此工程僅需引入 spring-boot-admin-starter-client Spring Boot Admin 的客戶端便可。

配置文件 application.yml 以下:

代碼清單:spring-boot-admin/spring-boot-admin-clienta/src/main/resources/application.yml


server:
  port: 9090
spring:
  application:
    name: spring-boot-clienta
  boot:
    admin:
      client:
        url: http://localhost:8888
management:
  endpoints:
    web:
      exposure:
        include: "*"
  endpoint:
    health:
      show-details: ALWAYS
  • spring.application.name 配置的名稱會在 Spring Boot Admin 的 UI 界面中顯示出來。
  • spring.boot.admin.client.url 配置的是咱們 Spring Boot Admin 服務端的地址。
  • management.endpoints.web.exposure.include 開啓 Spring Boot Actuator 的所有監控。
  • management.endpoint.health.show-details 開啓 Spring Boot Actuator 監控的應用的詳細的應用健康信息。

啓動 spring-boot-admin-server 工程和 spring-boot-admin-clienta ,稍等一會, spring-boot-admin-clienta 會自動註冊到 spring-boot-admin-server 上面去。

打開瀏覽器訪問 http://localhost:8888/ ,這時咱們能夠看到 Spring Boot Admin 監控圖,以下:

點擊後會進入該應用的詳細信息,咱們能夠看到 Spring Boot Admin 使用圖形化的界面展現了該應用的各類信息,以下:

3.4 建立子工程 spring-boot-admin-client

此工程示例爲微服務版本的 Spring Boot Admin 使用示例,其中使用服務中心 Eureka 註冊服務, Spring Boot Admin 會從服務中心 Eureka 上讀取相關的信息,進行服務監控。這樣咱們就不須要在客戶端再配置 Spring Boot Admin 的服務地址,後續若是 Spring Boot Admin 服務發生地址遷移等事情時,也無需修改客戶端的配置文件。

Eureka 代碼示例這裏再也不列出,若是有須要補課的同窗,能夠訪問筆者的 《Spring Cloud 系列文章》

工程依賴 pom.xml 以下:

代碼清單:spring-boot-admin/spring-boot-admin-client/pom.xml


<dependency>
    <groupId>de.codecentric</groupId>
    <artifactId>spring-boot-admin-starter-client</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
  • 這裏僅添加 Spring Boot Admin 的客戶端和 Spring Cloud Eureka 的客戶端依賴。

配置文件 application.yml 以下:

代碼清單:spring-boot-admin/spring-boot-admin-client/src/main/resources/application.yml


server:
  port: 8080
spring:
  application:
    name: spring-boot-admin-client
eureka:
  instance:
    leaseRenewalIntervalInSeconds: 10
    health-check-url-path: /actuator/health
  client:
    registryFetchIntervalSeconds: 5
    serviceUrl:
      defaultZone: ${EUREKA_SERVICE_URL:http://localhost:8761}/eureka/
management:
  endpoints:
    web:
      exposure:
        include: "*"
  endpoint:
    health:
      show-details: ALWAYS
  • 對比前面單機版的配置,這裏去掉了 Spring Boot Admin 服務地址的配置,增長了 Eureka 服務中心的配置。

啓動主類 SpringBootAdminClientApplication.java 以下:

代碼清單:


@SpringBootApplication
@EnableEurekaClient
public class SpringBootAdminClientApplication {

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

}
  • @EnableEurekaClient 含義爲啓用 Eureka 客戶端,實測雖然這裏不寫也同樣會啓用,可是最好仍是寫一下吧:)

測試:

修改編輯器 idea 配置,在兩個不一樣的端口啓動子工程 spring-boot-admin-client ,打開 Spring Boot Admin 的 UI 界面,顯示以下:

能夠看到,這裏顯示了兩個應用( APPLICATIONS ),一個是咱們的 spring-boot-admin-server 自己的監控,還有一個是咱們的 spring-boot-admin-client 應用,且該應用有兩個實例( INSTANCES ),分別位於兩個不一樣的端口 8080 和 8081 。點進去同樣能夠看到對應的實例的詳情。

4. 示例代碼

示例代碼-Github

示例代碼-Gitee

5. 參考

使用 spring-boot-admin 對 Spring Boot 服務進行監控

原文出處:https://www.cnblogs.com/babycomeon/p/11645673.html

相關文章
相關標籤/搜索