天天看點

微服務監控SpringBootAdmin

SpringBootAdmin微服務監控

Spring Boot Admin用于管理和監控一個或 者多個Spring Boot程式。Spring Boot Admin分為Server端和Client端,Client 端可以通過Http 向Server端注冊,也可以結合Spring Cloud的服務注冊元件Eureka 進行注冊。Spring Boot Admin提供了用AngularJs編寫的UI界面,用于管理和監控。

其中監控内容包括Spring Boot的監控元件Actuator 的各個Http節點,也支援更進階的功能,包括Turbine、Jmx、 Loglevel 等。

使用SpringBootAdmin監控SpringCloud微服務

本案例需要使用3個工程,分别為服務注冊中心Eureka Server、服務用戶端Eureka Client和Spring Boot Admin Server。本案例是一個Maven多Module的工程,需要建立一個 主Maven工程,主Maven工程指定了Spring Boot版本為1.5.3, Spring Cloud版本為Dalston.RELEASE。

主Maven工程的建立過程和服務注冊中心Eureka Server的建立過程不再重複,其中Eureka Server的端口号為8761。

建構Admin Server:

在主Maven工程下建立一個 Module工程,取名為admin- server。程作為Spring Boot AdminServer工程,用于對微服務系統進行監控和管理。首先,在admin-server工程的pom檔案引入相關的依賴,包括繼承了主Maven的pom檔案、Spring Boot Admin Server 功能的兩個依賴spring-boot-admin-server和spring-boot admin-server-ui、ureka Client 的起步依賴spring-cloud-starter-eureka、Actuator 的起步依賴spring-boot-starter-actuator。 最後,在管理界面中需要與JMX-Beans進行互動,在pom檔案中引入Jolokia的依賴。

pom 件的依賴代碼如下:

<dependencies>
    <dependency>
        <groupId>de.codecentric</groupId>
        <artifactId>spring-boot-admin-server</artifactId>
        <version>1.5.1</version>
    </dependency>
    <dependency>
        <groupId>de.codecentric</groupId>
        <artifactId>spring-boot-admin-server-ui</artifactId>
        <version>1.5.1</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-eureka</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
    <dependency>
        <groupId>org.jolokia</groupId>
        <artifactId>jolokia-core</artifactId>
    </dependency>
</dependencies>
           

在admin-server工程的配置檔案application.yml中置服務注冊的位址為htp:/ocalhost:8761/1eureka/,服務的端口号為5000。

由于Spring Boot在1.5 版本之後,Actuator 的所有API接口預設開啟了安全驗證。為了講解友善,在本案例中關閉安全驗證,即将management. Security.enabled改為false。日志的輸出路徑為“logs/boot-admin-sample.log"。Spring Boot Admin預設開啟env、metrics、 dump、 jolokia 和info 等節點。配置代碼如下,更多配置可以查閱官方文檔

http://codecentric.github.io/sprig-boot-admnin/1.5.1/

.

server:
  port: 5000

spring:
  application:
    name: service-admin
management:
  security:
    enabled: false
logging:
  file: "logs/boot-admin-sample.log"

boot:
  admin:
    routes:
      endpoints: env,metrics,dump,jolokia,info,configprops,trace,logfile,refresh,flyway,liquibase,heapdump,loggers,auditevents,hystrix.stream
      
           

Spring Boot Admin支援對日志的管理,也支援Logback。在1.5x 版本的Spring Boot中,預設的日志為Logback,是以在工程的pom檔案中不需要引入Logback的依賴,但需要配置Logback的JMXConfigurator. 在Resources目錄下建一個 logback-spring.xml 檔案,代碼如下:

<?xml version="1.0" encoding="UTF-8" ?>

<configuration>
    <include resource="org/springframework/boot/logging/logback/base.xml"/>
    <jmxConfigurator/>
</configuration>
           

在程式的啟動類AdminServerApplication 加上@EnableAdminServer注解,開啟AdminServer的功能,加上@EnableEurekaClient注解,開啟Eureka Client功能,代碼清單如下:

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

建構Admin Client:

同admin-server工程一樣, 在主Maven工程下建立一個Module工程,取名為eureka-client-one。eureka-client-one工程的pom檔案繼承了主Maven的pom檔案,并在eureka-client-one工程的pom檔案中引入了Web功能的起步依賴spring-boot-starter-web、 Eureka 的起步依賴spring-cloud-starter-eureka、Actuator 的起步依賴spring-boot-starter- actuator,以及Jolokia的依賴jolokia-core。代碼如下:

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-eureka</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
    <dependency>
        <groupId>org.jolokia</groupId>
        <artifactId>jolokis-core</artifactId>
    </dependency>
</dependencies>
           

配置:

server:
  port: 8762

spring:
  application:
    name: eureka-client-one

eureka:
  client:
    service-url: 
      defaultZone: http://localhost:8761/eureka/

logging:
  file: "logs/eureka-client-one.log"
management:
  security:
    enabled: false
           

啟動類:

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

依次啟動eureka-server、 eureka-client-one 和admin-server, 在浏覽器上通路admin-server的首頁htp://ocalhost:5000/,浏覽器顯示的admin-server的界面如圖:

微服務監控SpringBootAdmin
  • “APPLICATIONS"

    選項展示了向Eureka Server注冊的所有用戶端執行個體,如本例的eureka-client-one 和service-admin。
  • “JOURNAL"

    選項為服務注冊、下線、剔除的時間線。
  • “ABOUT"

    選項是關于Spring Boot Admin的一些介紹。

其中,在“APPLICATIONS"選項的界面展示的用戶端執行個體右側有一個“Details" 按鈕,單擊該按鈕,可以進入用戶端執行個體的詳細界面。在詳細界面可以檢視用戶端執行個體的資訊、日志資訊、名額資訊、環境資訊、日志級别管理和JMX等。

用戶端執行個體的詳細界面如圖所示

微服務監控SpringBootAdmin
微服務監控SpringBootAdmin

用戶端執行個體的日志界面如圖所示:

微服務監控SpringBootAdmin

繼續閱讀