偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

監(jiān)控系統(tǒng)如何做埋點(diǎn),監(jiān)控?cái)?shù)據(jù)庫和HTTP請(qǐng)求

安全
JDBC做過java開發(fā)的都知道JDBC是干什么的,RestApi其實(shí)就是http的調(diào)用,http的調(diào)用就是調(diào)用第三方的服務(wù)的時(shí)候,第三方的服務(wù)并不是在自己的系統(tǒng)范圍內(nèi),如果出現(xiàn)不穩(wěn)定掛掉,對(duì)自身來說是不可控了,所以第三方服務(wù)而言對(duì)我們而言是非常的明感的。

 [[279794]]

JDBC做過java開發(fā)的都知道JDBC是干什么的,RestApi其實(shí)就是http的調(diào)用,http的調(diào)用就是調(diào)用第三方的服務(wù)的時(shí)候,第三方的服務(wù)并不是在自己的系統(tǒng)范圍內(nèi),如果出現(xiàn)不穩(wěn)定掛掉,對(duì)自身來說是不可控了,所以第三方服務(wù)而言對(duì)我們而言是非常的明感的。JDBC和RestApi的監(jiān)控對(duì)系統(tǒng)來講意義很大,數(shù)據(jù)庫得多重要,在系統(tǒng)的內(nèi)部進(jìn)行監(jiān)控更能良好的反應(yīng)sql的執(zhí)行性能。

 

監(jiān)控系統(tǒng)如何做埋點(diǎn),監(jiān)控?cái)?shù)據(jù)庫和HTTP請(qǐng)求

 

(一)JDBC調(diào)用攔截

  • JDBC插樁目的

哪些監(jiān)控懟開發(fā)運(yùn)維來說最有用的。

  1. SQL語句、SQL參數(shù)、用了多長時(shí)間、SQL類型、結(jié)果集大小、返回字段、規(guī)范、Join次數(shù)
  2. 攔截監(jiān)聽SQL語句
  3. 找出慢查詢語句
  • 模型結(jié)構(gòu)

字段類型描述sqltextsql語句paramsjson參數(shù)resultSizeint結(jié)果大小urlvarchar數(shù)據(jù)庫連接路徑userNamevarchar數(shù)據(jù)庫用戶名errortext異常堆棧useTimeint用時(shí)

  • JDBC插樁位置

這些user,框架,連接池,驅(qū)動(dòng)都依賴jdbc,jdbc是一個(gè)什么東西?jdbc是一種規(guī)范,一堆接口組成的規(guī)范j2se,由驅(qū)動(dòng)來實(shí)現(xiàn)的。servlet也是一種接口規(guī)范,是j2ee的規(guī)范,由tomcat,jetty等容器實(shí)現(xiàn)的。任任何一層都可以做為插樁的切入點(diǎn),但是選用User 層、框架層、連接池&數(shù)據(jù)源層、驅(qū)動(dòng)層其實(shí)現(xiàn)是多樣的,無法做到普適性。所以在此選用JDBC 作為插樁切入 點(diǎn)。

 

監(jiān)控系統(tǒng)如何做埋點(diǎn),監(jiān)控?cái)?shù)據(jù)庫和HTTP請(qǐng)求

 

  • JDBC插樁機(jī)制

 

監(jiān)控系統(tǒng)如何做埋點(diǎn),監(jiān)控?cái)?shù)據(jù)庫和HTTP請(qǐng)求

 

從上圖可以分析出JDBC執(zhí)行過程

1.從驅(qū)動(dòng)獲取連接(Connection)

2.基于連接構(gòu)建預(yù)處理對(duì)象(prepareStatement)

3.執(zhí)行SQL

4.讀取結(jié)果集(ResultSet)

5.關(guān)閉釋放連接。

其中涉及對(duì)象構(gòu)建邏輯如下:

Driver==》Connection==》prepareStatement==》ResultSet

 

監(jiān)控系統(tǒng)如何做埋點(diǎn),監(jiān)控?cái)?shù)據(jù)庫和HTTP請(qǐng)求

 

(二)Http調(diào)用攔截

  • Http埋點(diǎn)目的

很多時(shí)候我們會(huì)調(diào)用第三方API。比如:消息推送、短信發(fā)送、第三方支付接口等,因?yàn)榉?wù)是第三方提供,如果服務(wù)出現(xiàn)性能或可用性問題對(duì)于我方而言不可控,所以這類接口的穩(wěn)定性是我們需要重點(diǎn)關(guān)注的對(duì)象。

通常這類接口會(huì)基于Http協(xié)議實(shí)現(xiàn),所對(duì)Htpp協(xié)議監(jiān)控,即實(shí)現(xiàn)了對(duì)第三方接口的監(jiān)控。

  • Http埋點(diǎn)位置

 

監(jiān)控系統(tǒng)如何做埋點(diǎn),監(jiān)控?cái)?shù)據(jù)庫和HTTP請(qǐng)求

 

1.user層:無法判斷User具體執(zhí)行方法,基于配置又做不到普適性。

2.Http協(xié)議層:能找到具體方法,也能做到普適性。需要對(duì)Http協(xié)議進(jìn)行全面解析,而且Http協(xié)議為文本協(xié)議,解析難度更大,實(shí)現(xiàn)成本居高。

3.專有SDK、與自定義封裝的Http工具包,跟具體業(yè)務(wù)偶合同樣無法做到普適應(yīng)。

4.java net URL 與 HttpClient 都是Http client 基于二者實(shí)現(xiàn)可以在一定程度上達(dá)成我們的目標(biāo)。

  • Http埋點(diǎn)機(jī)制(java.net.URL)

URL常用寫法:

  1. URL url = new URL("https://www.baidu.com"); 
  2. URLConnection conn = url.openConnection(); 
  3. conn.setDoInput(true); 
  4. conn.setDoOutput(true); 
  5. conn.connect(); 
  6. OutputStream output = conn.getOutputStream(); 
  7. output.write("a=c&b=1".getBytes()); 
  8. InputStream input = conn.getInputStream(); 
  9. byte[] bytes = IOUtils.readFully(input, -1, false); 
  10. System.out.println(new String(bytes)); 

URL 裝載執(zhí)行過程:

  1. URL 基于protocol 構(gòu)建對(duì)應(yīng) UrlStreamHandler
  2. UrlStreamHandler.openConnection() 打開連接,返回URlConnection
  3. URlConnection 設(shè)置連接屬性
  4. URlConnection 打開 outPutStream 寫入?yún)?shù)
  5. URlConnection 打開 inPutStream讀取結(jié)果

其中涉及對(duì)象構(gòu)建邏輯如下:

URL==》URLStreamHandler==》URLConnection==》outPutStream、InputStream。

如果上述過程加一層靜態(tài)代理即可監(jiān)控這些對(duì)象所有的執(zhí)行過程從而得到所需監(jiān)控?cái)?shù)據(jù):

URL==》Proxy(URLStreamHandler)==》Proxy(URLConnection)==》Proxy(outPutStream)、Proxy(InputStream)。

  • URL的類結(jié)構(gòu)

 

監(jiān)控系統(tǒng)如何做埋點(diǎn),監(jiān)控?cái)?shù)據(jù)庫和HTTP請(qǐng)求

 

怎么樣才能加上這層代理呢?其關(guān)鍵方法在于 通過靜態(tài)代理的方式。 java.net.URL#setURLStreamHandlerFactory。該方法允許用戶自定義URL協(xié)議實(shí)現(xiàn).

 

監(jiān)控系統(tǒng)如何做埋點(diǎn),監(jiān)控?cái)?shù)據(jù)庫和HTTP請(qǐng)求

 

 

責(zé)任編輯:武曉燕 來源: 今日頭條
相關(guān)推薦

2019-10-25 17:36:47

網(wǎng)絡(luò)安全網(wǎng)絡(luò)安全技術(shù)周刊

2022-08-29 08:08:58

SQLOracleCPU

2019-10-09 10:06:48

容器監(jiān)控軟件

2010-06-01 15:40:07

數(shù)據(jù)庫網(wǎng)絡(luò)部署

2023-07-10 15:35:46

2022-06-22 08:02:01

業(yè)務(wù)監(jiān)控Web站點(diǎn)監(jiān)控

2022-01-05 08:29:22

監(jiān)控Prometheus Post

2024-08-27 08:27:19

2014-04-09 11:43:54

Zabbix監(jiān)控Mysql數(shù)據(jù)庫

2011-03-24 10:59:08

Nagios監(jiān)控數(shù)據(jù)庫

2014-12-08 10:08:45

AWSAWS數(shù)據(jù)庫MongoDB

2015-04-13 16:00:24

數(shù)據(jù)庫選型關(guān)系型數(shù)據(jù)庫NoSQL

2023-02-28 22:52:47

2023-12-18 14:55:00

Oracle數(shù)據(jù)庫監(jiān)控

2011-01-20 08:35:23

SQL Server

2023-12-26 07:40:34

2019-05-24 15:20:42

優(yōu)化系統(tǒng)數(shù)據(jù)庫

2010-06-03 17:12:30

Windows Ser

2024-11-14 08:19:59

數(shù)據(jù)庫優(yōu)化數(shù)量級(jí)

2020-10-09 06:55:23

監(jiān)控告警日志
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)