Spring Boot Admin 快速入门详解

编辑: admin 分类: java 发布时间: 2021-12-03 来源:互联网
目录
  • 1、介绍
  • 2、服务端搭建
    • 2.1 引入依赖
    • 2.2 添加注解
    • 2.3 进行测试
    • 2.4 测试结果
  • 3、客户端搭建
    • 3.1 引入依赖
    • 3.2 编写配置
    • 3.3 进行测试
  • 4、安全性
    • 4.1 添加依赖
    • 4.2 编写配置
    • 4.3 编写配置类
    • 4.4 修改客户端配置
    • 4.5 进行测试
  • 总结

    1、介绍

    官网地址

    Spring Boot Admin 是开源社区孵化的项目,用于对 Spring Boot 应用的管理和监控。Spring Boot Admin 分为服务端(spring-boot-admin-server)和客户端(spring-boot-admin-client),服务端和客户端之间采用 http 通讯方式实现数据交互;单体项目中需要整合 spring-boot-admin-client 才能让应用被监控。在 SpringCloud 项目中,spring-boot-admin-server 是直接从注册中心抓取应用信息,不需要每个微服务应用整合 spring-boot-admin-client 就可以实现应用的管理和监控。

    2、服务端搭建

    2.1 引入依赖

    注意:版本要和 Spring Boot 版本对应,例如我的 Spring Boot 2.3.7.RELEASE,那么 Spring Boot Admin 对应的版本就是 2.3.x。

    <!-- Spring Boot Admin 服务端依赖 -->
    <dependency>
        <groupId>de.codecentric</groupId>
        <artifactId>spring-boot-admin-starter-server</artifactId>
        <version>2.3.1</version>
    </dependency>
    

    2.2 添加注解

    给启动类添加一个注解:@EnableAdminServer

    @EnableAdminServer
    @SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
    public class ServerApplication {
         public static void main(String[] args) {
            SpringApplication.run(ServerApplication.class, args);
        }
    }
    

    2.3 进行测试

    访问项目的端口号即可!

    例如我配置的端口号是 9000,那么直接访问 http://localhost:9000/ 即可!

    2.4 测试结果

    在这里插入图片描述

    3、客户端搭建

    3.1 引入依赖

    注意:版本要和 Spring Boot 版本对应,例如我的 Spring Boot 2.3.7.RELEASE,那么 Spring Boot Admin 对应的版本就是 2.3.x。

    <!-- Spring Boot Admin 客户端依赖 -->
    <dependency>
        <groupId>de.codecentric</groupId>
        <artifactId>spring-boot-admin-starter-client</artifactId>
        <version>2.3.1</version>
    </dependency>
    

    3.2 编写配置

    编写 application.yml 文件:

    spring:
      application:
        name: Client
      boot:
        admin:
          client:
            # 配置 Admin Server(服务端的名字)
            url: http://localhost:9000
    server:
      port: 9001
     # 开放端点用于 SpringBoot Admin 的监控
    management:
      endpoints:
        web:
          exposure:
            include: '*'
    logging:
      file:
        # 配置生成日志文件名称
        name: admin-client.log
    

    3.3 进行测试

    启动项目,然后访问服务端的 Web 管理界面:

    在这里插入图片描述

    在这里插入图片描述

    4、安全性

    这个 Spring Boot Admin 的管理后台不用账号密码就能直接访问,一点都不安全,因此要给它加上登录的功能。

    参考 Spring Boot Admin 的官方文档,我们可以在 Admin-Server 端添加 Spring Security 相关依赖及就可以实现需要登录后才能访问网页管理面板。

    官网文档地址

    4.1 添加依赖

    在服务端添加 Spring Security 依赖:

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-security</artifactId>
    </dependency>
    

    4.2 编写配置

    编写 application.yml 文件,编写用户名密码:

    server:
      port: 9000
    spring:
      application:
        name: Server
      security:
        user:
          name: admin
          password: admin
    

    4.3 编写配置类

    编写 Spring Security 的配置类:

    @Configuration
    public class SecurityConfig extends WebSecurityConfigurerAdapter {
        private final String adminContextPath;
         public SecurityConfig(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()
                    // 1. 配置所有静态资源和登录页可以公开访问(匿名访问)
                    .antMatchers(adminContextPath + "/assets/**").permitAll()
                    .antMatchers(adminContextPath + "/login").permitAll()
                    .anyRequest().authenticated()
                    .and()
                    // 2. 配置登录和登出路径
                    .formLogin().loginPage(adminContextPath + "/login").successHandler(successHandler).and()
                    .logout().logoutUrl(adminContextPath + "/logout").and()
                    // 3. 开启 http basic 支持,客户端注册时需要使用
                    .httpBasic().and()
                    .csrf()
                    // 4. 开启基于 Cookie 的 CSRF 保护
                    .csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse())
                    // 5. 忽略这些路径的 CSRF 保护以便客户端注册
                    .ignoringAntMatchers(
                            adminContextPath + "/instances",
                            adminContextPath + "/actuator/**"
                    );
        }
    }
    

    4.4 修改客户端配置

    修改客户端的 application.yml 配置文件,添加用户名密码:

    这里不添加用户名和密码的话,是连不上服务端的:

    spring:
      application:
        name: Client
      boot:
        admin:
          client:
            # 配置 Admin Server(服务端的名字)
            url: http://localhost:9000
            # 配置用户名
            username: admin
            # 配置密码
            password: admin
    

    4.5 进行测试

    重启客户端和服务端项目

    访问效果为:

    在这里插入图片描述

    在这里插入图片描述

    总结

    本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注自由互联的更多内容!

    【本文由:香港云服务器http://www.558cloud.com提供,感谢】