M a t s u r i   n o d e

使用SpringBoot简单了解Druid的监控系统

Druid 介绍

  • 说起 Druid,大家首先想到的是阿里的 Druid 数据库连接池
  • Apache Druid 具有以下特点:
    • 亚秒级 OLAP 查询,包括多维过滤、Ad-hoc 的属性分组、快速聚合数据等等。
    • 实时的数据消费,真正做到数据摄入实时、查询结果实时。
    • 高效的多租户能力,最高可以做到几千用户同时在线查询。
    • 扩展性强,支持 PB 级数据、千亿级事件快速处理,支持每秒数千查询并发。
    • 极高的高可用保障,支持滚动升级。

Druid监控系统作用

  1. 查看慢SQL [ 可进行对 SQL 优化 ]
  2. 是否有恶意攻击
  3. 并发时的数量
  4. 事务的提交
  5. JDBC执行的次数
  6. 访问时URL的监控
  7. 请求的次数等等…

下面是Druid 的监控系统首页截图, 只需要简单配置就可以使用
使用SpringBoot简单了解Druid的监控系统

开始配置

  1. 首先创建一个SpringBoot的项目
  2. 需用引入以下几个工具
  3. 如图
    使用SpringBoot简单了解Druid的监控系统
  4. 在 pom.xml 文件中引入druid连接池的依赖
<dependency>    <groupId>com.alibaba</groupId>     <artifactId>druid</artifactId>     <version>1.1.10</version> </dependency> 
  1. 在resources下新创建一个在 application.yml 文件, 指定使用druid的连接池
spring:   datasource:  # Springboot默认会使用自带的 HikariDataSource     password: root     username: root     url: jdbc:mysql://localhost:3306/test?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai     driver-class-name: com.mysql.cj.jdbc.Driver     type: com.alibaba.druid.pool.DruidDataSource  # 指定使用 druid 的连接池 
  1. 创建一个DruidConfig.java配置类
package com.springboot.druid.config;  import com.alibaba.druid.pool.DruidDataSource; import com.alibaba.druid.support.http.StatViewServlet; import com.alibaba.druid.support.http.WebStatFilter; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.boot.web.servlet.FilterRegistrationBean; import org.springframework.boot.web.servlet.ServletRegistrationBean; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration;  import java.util.Arrays; import java.util.HashMap; import java.util.Map;  /**  * 对 Druid 的监控配置对象注入到容器中  * Created by YongXin Xue on 2020/06/04 15:18  */ @Configuration public class DruidConfig {     /**      *      * @return      */     @Bean   // 当前类如果是组件类,对象创建时容器也会调用此方法将方法的返回值注入到容器中     @ConfigurationProperties(prefix = "spring.datasource")  // 加载配置文件中的配置设置给返回的对象     public DruidDataSource getDataSoures(){         return new DruidDataSource();     }      /**      * 配置一个管理后台的Servlet [ 配置Druid的监控系统 ]      * 访问时默认会生成一个页面      * @return      */     @Bean     public ServletRegistrationBean statViewServlet() {         // 当前 Druid 的后台监控系统的访问地址 /druid/*         ServletRegistrationBean bean = new ServletRegistrationBean(new StatViewServlet(), "/druid/*");          Map<String, String> initParams = new HashMap<>();         initParams.put("loginUsername", "admin");         initParams.put("loginPassword", "admin");         // 默认就是允许所有访问         initParams.put("allow", "");         initParams.put("deny", "192.168.15.21");//ip黑名单          bean.setInitParameters(initParams);         return bean;     }      /**      * 配置一个web监控的filter:访问静态资源一定没有sql操作      * @return      */     @Bean     public FilterRegistrationBean webStatFilter() {         FilterRegistrationBean bean = new FilterRegistrationBean();         bean.setFilter(new WebStatFilter());          Map<String, String> initParams = new HashMap<>();         //排除过滤         initParams.put("exclusions", "*.jpg,*.avi,*.js,*.css,/druid/*");          bean.setInitParameters(initParams);         bean.setUrlPatterns(Arrays.asList("/*"));         return bean;     } } 
  1. 配置完成后, 运行主程序在浏览器输入本机的地址加自己配置的tomcat端口加/druid/既可以打开druid的后台监控系统了

  2. 如图
    使用SpringBoot简单了解Druid的监控系统

  3. 赶紧来写两行代码测测性能吧 !!

感谢阅读, 如果有更好的建议或者方案可以留言评论哦!