SpringBoot 3.1.x 集成spring-boot-admin 3.1.x(解决Httptrace功能丢失问题)

目录

Spring Boot Admin 介绍及使用

轻量级spring boot应用监控(详细介绍自行脑补):

  1. spring-boot-admin官方使用文档
  2. 官方github源码地址
  3. 官方gitee源码镜像,可能与新版本间存在差异

注意事项

spring boot admin 分为 服务端 server 和被监控的客户端 client;服务器端启动后,客户端端自动注册服务信息到服务器端(如果试spring cloud服务客户端不需要注册到spring boot admin 服务器端,正常注册到服务器中心如:nacos或者eureka,spring boot admin 服务器端自动从注册中心拉取 );服务端提供监控的可视化界面UI,客户端通过暴露的监控点(actuator)提供应用的系统信息、日志、内存、线程等信息给服务端,服务器端通过文字和图表进行展示。

应用集成

使用环境

  1. jdk17
  2. springboot v3.1.0
  3. spring boot admin v3.1.0
  4. windows10 centos7.9

springboot-admin同springboot版本对应关系(版本必须对应)

springboot versionspringboot-admin version2
2.5.x2.5.x
3.0.x3.0.x
3.1.x3.1.x

代码实现

maven依赖
<!--健康检查、审计、统计和监控-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
    <exclusions>
        <exclusion>
            <artifactId>HdrHistogram</artifactId>
            <groupId>org.hdrhistogram</groupId>
        </exclusion>
    </exclusions>
</dependency>

<!--服务端添加依赖-->
<dependency>
    <groupId>de.codecentric</groupId>
    <artifactId>spring-boot-admin-starter-server</artifactId>
    <version>3.0.4</version>
</dependency>

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

<!--客户端端添加依赖-->
<dependency>
    <groupId>de.codecentric</groupId>
    <artifactId>spring-boot-admin-starter-client</artifactId>
    <version>3.0.4</version>
</dependency>

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-security</artifactId>
</dependency>
配置文件application.yml种放开监控检查(必须放开,服务器端无法采集数据)
#配置可监控信息
management:
  #对外开放某个监控点
  endpoint:
    #health必须开
    health:
      show-details: always
      enabled: true
    #其他
    beans:
      enabled: true
  endpoints:
    #对web开启的监控点
    web:
      exposure:
        include: "*"
    #对外开放所有监控点
    enabled-by-default: true
服务端开启安全认证(服务器端配置)
spring:
  application:
    name: ${server.servlet.context-path}
    ## spring boot admin 登录
  security:
    user:
      name: admin #管理界面登录账户
      password: admin #管理界面登录密码
服务端启动加入开启服务注解@EnableAdminServer (服务器端配置)
@EnableAdminServer //开启健康
@SpringBootApplication
public class BootMonitorApplication {

    public static void main(String[] args) {
        SpringApplication.run(BootMonitorApplication.class, args);
    }

}
安全配置项 服务器端都接入,否则客户端会报401
import de.codecentric.boot.admin.server.config.AdminServerProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityCustomizer;
import org.springframework.security.web.SecurityFilterChain;

import static org.springframework.security.config.Customizer.withDefaults;

/**
 * 启用security安全防护
 *
 * @author Yang douya
 * @date 2023/6/19 15:40
 */
@Configuration
public class BootAdminMonitorSecurityConfig {

    private final String adminContextPath;

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

    /**
     * 增加 springboot 服务端安全验证 解决客户端注册报401
     * <p>
     * 注释必须登录才能进入使用
     *
     * @param http
     * @return
     * @throws Exception
     * @Bean protected SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
     * return http.authorizeHttpRequests((authorizeRequests) -> authorizeRequests.anyRequest().permitAll())
     * .csrf().disable().build();
     * }
     */

    @Bean
    public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
        http.authorizeHttpRequests((requestMatcherRegistry) -> requestMatcherRegistry.anyRequest().authenticated())
                .httpBasic(withDefaults());
        return http.build();
    }

    /**
     * 客户端注册直接放过 解决服务端增加登录后客户端无法注册一直报401问题
     *
     * @return
     */
    @Bean
    public WebSecurityCustomizer webSecurityCustomizer() {
        return (web) -> web.ignoring().requestMatchers(adminContextPath + "/instances", adminContextPath + "/actuator/**");
    }
}

至此服务端配置完成。下面配置客户端application.yml

客户端放开监控检查
#配置可监控信息
management:
  #对外开放某个监控点
  endpoint:
    #health必须开
    health:
      show-details: always
      enabled: true
    #其他
    beans:
      enabled: true
  endpoints:
    #对web开启的监控点
    web:
      exposure:
        include: "*"
    #对外开放所有监控点
    enabled-by-default: true
客户端服务注册到服务端
spring:
  application:
    name: ${server.servlet.context-path}
    ## spring boot admin
  boot:
    admin:
      client:
        #监控服务器地址 server端
        url: http://(服务器端IP):(服务器端端口)/(服务端地址)/
        username: admin # 服务器端配置登录账户
        password: admin # 服务器端配置登录密码
附加项:如果需要增加客户端日志上报到监控平台配置,增加日志监控点
management:
  #对外开放某个监控点
  endpoint:
    #health必须开
    health:
      show-details: always
      enabled: true
    #其他
    beans:
      enabled: true
    # 上报日志到监控 客户端上报日志文件位置
    logfile:
      external-file: /home/app-server/projects/my-app/logs/info.log (这里是应用输出日志目录地址)
  endpoints:
    #对web开启的监控点
    web:
      exposure:
        include: "*"
    #对外开放所有监控点
    enabled-by-default: true
客户端security
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.web.SecurityFilterChain;

/**
 * @author Yang douya
 * @date 2023/6/19 15:40
 */
@Configuration
public class BootAdminMonitorSecurityConfig {

    /**
     * 增加 springboot 服务端安全验证 解决客户端注册报401
     *
     * @param http
     * @return
     * @throws Exception
     */
    @Bean
    protected SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
        return http.authorizeHttpRequests((authorizeRequests) -> authorizeRequests.anyRequest().permitAll())
                .csrf().disable().build();
    }
}

启动服务器端应用 和 客户端应用

监控页面

浏览器输入监控服务端访问地址

输入登录密码 这里配置的是 admin/admin
在这里插入图片描述
进入服务页
在这里插入图片描述
点击打开注册的应用
在这里插入图片描述
系统监控参数
在这里插入图片描述
在线日志
在这里插入图片描述

http trace跟踪功能

spring boot admin http监控功能缺少说明

spring boot默认取消http监控,所以在spring boot admin 监控面板中没有http监控功能,官方文档:
spring boot文档 入口
在这里插入图片描述

增加http trace功能

1、springboot3.x 之前版本可以自行注入 InMemoryHttpTraceRepository 开启http监控

/**
 * 开启http跟踪记录
 *
 * @author Yang douya
 * @date 2022/8/106 10:20
 */
@Configuration
public class HttpTraceConfig {

    @Bean
    public InMemoryHttpTraceRepository getInMemoryHttpTrace(){
        return new InMemoryHttpTraceRepository();
    }

}

2、spirngboot后续版本中是不能直接注入InMemoryHttpTraceRepository 开启,而且使用httpExchanges开启http trace记录。
spring boot http trace跟踪文档说明 简单解释为:开启http trace是存在性能问题的,建议在生产环境呢使用建议使用 生产就绪的跟踪或可观测性解决方案,如Zipkin或OpenTelemetry。或者,您可以创建自己的HttpExchangeRepository。
自行开启HttpExchangeRepository功能:

/**
* http监控 将http请求情况提交springboot-admin 开启http监控
*
* 生成环境回存在一些性能问题,官方建议使用 zipKin等开源框架接入
*
* @author Yang douya
* @date 2023/6/29 15:55
*/
@Configuration
public class ActuatorConfiguration {

   @Bean
   public HttpExchangeRepository httpTraceRepository() {
       InMemoryHttpExchangeRepository repository = new InMemoryHttpExchangeRepository();
       // 默认保存1000条http请求记录
       repository.setCapacity(1000);
       return repository;
   }
}

重启客户端,重新进入监控:
在这里插入图片描述
完成 !

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Spring Boot 3.1中添加redisson-spring-boot-starter,你可以按照以下步骤进行配置: 1. 首先,确保在你的项目的`pom.xml`文件中添加了redisson-spring-boot-starter的依赖。你可以在CSDN或其他地方找到最新版本的依赖信息,并将其添加到`<dependencies>`部分中。 ```xml <dependencies> <!-- 其他依赖 --> <dependency> <groupId>org.redisson</groupId> <artifactId>redisson-spring-boot-starter</artifactId> <version>最新版本</version> </dependency> </dependencies> ``` 2. 接下来,在你的Spring Boot应用程序的配置文件中(比如`application.properties`或`application.yml`),添加Redis连接的相关配置。以下是一个示例`application.yml`文件的配置示例: ```yaml spring: redis: host: localhost port: 6379 password: database: 0 ``` 在上面的示例中,我们指定了Redis服务器的主机地址(`localhost`),端口号(`6379`),密码(如果有的话),以及数据库索引(`0`)。 3. 确保你的Spring Boot应用程序上有`@EnableRedissonHttpSession`注解,以启用Redisson作为会话管理器。你可以将该注解添加到你的Spring Boot应用程序的启动类上。 ```java @EnableRedissonHttpSession @SpringBootApplication public class YourApplication { // ... } ``` 这样就完成了redisson-spring-boot-starter的配置。你可以根据你的需求进行更多的高级配置,比如指定连接池大小、超时时间等。完整的配置选项可以参考redisson-spring-boot-starter的文档。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值