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

監控系統如何做埋點,監控數據庫和HTTP請求

安全
JDBC做過java開發的都知道JDBC是干什么的,RestApi其實就是http的調用,http的調用就是調用第三方的服務的時候,第三方的服務并不是在自己的系統范圍內,如果出現不穩定掛掉,對自身來說是不可控了,所以第三方服務而言對我們而言是非常的明感的。

 [[279794]]

JDBC做過java開發的都知道JDBC是干什么的,RestApi其實就是http的調用,http的調用就是調用第三方的服務的時候,第三方的服務并不是在自己的系統范圍內,如果出現不穩定掛掉,對自身來說是不可控了,所以第三方服務而言對我們而言是非常的明感的。JDBC和RestApi的監控對系統來講意義很大,數據庫得多重要,在系統的內部進行監控更能良好的反應sql的執行性能。

 

監控系統如何做埋點,監控數據庫和HTTP請求

 

(一)JDBC調用攔截

  • JDBC插樁目的

哪些監控懟開發運維來說最有用的。

  1. SQL語句、SQL參數、用了多長時間、SQL類型、結果集大小、返回字段、規范、Join次數
  2. 攔截監聽SQL語句
  3. 找出慢查詢語句
  • 模型結構

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

  • JDBC插樁位置

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

 

監控系統如何做埋點,監控數據庫和HTTP請求

 

  • JDBC插樁機制

 

監控系統如何做埋點,監控數據庫和HTTP請求

 

從上圖可以分析出JDBC執行過程

1.從驅動獲取連接(Connection)

2.基于連接構建預處理對象(prepareStatement)

3.執行SQL

4.讀取結果集(ResultSet)

5.關閉釋放連接。

其中涉及對象構建邏輯如下:

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

 

監控系統如何做埋點,監控數據庫和HTTP請求

 

(二)Http調用攔截

  • Http埋點目的

很多時候我們會調用第三方API。比如:消息推送、短信發送、第三方支付接口等,因為服務是第三方提供,如果服務出現性能或可用性問題對于我方而言不可控,所以這類接口的穩定性是我們需要重點關注的對象。

通常這類接口會基于Http協議實現,所對Htpp協議監控,即實現了對第三方接口的監控。

  • Http埋點位置

 

監控系統如何做埋點,監控數據庫和HTTP請求

 

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

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

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

4.java net URL 與 HttpClient 都是Http client 基于二者實現可以在一定程度上達成我們的目標。

  • Http埋點機制(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 裝載執行過程:

  1. URL 基于protocol 構建對應 UrlStreamHandler
  2. UrlStreamHandler.openConnection() 打開連接,返回URlConnection
  3. URlConnection 設置連接屬性
  4. URlConnection 打開 outPutStream 寫入參數
  5. URlConnection 打開 inPutStream讀取結果

其中涉及對象構建邏輯如下:

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

如果上述過程加一層靜態代理即可監控這些對象所有的執行過程從而得到所需監控數據:

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

  • URL的類結構

 

監控系統如何做埋點,監控數據庫和HTTP請求

 

怎么樣才能加上這層代理呢?其關鍵方法在于 通過靜態代理的方式。 java.net.URL#setURLStreamHandlerFactory。該方法允許用戶自定義URL協議實現.

 

監控系統如何做埋點,監控數據庫和HTTP請求

 

 

責任編輯:武曉燕 來源: 今日頭條
相關推薦

2019-10-25 17:36:47

網絡安全網絡安全技術周刊

2022-08-29 08:08:58

SQLOracleCPU

2019-10-09 10:06:48

容器監控軟件

2010-06-01 15:40:07

數據庫網絡部署

2023-07-10 15:35:46

2022-06-22 08:02:01

業務監控Web站點監控

2022-01-05 08:29:22

監控Prometheus Post

2024-08-27 08:27:19

2014-04-09 11:43:54

Zabbix監控Mysql數據庫

2011-03-24 10:59:08

Nagios監控數據庫

2014-12-08 10:08:45

AWSAWS數據庫MongoDB

2015-04-13 16:00:24

數據庫選型關系型數據庫NoSQL

2023-02-28 22:52:47

2023-12-18 14:55:00

Oracle數據庫監控

2011-01-20 08:35:23

SQL Server

2023-12-26 07:40:34

2019-05-24 15:20:42

優化系統數據庫

2010-06-03 17:12:30

Windows Ser

2024-11-14 08:19:59

數據庫優化數量級

2020-10-09 06:55:23

監控告警日志
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 电影午夜精品一区二区三区 | 亚洲日本欧美日韩高观看 | 国产精品久久久久久久久久 | 成人网址在线观看 | 日本 欧美 三级 高清 视频 | 日韩中文字幕在线播放 | 久久蜜桃av一区二区天堂 | 91极品尤物在线播放国产 | 国内精品视频一区二区三区 | 九九精品久久久 | 中文字幕av亚洲精品一部二部 | 欧美视频一区 | 91xh98hx 在线 国产 | 国产精品成人在线播放 | 天堂中文字幕av | 操久久| 日韩精品一区二区三区高清免费 | 自拍 亚洲 欧美 老师 丝袜 | 国产精品99视频 | 一区二区三区国产精品 | 三级av在线 | 亚洲一区 | 九九亚洲 | 狠狠操你 | 久久精品国产一区二区三区不卡 | 人人干人人干人人 | 日韩成人在线观看 | 99国产精品视频免费观看一公开 | 国产成人小视频 | 成人午夜免费在线视频 | 亚洲精品片 | av影片在线 | 亚洲精品视频在线观看免费 | www.国产一区 | 国产美女精品视频 | 日韩中文字幕在线观看 | 国产精品视频免费播放 | 久久久精品一区二区三区 | 国产伦精品一区二区三区高清 | 911精品美国片911久久久 | 四虎影院一区二区 |