1. 程式人生 > >Spring Boot Admin UI 分散式微服務監控中心

Spring Boot Admin UI 分散式微服務監控中心

完整的微服務解決方案應該包含了微服務所涉及的方方面面,從服務的集中式配置,註冊中心,斷路器,負載均衡,監控 等模組之後面臨的一個問題是如何直觀的將微服務叢集中的各個服務的狀態顯示給對"CODE"沒有感覺的使用者來使用.這當讓是生產環境中所必要的,尤其對運維人員來說.

幸運的是Spring Boot 生態鏈中已經實現了基本的微服務管理WEB  UI,允許我們更直觀的觀察微服務的執行狀態.

原理:Spring  Boot Actuator 模組為監控Spring Boot 應用程式暴露的大量的管理端點[ENDPOINT],開發者以REST UIL方式訪問當前應用程式的執行狀態,Spring Boot Admin模組基於Actuator 模組 及Spring Cloud Zookeeper 模組自動發現註冊在叢集中的所有服務節點通過監控其Actuator 模組暴露出的效能衡量介面以WEB UI的方式展示微服務叢集中服務的狀態.

首先作為一個服務監控中心,我們強烈建議其設計的更加純粹一點,所以不建議將ADMIN模組和微服務本身糅合在一起,從構建一個獨立的服務監控中心開始:

  • pom檔案依賴 ,server 及server-ui為 Admin模組的核心,就是一個Web專案用來處理叢集中各個服務的狀態資訊進行展示.jolokia-core模組可選用於增強JMX監控.zookeeper-discovery 模組用於訪問服務註冊中心,注: 由於ZK在分散式架構中用的較為普遍故之後的系列文章將接基於ZK作為註冊中心,而不在使用eureka.
<dependencies>
	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter</artifactId>
	</dependency>
	<!-- https://mvnrepository.com/artifact/de.codecentric/spring-boot-admin-server -->
	<dependency>
		<groupId>de.codecentric</groupId>
		<artifactId>spring-boot-admin-server</artifactId>
		<version>1.4.6</version>
	</dependency>
	<!-- https://mvnrepository.com/artifact/de.codecentric/spring-boot-admin-server-ui -->
	<dependency>
		<groupId>de.codecentric</groupId>
		<artifactId>spring-boot-admin-server-ui</artifactId>
		<version>1.4.6</version>
	</dependency>
	<dependency>
		<groupId>org.jolokia</groupId>
		<artifactId>jolokia-core</artifactId>
	</dependency>
	<dependency>
		<groupId>org.springframework.cloud</groupId>
		<artifactId>spring-cloud-starter-zookeeper-discovery</artifactId>
		<version>1.0.2.RELEASE</version>
	</dependency>
</dependencies>
  • 該專案的主程式非常簡單,@EnableAdminServer 用於啟用Admin模組,@EnableDiscoveryClient 用於服務註冊和發現
//啟用Admin UI模組
@EnableAdminServer
// 自動發現ZK指定節點下的應用進行監控
@EnableDiscoveryClient
@SpringBootApplication
public class ZkAdminApplication {
	public static void main(String[] args) {
		SpringApplication.run(ZkAdminApplication.class, args);
	}

}
  • 配置檔案application.yml,這裡需要提及的是預設情況下Actuator 模組暴露的介面部分需要許可權驗證,這裡需要顯示的關閉許可權驗證,對其它需要註冊到ZK且被 Admin模組監控的服務也是如此,否則Admin不能獲取到服務的狀態資訊.
management:
  security:
    #關閉安全驗證
    enabled: false
spring:
  application:
    name: zk_admin
  cloud:
    zookeeper:
      enabled: true
      connect-string: host1:2181,host2:2181,host3:2181
      discovery:
        root: /services
        #註冊當前節點
        register: true
  • 至此服務監控中心搭建完畢,我們需要在上述配置檔案的ZK中註冊若干個服務進行預覽.預設的路徑為 '/'  示例:http://it:8080

Admin模組部分截圖及說明如下:

  • 主控介面:


  • 單個服務的詳情頁面,其它不再贅述.