Spring Boot(二十):使用 spring-boot-admin 對 Spring Boot 服務進行監控

Spring Boot(二十):使用 spring-boot-admin 對 Spring Boot 服務進行監控

上一篇文章《Spring Boot(十九):使用 Spring Boot Actuator 監控應用》介紹了 Spring Boot Actuator 的使用,Spring Boot Actuator 提供了對單個 Spring Boot 的監控,信息包含:應用狀態、內存、線程、堆棧等等,比較全面的監控了 Spring Boot 應用的整個生命週期。

但是這樣監控也有一些問題:第一,所有的監控都需要調用固定的接口來查看,如果全面查看應用狀態需要調用很多接口,並且接口返回的 Json 信息不方便運營人員理解;第二,如果 Spring Boot 應用集群非常大,每個應用都需要調用不同的接口來查看監控信息,操作非常繁瑣低效。在這樣的背景下,就誕生了另外一個開源軟件:Spring Boot Admin

什麼是 Spring Boot Admin?

Spring Boot Admin 是一個管理和監控 Spring Boot 應用程序的開源軟件。每個應用都認為是一個客戶端,通過 HTTP 或者使用 Eureka 註冊到 admin server 中進行展示,Spring Boot Admin UI 部分使用 VueJs 將數據展示在前端。

這篇文章給大家介紹如何使用 Spring Boot Admin 對 Spring Boot 應用進行監控。

監控單體應用

這節給大家展示如何使用 Spring Boot Admin 監控單個 Spring Boot 應用。

Admin Server 端

項目依賴

<code><dependencies>
<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>
/<dependencies>
/<code>

配置文件

<code>server.port=8000
/<code>

服務端設置端口為:8000。

啟動類

<code>@Configuration
@EnableAutoConfiguration
@EnableAdminServer
public class AdminServerApplication {

public static void main(String[] args) {
SpringApplication.run(AdminServerApplication.class, args);
}
}
/<code>

完成上面三步之後,啟動服務端,瀏覽器訪問<code>http://localhost:8000/<code>可以看到以下界面:

Spring Boot(二十):使用 spring-boot-admin 对 Spring Boot 服务进行监控

Admin Client 端

項目依賴

<code><dependencies>
<dependency>
<groupid>de.codecentric/<groupid>
<artifactid>spring-boot-admin-starter-client/<artifactid>
<version>2.1.0/<version>
/<dependency>
<dependency>
<groupid>org.springframework.boot/<groupid>
<artifactid>spring-boot-starter-web/<artifactid>
/<dependency>
/<dependencies>
/<code>

配置文件

<code>server.port=8001
spring.application.name=Admin Client
spring.boot.admin.client.url=http://localhost:8000
management.endpoints.web.exposure.include=*
/<code>
  • <code>spring.boot.admin.client.url/<code>配置 Admin Server 的地址

  • <code>management.endpoints.web.exposure.include=*/<code>打開客戶端 Actuator 的監控。

啟動類

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

配置完成之後,啟動 Client 端,Admin 服務端會自動檢查到客戶端的變化,並展示其應用

Spring Boot(二十):使用 spring-boot-admin 对 Spring Boot 服务进行监控

頁面會展示被監控的服務列表,點擊詳項目名稱會進入此應用的詳細監控信息。

Spring Boot(二十):使用 spring-boot-admin 对 Spring Boot 服务进行监控

通過上圖可以看出,Spring Boot Admin 以圖形化的形式展示了應用的各項信息,這些信息大多都來自於 Spring Boot Actuator 提供的接口。

監控微服務

如果我們使用的是單個 Spring Boot 應用,就需要在每一個被監控的應用中配置 Admin Server 的地址信息;如果應用都註冊在 Eureka 中就不需要再對每個應用進行配置,Spring Boot Admin 會自動從註冊中心抓取應用的相關信息。

如果我們使用了 Spring Cloud 的服務發現功能,就不需要在單獨添加 Admin Client

客戶端,僅僅需要 Spring Boot Server ,其它內容會自動進行配置。

接下來我們以 Eureka 作為服務發現的示例來進行演示,實際上也可以使用 Consul 或者 Zookeeper。

1、服務端和客戶端添加 spring-cloud-starter-eureka 到包依賴中

<code><dependency>
<groupid>org.springframework.cloud/<groupid>
<artifactid>spring-cloud-starter-netflix-eureka-client/<artifactid>
/<dependency>
/<code>

2、啟動類添加註解

<code>@Configuration
@EnableAutoConfiguration
@EnableDiscoveryClient
@EnableAdminServer
public class SpringBootAdminApplication {
public static void main(String[] args) {
SpringApplication.run(SpringBootAdminApplication.class, args);
}

@Configuration
public static class SecurityPermitAllConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests.anyRequest.permitAll
.and.csrf.disable;
}
}
}
/<code>

使用類 SecurityPermitAllConfig 關閉了安全驗證。

3、在

客戶端中配置服務發現的地址

<code>eureka:
instance:
leaseRenewalIntervalInSeconds: 10
health-check-url-path: /actuator/health
metadata-map:
startup: ${random.int} #needed to trigger info and endpoint update after restart
client:
registryFetchIntervalSeconds: 5
serviceUrl:
defaultZone: ${EUREKA_SERVICE_URL:http://localhost:8761}/eureka/

management:
endpoints:
web:
exposure:
include: "*"
endpoint:
health:
show-details: ALWAYS
/<code>

Spring Cloud 提供了示例代碼可以參考這裡:spring-boot-admin-sample-eureka

重啟啟動服務端和客戶端之後,訪問服務端的相關地址就可以看到監控頁面了。

文章內容已經升級到 Spring Boot 2.x

示例代碼-https://github.com/ityouknow/spring-boot-examples

參考

Spring Boot Admin Reference Guide

< END >

純潔的微笑

一個有故事的程序員


分享到:


相關文章: