您好,登錄后才能下訂單哦!
本篇文章給大家分享的是有關UAVStack的慢SQL數據庫監控功能及其實現是怎樣的,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
UAVStack是一個全維監控與應用運維平臺。UAV.Monitor具備監控功能,包含基礎監控、應用/服務性能監控、日志監控、業務監控等。在應用監控中,UAV可以根據應用實例畫像;其中應用實例組件可以對日志、服務、客戶端等進行畫像;基于客戶端的畫像又分為Http、Dubbo、MQ、Kafka、JDBC、Redis、MongoDB等等。
作為一個工作多年的程序員或運維人員,相信你一定遇到過以下情況:
場景一:系統出現異常情況,運維人員沒能在第一時間發現,反而是業務方在使用過程中反饋系統崩潰、頁面點不開。查看系統日志,發現一直在報連接數據庫異常;
場景二:新功能上線穩定運行一段時間后,用戶反饋頁面響應越來越慢,打開一個頁面要等好久。排查問題,發現是一個慢SQL影響了整個功能的體驗。
為此,UAVStack開發了數據庫監控功能。最初,數據庫監控功能只是對數據源、數據庫連接池進行了指標采集,通過客戶端畫像可以查看實時的數據庫連接池信息以及操作計數。最近UAVStack又解鎖了一項新功能——慢SQL監控,使數據庫監控功能更加完善。
今天小編就向大家介紹一下數據庫監控的具體實現。文章中出現的以下關鍵字全部用簡稱代替:
· 中間件增強框架:英文MonitorFramework,簡稱MOF · 健康管理服務:英文HealthManager,簡稱HM · 監控代理程序:英文MonitorAgent,簡稱MA
· MOF Agent注入機制:MOF Agent的注入機制以Java agent以及Javaassit技術作為基礎支撐。Java agent負責攔截和轉換字節碼流,轉換過程中使用Javaassist進行解析和修改,在應用服務器生命周期的關鍵位置注入切點,為MOF框架初始化、應用的畫像信息和實時監控數據信息捕獲提供基礎。
· InterceptFramework框架:在應用啟動的特定生命周期內改寫字節碼,植入特定的邏輯處理代碼,即畫像數據采集,采集的數據包含服務畫像以及客戶端畫像;客戶端畫像包含Http、Dubbo、MQ、Kafka、JDBC、Redis、MongoDB等常見的開源組件,系統中調用的第三方服務都會被列為是客戶端的對象,比如系統中調用了第三方系統的接口都屬于客戶端的范疇。
· CaptureFramework框架:通過InterceptFramework框架在特定的生命周期改寫字節碼植入特定的邏輯代碼,在植入的邏輯代碼中可以通過CaptureFramework畫像的Monitor捕獲體系的能力采集數據以及數據存儲。具體實現為采用doCapture來實現在特定的捕獲點執行抓取數據行為,采用doPreStore來實現在存儲數據結構之前的一些捕獲動作,對抓取的數據進行特殊數據的處理,獲取到處理完成后的數據再通過UAVServer調用具體的Supporter,最后實現數據落地。
慢SQL監控的實現分為四個組成部分:
· 慢SQL的動態啟停:慢SQL的監控啟/停依賴于MOF的Global Filter機制。在應用初始化時,UAV對應用的Filter進行了改寫,提供了向MOF下發指令的接口。只要調用接口傳入規定的參數便可以實現對慢SQL監控的動態啟停。UAV系統中并不存在其它服務直接調用MOF的操作,都是通過MA來完成的。大家可以把MA理解為服務請求方與MOF之間的媒介。
· 慢SQL數據采集:依賴InterceptFramework框架在特定的生命周期改寫字節碼植入特定邏輯,同時采用MOF的CaptureFramework框架進行數據抓取并生成抓取結果。MA會對生成結果的文件進行定時采集并封裝成固定的數據結構發送至MQ。
· 數據存儲:在HM中創建獨立的feature進行數據處理,消費MA推送至MQ中的數據,完成數據清洗再存儲至ES。由于數據采集的結果進行了特殊的約定,從MQ拿到的數據并不能直接轉換成相應的結果,需要進行相應的解析處理才能進行存儲(由于采集的數據中字段較多、可能含有特殊的字符會影響對數據的解析,在生成數據結果時有規則約束才能實現數據的正確解析)。數據庫監控的feature還提供了查詢、統計慢SQL操作的相關接口。
· 頁面展示:操作頁面可自主啟停數據庫監控,設置慢SQL的時間閾值。啟停以及時間閾值的設置依賴于MA向MOF發送指令。頁面展示的SQL統計、追蹤等信息則通過HM的接口獲取。
數據庫監控目前已實現的功能有SQL分類統計、數據庫連接池監控、慢SQL耗時分布統計、慢SQL統計、慢SQL追蹤以及調用鏈/日志關聯功能。
SQL分類統計:
· 數據來源:OpenTSDB(通過畫像采集指標)
· 針對插入、刪除、更新、查詢、批量操作進行分類統計
· 根據時間分布展示數據庫的訪問情況,根據時間分布展示數據庫的訪問情況,展示所選時間段的總訪問計數(累計值)
· 可以自定義時間條件查詢歷史數據
數據庫連接池監控:
· 數據來源:OpenTSDB(通過畫像采集指標)
· 可以查看連接池總連接數、活動連接數、空閑連接數的變化曲線
慢SQL耗時分布統計:
· 數據來源:ES
· 慢SQL統計可根據分類進行展示統計
· 針對慢SQL的耗時分布統計,最多查詢100條
· 根據時間分布展示數據庫慢SQL的訪問情況,展示當前時間點的慢SQL訪問時間、SQL、耗時
· 可以根據設置查詢歷史數據
慢SQL統計:
· 數據來源:ES
· 針對所有類型的SQL
· 根據時間分布展示數據庫某時間段的慢SQL統計
· 可以根據設置查詢歷史數據
慢SQL追蹤:
· 數據來源:ES
· 查詢條件為:關鍵字、是否慢SQL追蹤、時間范圍
· 根據搜索條件查詢SQL追蹤列表,列表展示內容為:SQL語句、總執行次數、執行總時間、平均執行時間、操作-可查看詳情
慢SQL追蹤-詳情查看:
· 數據來源:ES
· 慢SQL詳情:點擊某一條慢SQL統計可查看詳情:包含開始執行時間、執行時長、入參、執行結果、影響條數
慢SQL追蹤-調用鏈關聯:
· 應用監控中需開啟輕度調用鏈
· 點擊某一行詳細的執行時間,可以跳轉至調用鏈頁面,查看調用鏈的詳細內容(相關的調用鏈高亮顯示)
慢SQL追蹤-日志關聯:
· 應用監控中需開啟日志歸集
· 點擊某一行詳細的調用鏈內容的日志關聯,可查看相應的日志信息,相關的日志行數高亮顯示
數據庫監控是不容忽視的,好的數據庫監控可以幫助優化系統并進行實時預警。通過文中介紹的數據庫連接池監控,運維人員可以隨時關注數據庫連接池的狀態,有效防止系統出現連接池活動連接數占滿無法連接數據庫的情況;而慢SQL監控功能可以動態展示一個系統的SQL情況,幫助優化SQL語句,讓系統更穩定。
以上就是UAVStack的慢SQL數據庫監控功能及其實現是怎樣的,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。