使用SpringBoot簡單瞭解Druid的監控系統

Druid 介紹

  • 說起 Druid,大家首先想到的是阿里的 Druid 數據庫連接池
  • Apache Druid 具有以下特點:
    • 亞秒級 OLAP 查詢,包括多維過濾、Ad-hoc 的屬性分組、快速聚合數據等等。
    • 實時的數據消費,真正做到數據攝入實時、查詢結果實時。
    • 高效的多租戶能力,最高可以做到幾千用戶同時在線查詢。
    • 擴展性強,支持 PB 級數據、千億級事件快速處理,支持每秒數千查詢併發。
    • 極高的高可用保障,支持滾動升級。

Druid監控系統作用

  1. 查看慢SQL [ 可進行對 SQL 優化 ]
  2. 是否有惡意攻擊
  3. 併發時的數量
  4. 事務的提交
  5. JDBC執行的次數
  6. 訪問時URL的監控
  7. 請求的次數等等…

下面是Druid 的監控系統首頁截圖, 只需要簡單配置就可以使用
在這裏插入圖片描述

開始配置

  1. 首先創建一個SpringBoot的項目
  2. 需用引入以下幾個工具
  3. 如圖
    在這裏插入圖片描述
  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. 如圖
    在這裏插入圖片描述

注意:除Spring Boot外。在此免費贈送最新Java架構項目實戰教程+大廠面試題庫,點擊此處 獲取,小白勿進哦!

  1. 趕緊來寫兩行代碼測測性能吧 !!

感謝閱讀, 如果有更好的建議或者方案可以留言評論哦! 也可以進羣探討:1101584918

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章