成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Spring Boot 如何監控 SQL 運行情況?

數據庫 其他數據庫
Druid 數據庫連接池相信很多小伙伴都用過,個人感覺 Druid 是阿里比較成功的開源項目了,不像 Fastjson 那么多槽點,Druid 各方面一直都比較出色,功能齊全,使用也方便,基本的用法就不說了,今天我們來看看 Druid 中的監控功能。

今天想和大家聊一聊 Druid 中的監控功能。

Druid 數據庫連接池相信很多小伙伴都用過,個人感覺 Druid 是阿里比較成功的開源項目了,不像 Fastjson 那么多槽點,Druid 各方面一直都比較出色,功能齊全,使用也方便,基本的用法就不說了,今天我們來看看 Druid 中的監控功能。

1. 準備工作

首先我們來創建一個 Spring Boot 工程,引入 MyBatis 等,如下:

選一下 MyBatis 和 MySQL 驅動,做一個簡單的測試案例。

先來連接一下數據庫:

spring.datasource.username=root
spring.datasource.password=123
spring.datasource.url=jdbc:mysql:///test05?serverTimezone=Asia/Shanghai

創建一個 User 實體類,做一個簡單的查詢案例,如下:

public class User {
private Integer id;
private String username;
private String address;
private String password;
private String email;
//省略 getter/setter
}
@Mapper
public interface UserMapper {
List<User> getUserByUsername(String username);
}
@Service
public class UserService {
@Autowired
UserMapper userMapper;
public List<User> getUserByUsername(String username){
return userMapper.getUserByUsername(username);
}
}
@RestController
public class UserController {
@Autowired
UserService userService;

@GetMapping("/user")
public List<User> getUser(String username) {
return userService.getUserByUsername(username);
}
}

UserMapper.xml 如下:

<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.javaboy.druid_monitor.mapper.UserMapper">
<select id="getUserByUsername" resultType="org.javaboy.druid_monitor.model.User">
select * from user where username=#{username}
</select>
</mapper>

一個很簡單的測試,沒啥好說的。

這個環境搭建大家隨意,如果你已經有持久化的案例了,那就直接看第二小節引入 Druid。

現在這個工程默認的使用的數據庫連接池是 HikariDataSource,這是 Spring Boot 中默認的一個數據庫連接池,其實這個也還不錯。

2. 引入 Druid

接下來我們引入 Druid:

<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.2.8</version>
</dependency>

注意,Spring Boot 引入的 Druid 是上面這個,這個將來配置監控的時候方便一些。

接下來我們在 application.properties 中配置 WebStatFilter,WebStatFilter 用于采集 web-jdbc 關聯監控的數據:

# 啟用 WebStatFilter
spring.datasource.druid.web-stat-filter.enabled=true
# 配置攔截規則
spring.datasource.druid.web-stat-filter.url-pattern=/*
# 排除一些不必要的 url,這些 URL 不會涉及到 SQL 查詢
spring.datasource.druid.web-stat-filter.exclusions=*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*
# 開啟 session 統計功能
spring.datasource.druid.web-stat-filter.session-stat-enable=true
# 缺省 sessionStatMaxCount 是 1000 個,我們可以按需要進行配置
spring.datasource.druid.web-stat-filter.session-stat-max-count=1000
# 配置 principalSessionName,使得 druid 能夠知道當前的 session 的用戶是誰
# 根據需要,這個參數的值是 user 信息保存在 session 中的 sessionName
#spring.datasource.druid.web-stat-filter.principal-session-name=
# 下面這個配置的作用和上面配置的作用類似,這個是通過 Cookie 來識別用戶
#spring.datasource.druid.web-stat-filter.principal-cookie-name=
# 開啟 profile 后就能夠監控單個 URL 地址調用列表
#spring.datasource.druid.web-stat-filter.profile-enable=

我們配置前面五個就可以了,后面三個可以不用配置,各項配置的含義松哥已經在代碼中列出來了。

接下來開啟 StatViewServlet 的配置,如下:

# 啟用內置的監控頁面
spring.datasource.druid.stat-view-servlet.enabled=true
# 內置監控頁面的地址
spring.datasource.druid.stat-view-servlet.url-pattern=/druid/*
# 開啟 Reset All 功能
spring.datasource.druid.stat-view-servlet.reset-enable=true
# 設置登錄用戶名
spring.datasource.druid.stat-view-servlet.login-username=javaboy
# 設置登錄密碼
spring.datasource.druid.stat-view-servlet.login-password=123
# 白名單(如果allow沒有配置或者為空,則允許所有訪問)
spring.datasource.druid.stat-view-servlet.allow=127.0.0.1
# 黑名單(deny 優先于 allow,如果在 deny 列表中,就算在 allow 列表中,也會被拒絕)
spring.datasource.druid.stat-view-servlet.deny=

配置一下頁面地址,配置一下黑白名單即可。

需要注意的是,reset-enable 屬性即使設置為 false,重置按鈕也會顯示,只是點擊該按鈕并不會重置而已。

好啦,這就完事了。

3. 測試

好啦,接下來我們啟動 Spring Boot 項目進行測試。

Spring Boot 項目啟動成功后,首先訪問如下地址:

??http://localhost:8080/druid/login.html??

此時我們會看到登錄認證頁面,如下:

輸入我們前面配置的用戶名/密碼(javaboy/123)進行登錄,登錄成功后,可以看到如下頁面:

從標題欄就可以看到,數據源、SQL 監控、SQL 防火墻等功能都是一應俱全。

接下來我們訪問 http://localhost:8080/user?username=aaa 地址,執行一條 SQL,執行完成后,我們來查看 SQL 監控:

可以看到,此時就有 SQL 執行的監控記錄了。

其他的監控數據也都可以看到,我就不一一列舉了。如果小伙伴們覺得這里展示的數據不直觀,想自己畫 HTML 頁面,那也是可以的,點擊最后面的 JSON API,可以看到每一個監控項的 JSON 地址,拿著 JSON 自己想怎么顯示就怎么顯示。

4. 去廣告

如果想直接用這個監控頁面,這個上面有阿里的廣告,如下圖,公司用的話就特別別扭:

我們可能想去掉這個廣告,這也很容易。

首先,經過分析,我們發現廣告是由一個叫做 common.js 的文件構建出來的,該文件位于druid-1.2.8.jar!/support/http/resources/js/common.js 這里,common.js 文件中有如下幾行:

init : function() {
this.buildFooter();
druid.lang.init();
},
buildFooter : function() {
var html ='';
$(document.body).append(html);
},

大概邏輯就是上面這樣,buildFooter 方法負責構建頁面末尾的廣告,在 init 方法中完成對 buildFooter 方法的調用。

那么想要去除廣告,就別調用 buildFooter 方法就行了。

所以我們的去廣告思路也很簡單,寫一個過濾器,攔截下對 common.js 的請求,然后做一點點修改,如下:

@WebFilter(urlPatterns = "/druid/js/common.js")
public class RemoveAdFilter implements Filter {
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
String text = Utils.readFromResource("support/http/resources/js/common.js");
text = text.replace("this.buildFooter();", "");
servletResponse.getWriter().write(text);
}
}

可以看到,這個過濾器就是攔截 /druid/js/common.js 請求,攔截到之后,自己去文件中讀取 common.js 文件,然后手動替換掉this.buildFooter(); 這一句就行了,最后再把文件寫出去就行了。

當然,記得在啟動類中掃描 Filter,如下:

@SpringBootApplication
@ServletComponentScan("org.javaboy.druid_monitor.filter")
public class DruidMonitorApplication {

public static void main(String[] args) {
SpringApplication.run(DruidMonitorApplication.class, args);
}

}

好啦,這就可以啦,有了這個過濾器,廣告就沒了。

https://github.com/alibaba/druid/wiki/

本文轉載自微信公眾號「江南一點雨」,可以通過以下二維碼關注。轉載本文請聯系江南一點雨公眾號。

責任編輯:武曉燕 來源: 江南一點雨
相關推薦

2022-02-17 13:32:04

SpringBootSQL連接池

2023-11-06 09:37:23

Java日志

2013-05-16 13:57:31

SNMP網絡運維管理

2022-05-18 08:32:05

服務監控Prometheus開源

2019-07-17 16:38:08

微軟Windows 10操作系統

2022-07-11 09:36:38

SpringJava開發

2018-10-22 15:34:31

Spring Boo監控視化

2020-12-01 08:32:12

Spring Boot

2022-02-09 20:39:52

Actuator應用監控

2022-12-05 13:45:06

Actuator監控

2020-11-10 09:19:23

Spring BootJava開發

2023-12-27 18:05:13

2010-09-01 10:08:54

DB2SQL語句

2021-02-03 12:47:09

Spring Boot應用監控

2023-07-27 08:53:44

2011-10-10 14:42:22

SQL Server

2020-07-14 11:00:12

Spring BootRedisJava

2021-08-06 08:04:14

Spring Boot自動配置

2021-12-18 07:42:15

Ebpf 監控 Node.js

2022-07-28 06:50:52

微服務業務系統
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 精品一区二区三区在线观看国产 | 久久99精品久久久久久狂牛 | 夜夜爽99久久国产综合精品女不卡 | 中文字幕第十页 | 久久精品成人一区 | 一级大片免费 | 欧美日韩国产一区二区 | 日本不卡一区 | 中文字幕高清av | 天堂网avav| 在线免费观看视频你懂的 | 免费福利视频一区二区三区 | 精品久久久久久久久久久下田 | 亚洲精品白浆高清久久久久久 | 国偷自产av一区二区三区 | 国产精品18hdxxxⅹ在线 | av手机在线播放 | 国产成人精品av | 久久成人一区 | 欧美日韩成人影院 | 亚洲一区二区三区免费 | 狠狠干美女 | 亚洲一区电影 | 久久国产福利 | 91免费在线视频 | 国产精品一区二区三区在线 | 国产91网址 | 色秀网站 | 久久久av中文字幕 | 日韩精品免费视频 | 欧美精品在线看 | 国产精品久久久久久久久 | 日本欧美在线 | 国产精品永久在线观看 | 天天综合日日夜夜 | 手机在线一区二区三区 | 久久久久久av| 国产小u女发育末成年 | 亚洲精品一区二区另类图片 | 亚洲人成免费 | 九九久久久 |