摘要:頁面展示的統計追蹤等信息則通過的接口獲取四功能展示數據庫監控目前已實現的功能有分類統計數據庫連接池監控慢耗時分布統計慢統計慢追蹤以及調用鏈日志關聯功能。
作者: 王林林
出處:UAVStack智能運維
來源:宜信技術學院
技術沙龍001期|AI中臺:一種敏捷的智能業務支持方案|宜信技術沙龍 3月28日晚8點線上直播,點擊報名
UAVStack是一個全維監控與應用運維平臺。UAV.Monitor具備監控功能,包含基礎監控、應用/服務性能監控、日志監控、業務監控等。在應用監控中,UAV可以根據應用實例畫像;其中應用實例組件可以對日志、服務、客戶端等進行畫像;基于客戶端的畫像又分為Http、Dubbo、MQ、Kafka、JDBC、Redis、MongoDB等等。
一、背景
作為一個工作多年的程序員或運維人員,相信你一定遇到過以下情況:
· 場景一:系統出現異常情況,運維人員沒能在第一時間發現,反而是業務方在使用過程中反饋系統崩潰、頁面點不開。查看系統日志,發現一直在報連接數據庫異常;
· 場景二:新功能上線穩定運行一段時間后,用戶反饋頁面響應越來越慢,打開一個頁面要等好久。排查問題,發現是一個慢SQL影響了整個功能的體驗。
為此,UAVStack開發了數據庫監控功能。最初,數據庫監控功能只是對數據源、數據庫連接池進行了指標采集,通過客戶端畫像可以查看實時的數據庫連接池信息以及操作計數。最近UAVStack又解鎖了一項新功能——慢SQL監控,使數據庫監控功能更加完善。
今天小編就向大家介紹一下數據庫監控的具體實現。文章中出現的以下關鍵字全部用簡稱代替:
· 中間件增強框架:英文MonitorFramework,簡稱MOF
· 健康管理服務:英文HealthManager,簡稱HM
· 監控代理程序:英文MonitorAgent,簡稱MA
二、關鍵技術&UAV自研框架
· 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語句,讓系統更穩定。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/17960.html
摘要:注入機制作為工作的基礎,也為無侵入捕獲應用數據提供可能。代碼注入機制結合和技術,在應用字節碼加載到之前進行字節碼改寫。當然,修改字節碼文件流的動作是在中進行的。 UAVStack的中間件增強框架專題(MOF)】為大家詳細講述UAV中的MOF Agent是如何借助javaagent(premain)和javaassist技術在對應用無侵入的前提下完成數據捕獲的。歡迎繼續關注UAVStac...
摘要:本文為大家講解中的框架。在系統中,中間件增強框架探針提供了應用畫像及性能數據收集等功能,其中數據收集功能主要采集四類數據實時數據畫像數據調用鏈接數據生成以及線程數據分析數據。提供服務,供后續抓取使用,其中服務注冊了三個,分別為。 本文為大家講解MOF中的CaptureFramework框架。該框架提供統一的數據抓取行為和生成抓取結果能力,實現實時數據采集。 背景 應用服務監控是智能運維...
閱讀 1155·2021-10-15 09:39
閱讀 3052·2021-09-10 10:50
閱讀 3454·2019-08-30 15:53
閱讀 1877·2019-08-30 15:52
閱讀 2565·2019-08-29 15:31
閱讀 1978·2019-08-26 13:43
閱讀 2594·2019-08-26 13:37
閱讀 1444·2019-08-23 18:31