文章目录
参考牛客网高级项目教程
功能需求
- 项目上线后,需要管理员特定权限对项目进行端点监控
- 可以使用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访问该端点
-
同时支持
HTTP
和JMX
两种方式
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 测试结果
二、对端点监控进行权限管理
权限设置
- 设置只有管理员权限才能访问端点监控
测试结果
-
游客身份访问端点请求-会跳转到登录界面
-
非管理员身份访问
-
管理员身份访问