druid监控一些配置,以及自定义过滤URI监控
一,使用druid监控
1.1 依赖
druid连接池相信大家并不陌生了。但是有一个功能我也是最近才知道,就是druid的sql监控以及一些请求uri监控,这些能方便我们去对系统和sql进行调优。
废话不多说,只要加入druid依赖:(下面都是以springboot为基础)
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>${druid-version}</version>
</dependency>
不是springboot的话就引入这个:
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>${druid-version}</version>
</dependency>
1.2 配置
重点在于这个.直接上一个模板配置:
spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
druid:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/demo?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
username: root
password: 123
initial-size: 1
max-active: 10
min-idle: 1
max-wait: 60000
pool-prepared-statements: true
max-pool-prepared-statement-per-connection-size: 20
time-between-eviction-runs-millis: 60000
min-evictable-idle-time-millis: 300000
validation-query: SELECT 1
test-while-idle: true
test-on-borrow: false
test-on-return: false
#--------下面是druid监控配置-----------
stat-view-servlet:
# 打开监控
enabled: true
# 这个监控servlet匹配的路径,也就是localhost:8080/druid打开这个页面
url-pattern: /druid/*
# 监控页面的账户密码
# login-username: admin
# login-password: admin
filter:
stat:
log-slow-sql: true
#超过1秒视为慢sql
slow-sql-millis: 1000
merge-sql: false
wall:
config:
multi-statement-allow: true
# 需要加上过滤器
filters: stat,wall,slf4j
顺便配置打印sql的日志配置:
logging:
level:
root: info
#druid sql打印 ,过滤器在com.alibaba.druid.filter.logging.LogFilter
druid.sql.DataSource: debug
druid.sql.Connection: debug
druid.sql.Statement: debug
druid.sql.ResultSet: debug
打开
http://localhost:端口/contextPath/druid
具体效果如下
可以看到sql信息,数据源连接池信息,请求uri信息等
二、自定义过滤URI监控
打开uri监控,我们发现很多都是静态资源请求和druid监控页面的请求,这些我们并不需要看到,需要进行过滤
通过源码我们可以看到
所以我们需要配置FilterConfig
类的initParameter
来过滤
代码如下:
@Bean
public FilterRegistrationBean webStatFilter(){
FilterRegistrationBean beanFilter = new FilterRegistrationBean();
beanFilter.setFilter(new WebStatFilter());
Map<String,String> initParams = new HashMap<>();
initParams.put("exclusions","*.js,*.json,*.html,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/static/*,/druid/*");
beanFilter.setInitParameters(initParams);
beanFilter.setUrlPatterns(Arrays.asList("/*"));
return beanFilter;
}