0
点赞
收藏
分享

微信扫一扫

项目1在线交流平台-8.项目总结与部署-2. 端点监测-Spring Boot Actuator

ixiaoyang8 2022-04-26 阅读 27

文章目录


参考牛客网高级项目教程

功能需求

在这里插入图片描述

  • 项目上线后,需要管理员特定权限对项目进行端点监控
  • 可以使用SpringBoot内置的Actuator端点监控,熟悉端点监控流程以及如何自定义端点监控

一、SpringBoot内置Actuator端点监控入门

SpringBoot服务监控机制原理解析

1. 导包

  • 导入包后,系统就自动启动端点监控

  • 默认所有端点启动,只有关闭服务器的端点默认关闭,比较满足实际需要,因此,使用默认即可

  • 但只有两个端点默认直接可用,其他端点默认不暴露,需要配置后方可使用

    • /actuator/health
    • /actuator/info
  • 其他端口默认不暴露,直接访问不了

    在这里插入图片描述

<!--       导入SpringBoot的Actuator端点监控坐标-->
      <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-actuator</artifactId>
      </dependency>

默认开启的两个端点

/actuator/health
  • 监控当前应用健康信息状态

    在这里插入图片描述

/actuator/info
  • 服务器一些信息

2. 其他端口设置

  • 可用设置哪些端口暴露,因有很大端口需要暴露,可用先设置所有*
  • 再排除不想要暴露的端口
# actuator
management.endpoints.web.exposure.include=*
management.endpoints.web.exposure.exclude=info,caches

暴露接口后,测试

在这里插入图片描述

在这里插入图片描述

3. 自定义端点监控

3.1 自定义数据库连接端点监控类

@Endpoint(id = "database")
  • 定义端点的id,通过id访问该端点

  • 同时支持 HTTPJMX 两种方式

DataSource
  • mysql数据连接池
@ReadOperation
  • 作用在方法上,可用来返回端点展示的信息(通过 Get 方法请求)

@Component
@Endpoint(id = "database")
public class DatabaseEndpoint {
    private Logger logger = LoggerFactory.getLogger(this.getClass());

    // 注入数据库连接池
    @Qualifier("dataSource")
    @Autowired
    DataSource dataSource;  // mysql数据连接池
    
    // 尝试获取连接
    @ReadOperation
    public String checkConnection() {
        try (
                Connection conn = dataSource.getConnection();
        ) {
            return CommunityUtil.getJSONString(0, "获取连接成功!");
        } catch (SQLException e) {
            logger.error("获取连接失败:" + e.getMessage());
            return CommunityUtil.getJSONString(1, "获取连接失败!");
        }
    }
}

3.2 测试结果

在这里插入图片描述

二、对端点监控进行权限管理

权限设置

  • 设置只有管理员权限才能访问端点监控

在这里插入图片描述

测试结果

  • 游客身份访问端点请求-会跳转到登录界面

    在这里插入图片描述

  • 非管理员身份访问

    在这里插入图片描述

  • 管理员身份访问

    在这里插入图片描述

举报

相关推荐

8.项目发布与总结

0 条评论