06_项目集成 Spring Actuator 并实现可视化页面

06_项目集成 Spring Actuator 并实现可视化页面

一、引入 Spring Actuator 依赖

pom.xml 文件中添加以下依赖:


<dependency>
  <groupId>org.springframework.bootgroupId>
  <artifactId>spring-boot-starter-actuatorartifactId>
dependency>

⚙️ 二、Spring Actuator 配置

2.1 配置端点访问前缀

Spring Boot 默认的 Actuator 端点访问地址是:

http://localhost:8080/actuator

若希望自定义访问路径(如改为 /Myactuator),需在 application.yml 中添加如下配置:

management:
  endpoints:
    web:
      base-path: /Myactuator

配置后访问地址变为:

http://localhost:8080/Myactuator

2.2 暴露所有端点

默认情况下,Actuator 只暴露部分端点(如 healthinfo)。为了访问所有可用端点,可添加如下配置:

management:
  endpoints:
    web:
      base-path: /actuator
      exposure:
        include: "*"

说明:include: "*" 表示暴露所有端点;如需按需暴露,可填写具体端点名,如:include: health,info,metrics

2.3 启用指定端点

如需开放指定端点如 health 端点:

management:
  endpoint:
    health:
      enabled: true

2.4 开放 health 端点的详细信息

默认情况下,请求 127.0.0.1:8080/actuator/health 的响应信息如下:

{"status":"UP"}

如需展示详细信息,需进行如下配置:

management:
  endpoint:
    health:
      show-details: always

2.5 启用 info 端点(info 端点和其他端点启用方式略有不同)

management:
  info:
    env:
      enabled: true

拓展:展示项目信息

info:
  app:
    name: "视频AI审核系统"
    version: "v1.0.0"
    description: "视频AI审核系统"

三、Actuator 常见端点说明

端点名称 说明
/actuator/health 应用健康状态
/actuator/info 应用配置信息(通过 info.* 配置)
/actuator/metrics 应用指标信息(CPU、内存、线程等)
/actuator/env 当前环境属性配置
/actuator/beans Spring 容器中的 Bean 列表
/actuator/mappings 所有请求映射路径
/actuator/threaddump 当前线程快照
/actuator/loggers 日志级别控制接口

️ 四、可视化页面集成

4.1 使用 Spring Boot Monitor 实现可视化界面

Spring Boot Monitor 可以对 Spring Boot 应用做监控,对 Spring Boot Actuator 的指标做显示。工具来源于 Spring Boot Admin,只能整合在 Spring Boot 应用内使用。

引入依赖

<dependency>
  <groupId>cn.pomitgroupId>
  <artifactId>spring-boot-monitorartifactId>
  <version>0.0.4version>
dependency>

4.2 访问方式

应用启动后,访问以下地址即可查看监控可视化界面:

http://localhost:8080/monitor

可查看应用的基本信息、内存、线程、GC、健康状态等指标。

五、安全配置

由于 Actuator 和 Monitor 会暴露较多系统信息,必须进行访问控制。

5.1 引入安全配置依赖

<dependency>
  <groupId>org.springframework.bootgroupId>
  <artifactId>spring-boot-starter-securityartifactId>
dependency>

5.2 配置登录账号密码

spring:
  security:
    user:
      name: admin
      password: admin
      roles: ADMIN

5.3 添加请求校验配置类

@Configuration
@EnableWebSecurity
public class SecurityConfig {

    @Bean
    public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
        http
                .authorizeHttpRequests(auth -> auth
                        // 登录后可以访问 monitor 页面
                        .requestMatchers(new AntPathRequestMatcher("/monitor/**")).hasRole("ADMIN")

                        // 登录后可以访问 actuator 接口
                        .requestMatchers(new AntPathRequestMatcher("/actuator/**")).hasRole("ADMIN")

                        // 其他请求全部放行
                        .anyRequest().permitAll()
                )
                .httpBasic(Customizer.withDefaults());
        return http.build();
    }
}

注意:Spring Security 默认会在角色前添加 ROLE_ 前缀,因此 hasRole("ADMIN") 实际匹配的是 ROLE_ADMIN

你可能感兴趣的:(【后端开发】Java,碎碎念,spring,java,后端)