首先介紹一下Spring Boot Admin是用來幹嘛的,它用于監控基于 Spring Boot 的應用,它是在 Spring Boot Actuator 的基礎上提供簡潔的可視化 WEB UI。
Spring Boot Admin 提供了很多功能,如顯示 Spring Boot 應用的name、id 和 version,顯示線上狀态,Loggers 的日志級别管理,Threads 線程管理,Environment 管理等。
接下來搭建一個簡單的Demo,包含Admin server與Admin client兩個部分。
因為版本不相容的問題,spring boot 用的是1.5.10,spring cloud 用的Edgware.SR4版本。
項目結構如下:
先搭建Admin server:spring-cloud-admin-simple-server:
在pom.xml檔案添加依賴:
<!--security -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<!--spring boot admin server -->
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-server</artifactId>
<version>1.5.7</version>
</dependency>
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-server-ui-login</artifactId>
<version>1.5.7</version>
</dependency>
注:如果在依賴項中包含spring-boot-admin-server-ui-login,它将提供可視化登入頁面和登出按鈕。
application.properties配置檔案配置如下:
server.port=8888
#關閉原始的spring security 認證,不關閉的話,浏覽器打開就會跳出認證登入彈出框
security.basic.enabled=false
#spring boot actuator某些端點的通路是需要權限的
management.security.enabled=false
security.user.name=root
#spring boot dafault user.password 在項目啟動時列印在控制台中
security.user.password=root
安全認證相關配置 基于安全認證的spring boot admin:SecurityConfig如下:
package com.sinosoft.springcloudadminsimpleserver.config;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
/**
* 安全認證相關配置 基于安全認證的spring boot admin
*
* @author 隻吃兩個荞麥饅頭
*/
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
//super.configure(http);
// Page with login form is served as /login.html and does a POST on /login
http.formLogin().loginPage("/login.html").loginProcessingUrl("/login").permitAll();
// The UI does a POST on /logout on logout
http.logout().logoutUrl("/logout");
// The ui currently doesn't support csrf
http.csrf().disable();
// Requests for the login page and the static assets are allowed
//允許登入頁面和靜态資源的請求
http.authorizeRequests()
.antMatchers("/login.html", "/**/*.css", "/img/**", "/third-party/**")
.permitAll();
// ... and any other request needs to be authorized
//這點重要:所有請求都需要認證
http.authorizeRequests().antMatchers("/**").authenticated();
// Enable so that the clients can authenticate via HTTP basic for registering
http.httpBasic();
}
}
啟始類中添加标簽@EnableAdminServer
@SpringBootApplication
@EnableAdminServer
public class SpringCloudAdminSimpleServerApplication {
public static void main(String[] args) {
SpringApplication.run(SpringCloudAdminSimpleServerApplication.class, args);
}
}
啟動項目:通路http://localhost:8888/login.html
注:這裡這個頁面就是前面所說的在依賴項中包含spring-boot-admin-server-ui-login,它将提供可視化登入頁面和登出按鈕。
這裡的使用者名跟密碼是前面配置檔案中所配置的root/root。輸入登入之後就會看到如下頁面,由于沒有Admin client注冊,是以這裡沒有任何監控到的spring boot應用。
接下來搭建client端:spring-cloud-admin-simple-client:
pom.xml檔案中添加依賴:
<!--每個要注冊的應用程式都必須包含Spring Boot Admin Client。 -->
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-client</artifactId>
</dependency>
application.properties配置檔案配置如下:
server.port=8889
spring.application.name=spring-cloud-admin-simple-client
#要注冊的Spring Boot Admin Server的URL
spring.boot.admin.url=http://localhost:8888
#從Spring Boot 1.5.x開始,預設情況下所有端點都是安全的。 為簡潔起見,我們暫時禁用了安全性。 檢視有關如何處理安全端點的安全性部分。
management.security.enabled=false
spring.boot.admin.client.metadata.user.name=root
spring.boot.admin.client.metadata.user.password=root
#如果保護/api/applications端點,請不要忘記使用spring.boot.admin.username和spring.boot.admin.password在SBA用戶端上配置使用者名和密碼【否則你的client端資訊注冊不到server端上】
spring.boot.admin.username=root
spring.boot.admin.password=root
啟始類配置如下:
@SpringBootApplication
public class SpringCloudAdminSimpleClientApplication {
public static void main(String[] args) {
SpringApplication.run(SpringCloudAdminSimpleClientApplication.class, args);
}
}
啟動項目:依次先運作項目spring-cloud-admin-simple-server,再運作spring-cloud-admin-simple-client,
通路http://localhost:8888/login.html
使用者名密碼是之前配置的:root/root,輸入登入之後就可以見到如下圖所示頁面:
這時頁面有顯示spring-cloud-admin-simple-client被監控着。
如果有不足之處,還希望能夠多多包涵并指正我。