Springboot插件集成(一)- 管理和监控插件SpringBootAdmin

1,484 阅读2分钟

前言

年末项目基本完事了,有了一些空闲时间,准备把SpringBoot各类常用插件的集成方法总结一下,希望能对你有所帮助。

看标题今天是要集成SpringBootAdmin,那么SpringBootAdmin是干什么用的?简单来说,它是一个监控工具,这时候就有比较聪明的同学发出疑问了,既然可以通过jdk自带的jconsole和jvisualvm进行监控,问什么还要用这个。答案就是这个界面更好看。

SpringBootAdmin 简洁好看

image.png

jvisualvm 浓烈的年代感

image.png

停停停!当然不是只是界面好看才选择了SpringBootAdmin,SpringBootAdmin可以在列表中浏览所有被监控spring-boot项目的基本信息,详细的Health信息、内存信息、JVM信息、垃圾回收信息、各种配置信息(比如数据源、缓存列表和命中率)等,还可以直接修改logger的level。

详细介绍,可以去Github上查阅。github.com/codecentric…

啰嗦半天,现在开始正题吧。

一、服务端搭建

配置pom.xml

创建一个新的springboot项目,pom文件里添加

<dependencies>
    <!-- SpringWeb模块 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <!-- spring security 安全认证 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-security</artifactId>
    </dependency>

    <dependency>
        <groupId>de.codecentric</groupId>
        <artifactId>spring-boot-admin-starter-server</artifactId>
    </dependency>
</dependencies>

配置启动类

@SpringBootApplication
@EnableAdminServer
public class MonitorAdminApplication {

   public static void main(String[] args) {
      SpringApplication.run(MonitorAdminApplication.class, args);
      System.out.println("Admin 监控启动成功" );
   }

}

配置 security

修改application

server:
  port: 10005

spring:
  security:
    user:
      name: admin
      password: admin123
  boot:
    admin:
      context-path: /admin

创建一个 SecurityConfig 类 继承 WebSecurityConfigurerAdapter 重写configure(HttpSecurity http) 方法

@Configuration
@EnableWebSecurity
@EnableGlobalMethodSecurity(prePostEnabled = true, securedEnabled = true, proxyTargetClass = true)
public class SecurityConfig extends WebSecurityConfigurerAdapter {

   private final String adminContextPath;

   public SecurityConfig(AdminServerProperties adminServerProperties) {
      this.adminContextPath = adminServerProperties.getContextPath();
   }

   @Override
   protected void configure(HttpSecurity httpSecurity) throws Exception {
      SavedRequestAwareAuthenticationSuccessHandler successHandler = new SavedRequestAwareAuthenticationSuccessHandler();
      successHandler.setTargetUrlParameter("redirectTo");
      successHandler.setDefaultTargetUrl(adminContextPath + "/");

      httpSecurity.authorizeRequests()
         //授予对所有静态资产和登录页面的公共访问权限。
         .antMatchers(adminContextPath + "/assets/**").permitAll()
         .antMatchers(adminContextPath + "/login").permitAll()
         //必须对每个其他请求进行身份验证
         .anyRequest().authenticated().and()
         //配置登录和注销
         .formLogin().loginPage(adminContextPath + "/login")
         .successHandler(successHandler).and()
         .logout().logoutUrl(adminContextPath + "/logout").and()
         //启用HTTP-Basic支持。这是Spring Boot Admin Client注册所必需的
         .httpBasic().and().csrf().disable()
         .headers().frameOptions().disable();
   }

}

现在可以启动项目看看效果了,localhost:10005/admin

image.png

已经可以看到登录界面了,登录进去看看

image.png

可以看到并没有项目连接,下面淦客户端的配置。

二、客户端配置

配置 pom.xml

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

配置 application

在application.yml文件中添加

spring:
  # Spring Boot Admin Client 客户端的相关配置
  boot:
    admin:
      client:
        # 增加客户端开关
        enabled: true
        # 设置 Spring Boot Admin Server 地址
        url: http://localhost:10005/admin
        instance:
          prefer-ip: false # 注册实例时,优先使用 IP
        username: admin
        password: admin123
  application:
    name: SpringBootAdamin-test

management:
  endpoints:
    web:
      # Actuator 提供的 API 接口的根目录。默认为 /actuator
      base-path: /actuator
      exposure:
        # 需要开放的端点,设置 * ,可以开放所有端点。生产环境不建议放开所有 根据项目需求放开即可.
        include: '*'
  endpoint:
    logfile:
      external-file: ./logs/sys-console.log	
      

然后启动客户端项目,看看效果。

image.png 发现已经有了应用实例了,然后看看其他的。

image.png

image.png

这样就完成了整个SpringBootAdmin监控系统的集成了。