1、導入依賴
<dependencies> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.38</version> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.8</version> <optional>true</optional> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>1.1.21</version> </dependency> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.1.0</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <version>2.1.5.RELEASE</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-autoconfigure</artifactId> <optional>true</optional> <version>2.1.5.RELEASE</version> </dependency> </dependencies>
2、配置文件
spring.datasource.druid.username=root spring.datasource.druid.password=123456 #連接的URL spring.datasource.druid.url=jdbc:mysql://192.169.1.38:3306/emp_test?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&autoReconnect=true&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true&serverTimezone=Asia/Shanghai #檢測連接是否有效的sql spring.datasource.druid.validation-query=SELECT 1 FROM DUAL ###監控配置 # 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/* # StatViewServlet配置 spring.datasource.druid.stat-view-servlet.enabled=true spring.datasource.druid.stat-view-servlet.url-pattern=/druid/* spring.datasource.druid.stat-view-servlet.reset-enable=false #監控賬號信息 spring.datasource.druid.stat-view-servlet.login-username=admin spring.datasource.druid.stat-view-servlet.login-password=admin #允許登錄監控頁面ip白名單,不配置即所有ip均是白名單 spring.datasource.druid.stat-view-servlet.allow= # 配置StatFilter spring.datasource.druid.filter.stat.enable=true spring.datasource.druid.filter.stat.db-type=mysql spring.datasource.druid.filter.stat.log-slow-sql=true spring.datasource.druid.filter.stat.slow-sql-millis=5 # 配置WallFilter spring.datasource.druid.filter.wall.enabled=true spring.datasource.druid.filter.wall.db-type=mysql spring.datasource.druid.filter.wall.config.delete-allow=true spring.datasource.druid.filter.wall.config.drop-table-allow=false spring.datasource.druid.filter.wall.config.multi-statement-allow=true
3、發送http請求執行sql
package com.harara.druid.controller; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; import java.util.List; import java.util.Map; /** * @author : harara * @version : 2.0 * @date : 2020/6/17 9:32 */ @RestController public class UserController { private static final Logger logger = LoggerFactory.getLogger(UserController.class); @Autowired private JdbcTemplate jdbcTemplate; @GetMapping("/user") public List<Map<String, Object>> hello() { List<Map<String, Object>> lists = jdbcTemplate.queryForList("select host,user from mysql.user ", new Object[]{}); return lists; } }
請求 http://localhost:8080/user
4、監控管理后台
輸入http://localhost:8080/druid訪問監控管理后台頁面
使用上面配置文件中設置的賬號密碼進行登錄
SQL監控頁面
5、各配置項說明
配置項 | 說明 |
spring.datasource.druid.web-stat-filter.enabled=true |
開啟WebStatFilter攔截 |
spring.datasource.druid.web-stat-filter.url-pattern=/* |
攔截哪些請求 |
spring.datasource.druid.web-stat-filter.exclusions=*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/* |
排查攔截哪些請求 |
spring.datasource.druid.stat-view-servlet.enabled=true |
開啟StatViewFilter監控管理后台 |
spring.datasource.druid.stat-view-servlet.url-pattern=/druid/* |
監控管理后台訪問地址 |
spring.datasource.druid.stat-view-servlet.reset-enable=false |
是否關閉監控管理后台重置(Reset All)按鈕 |
spring.datasource.druid.stat-view-servlet.login-username=admin |
監控管理后台登錄用戶名 |
spring.datasource.druid.stat-view-servlet.login-password=123456 |
監控管理后台登錄密碼 |
spring.datasource.druid.stat-view-servlet.allow= |
允許登錄監控頁面ip白名單,不配置即所有ip均是白名單 |
spring.datasource.druid.filter.stat.enable=true |
|
spring.datasource.druid.filter.stat.db-type=mysql |
數據庫類型 |
spring.datasource.druid.filter.stat.log-slow-sql=true |
顯示慢日志 |
spring.datasource.druid.filter.stat.slow-sql-millis=5000 |
sql查詢超過多少秒被判定是慢日志 |
spring.datasource.druid.filter.stat.merge-sql=true |
是否合並Sql |
spring.datasource.druid.filter.wall.enabled=true |
|
spring.datasource.druid.filter.wall.db-type=mysql |
數據庫類型 |
spring.datasource.druid.filter.wall.config.delete-allow=true |
是否允許執行DELETE語句 |
spring.datasource.druid.filter.wall.config.drop-table-allow=false |
是否允許修改表 |
spring.datasource.druid.filter.wall.config.multi-statement-allow=true |
是否允許一次執行多條語句,缺省關閉 |
關於是否合並sql的理解(spring.datasource.druid.filter.stat.merge-sql=true)
當你程序中存在沒有參數化的sql執行時,sql統計的效果會不好。比如:
select * from t where id = 1
select * from t where id = 2
select * from t where id = 3
在統計中,顯示為3條sql,這不是我們希望要的效果。StatFilter提供合並的功能,能夠將這3個SQL合並為如下的SQL
select * from t where id = ?
參考地址
Druid使用手冊: https://www.bookstack.cn/read/Druid/ffdd9118e6208531.md
Druid(二)監控統計功能之StatFilter:https://blog.csdn.net/HSH205572/article/details/86608705
druid github地址:https://github.com/alibaba/druid/tree/master/druid-spring-boot-starter