簡(jiǎn)介
springboot-admin實(shí)在Spring Boot Actuator的基礎(chǔ)上提供簡(jiǎn)潔的可視化WEB UI,是用來(lái)管理SpringBoot應(yīng)用程序的一個(gè)簡(jiǎn)單的界面,功能如下:
- 顯示 name/id 和版本號(hào)
- 顯示在線(xiàn)狀態(tài)
- Logging日志級(jí)別管理
- JMX beans管理
- Threads會(huì)話(huà)和線(xiàn)程管理
- Trace應(yīng)用請(qǐng)求跟蹤
- 應(yīng)用運(yùn)行參數(shù)信息,如:
- Java 系統(tǒng)屬性
- Java 環(huán)境變量屬性
- 內(nèi)存信息
- Spring 環(huán)境屬性
應(yīng)用
1.新建springboot-admin服務(wù)端
引入服務(wù)端pom依賴(lài):
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-server</artifactId>
<version>2.0.1</version>
</dependency>
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-server-ui</artifactId>
<version>2.0.1</version>
</dependency>
<!-- spring-security安全認(rèn)證 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<dependency>
<groupId>org.jolokia</groupId>
<artifactId>jolokia-core</artifactId>
</dependency>
application.yml配置
server:
port: 8080
#admin登錄的用戶(hù)名和密碼
spring:
application:
name: admin-server
#security用戶(hù)配置
security:
user:
name: admin
password: admin
boot:
admin:
context-path: /admin
discovery: true
management:
endpoints:
web:
exposure:
include: "*"
endpoint:
health:
show-details: always
新建SecuritySecureConfig配置:
import de.codecentric.boot.admin.server.config.AdminServerProperties;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.web.authentication.SavedRequestAwareAuthenticationSuccessHandler;
/**
* @Description: TODO(Springboot-Admin登錄配置)
* @Author: 愛(ài)飄de小子
*/
@Configuration
public class SecuritySecureConfig extends WebSecurityConfigurerAdapter{
/**
* -private
* 定義Admin上下文路徑
*/
private final String adminContextPath;
/**
* 由于解決分布式Web應(yīng)用程序中的身份驗(yàn)證和授權(quán)有多種方法,因此Spring Boot Admin不提供默認(rèn)方法。默認(rèn)情況下,spring-boot-admin-server-ui提供登錄頁(yè)面和注銷(xiāo)按鈕。
* Spring Security配置
* @param adminServerProperties
*/
public SecuritySecureConfig(AdminServerProperties adminServerProperties) {
this.adminContextPath = adminServerProperties.getContextPath();
}
@Override
protected void configure(HttpSecurity http) throws Exception {
SavedRequestAwareAuthenticationSuccessHandler successHandler = new SavedRequestAwareAuthenticationSuccessHandler();
successHandler.setTargetUrlParameter("redirectTo");
successHandler.setDefaultTargetUrl(adminContextPath + "/");
http.authorizeRequests()
.antMatchers(adminContextPath + "/assets/**").permitAll()
.antMatchers(adminContextPath + "/login").permitAll()
.anyRequest().authenticated()
.and()
.formLogin().loginPage(adminContextPath + "/login").successHandler(successHandler).and()
.logout().logoutUrl(adminContextPath + "/logout").and()
.httpBasic().and()
.csrf().disable();
}
}
啟動(dòng)類(lèi)添加@EnableAdminServer注解:
import de.codecentric.boot.admin.server.config.EnableAdminServer;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication;
/**
* @author 愛(ài)飄de小子
*/
@EnableAutoConfiguration
@EnableAdminServer
@SpringBootApplication
public class AdminServerApplication {
public static void main(String[] args) {
SpringApplication.run(AdminServerApplication.class, args);
}
}
啟動(dòng)springboot項(xiàng)目即可訪(fǎng)問(wèn): ip:port/admin
2.配置客戶(hù)端(被監(jiān)控的springboot項(xiàng)目)
pom文件添加依賴(lài):
<!-- springboot admin 客戶(hù)端 -->
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-client</artifactId>
<version>2.0.1</version>
</dependency>
<dependency>
<groupId>org.jolokia</groupId>
<artifactId>jolokia-core</artifactId>
</dependency>
<!-- web-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
application.yml配置:
spring:
boot:
admin:
client:
url: http://localhost:8080/
username: admin
password: admin
instance:
prefer-ip: true #使用IP注冊(cè)
#項(xiàng)目健康監(jiān)控
management:
endpoints:
web:
exposure:
include: "*"
base-path: /admin #服務(wù)端配置的context-path
endpoint:
health:
show-details: always
#項(xiàng)目信息
info:
app:
#自定義顯示信息
name: "xxx"
description: "xxx"
version: "xx"
environment: "xx"
spring-boot-version: "2.0.1.RELEASE"
spring-admin-version: "2.0.1"
version: "1.0"