前言

之前在构建项目初始设计的时候在选择数据库连接的时候就看到Druid有这样的强大的功能。数据监控。对于一个项目来说,数据监控特别重要,之前使用对于数据库的监控都是通过mysql的日志等系统来完成的。而Druid之所以强大,是因为它的监控能力非常的强。简单看一张图来展示一下它的能力。

然后它们的官网http://druid.io/在官网中给出了详细的各个信息可以进行参考,最新的版本等。

本文重点不在Druid的性能分析或者是数据库连接的配置,而仅仅在于强调它数据监控的能力。

如何配置

在SpringBoot的项目中配置Druid十分的简单,其中有一些坑我已经踩过了,比如配置完成之后SQL监控没有数据的问题等等。按照以下的方式进行配置应该没有问题。

1、引入依赖

  1. //数据库相关
  2. compile group: 'mysql', name: 'mysql-connector-java', version: '6.0.6'
  3. compile group: 'com.alibaba', name: 'druid', version: '1.0.19'

2、application.yml配置

  1. # 数据方面的配置
  2. datasource:
  3. # 使用druid数据源
  4. type: com.alibaba.druid.pool.DruidDataSource
  5. driver-class-name: com.mysql.cj.jdbc.Driver
  6. # 连接池的配置信息
  7. maxActive: 20
  8. initialSize: 5
  9. minIdle: 5
  10. # 配置获取连接等待超时的时间
  11. maxWait: 60000
  12. # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
  13. timeBetweenEvictionRunsMillis: 60000
  14. # 配置一个连接在池中最小生存的时间,单位是毫秒
  15. minEvictableIdleTimeMillis: 300000
  16. validationQuery: SELECT 1 FROM DUAL
  17. testWhileIdle: true
  18. testOnBorrow: false
  19. testOnReturn: false
  20. poolPreparedStatements: true
  21. maxOpenPreparedStatements: 20
  22.  
  23. # 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
  24. filters: stat,wall,log4j
  25. # 通过connectProperties属性来打开mergeSql功能;慢SQL记录
  26. connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
  27. # 合并多个DruidDataSource的监控数据
  28. #spring.datasource.useGlobalDataSourceStat=true

3、加入DruidConfig类

在网上看过很多样子的配置方式,我觉得配置在同一个类里面比较方便,所以采用下面的方式

  1. package com.linkinstars.springBootTemplate.config;
  2.  
  3. import com.alibaba.druid.pool.DruidDataSource;
  4. import com.alibaba.druid.support.http.StatViewServlet;
  5. import com.alibaba.druid.support.http.WebStatFilter;
  6. import org.springframework.boot.context.properties.ConfigurationProperties;
  7. import org.springframework.boot.web.servlet.FilterRegistrationBean;
  8. import org.springframework.boot.web.servlet.ServletRegistrationBean;
  9. import org.springframework.context.annotation.Bean;
  10. import org.springframework.context.annotation.Configuration;
  11.  
  12. import javax.sql.DataSource;
  13.  
  14. /**
  15. * @Description: Druid监控配置
  16. * @Author: LinkinStar
  17. */
  18. @Configuration
  19. public class DruidConfig {
  20.  
  21. /**
  22. * 配置读取spring数据源
  23. */
  24. @Bean
  25. @ConfigurationProperties(prefix="spring.datasource")
  26. public DataSource druidDataSource() {
  27. return new DruidDataSource();
  28. }
  29.  
  30. /**
  31. * 配置Druid监控启动页面
  32. */
  33. @Bean
  34. public ServletRegistrationBean druidStartViewServlet(){
  35. //org.springframework.boot.context.embedded.ServletRegistrationBean提供类的进行注册.
  36. ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new StatViewServlet(),"/druid/*");
  37.  
  38. //白名单:
  39. servletRegistrationBean.addInitParameter("allow","127.0.0.1");
  40. //IP黑名单 (存在共同时,deny优先于allow) : 如果满足deny的话提示:Sorry, you are not permitted to view this page.
  41. servletRegistrationBean.addInitParameter("deny","192.168.1.100");
  42.  
  43. //登录查看信息的账号密码.
  44. servletRegistrationBean.addInitParameter("loginUsername","admin");
  45. servletRegistrationBean.addInitParameter("loginPassword","123456");
  46.  
  47. //是否能够重置数据.
  48. servletRegistrationBean.addInitParameter("resetEnable","false");
  49. return servletRegistrationBean;
  50. }
  51.  
  52. /**
  53. * Druid监控过滤器配置规则
  54. */
  55. @Bean
  56. public FilterRegistrationBean druidStartFilter(){
  57. FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(new WebStatFilter());
  58.  
  59. //添加过滤规则.
  60. filterRegistrationBean.addUrlPatterns("/*");
  61.  
  62. //添加不需要忽略的格式信息.
  63. filterRegistrationBean.addInitParameter("exclusions","*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*");
  64. return filterRegistrationBean;
  65. }
  66. }

到此为止,所有的配置已经完成,重新启动项目,使用项目根路径加上/druid/index.html即可访问

http://127.0.0.1:8080/druid/index.html

总结

其实对于这次配置需要总结的地方不多,配置很简单,至于性能、数据上面,还要等实际检验之后的情况在做说明。

最后推荐Druid上的Wiki https://github.com/alibaba/druid/wiki

配置的所有代码可以参见我的github模版:https://github.com/LinkinStars/springBootTemplate

在SpringBoot使用Druid进行数据监控的更多相关文章

  1. springboot配置Druid监控

    整体步骤: (1)    ——   Druid简单介绍,具体看官网: (2)     —— 在pom.xml配置druid依赖包: (3)    ——  配置application.propertie ...

  2. SpringBoot整合Druid数据连接池

    SpringBoot整合Druid数据连接池 Druid是什么? Druid是Alibaba开源的的数据库连接池.Druid能够提供强大的监控和扩展功能. 在哪里下载druid maven中央仓库: ...

  3. SpringBoot系列之集成Druid配置数据源监控

    SpringBoot系列之集成Druid配置数据源监控 继上一篇博客SpringBoot系列之JDBC数据访问之后,本博客再介绍数据库连接池框架Druid的使用 实验环境准备: Maven Intel ...

  4. SpringBoot 配置Druid:不显示SQL监控 —(*) property for user to setup

    题外话: SpringBoot整合Druid 请查看https://www.cnblogs.com/JealousGirl/p/druid.html Druid登录后数据源页面.SQL监控等不显示数据 ...

  5. springboot中druid监控的配置(DruidConfiguration)

    当数据库连接池使用druid 时,我们进行一些简单的配置就能查看到sql监控,web监控,url监控等等. 以springboot为例,配置如下 import com.alibaba.druid.su ...

  6. 使用Druid作为SpringBoot项目数据源(添加监控)

    Druid是一个关系型数据库连接池,它是阿里巴巴的一个开源项目.Druid支持所有JDBC兼容数据库,包括了Oracle.MySQL.PostgreSQL.SQL Server.H2等.Druid在监 ...

  7. springboot整合druid数据库连接池并开启监控

    简介 Druid是一个关系型数据库连接池,它是阿里巴巴的一个开源项目.Druid支持所有JDBC兼容的数据库,包括Oracle.MySQL.Derby.PostgreSQL.SQL Server.H2 ...

  8. 阿里druid连接池监控数据自定义存储

    如何将druid连接池监控到的sql执行效率,连接池资源情况等进行持久化存储,方便系统运维分析优化,以下案例初步测试成功. 第一部: 新建MyDruidStatLogger类实现接口 extends ...

  9. 9 — springboot整合jdbc、druid、druid实现日志监控 — 更新完毕

    1.整合jdbc.druid 1).导入依赖 <dependency> <groupId>org.springframework.boot</groupId> &l ...

随机推荐

  1. 虚拟机centos7无法上网解决方法

    1.打开终端输入cd /etc/sysconfig/network-scripts/,输入ls查看网卡配置文件名,每台机器的网卡名并不相同. 第一个ifcfg-ens33是我的网卡名 2. 先取得ro ...

  2. 尝试Spring Data Jpa--告别CRUD

    前言 说到我们的web开发架构分层中,持久层是相对底层也是相对稳定的一层,奠定好根基后,我们才能专注于业务逻辑和视图开发.而自从ORM思想蔓延开来后,全自动ORM的Hibernate和半自动ORM的M ...

  3. PAT basic level 1001-1019 解题笔记

    1002 写出这个数 采用字符串输入数据,再对每位减去字符‘0’,得到该位相应的整数 int len=s.length();//字符串的长度 ; ;i<len;i++)//每位减去‘0’,逐位相 ...

  4. Django 部署到Nginx

    在网上搜了很多篇Django+uwsgi+Nginx的部署文章,忙了一下午头昏脑胀,最终完成了部署.部署文章流程讲解都很好,但在细节上或许缺乏一些注意力,导致我多篇文章来回切换在字里行间寻找蛛丝马迹. ...

  5. 备忘:Junit单元测试

    junit 目前测试都是在main方法中调用目前的结果都需要人工对比是否是想要的 1.使用Junit测试方法,绿色条条代表方法测试成功,没有bug,如果是红色条条代表有异常,测试不通过2.点击方法名. ...

  6. libGDX-wiki发布

    为方便大家学习和访问,我将libgdx的wiki爬取到doku-wiki下,专门建立了以下地址.欢迎大家来共同完善. http://wiki.v5ent.com

  7. 浅谈计算机中的IO模型

    IO模型一共有5种: blocking IO #阻塞IO nonblocking IO #非阻塞IO IO myltiplexing #IO多路复用 signal driven IO #信号驱动IO ...

  8. Jedis/JedisPool和Redis数据类型与特性

    1.介绍Jedis Jedis 是 Redis 的 java 版本客户端,使用Jedis可以连接 Redis的数据库,Jedis连接方式有三种Jedis/JedisPool 连接.ShardedJed ...

  9. 探索从 MVC 到 MVVM + Flux 架构模式的转变

    本文首发于 my blog 在业务中一般 MVVM 框架一般都会配合上数据状态库(redux, mobx 等)一起使用,本文会通过一个小 demo 来讲述为什么会引人数据状态库. 从 MVC 到 MV ...

  10. 四、正则表达式re模块

    什么是正则表达式 正则表达式,又称规则表达式,通常被用来检索.替换那些符合某个模式(规则)的文本. 正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符.及这些特定字符的组合,组成一 ...