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;
}