当前位置 博文首页 > 无限迭代中......:Spring Boot——集成Druid监控解决方案

    无限迭代中......:Spring Boot——集成Druid监控解决方案

    作者:[db:作者] 时间:2021-07-19 19:23

    基本概念

    Druid:一个高效的数据查询系统,主要解决的是对于大量的基于时序的数据进行聚合查询。数据可以实时摄入,进入到Druid后立即可查,同时数据是几乎是不可变。通常是基于时序的事实事件,事实发生后进入Druid,外部系统就可以对该事实进行查询。

    Druid的主要特征:

    • 为分析而设计——Druid是为OLAP工作流的探索性分析而构建,它支持各种过滤、聚合和查询等类;

    • 快速的交互式查询——Druid的低延迟数据摄取架构允许事件在它们创建后毫秒内可被查询到;

    • 高可用性——Druid的数据在系统更新时依然可用,规模的扩大和缩小都不会造成数据丢失;

    • 可扩展——Druid已实现每天能够处理数十亿事件和TB级数据。

    • Druid可以做什么:

    替换DBCP和C3P0。Druid提供了一个高效、功能强大、可扩展性好的数据库连接池。

    • 可以监控数据库访问性能,Druid内置提供了一个功能强大的StatFilter插件,能够详细统计SQL的执行性能,这对于线上分析数据库访问性能有帮助。

    • 数据库密码加密。直接把数据库密码写在配置文件中,这是不好的行为,容易导致安全问题。DruidDruiver和DruidDataSource都支持PasswordCallback。

    • SQL执行日志,Druid提供了不同的LogFilter,能够支持Common-Logging、Log4j和JdkLog,你可以按需要选择相应的LogFilter,监控你应用的数据库访问情况。

    • 扩展JDBC,如果你要对JDBC层有编程的需求,可以通过Druid提供的Filter机制,很方便编写JDBC层的扩展插件。

    GitHub?

    https://github.com/alibaba/druid

    官方文档

    https://druid.apache.org/

    Maven

                <!--Druid-->
                <dependency>
                    <groupId>com.alibaba</groupId>
                    <artifactId>druid</artifactId>
                    <version>1.1.22</version>
                </dependency>

    解决方案

    application.yml

    spring:
      datasource:
        platform: mysql
        type: com.alibaba.druid.pool.DruidDataSource
        druid:
          driver-class-name: com.mysql.cj.jdbc.Driver
          url: jdbc:mysql://localhost:3306/demo?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
          username: root
          password: 123
          # 下面为连接池的补充设置,应用到上面所有数据源中
          # 初始化大小,最小,最大
          initial-size: 60
          min-idle: 120
          max-active: 200
          # 配置获取连接等待超时的时间
          max-wait: 60000
          # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
          time-between-connect-error-millis: 60000
          time-between-eviction-runs-millis: 60000
          # 配置一个连接在池中最小生存的时间,单位是毫秒
          min-evictable-idle-time-millis: 30000
          validation-query: select 'x'
          validation-query-timeout: 20000
          test-while-idle: true
          test-on-borrow: false
          test-on-return: false
          # 打开PSCache,并且指定每个连接上PSCache的大小
          pool-prepared-statements: true
          max-pool-prepared-statement-per-connection-size: 20
          # 通过connectProperties属性来打开mergeSql功能;慢SQL记录
          connection-properties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
          # 合并多个DruidDataSource的监控数据
          #use-global-data-source-stat: true
          # 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
    #--------下面是druid监控配置-----------
          # Spring监控
          aop-patterns: "com.hailiu.mapper.*,com.hailiu.service.*"
          # 监控前端页面
          stat-view-servlet:
          	# 打开监控
            enabled: true
            # 这个监控servlet匹配的路径,也就是localhost:8080/druid打开这个页面
            url-pattern: /druid/*
            # 监控页面的账户密码
            login-username: admin
            login-password: admin
          # Web应用监控、URI监控、Session监控
          web-stat-filter:
            enabled: true
            # 自定义过滤URI监控
            exclusions: "/js/*,*.json,*.html,/css/*,/fonts/*,/img/*,/images/*,/static/*,/,/druid/*,/swagger*/*, /webjars/*, /v3/*, /doc.html"
          # 需要加上过滤器
          filters: stat,wall,slf4j  
          filter:
            stat:
              log-slow-sql: true
              #超过1秒视为慢sql
              slow-sql-millis: 1000
              merge-sql: false
              db-type: mysql
            wall:
              config:
                multi-statement-allow: true
            slf4j:
              data-source-log-enabled: true
              statement-executable-sql-log-enable: true
    

    ?

    运行结果?

    输入在application.yml中配置的账号和密码即可进入监控后台

    注意,配置的账号和密码是明文,你在这里配置什么就是什么,并没有经过加密。

    ?druid简述信息

    常见问题

    Spring Boot——Druid在application.yml文件中配置【spring.datasource.druid.aop-patterns】无效解决方案

    参考文章

    druid监控一些配置,以及自定义过滤URI监控

    Druid数据库连接池监控的使用

    Spring+SpringMVC+MyBatis+easyUI整合优化篇(十一)数据层优化-druid监控及慢sql记录

    阿里druid-spring-boot-starter 配置(配置完成后不需要在配置类写)根据阿里官方个人整理???????

    cs