springboot集成druid做sql监控

druid是阿里开源的一个数据库连接池,提供强大的监控和扩展能力
并且ali还为我们封装了druid的starter,自动帮我们完成了一些servlet的配置,因此我们只需要写一个配置就可以完成一个基础的sql监控功能,我们来研究下具体做了什么

maven:

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>1.1.10</version>
        </dependency>

怎么打开Druid的监控统计功能:

Druid内置提供一个StatFilter,它的别名是stat,用于统计监控信息。

spring.datasource.druid.filters=stat,wall

怎样使用Druid的内置监控页面

Druid内置提供了一个StatViewServlet用于展示Druid的统计信息。
这个StatViewServlet的用途包括:

  • 提供监控信息展示的html页面
  • 提供监控信息的JSON API
# StatViewServlet配置,说明请参考Druid Wiki,配置_StatViewServlet配置
spring.datasource.druid.stat-view-servlet.enabled=true #默认是false关闭的
spring.datasource.druid.stat-view-servlet.url-pattern=/druid/*
spring.datasource.druid.stat-view-servlet.reset-enable=false

从名字看我们就知道了,它是一个servlet,但是springboot是没有web.xml的,那么我们要怎么将这个servlet交给springboot呢?
我们通过配置进入,比如点开spring.datasource.druid.stat-view-servlet.url-pattern=/druid/*,发现它进入了一个叫DruidStatProperties的配置类(springboot大多数starter都帮我们做了property的工作,我们就不用自己写了,只需要注入这个property就可以使用了):

        public void setUrlPattern(String urlPattern) {
            this.urlPattern = urlPattern;
        }

在这里插入图片描述
我们发现这个properties被DruidDataSourceAutoConfigure自动装配了,同时这个类中导入了其他的配置:
在这里插入图片描述
我们点开其中的DruidStatViewServletConfiguration:

@ConditionalOnWebApplication
@ConditionalOnProperty(name = "spring.datasource.druid.stat-view-servlet.enabled", havingValue = "true", matchIfMissing = true)
public class DruidStatViewServletConfiguration {
    @Bean
    public ServletRegistrationBean statViewServletRegistrationBean(DruidStatProperties properties) {
        DruidStatProperties.StatViewServlet config = properties.getStatViewServlet();
        ServletRegistrationBean registrationBean = new ServletRegistrationBean();
        registrationBean.setServlet(new StatViewServlet());
        registrationBean.addUrlMappings(config.getUrlPattern() != null ? config.getUrlPattern() : "/druid/*");
        if (config.getAllow() != null) {
            registrationBean.addInitParameter("allow", config.getAllow());
        }
        if (config.getDeny() != null) {
            registrationBean.addInitParameter("deny", config.getDeny());
        }
        if (config.getLoginUsername() != null) {
            registrationBean.addInitParameter("loginUsername", config.getLoginUsername());
        }
        if (config.getLoginPassword() != null) {
            registrationBean.addInitParameter("loginPassword", config.getLoginPassword());
        }
        if (config.getResetEnable() != null) {
            registrationBean.addInitParameter("resetEnable", config.getResetEnable());
        }
        return registrationBean;
    }
}

我们发现,他就帮我们完成了servlet的注入工作!

内置监控中的Web和Spring关联监控怎么配置?

WebStatFilter用于采集web-jdbc关联监控的数据。
‘’在这里插入图片描述
这个同样需要在xml中配置,但前面解释了,我们现在只需要在配置文件中配置就好了:

# WebStatFilter配置,说明请参考Druid Wiki,配置_配置WebStatFilter
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/*

原理前面讲过了

于是,一个最基础的监控就配好了,框架真是方便:

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值