應用程序數據庫監控的中間路線
譯文有時只需要知道數據庫客戶端在數據庫中執行的操作。這些操作可能是:
- 調試應用程序并嘗試確定其數據庫交互是否存在問題。
- 分析無服務器功能的性能以確定某些查詢是否耗時過長。
- 測試應用程序并確保其數據庫交互符合預期。
- 審核系統以確保它不會在數據庫中做任何有趣的事情。
- 對應用程序進行逆向工程。

數據庫客戶端是指直接與數據庫對話的任何事務:它可能是在應用服務器中運行的中間層、報表編寫器、Excel中的電子表格、用PHP編寫的Web應用程序、云中的lambda函數,等等。
不管是什么原因,了解客戶的數據庫交互對于理解客戶的行為非常有幫助。
一般來說,有兩種常見的方法:基于服務器的和基于客戶端的。還有第三種不太常用的選項:監控數據庫連接。這是中間路線:它既不關注數據庫服務器,也不關注數據庫客戶端,而是關注它們之間的連接。
以下了解常見解決方案的優缺點,并看看這第三種方法帶來了什么。
服務器端監控
大多數企業數據庫都有內置的監控功能。如果用戶對數據庫具有管理員級別的訪問權限,那么這種類型的監控可能是一個很好的解決方案,但如果有多個客戶端訪問數據庫,它可能并不總是易于使用。

主要從數據庫的角度觀察世界的人員更喜歡服務器端監控,因為這種類型的監控使企業可以完全訪問數據庫服務器中發生的所有事情:CPU和內存、網絡和磁盤使用情況、死鎖等。
這種解決方案的主要缺點是:
- 需要對數據庫進行特權訪問。
- 對于云計算數據庫,經常被云計算供應商提供的任何東西所困擾。
- 可以看到來自所有客戶端的所有請求,這可能會讓人不知所措,并且可能成為一個安全問題。
客戶端監控
專注于數據庫客戶端的解決方案要求用戶在客戶端中安裝代理。這可以采用庫或模塊的形式,或者可能是攔截所有數據庫調用的替代驅動程序庫。

客戶端監控是更關心數據庫客戶端觀點的人員的首選,例如應用程序開發人員和測試人員。它允許用戶專注于一個特定的客戶端,并準確查看該客戶端在做什么、它發送什么請求、它得到什么響應等等。大多數解決方案還不僅僅是監控數據庫交互。
但是,這種類型的監控也有缺點:
- 它要求用戶對客戶端進行一些更改,這可能很困難。
- 如果用戶不控制客戶端(例如第三方應用程序、不再維護等),它甚至可能不是一個選項。
- 如果監控解決方案不支持客戶的語言或平臺,這甚至不是一個選項。
- 如果用戶需要監控多個客戶端,則可能會很不方便,因為需要在每個客戶端中安裝代理。
基于代理的監控:中間道路
還有第三種選擇:使用數據庫代理監視客戶端和服務器之間的連接。
客戶端并不是直接連接到數據庫,而是連接到代理,代理轉發客戶端和服務器之間的所有請求和響應,并將這些活動報告給監控服務。

代理在有線協議級別工作:它的行為與數據庫服務器完全相同,因此客戶端無法知道它實際上并未直接與數據庫服務器通信。
這種方法的主要優點是它不需要對數據庫客戶端或數據庫服務器進行任何更改,因此可以在任何環境中以任何語言為任何客戶端工作。唯一的要求是客戶端應該連接到代理而不是數據庫,這通常可以通過更改配置參數、數據源定義或有時是網絡設置來完成。
這在處理不受用戶控制的第三方應用程序或不再維護的舊應用程序時特別有用。在這些情況下,對應用程序進行任何更改通常是一個令人生畏的前景。與其相反,指導客戶端連接到代理而不是數據庫通常是微不足道的。
對于使用監控系統不支持的語言編寫的客戶端,基于代理的監控也是唯一實用的解決方案。
例如,New Relic公司擁有適用于C、Java、JavaScript、Go、Ruby、.NET、PHP和Python的應用程序性能監控庫。如果用戶的客戶端使用不兼容的語言編寫,將無法使用New Relic的代理。
應用程序開發人員和測試人員可以實施基于代理的監控,而無需數據庫所有者的協作。一個代理可用于多個客戶端,這在用戶需要監控一套應用程序時很有幫助。
(1)代理方法的優點
- 不需要更改數據庫客戶端或數據庫服務器。
- 適用于現場和云計算數據庫。
- 支持所有平臺和語言,因為它在有線協議級別工作。
- 可以同時應用于多個客戶端。
(2)代理方法的缺點
- 需要代理服務器。
- 由于流量通過代理,響應時間略有增加。
哪種方法更加適合?
如果主要關心數據庫,例如作為系統管理員(DBA),那么基于服務器的監控很可能是適合其的解決方案——這不足為奇。
如果用戶是應用程序開發人員或測試人員,或者只需要知道數據庫客戶端在數據庫中做什么,那么可以在基于客戶端的監控和基于代理的監控之間進行選擇。
如果用戶在客戶端中安裝代理是合理的,那么這是一個很好的方法。將深入了解客戶的行為,并且有許多產品可供選擇(例如谷歌“APM數據庫”)。
如果在用戶的客戶中安裝代理是一個沒有吸引力的前景,或者如果客戶使用不受支持的平臺或語言,那么基于代理的方法可能是用戶的最佳選擇,甚至可能是其唯一的選擇。
原文標題:??Application Database Monitoring: The Middle Way??,作者:Max Tardiveau























