Spring Boot 配置Druid监控以及基本特征监测使用

Druid Spring Boot Starter 用于帮助你在Spring Boot项目中轻松集成Druid数据库连接池和监控。
 

参考:https://github.com/alibaba/druid/wiki/%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98

1、引入依赖

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid-spring-boot-starter</artifactId>
    <version>${druid.version}</version>
</dependency>

避免Druid版本冲突,可以删除原有的Druid依赖(starter中已经依赖)

2、配置JDBC(根据项目的具体参数确定)

# JDBC配置
spring.datasource.druid.url= jdbc:mysql://ip:3306/database?useUnicode=true&autoReconnect=true&allowMultiQueries=true&useSSL=false 

spring.datasource.druid.username=uername
spring.datasource.druid.password=password
spring.datasource.druid.driver-class-name=com.mysql.jdbc.Driver

 

  • druid连接池配置
# 连接池配置,下面配置说明请参考Druid Github Wiki,配置_DruidDataSource参考配置
spring.datasource.druid.initial-size=1
spring.datasource.druid.max-active=20
spring.datasource.druid.min-idle=1
spring.datasource.druid.max-wait=60000
#设置为让连接池知道数据库已经断开了,并且自动测试连接查询
spring.datasource.druid.validation-query=select 'x'
spring.datasource.druid.test-on-borrow=false
spring.datasource.druid.test-on-return=false
spring.datasource.druid.test-while-idle=true
spring.datasource.druid.time-between-eviction-runs-millis=60000
spring.datasource.druid.min-evictable-idle-time-millis=3000

 开启监控

# 配置StatFilter StatFilter,用于统计监控信息

spring.datasource.druid.filter.stat.log-slow-sql= true
spring.datasource.druid.filter.stat.slow-sql-millis=1000
spring.datasource.druid.filter.stat.merge-sql=true
spring.datasource.druid.filter.stat.db-type=mysql
spring.datasource.druid.filter.stat.enabled=true





# WebStatFilter配置,说明请参考Druid Wiki,配置_配置WebStatFilter 连接泄漏监测
#WebStatFilter用于采集web-jdbc关联监控的数据。
#如果你的应用配置了WebStatFilter
#在内置监控页面weburi-detail.html中,
#查看JdbcPoolConnectionOpenCount(连接池获取连接次数)
# 和JdbcPoolConnectionCloseCount(连接池关闭连接次数)属性,
#如果不相等,就是泄漏了。

spring.datasource.druid.web-stat-filter.enabled=true
spring.datasource.druid.web-stat-filter.url-pattern=/*
spring.datasource.druid.web-stat-filter.exclusions=*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*
spring.datasource.druid.stat-view-servlet.allow=127.0.0.1
#spring.datasource.druid.stat-view-servlet.allow=
#你可以配置principalSessionName,使得druid能够知道当前的cookie的用户是谁
spring.datasource.druid.web-stat-filter.principal-cookie-name=admin
#你可以配置principalSessionName,使得druid能够知道当前的session的用户是谁
spring.datasource.druid.web-stat-filter.principal-session-name=admin
#置profileEnable能够监控单个url调用的sql列表。
spring.datasource.druid.web-stat-filter.profile-enable=true
#session统计功能
spring.datasource.druid.web-stat-filter.session-stat-enable=true
#最大session数
spring.datasource.druid.web-stat-filter.session-stat-max-count=100000


# StatViewServlet配置,说明请参考Druid Wiki,配置_StatViewServlet配置
#使用Druid的内置监控页面

spring.datasource.druid.stat-view-servlet.enabled=true
spring.datasource.druid.stat-view-servlet.login-username=admin
spring.datasource.druid.stat-view-servlet.login-password=admin
spring.datasource.druid.stat-view-servlet.url-pattern=/druid/*
spring.datasource.druid.stat-view-servlet.reset-enable=true




# 配置WallFilter
#配置防御SQL注入攻击

spring.datasource.druid.filter.wall.enabled=true
spring.datasource.druid.filter.wall.db-type=mysql
spring.datasource.druid.filter.wall.config.alter-table-allow=false
spring.datasource.druid.filter.wall.config.truncate-allow=false
spring.datasource.druid.filter.wall.config.drop-table-allow=false
#是否允许非以上基本语句的其他语句,缺省关闭,通过这个选项就能够屏蔽DDL。
spring.datasource.druid.filter.wall.config.none-base-statement-allow=false
#检查UPDATE语句是否无where条件,这是有风险的,但不是SQL注入类型的风险
spring.datasource.druid.filter.wall.config.update-where-none-check=true
#SELECT ... INTO OUTFILE 是否允许,这个是mysql注入攻击的常见手段,缺省是禁止的
spring.datasource.druid.filter.wall.config.select-into-outfile-allow=false
#是否允许调用Connection.getMetadata方法,这个方法调用会暴露数据库的表信息
spring.datasource.druid.filter.wall.config.metadata-allow=true
#对被认为是攻击的SQL进行LOG.error输出
spring.datasource.druid.filter.wall.log-violation=true
#对被认为是攻击的SQL抛出SQLExcepton
spring.datasource.druid.filter.wall.throw-exception=true


这个配置需要依赖大量固定的参数名,参数名客户以参考Druid官网文档,也可以用像Idea这样的工具的代码提示功能,另外处于项目安全考虑druid 监控的配置为了只允许本机访问,相关配置:

spring.datasource.druid.stat-view-servlet.allow=127.0.0.1

以下是项目中使用的配置

# 配置StatFilter StatFilter,用于统计监控信息
spring.datasource.druid.filter.stat.enabled=true
spring.datasource.druid.filter.stat.db-type=mysql
spring.datasource.druid.filter.stat.log-slow-sql=true
spring.datasource.druid.filter.stat.slow-sql-millis=5000


# 配置WallFilter
#配置防御SQL注入攻击
spring.datasource.druid.filter.wall.enabled=true
spring.datasource.druid.filter.wall.db-type=mysql
spring.datasource.druid.filter.wall.config.delete-allow=true
spring.datasource.druid.filter.wall.config.drop-table-allow=false
spring.datasource.druid.filter.wall.config.multi-statement-allow=true

#WebStatFilter配置,说明请参考Druid Wiki,配置_配置WebStatFilter 连接泄漏监测
#WebStatFilter用于采集web-jdbc关联监控的数据。
#如果你的应用配置了WebStatFilter
#在内置监控页面weburi-detail.html中,
#查看JdbcPoolConnectionOpenCount(连接池获取连接次数)
# 和JdbcPoolConnectionCloseCount(连接池关闭连接次数)属性,
#如果不相等,就是泄漏了。
spring.datasource.druid.web-stat-filter.enabled=true
spring.datasource.druid.web-stat-filter.url-pattern=/*
spring.datasource.druid.web-stat-filter.exclusions=*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*



# StatViewServlet配置,说明请参考Druid Wiki,配置_StatViewServlet配置
#使用Druid的内置监控页面
spring.datasource.druid.stat-view-servlet.enabled= true
spring.datasource.druid.stat-view-servlet.url-pattern= /druid/*
spring.datasource.druid.stat-view-servlet.reset-enable= false
spring.datasource.druid.stat-view-servlet.login-username= xxxxx
spring.datasource.druid.stat-view-servlet.login-password= xxxxx
spring.datasource.druid.stat-view-servlet.allow= 38.71.86.1/24
#spring.datasource.druid.stat-view-servlet.deny= 192.168.32.139

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

非ban必选

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值