SpringBoot学习——Spring Boot Admin 2.3.0基于security 认证监控

一、什么是Spring Boot Admin?

官方文档

Spring Boot Admin是一个开源社区项目,是用来管理 Spring Boot 应用程序的一个简单的界面。 应用程序作为Spring Boot Admin Client向为Spring Boot Admin Server注册(通过HTTP)或使用SpringCloud注册中心(例如Eureka,Consul)发现。 UI只是Spring Boot Actuator端点之上的Vue.js应用程序,展示Spring Boot Admin Client的Actuator端点上的一些监控。常见的功能或者监控如下:

  • 显示健康状况
  • 显示详细信息,例如
    • JVM和内存指标
    • 数据源指标
    • 缓存指标
  • 查看Spring Boot配置属性
  • 支持Spring Cloud的postable / env-和/ refresh-endpoint
  • 轻松的日志级管理
  • 查看计划任务
  • 与JMX-beans交互
  • 查看线程转储
  • 查看http跟踪
  • 查看auditevents
  • 查看http-endpoints
  • 查看和删除活动会话(使用spring-session)
  • 查看Flyway / Liquibase数据库迁移
  • 下载heapdump
  • 状态变更通知(通过邮件,Hipchat,Telegram Notifications…)
  • 状态更改的事件日志(非持久性)

二、快速开始

2.1、设置Spring Boot Admin Server

首先需要设置Server。由于Spring Boot Admin Server能够作为servlet或webflux应用程序运行,因此只需要对此进行确定并添加相应的Spring Boot Starter。在此示例中,我们使用Servlet Web Starter。

  1. 在pom文件中添加依赖
<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>
    <version>2.3.0</version>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
  1. 通过添加@EnableAdminServer到配置中来引入Spring Boot Admin Server 配置:
@EnableAdminServer
@SpringBootApplication
public class SpringBootAdminApplication {
    
    public static void main(String[] args) {
        SpringApplication.run(SpringBootAdminApplication.class, args);
    }

    @Configuration(proxyBeanMethods = false)
    public class SecuritySecureConfig extends WebSecurityConfigurerAdapter {

        private final AdminServerProperties adminServer;

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

        @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("/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));
        }
    }
}

3.配置文件

spring.application.name=spring-boot-admin
server.port=9000
# 登录账号和密码
spring.security.user.name=root
spring.security.user.password=root

2.2、启动

在这里插入图片描述



这里的用户名跟密码是前面配置文件中所配置的root/root。输入登录之后就会看到如下页面,由于没有Admin client注册,所以这里没有任何监控到的spring boot应用。
在这里插入图片描述

2.3、搭建client端

  • 在需要监测的项目的pom加入如下依赖
<!--每个要注册的应用程序都必须包含Spring Boot Admin Client。 -->
<dependency>
    <groupId>de.codecentric</groupId>
    <artifactId>spring-boot-admin-starter-client</artifactId>
</dependency>
  • 配置文件
#要展示的应用名称
spring.application.name=public-manage
#admin工程的url
spring.boot.admin.client.url=http://localhost:9000
#展示全部细节信息
management.endpoints.web.exposure.include=*
#允许admin工程远程停止本应用
management.endpoint.shutdown.enabled=true
#admin工程的账号密码
spring.boot.admin.client.username=root
spring.boot.admin.client.password=root
  • 依次启动server和client就会看如下页面

在这里插入图片描述
点击 public-manage 进入,页面如下,可以看到有我们之前介绍的一些功能。
在这里插入图片描述
在这里插入图片描述
注意: 这里的实时日志在2.3.0的版本中需要我们配置的,配置步骤如下

  1. 在pom文件中加入日志依赖
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
  1. 在resources目录下添加logback-spring.xml配置文件
<?xml version="1.0" encoding="UTF-8"?>

<configuration>
    <property name="log.path" value="logs/" />
    <appender name="logbackAll" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <File>${log.path}//all.log</File>
        <encoder>
            <pattern>%date [%level] [%thread] %logger{80} [%file : %line] %msg%n</pattern>
        </encoder>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <maxHistory>5</maxHistory>
            <fileNamePattern>${log.path}//all.%d{yyyy-MM-dd}.log</fileNamePattern>
        </rollingPolicy>
        <layout class="ch.qos.logback.classic.PatternLayout">
            <pattern>%date{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%thread] %logger{56}.%method:%L -%msg%n</pattern>
        </layout>
    </appender>

    <appender name="Console" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%date{yyyy-MM-dd HH:mm:ss.SSS} [%highlight(%level)] [%boldMagenta(%thread)] [%cyan(%file) : %line] %msg%n</pattern>
        </encoder>
    </appender>

    <logger name="mall" level="DEBUG" additivity="false">
        <appender-ref ref="Console"/>
        <appender-ref ref="logbackAll"/>
    </logger>

    <logger name="smcvAuthSdk" level="INFO" additivity="false">
        <appender-ref ref="Console"/>
        <appender-ref ref="logbackAll"/>
    </logger>

    <logger name="org.springframework" level="INFO" additivity="false">
        <appender-ref ref="Console"/>
        <appender-ref ref="logbackAll"/>
    </logger>

      <!-- 日志输出级别  ,注意:如果不写<appender-ref ref="FILE" /> ,将导致springbootadmin找不到文件,无法查看日志 -->
    <root level="INFO">
        <appender-ref ref="STDOUT" />
        <appender-ref ref="FILE" />
    </root>
</configuration>
  1. 在application.properties中添加日志路径,完整配置如下
#要展示的应用名称
spring.application.name=public-manage
#admin工程的url
spring.boot.admin.client.url=http://localhost:9000
#展示全部细节信息
management.endpoint.health.show-details=always
management.endpoints.logfile.external-file=D:/project/public-manage/logs/all.log
logging.file=D:/project/public-manage/logs/all.log
management.endpoints.web.exposure.include=*
#允许admin工程远程停止本应用
management.endpoint.shutdown.enabled=true
#admin工程的账号密码
spring.boot.admin.client.username=root
spring.boot.admin.client.password=root


这样一个Spring Boot Admin 2.3.0基于security 认证监控就算搭建完成了。
如果有不足之处,希望能够多多包涵并且可以指正我。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值