Spring Boot Admin 是一个codecentric 的社区项目,用于管理和监控您的Spring Boot ®应用程序

文档地址:https://codecentric.github.io/spring-boot-admin/current/

强调1点:Springboot Admin的接入 需要单独开一个Server服务,其他服务作为客户端,去向Server服务进行注册,将来就可以在Server端看到各个客户端的信息了!

快速接入

Maven Server 端依赖

        <dependency>
            <groupId>de.codecentric</groupId>
            <artifactId>spring-boot-admin-starter-server</artifactId>
        </dependency>
        <dependency>
            <groupId>de.codecentric</groupId>
            <artifactId>spring-boot-admin-server-ui</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
        </dependency>

服务端代码

启动类加入下面注解,服务端配置完成

// 开启Spring Boot Admin服务
@EnableAdminServer

服务端配置文件 特殊说明,配置文件的2套账号作用不同,具体看配置文件注释

server.port=10000

# 设置Spring Boot Admin-UI登录的账号与密码
spring.security.user.name=root
spring.security.user.password=root

# 配置服务端实例授权账号(这样可以防止别人的服务随意注册)
spring.boot.admin.instance-auth.enabled=true
spring.boot.admin.instance-auth.default-user-name=root
spring.boot.admin.instance-auth.default-password=root

# 配置UI界面的样式
spring.boot.admin.ui.title=740969606

服务端UI配置类

import de.codecentric.boot.admin.server.config.AdminServerProperties;
import org.springframework.boot.autoconfigure.security.SecurityProperties;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.HttpMethod;
import org.springframework.security.config.Customizer;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
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;
import org.springframework.security.web.csrf.CookieCsrfTokenRepository;
import org.springframework.security.web.util.matcher.AntPathRequestMatcher;

import java.util.UUID;

/**
 * @author : zanglikun
 * @date : 2021/12/22 14:55
 * @Version: 1.0
 * @Desc : Spring Boot Admin 的UI界面登录限制  官方粘贴获取
 */
@Configuration(proxyBeanMethods = false)
public class SecuritySecureConfig extends WebSecurityConfigurerAdapter {

    private final AdminServerProperties adminServer;

    private final SecurityProperties security;

    public SecuritySecureConfig(AdminServerProperties adminServer, SecurityProperties security) {
        this.adminServer = adminServer;
        this.security = security;
    }

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        SavedRequestAwareAuthenticationSuccessHandler successHandler = new SavedRequestAwareAuthenticationSuccessHandler();
        successHandler.setTargetUrlParameter("redirectTo");
        successHandler.setDefaultTargetUrl(this.adminServer.path("/"));

        http.authorizeRequests(
                        (authorizeRequests) -> authorizeRequests.antMatchers(this.adminServer.path("/assets/**")).permitAll()
                                .antMatchers(this.adminServer.path("/actuator/info")).permitAll()
                                .antMatchers(this.adminServer.path("/actuator/health")).permitAll()
                                .antMatchers(this.adminServer.path("/login")).permitAll().anyRequest().authenticated()
                ).formLogin(
                        (formLogin) -> formLogin.loginPage(this.adminServer.path("/login")).successHandler(successHandler).and()
                ).logout((logout) -> logout.logoutUrl(this.adminServer.path("/logout"))).httpBasic(Customizer.withDefaults())
                .csrf((csrf) -> csrf.csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse())
                        .ignoringRequestMatchers(
                                new AntPathRequestMatcher(this.adminServer.path("/instances"),
                                        HttpMethod.POST.toString()),
                                new AntPathRequestMatcher(this.adminServer.path("/instances/*"),
                                        HttpMethod.DELETE.toString()),
                                new AntPathRequestMatcher(this.adminServer.path("/actuator/**"))
                        ))
                .rememberMe((rememberMe) -> rememberMe.key(UUID.randomUUID().toString()).tokenValiditySeconds(1209600));
    }

    // Required to provide UserDetailsService for "remember functionality"
    @Override
    protected void configure(AuthenticationManagerBuilder auth) throws Exception {
        auth.inMemoryAuthentication().withUser(security.getUser().getName())
                .password("{noop}" + security.getUser().getPassword()).roles("USER");
    }

}

Maven Client 端依赖

        <dependency>
            <groupId>de.codecentric</groupId>
            <artifactId>spring-boot-admin-starter-client</artifactId>
            <version>2.5.5</version>
        </dependency>

客户端配置文件

# SpringBoot Admin配置 指定服务的URL
spring.boot.admin.client.enabled=true
# 向服务端中注册的位置
spring.boot.admin.client.url=http://127.0.0.1:10000
management.endpoints.web.exposure.include=*
management.endpoint.health.show-details=always

# 在服务端展示IP以代替主机名。(如:DESKTOP-5MJ5585)
spring.boot.admin.client.instance.prefer-ip=true

# 默认值是配置的spring.application.name的值
spring.boot.admin.client.instance.name=WMS

# 如果服务端开启了注册限制,就需要我们输入账号了。
spring.boot.admin.client.username=root
spring.boot.admin.client.password=root

完结。先启动Admin服务,启动完成后,再去开启Client端!

服务端 直接访问项目位置即可,如127.0.0.1:8080 即可登录Spring Boot Admin

服务端配置的是root root

注意事项:服务端、客户端<version>尽量保持一致。