简介

Druid能够提供强⼤的监控和扩展功能。

⼀、使⽤

1.1 maven 配置:

<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.18</version>
</dependency>

1.2 集成spring boot

<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.18</version>
</dependency>


⼆、监控统计

2.1 打开

​https://github.com/alibaba/druid/wiki/%E9%85%8D%E7%BD%AE_StatFilter​


2.2 使⽤并配置StatViewServlet  

​https://github.com/alibaba/druid/wiki/%E9%85%8D%E7%BD%AE_StatViewServlet%E9%85%8D%E7%BD%AE​​​​

Druid内置提供了⼀个StatViewServlet⽤于展⽰Druid的统计信息。

这个StatViewServlet的⽤途包括:

  • 提供监控信息展⽰的html页⾯
  • 提供监控信息的JSON API  

注意:使⽤StatViewServlet,建议使⽤druid 0.2.6以上版本。

2.3 使⽤并配置WebStatFilter  

​https://github.com/alibaba/druid/wiki/%E9%85%8D%E7%BD%AE_%E9%85%8D%E7%BD%AEWebStatFilter

WebStatFilter⽤于采集web-jdbc关联监控的数据。

2.4 使⽤并配置Spring关联监控

​https://github.com/alibaba/druid/wiki/%E9%85%8D%E7%BD%AE_Druid%E5%92%8CSpring%E5%85%B3%E8%81%94%E7%9B%91%​​​​

Druid提供了Spring和Jdbc的关联监控。

三、参考配置

数据库连接池

DruidDataSource配置

Druid Spring Boot Starter

​https://github.com/alibaba/druid/tree/master/druid-spring-boot-starter

3.1 添加配置

spring.datasource.url=jdbc:mysql://localhost:3306/park?
useUnicode=true&characterEncoding=utf8mb4
spring.datasource.username=root
spring.datasource.password=123456
# ...其他配置(可选,不是必须的,使⽤内嵌数据库的话上述三项也可省略不填)


3.2 配置属性

Druid Spring Boot Starter 配置属性的名称完全遵照 Druid,你可以通过 Spring Boot 配置⽂件来配置Druid数据库连

接池和监控,如果没有配置则使⽤默认值。

######## JDBC配置 ########
#spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.url=jdbc:mysql://localhost:3306/park?
useUnicode=true&characterEncoding=utf-8
spring.datasource.password=123456
spring.datasource.username=root
#spring.security.user.name=test
#spring.security.user.password=123456
################################### Start Druid 配置
###################################
######## ⼀、连接池配置 ########
spring.datasource.druid.initial-size=5
spring.datasource.druid.max-active=30
spring.datasource.druid.min-idle=5
# 获取连接最⼤等待时间(ms)
spring.datasource.druid.max-wait=60000
# 配置监控统计拦截的filters,去掉后监控界⾯sql⽆法统计,'wall'⽤于防⽕墙 #配置多个英⽂逗号分隔
# 这⾥使⽤的都是默认配置,可以⾃定义
spring.datasource.druid.filters=stat,wall
# 通过connectProperties属性来打开mergeSql功能;慢SQL记录
spring.datasource.druid.connectionproperties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500
# 合并多个DruidDataSource的监控数据
spring.datasource.druid.use-global-data-source-stat=true
#是否缓存preparedStatement,也就是PSCache。PSCache对⽀持游标的数据库性能提升巨⼤,⽐如说
oracle。在mysql下建议关闭。
spring.datasource.druid.pool-prepared-statements=false
#要启⽤PSCache,必须配置⼤于0,当⼤于0时,poolPreparedStatements⾃动触发修改为true
spring.datasource.druid.max-pool-prepared-statement-per-connection-size=0
#和上⾯的等价
spring.datasource.druid.max-open-prepared-statements= 0
# ⽤来检测连接是否有效的sql
spring.datasource.druid.validation-query=select 1 from dual
spring.datasource.druid.validation-query-timeout=60000
# 申请连接时执⾏validationQuery检测连接是否有效,做了这个配置会降低性能。
spring.datasource.druid.test-on-borrow=false
# 归还连接时执⾏validationQuery检测连接是否有效,做了这个配置会降低性能。
spring.datasource.druid.test-on-return=false
# 建议配置为true,不影响性能,并且保证安全性。申请连接的时候检测,如果空闲时间⼤于
timeBetweenEvictionRunsMillis,执⾏validationQuery检测连接是否有效
spring.datasource.druid.test-while-idle=true
# 配置间隔多久才进⾏⼀次检测,检测需要关闭的空闲连接,单位是毫秒
spring.datasource.druid.time-between-eviction-runs-millis=60000
# 连接保持空闲⽽不被驱逐的最⼩时间spring.datasource.druid.min-evictable-idle-time-millis=300000
spring.datasource.druid.max-evictable-idle-time-millis=300000
spring.datasource.druid.login-timeout=6000
######## ⼆、WebStatFilter配置 ########
#
## WebStatFilter配置,说明请参考Druid Wiki,配置_配置WebStatFilter
spring.datasource.druid.web-stat-filter.enabled=true
spring.datasource.druid.web-stat-filter.url-pattern=/*
spring.datasource.druid.web-statfilter.exclusions=*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/*,/druid
spring.datasource.druid.web-stat-filter.session-stat-enable=
spring.datasource.druid.web-stat-filter.session-stat-max-count=
spring.datasource.druid.web-stat-filter.principal-session-name=
spring.datasource.druid.web-stat-filter.principal-cookie-name=
spring.datasource.druid.web-stat-filter.profile-enable=
######## ⼆、StatViewServlet配置 ########
#
## StatViewServlet配置,说明请参考Druid Wiki,配置_StatViewServlet配置
#是否启⽤StatViewServlet(监控页⾯)默认值为false(考虑到安全问题默认并未启动,如需启⽤建议设置密钥或⽩名单以保障安全)
spring.datasource.druid.stat-view-servlet.enabled=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
# 禁⽤HTML页⾯上的“Reset All”功能
spring.datasource.druid.stat-view-servlet.reset-enable=false
# IP⽩名单(没有配置或者为空,则允许所有访问)
spring.datasource.druid.stat-view-servlet.allow=
# IP⿊名单 (存在共同时,deny优先于allow)
spring.datasource.druid.stat-view-servlet.deny=
######## 三、StatViewServlet配置 ########
#
## Spring监控配置,说明请参考Druid Github Wiki,配置_Druid和Spring关联监控配置
# Spring监控AOP切⼊点,如x.y.z.service.*,配置多个英⽂逗号分隔
spring.datasource.druid.aoppatterns=com.xiaofu.park.controller.*,com.xiaofu.park.service.*,com.xiaofu.park.dao.
*
################################### End Druid 配置
###################################


3.3 filter使⽤

⽬前为以下 Filter 提供了配置⽀持,请参考⽂档或者根据IDE提⽰(spring.datasource.druid.filter.*)进⾏配置。

  • StatFilter
  • WallFilter
  • ConfigFilter
  • EncodingConvertFilter
  • Slf4jLogFilter
  • Log4jFilter
  • Log4j2Filter
  • CommonsLogFilter