阅读 217

ssm整合druid监控功能

Druid内置提供一个StatFilter,用于统计监控信息。

StatFilter 配置

StatFilter的别名是stat,这个别名映射配置信息保存在druid-xxx.jar/META-INF/druid-filter.properties。

image.png

在spring中使用别名配置方式如下:

    @Bean     public DruidDataSource getDataSource() {         DruidDataSource druidDataSource = new DruidDataSource();         Properties properties = new Properties();         try {             //加载属性  自动读取类路径下配置文件             properties.load(MyBatisConfig.class.getClassLoader().getResourceAsStream("db.properties"));             //配置默认监控filter WallFilter:防止sql注入的过滤器 Slf4jFileter:日志记录JDBC执行的SQL             druidDataSource.setFilters("stat,wall,slf4j");             //开启慢sql监控,大于1000毫秒的为慢sql,默认是3秒             druidDataSource.setConnectionProperties("druid.stat.mergeSql=true;druid.stat.slowSqlMillis=1000");         } catch (IOException e) {             e.printStackTrace();         } catch (SQLException e) {             e.printStackTrace();         }         //如果Properties文件的属性名命名符合configFromPropety的参数Properties的命名规则,则自动赋值         druidDataSource.configFromPropety(properties);    //自动读取设置属性         return druidDataSource;     } 复制代码

上面的配置中,StatFilter和WallFilter、SlfFilter组合使用。

  • WallFilter:防止sql注入的过滤器

  • Slf4jFileter:日志记录JDBC执行的SQL

使用Druid的内置监控页面

要访问druid的内置监控页面,需要配置一个servlet :

@WebServlet(urlPatterns = "/druid/*",initParams = {         @WebInitParam(name = "loginUsername",value = "admin"),   //登录用户名         @WebInitParam(name = "loginPassword",value = "123456"),   //登录密码         @WebInitParam(name = "allow",value = ""),   //ip白名单,没有配置或空,则允许所有访问         @WebInitParam(name = "deny",value = ""),    //ip黑名单         @WebInitParam(name = "resetEnable",value = "false")  //禁用html页面的reset all功能 }) public class DruidStatueServlet extends StatViewServlet {   } 复制代码

或者在spring配置类中:

    @Bean     public ServletRegistrationBean druidServlet() {         ServletRegistrationBean reg = new ServletRegistrationBean();         reg.setServlet(new StatViewServlet());         reg.addUrlMappings(new String[]{"/druid/*"});        //IP白名单 (没有配置或者为空,则允许所有访问)         reg.addInitParameter("allow", "");        //IP黑名单         reg.addInitParameter("resetEnable", "false");        //是否能够重置数据         reg.addInitParameter("loginUsername", "admin");//设置账号密码         reg.addInitParameter("loginPassword", "123456");         return reg;     } 复制代码

启动服务器,通过地址栏访问:ip:端口号/应用名/druid/login.html

image.png

设置web监控

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

@WebFilter(filterName = "druidStatueFilter", urlPatterns = "/*",         initParams = {         @WebInitParam(name = "exclusions",value = "*.js,*.jpg,*.png,*.css,/druid/*"),   //添加需要忽略的格式信息         @WebInitParam(name = "profileEnable",value = "true"),    //配置profileEnable能够监控单个url调用的sql列表         @WebInitParam(name = "principalCookieName",value = "USER_COOKIE")         }) public class DruidStatueFilter extends WebStatFilter {   } 复制代码

或者在spring配置类中:

    @Bean     public FilterRegistrationBean filterRegistrationBean() {         FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean();         filterRegistrationBean.setFilter(new WebStatFilter());         //添加过滤规则         filterRegistrationBean.addUrlPatterns(new String[]{"/*"});         //添加需要忽略的格式信息         filterRegistrationBean.addInitParameter("exclusions", "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*");         //配置profileEnable能够监控单个url调用的sql列表         filterRegistrationBean.addInitParameter("profileEnable", "true");         //如果你的user信息保存在cookie中,你可以配置         filterRegistrationBean.addInitParameter("principalCookieName", "USER_COOKIE");         //principalCookieName,使得druid知道当前的user是谁  USER_COOKIE为cookie名         //使得druid能够知道当前的session的用户是谁         filterRegistrationBean.addInitParameter("principalSessionName", "USER_SESSION");         filterRegistrationBean.addInitParameter("DruidWebStatFilter", "/*");         return filterRegistrationBean;     } 复制代码

设置spring监控

//设置druid 的 aop切面类     @Bean(name = "druidStatInterceptor")     public DruidStatInterceptor getDruidStatInterceptor() {         return new DruidStatInterceptor();     }       //配置spring监控     @Bean     public BeanNameAutoProxyCreator getAutoProxyCreator() {         BeanNameAutoProxyCreator beanNameAutoProxyCreator = new BeanNameAutoProxyCreator();         beanNameAutoProxyCreator.setProxyTargetClass(true);         beanNameAutoProxyCreator.setBeanNames(new String[]{"*Mapper", "*Service"});         beanNameAutoProxyCreator.setInterceptorNames("druidStatInterceptor");         return beanNameAutoProxyCreator;     }


作者:法外狂徒张三三
链接:https://juejin.cn/post/7021910167985848333


文章分类
后端
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐