Druid监控配置
一. Druid监控组件简介
Druid内置了强大的监控功能,能够详细统计SQL的执行性能,通过执行次数、执行时间、事务等多个维度来展现,对于线上分析数据库性能及某条SQL的执行效率有很大的帮助。另外,Druid还对SQL防火墙、URI、SESSION等进行监控,在监控信息页面可以很详细地看到这些监控信息。
关于Druid监控组件的更多信息可查看官方文档:Druid官方wiki
配置Druid监控组件主要分为两部分:
-
配置一个用于显示监控信息界面和提供监控信息的JSON API的servlet。
-
配置一个用于采集web-jdbc关联监控的数据的filter。
配置方式有两种,分别是以代码的方式配置和以配置文件的方式配置。
二. 代码配置Druid监控
开启stat和wall,如果没有该项配置,监控页面就没有sql监控和sql防火墙的信息。线程池的其它配置项这里省略。
koca:
jdbc:
defaultDataSourceId: default
dataSources:
- id: default
pool:
# stat用于监控数据统计,wall用于sql防火墙
filters: stat,wall
# mergeSql:是否合并sql,slowSqlMillis:慢sql记录
connection-properties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=3000
注册相关servet和filter
@Configuration
public class DruidConfiguration {
/**
* 注册一个:ServletRegistrationBean
* @return 一个用于显示监控信息界面和提供监控信息的JSON API的servlet
*/
@Bean
public ServletRegistrationBean DruidStatViewServlet() {
//org.springframework.boot.context.embedded.ServletRegistrationBean提供类的进行注册.
ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new StatViewServlet(),"/druid/*");
//白名单
servletRegistrationBean.addInitParameter("allow","127.0.0.1");
//IP黑名单 (存在共同时,deny优先于allow)
servletRegistrationBean.addInitParameter("deny","192.168.0.114");
//登录查看信息的账号密码.
servletRegistrationBean.addInitParameter("loginUsername","admin");
servletRegistrationBean.addInitParameter("loginPassword","123456");
//是否能够重置数据.
servletRegistrationBean.addInitParameter("resetEnable","false");
return servletRegistrationBean;
}
/**
* 注册一个:filterRegistrationBean
* @return 一个用于采集web-jdbc关联监控的数据的filter
*/
@Bean
public FilterRegistrationBean druidStatFilter(){
FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(new WebStatFilter());
//添加过滤规则.
filterRegistrationBean.addUrlPatterns("/*");
//忽略过滤格式
filterRegistrationBean.addInitParameter("exclusions","*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*");
return filterRegistrationBean;
}
}
三. 配置文件配置Druid监控
添加依赖
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.2.5</version>
</dependency>
和代码配置一样需要开启stat和wall。线程池的其它配置项这里省略。
koca:
jdbc:
defaultDataSourceId: default
dataSources:
- id: default
pool:
# stat用于监控数据统计,wall用于sql防火墙
filters: stat,wall
# mergeSql:是否合并sql,slowSqlMillis:慢sql记录
connection-properties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=3000
配置StatViewServlet和WebStatFilter
spring:
datasource:
druid:
# 配置StatViewServlet
stat-view-servlet:
# 如果缺省或者为false 则不会进行StatViewServlet注册
enabled: true
# 登录用户名
login-username: admin
# 登录密码
login-password: 123456
# 访问路径
url-pattern: /druid/*
# 是否允许重置
reset-enable: false
# ip白名单 默认127.0.0.1
allow:
# ip黑名单 默认为空;当和白名单重复时,黑名单优先级高
deny:
# 配置WebStatFilter
web-stat-filter:
# 如果缺省或者为false 则不会进行WebStatFiltert注册
enabled: true
# 过滤规则
url-pattern: /*
# 忽略过滤格式
exclusions: '*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*'
四. 访问监控页面
配置权限验证的ignored-url
koca:
security:
auth:
ignored-url:
- /druid/**
在浏览器中访问http://localhost:8083/studio/druid/login.html 输入登录账户和密码进行登录。
/studio是项目的context-path,根据实际项目进行修改,/druid是配置StatViewServlet时设置的url-pattern
五. 将监控页面集成到门户页面
如果需要在门户页面就能浏览监控页面,可新增一个菜单,菜单路径设置为监控页面首页index.html的访问路径,菜单类型设置为html
点击新增的菜单。