一種流量動態可控的系統監控數據採集方法
2023-10-23 21:12:47 1
一種流量動態可控的系統監控數據採集方法
【專利摘要】本發明涉及數據採集和流量控制領域,具體是一種流量動態可控的系統監控數據採集方法,所述的流量動態可控的監控數據採集方法主要分為三個部分,分別是監控數據異步採集處理,流量控制開啟檢測和流控數據合併機制;所述的監控數據異步採集處理方法如下:通過調用系統線程接口,監控模塊在初始化後啟動一個單獨的監控數據處理線程負責系統數據的多目標處理輸出;動態流控的一個總周期可以劃分為兩個階段:流控檢測階段Td和流控執行階段Te。本發明同現有技術相比,其優點在於:通過流速權控制算法,保證關鍵實時系統的平穩運行,能夠有效地滿足不同監控目標的監控數據採集需求,並通過特徵數據的合併方法,保證了落地數據的質量。
【專利說明】一種流量動態可控的系統監控數據採集方法
[【技術領域】]
[0001]本發明涉及數據採集和流量控制領域,具體是一種流量動態可控的系統監控數據採集方法。
[【背景技術】]
[0002]系統狀態數據採集模塊可以實時記錄程序的運行情況、錯誤的發生現場等數據,並輸出採集的數據到多個目標如屏幕,文件和資料庫,從而幫助開發人員和運維人員了解系統狀態、審計操作流程、排查錯誤原因、存檔系統數據等。因此,在關鍵實時系統的開發和運行中,特別是對於具有高可用性目標的交易系統來說,數據採集模塊的良好設計與實現不僅有利於代碼重用,而且對於系統的穩定高效運行具有重要的意義。
[0003]當今主流的監控數據採集框架或多或少都借鑑了Log4j庫的設計理念。Log4j實現了一個基於Java的數據記錄工具框架,在Log4j中定義了 3個重要概念,分別是Logger、Appender和Layout:Logger用於定義不同的數據採集對象;Appender描述輸出流,如屏幕、文件、⑶I組件、Socket伺服器、NT事件記錄器、syslog進程服務等,通過為Logger指定一個Appender,可以區分不同對象的輸出目標;Layout用於指定監控信息的輸出格式,通過為Appender來指定一個Layout,可以決定監控信息以何種格式輸出,比如是否有帶有時間戳,是否包含文件位置信息等,通過這三個組件協同的工作,Log4j為監控數據採集行為控制提供了極大的靈活性,此外,基於預定義的等級和過濾器,可以自由地選擇需要記錄的數據。
[0004]Log4j雖然功能強大,但是該庫只是面向Java語言的,因此基於Log4j機制的其他語言替代庫相繼應運而生,Log4c便是模仿Log4j原理的C語言實現。類似地,它通過定義Category, Appender和Layout三個屬性唯一確定一個數據採集對象,Log4c不支持異步數據米集。
[0005]Log4g同樣是C語言的一個實現,它基於glib的GObject開發,支持異步數據輸出,此外Log4g還支持面向CouchDB的數據記錄,便於日後利用基於NoSQL環境的大數據分析。Log4cplus和Log4cxx是C++的Log4j實現,它們具有線程安全、靈活輸出、以及多粒度控制的特點,但Log4cplus的移植性不高,而Log4cxx雖然通過使用APR增強了移植性,但是APR本身增加了系統的依賴性。此外,Hog作為一款比較新的數據採集庫,通過定義不同的fsync閾值來實現記錄監控數據落地請求和磁碟10工作的異步處理。
[0006]可以看到,現有的各種數據採集模塊雖然能夠實現監控信息的輸出,但是在設計上都比較簡單,缺乏針對系統狀態變化時的動態流量調整,因此在應用系統的實時運行中,如果突然出現大量錯誤信息需要寫文件等情況,會在一段時間內集中產生主機磁碟衝擊,此時文件10讀寫便會成為系統瓶頸,顯著降低系統的整體性能。此外,部分數據採集模塊(如log4c)為了實現數據的及時輸出,採用同步落地機制,那麼在進行數據落地時會阻塞主邏輯的運行,應用進程需要等待10輸出完成才能繼續後續代碼的執行,於是在監控事件大量突發時,可能會因為磁碟10吊住主程序的邏輯,從而對生產環境中實時程序的請求響應產生災難性的影響。
[0007]綜上,雖然目前有很多監控數據採集框架可供選擇,但是關鍵實時系統的高穩定性和低延遲是重要的運行指標,如果由於監控邏輯的負載影響實時業務程序的運行和業務處理的及時響應,那麼在設計上是有顯著缺陷的。系統狀態數據的採集可以幫助管理人員快速了解系統的運行情況、審計操作流程和排查錯誤原因,但是對於某些關鍵實時系統,如證券交易系統的穩定性和高可用性是衡量其設計運行水平的首要指標,那麼在監控的事件(如系統錯誤等)頻繁發生的情況下,大規模的數據採集和落地反而會對系統的整體性能和穩定性產生顯著影響,嚴重時甚至會阻塞主應用程式的邏輯。
[
【發明內容】
]
[0008]本發明的目的就是為了解決交易實時系統的系統狀態數據的採集過程中,大規模的數據採集和落地會對系統的整體性能和穩定性產生顯著影響的技術問題,實現在大規模數據採集和落地時既保證實時系統的平穩運行,又可以有效地滿足特徵數據的採集和分發工作的一種流量動態可控的系統監控數據採集方法。
[0009]為了實現上述目的,發明一種流量動態可控的系統監控數據採集方法,所述的流量動態可控的監控數據採集方法主要分為三個部分,分別是監控數據異步採集處理,流量控制開啟檢測和流控數據合併機制;
[0010]所述的監控數據異步採集處理方法如下:通過調用系統線程接口,監控模塊在初始化後啟動一個單獨的監控數據處理線程負責系統數據的多目標處理輸出;單獨的監控數據處理線程不停輪詢數據輸出請求隊列,一旦發現有新的請求時,就從隊頭彈出數據記錄並執行真正的輸出請求,一直到將隊列中的記錄處理完畢;
[0011]所述的流量控制開啟檢測方法如下:監控數`採集庫的採集接口在進行數據入隊操作時,會實時檢查系統監控事件的發生頻率,並動態調整採集數據的流量,從而避免大量數據操作對系統整體性能的衝擊,流控算法首先在流控檢測周期內計數到達隊列的數據請求數目,一旦該請求數達到或超過請求數閾值,就立即開啟流量控制機制,並一直持續到流控執行周期的時間段結束。因此,動態流控的一個總周期可以劃分為兩個階段:流控檢測階段^和流控執行階段!;;
[0012]所述的流控數據合併機制方法如下:在流控執行周期,監控數據採集庫的採集接口不再將新到的數據加入數據輸出請求隊列,而是通過初始化時的哈希表進行相同特徵數據的合併,從而降低實際數據流量的目標,數據的合併機制是:對於未出現過的特徵數據類型,在哈希表裡面增加一條;否則,只增加相同記錄類型的計數。
[0013]所述的單獨的監控數據處理線程的數據輸出工作為屏幕列印或進行磁碟文件寫入或通過網絡傳輸數據至遠程的資料庫伺服器。
[0014]所述的流控檢測周期設為0,表示始終不執行流控;如果數據輸出請求數閾值設為0,表示始終執行流控機制。
[0015]所述的監控數據異步採集處理方法需在採集模塊初始化時選定異步數據輸出請求隊列長度,隊列長度過小會導致大量監控數據無法入隊而被丟棄,所述的異步數據輸出請求隊列長度選定方法如下:
[0016]監控事件數據的到達和監控事件數據的落地之差即為該時間段的隊列長度的變化量△,在上一個交易日DT_1;$ ei表示第i秒內發生的事件數,對每條採集的數據定義了m個輸出目標,每個輸出目標可以通過性能測試數據的平均值獲得其單條數據處理時間的
v = K ,
期望值_那麼單位時間內m個目標的總服務速度(可以處理的數據)為m /fJjj綜
【權利要求】
1.一種流量動態可控的系統監控數據採集方法,其特徵在於所述的流量動態可控的監控數據採集方法主要分為三個部分,分別是監控數據異步採集處理,流量控制開啟檢測和流控數據合併機制;所述的監控數據異步採集處理方法如下:通過調用系統線程接口,監控模塊在初始化後啟動一個單獨的監控數據處理線程負責系統數據的多目標處理輸出;單獨的監控數據處理線程不停輪詢數據輸出請求隊列,一旦發現有新的請求時,就從隊頭彈出數據記錄並執行真正的輸出請求,一直到將隊列中的記錄處理完畢;所述的流量控制開啟檢測方法如下:監控數據採集庫的採集接口在進行數據入隊操作時,會實時檢查系統監控事件的發生頻率,並動態調整採集數據的流量,從而避免大量數據操作對系統整體性能的衝擊,流控算法首先在流控檢測周期內計數到達隊列的數據請求數目,一旦該請求數達到或超過請求數閾值,就立即開啟流量控制機制,並一直持續到流控執行周期的時間段結束。因此,動態流控的一個總周期可以劃分為兩個階段:流控檢測階段Td和流控執行階段?;;所述的流控數據合併機制方法如下:在流控執行周期,監控數據採集庫的採集接口不再將新到的數據加入數據輸出請求隊列,而是通過初始化時的哈希表進行相同特徵數據的合併,從而降低實際數據流量的目標,數據的合併機制是:對於未出現過的特徵數據類型,在哈希表裡面增加一條;否則,只增加相同記錄類型的計數。
2.如權利要求1所述的一種流量動態可控的系統監控數據採集方法,其特徵在於所述的單獨的監控數據處理線程的數據輸出工作為屏幕列印或進行磁碟文件寫入或通過網絡傳輸數據至遠程的資料庫伺服器。
3.如權利要求1所述的一種流量動態可控的系統監控數據採集方法,其特徵在於所述的流控檢測周期設為0,表示始終不執行流控;如果數據輸出請求數閾值設為0,表示始終執行流控機制。
4.如權利要求1所述的一種流量動態可控的系統監控數據採集方法,其特徵在於所述的監控數據異步採集處理方法需在採集模塊初始化時選定異步數據輸出請求隊列長度,隊列長度過小會導致大量監控數據無法入隊而被丟棄,所述的異步數據輸出請求隊列長度選定方法如下:監控事件數據的到達和監控事件數據的落地之差即為該時間段的隊列長度的變化量Λ,在上一個交易日DT_i,令ei表示第i秒內發生的事件數,對每條採集的數據定義了 m個輸出目標,每個輸出目標可以通過性能測試數據的平均值獲得其單條數據處理時間的期望值那麼單位時間內m個目標的總服務速度(可以處理的數據)為
5.如權利要求1所述的一種流量動態可控的系統監控數據採集方法,其特徵在於所述的流量控制具體方法如下:將一個流控周期Tw劃分為流控檢測階段^和流控執行階段?;,定義λ =m/Td,其中,λ為數據到達速度的上限閾值,m為數據輸出請求數閾值,數據到達速度超過該閾值時,認為磁碟讀寫會對系統性能產生不良影響,對於相同的λ值,m設置的越低,Td就越低,即在一個周期內會越早進入流控執行階段,系統總體性能的損耗會越少;另一方面,越早進入流控執行階段,就有越多的監控信息被壓縮合併,對輸出結果的質量產生削弱。
【文檔編號】G06F11/30GK103678085SQ201310688931
【公開日】2014年3月26日 申請日期:2013年12月16日 優先權日:2013年12月16日
【發明者】金鑫, 武劍鋒, 王泊, 劉凱, 陳雷, 王程程, 惠敏順, 黃寅飛, 白碩 申請人:上海證券交易所