摘要:一監控一般思路中監控一般通過代理模式實現,如下右邊是接口類。配置將項目下文件放到目錄下或者中,找到將類名修改為你自己的實現類,并去掉其他所有配置都不用修改就可以監控到。至此,可以監控到語句了。
一、SQL監控一般思路
Java中SQL監控一般通過代理模式實現,如下:
右邊是JDBC接口類。
左邊是代理類,代理類需要實現JDBC接口,同時持有接口類的對象實例。
數據庫連接工廠原來是獲得JDBC接口類后繼續操作,改為獲取代理類去操作,因代理類實現了JDBC接口,所以對調用方來說無感知,仍然以原有的方式調用。
因此,最差情況是自行實現代理類,難度不大,只是所有接口方法都要實現一遍,純體力活。
二、開源JAVA SQL監控工具p6spyp6spy是一款Java開源監控工具,出來已經有十幾年,應該算很成熟了,下面介紹p6spy的使用。
1.引入maven依賴,當前最新版本3.8.3
p6spy p6spy 3.8.3
2.實現監控類
只要實現如下的接口類則可,logSQL方法已經可以獲取必要的信息,實現類中直接使用就好。
package com.p6spy.engine.spy.appender; import com.p6spy.engine.logging.Category; public interface P6Logger { /** * Logs the {@code SQL}. * * @param connectionId * connection identifier. * @param now * current time. * @param elapsed * @param category * the category to be used for logging. * @param prepared * the prepared statement to be logged. * @param sql * the {@code SQL} to be logged. * @param url * the database url where the sql statement executed */ public void logSQL(int connectionId, String now, long elapsed, Category category, String prepared, String sql, String url); /** * Logs the stacktrace of the exception. * * @param e * exception holding the stacktrace to be logged. */ public void logException(Exception e); /** * Logs the text. * * @param text * to be logged */ public void logText(String text); /** * @param category * the category to be evaluated. * @return {@code true} if category is enabled. Otherwise returns * {@code false} */ public boolean isCategoryEnabled(Category category); }
3.配置
將p6spy項目下p6spy/src/main/assembly/individualFiles/spy.properties文件放到resources目錄下或者classpath中,找到appender將類名修改為你自己的實現類,并去掉#:
#appender=com.p6spy.engine.spy.appender.FileLogger
其他所有配置都不用修改就可以監控到SQL。
4.修改Spring的配置
1) jdbc.driver 替換為 com.p6spy.engine.spy.P6SpyDriver
spring.datasource.driver-class-name=com.p6spy.engine.spy.P6SpyDriver
2) jdbc.url 替換為 jdbc:p6spy:mysql:/xxx
spring.datasource.url=jdbc:p6spy:mysql://XXX
XXX部分自行替換。至此,可以監控到SQL語句了。
p6spy項目地址: https://github.com/p6spy/p6spy
end.
加入《Java棧實戰營》知識星球,參與討論,更多實戰代碼分享,不就是幾斤蘋果,幾個榮耀道具的事嗎!
https://t.zsxq.com/RNzfi2j
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/75810.html
摘要:微服務中調用棧的獲取,使用的開發者會很自然想到用來攔截,但是攔截同一個類的多個方法之間的調用很不方便,有侵入性,因此并不適合。調用棧的跟蹤也提供了這個能力,可以獲得當前方法的調用棧信息。 一、調用鏈跟蹤的作用 調用鏈跟蹤包括 1.前端到后端的調用鏈 2.單個服務內部方法之間的調用鏈 3.微服務之間的調用鏈 4.應用服務和數據庫之間的調用鏈 5.應用服務和第三方服務中...
摘要:頁面展示的統計追蹤等信息則通過的接口獲取四功能展示數據庫監控目前已實現的功能有分類統計數據庫連接池監控慢耗時分布統計慢統計慢追蹤以及調用鏈日志關聯功能。 作者: 王林林 出處:UAVStack智能運維 來源:宜信技術學院技術沙龍001期|AI中臺:一種敏捷的智能業務支持方案|宜信技術沙龍 3月28日晚8點線上直播,點擊報名 UAVStack是一個全維監控與應用運維平臺。UAV.Mon...
摘要:除了以上級別的成員變量共享,在調用鏈跟蹤時要能識別不同分層下的多個類實例的調用是同一個請求,而這個請求的調用都在一個獨立線程內完成,此時就要用到線程級變量共享。 一、Java類成員作用域 JAVA類成員作用域參考下圖: showImg(https://segmentfault.com/img/bVbvWlh?w=1695&h=925); Java虛擬機級作用域,通過在類成員變量前加...
摘要:一調用棧調用鏈監控僅僅獲取調用順序是不夠的,如前所描述左邊只體現了順序,右邊體現了順序和調用棧信息。二獲取調用棧在中獲取調用棧的方法如下代碼示例輸出結果可以看到第個棧是調用的方法。 一、調用棧 調用鏈監控僅僅獲取調用順序是不夠的,如前所描述: showImg(https://segmentfault.com/img/bVbvV9H?w=500&h=230);左邊只體現了順序,右邊體現...
閱讀 3267·2021-11-24 09:38
閱讀 2148·2021-11-23 09:51
閱讀 1738·2021-10-13 09:39
閱讀 2610·2021-09-23 11:53
閱讀 1394·2021-09-02 15:40
閱讀 3648·2019-08-30 15:54
閱讀 1121·2019-08-30 13:04
閱讀 2552·2019-08-30 11:01