在SpringBoot项目中,如何实时监控Druid数据源的活跃连接数是一个常见需求。虽然Druid提供了监控功能,但开发者常遇到的问题是如何将监控数据集成到应用中并实时展示。解决方法是通过配置Druid的StatViewServlet和WebStatFilter,结合SpringBoot的Actuator端点扩展,实现对活跃连接数(activeCount)、使用中的连接数(busyConnections)等指标的监控。同时,可以借助SpringBoot Admin或自定义REST接口,将这些数据可视化呈现。确保正确配置druid-spring-boot-starter依赖,并在application.yml中启用监控属性,如url、username、password及允许访问IP。此外,注意避免因频繁轮询导致性能开销过大。
1条回答 默认 最新
风扇爱好者 2025-05-17 02:20关注1. 了解需求背景
在SpringBoot项目中,实时监控Druid数据源的活跃连接数是一项常见需求。开发者希望通过集成监控数据到应用中,并以可视化方式展示出来。然而,实际开发中常遇到问题是如何将Druid提供的监控功能与SpringBoot结合使用。
关键指标包括:
activeCount(活跃连接数)、busyConnections(使用中的连接数)等。为了实现这一目标,需要正确配置druid-spring-boot-starter依赖,并启用相关属性。关键词:
- SpringBoot
- Druid
- StatViewServlet
- WebStatFilter
- Actuator
2. 配置Druid监控
首先,在
pom.xml中引入druid-spring-boot-starter依赖:<dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>1.2.8</version> </dependency>接着,在
application.yml中配置Druid的相关属性:属性 描述 示例值 spring.datasource.druid.stat-view-servlet.enabled 是否启用StatViewServlet true spring.datasource.druid.stat-view-servlet.url-pattern 访问路径 /druid/* spring.datasource.druid.stat-view-servlet.login-username 登录用户名 admin spring.datasource.druid.stat-view-servlet.login-password 登录密码 123456 3. 实现监控数据集成
通过SpringBoot Actuator扩展端点,可以将Druid的监控数据暴露为REST接口。例如,创建一个自定义Actuator端点:
@Component public class DruidDataSourceEndpoint implements PublicMetrics { @Autowired private DataSource dataSource; @Override public List> metrics() { DruidDataSource druidDataSource = (DruidDataSource) dataSource; return Arrays.asList( new Metric<>("active.connections", druidDataSource.getActiveCount()), new Metric<>("busy.connections", druidDataSource.getPoolingCount()) ); } }此代码片段实现了对
activeCount和poolingCount的监控,并通过Actuator端点暴露。4. 可视化呈现
为了更好地展示监控数据,可以选择以下两种方式:
- 使用SpringBoot Admin:它提供了一个友好的UI界面,可以直接展示Druid的监控信息。
- 自定义REST接口:通过前端框架(如Vue.js或React)调用后端API,动态渲染图表。
以下是使用SpringBoot Admin的流程图:
mermaid graph TD A[启动SpringBoot应用] --> B(集成druid-spring-boot-starter) B --> C{配置StatViewServlet} C --> D(暴露Actuator端点) D --> E[接入SpringBoot Admin]5. 性能优化注意事项
频繁轮询可能导致性能开销过大。因此,建议采用以下策略:
- 设置合理的轮询间隔时间(如每分钟一次)。
- 利用缓存机制存储监控数据,减少数据库访问频率。
- 仅在必要时才触发数据采集操作。
此外,确保
allow和deny属性正确配置,限制外部访问Druid监控页面。本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报