springboot项目接入druid
项目这几天让整理线上的慢sql,看了下我们还没有集成druid。主要是监控比如慢sql这些的。
按照官网的说法,引入最新的pom依赖:
<!--添加druid监控--> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>1.2.11</version> </dependency>
然后添加配置类:
package com.gwm.marketing.config; import com.alibaba.druid.filter.Filter; import com.alibaba.druid.filter.stat.StatFilter; import com.alibaba.druid.pool.DruidDataSource; import com.google.common.collect.Lists; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; /** * @author fanht * @descrpiton druid配置类 * @date 2022/8/29 15:27:14 * @versio 1.0 */ @Configuration public class DruidMysqlConfig { @Value("${spring.druid.slowSqlMillis}") private Long slowSqlMillis; /** * 会扫描application.properties文件的以spring.druid开头的数据注入 * @return */ @ConfigurationProperties(prefix = "spring.datasource") @Bean(initMethod = "init",destroyMethod = "close") public DruidDataSource dataSource(){ DruidDataSource dataSource = new DruidDataSource(); dataSource.setProxyFilters(Lists.newArrayList(statGwmFilter())); return dataSource; } /** * alibaba监听器 打印慢sql * @return */ @Bean public Filter statGwmFilter(){ StatFilter filter = new StatFilter(); filter.setSlowSqlMillis(slowSqlMillis); filter.setLogSlowSql(true); filter.setMergeSql(true); return filter; } }
再配置下naocs的配置:
spring: druid: slowSqlMillis: 2000 datasource: url: jdbc:mysql://ip:port/xx?useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8&allowMultiQueries=true username: xx password: xx driver-class-name: com.mysql.jdbc.Driver type: com.alibaba.druid.pool.DruidDataSource druid: web-stat-filter: enabled: true url-pattern: /druid/* initialSize: 5 minIdle: 5 maxActive: 20 maxWait: 2000 validationQuery: select 1 testOnBorrow: false testOnReturn: false testWhileIdle: true filters: stat, wall stat-view-servlet: enabled: true url-pattern: /druid/* reset-enable: true login-username: xx login-password: xx
遇到的问题:
首先是接入后,访问本地 http://localhost:8183/druid 一直报404. 然后去官网issue表里面搜了下有不少遇到类似的问题。主要原因有几个
1.版本号问题
2.低版本的springboot不兼容
3.配置未开启启动监听
我的是第三个,nacos里面的配置问题。 里面读取配置时候我写成了 spring.druid 。造成配置文件未读取到。成功后启动如下图:
2.部署到服务器发现,无法登录问题
目前已知道的是好多人碰到这个问题,issue里面也是各种解决办法。看是那种吧 https://github.com/alibaba/druid/issues/3906