System.ArgumentOutOfRangeException: 索引和長度必須引用該字符串內的位置。 參數名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技術實現步驟摘要】
本專利技術涉及網絡安全,特別涉及一種批量日志入庫的方法。
技術介紹
1、在網絡安全行業中,隨著網絡攻擊的日益復雜和頻繁,每天都會產生海量的安全日志和運行日志數據。面對如此龐大的數據量,如何快速高效地存儲這些日志數據成為了關鍵挑戰。
2、由于單條數據寫入數據倉庫占用數據倉庫連接數過多,批量sql寫入數據庫受到sql語句長度和日志數據條數限制,所以目前通過文件導入數據是數據倉庫中較為高效、易用且可靠的一種處理方式;文件作為載體執行日志數據導入不僅可以提高數據處理的效率和質量,還能支持大規模數據的批量處理。
3、現有技術中,數據庫導入文件的生成,大部分依賴本地文件系統。文件存儲在本地磁盤上,其讀寫性能受到磁盤io性能的限制。
4、另外,由于每次數據導入都會占用數據倉庫的連接數、cpu中央處理器等資源,所以數據倉庫更適合少量大文件導入(gb級別以上),而不是大量小文件導入;也就需要在對日志數據處理過程中對日志數據進行大批量匯聚并生成大緩存文件。再者,安全分析業務對日志數據入庫實時性要求也很高,也就需要在日志數據寫入緩存文件后最長不超過一定時長必須對緩存文件執行一次數據庫導入。
技術實現思路
1、本公開提供一種批量日志入庫的方法,目的是解決日志數據緩存效率低、緩存文件管理難、數據庫導入數據效率低的問題,提升日志數據入庫效率,提升日志數據接收并發性。
2、本公開提供的批量日志入庫方法,包括以下步驟:
3、s1,將已經完成范式化的日志寫
4、s2,將數據桶中日志數據刷新到緩存文件;
5、s3,緩存文件輸出到數據庫導入文件隊列;
6、s4,從隊列取出數據文件,執行數據導入。
7、進一步的,所述步驟s1具體包括:
8、m個數據桶同時啟動,并發接收范式化后的n*m條日志,其中,采用hash算法,使每個數據桶存儲n條數量的日志。
9、進一步的,所述步驟s1中,日志寫入數據桶的具體方法包括:
10、如果日志是相同業務日志數據,最終寫入數據庫的同一張表,則只需要一個處理流程模塊組;
11、如果是不同日志類型,則啟動多個流程模塊組,根據不同的日志類型,自動分流不同類型的流程模塊組;且根據日志的權重,對每個模塊組設置不同的參數來控制資源分配,所述參數包括:線程數、內存大小、緩存時長中的一種或多種。
12、進一步的,所有日志緩存文件,包括空閑緩存文件、正在導入過程中的游離緩存文件、以及待導入緩存文件,均在tmpfs目錄下生成,對該目錄下的緩存文件的操作,都在內存中進行。
13、進一步的,所述步驟s2包括:
14、判斷數據桶中日志數據總大小是否達到設定的數據大小閾值,或是否執行下一次的刷新周期;
15、當數據桶中的日志數據觸發兩個閾值中的任意一個時,對日志數據執行刷新操作,即將數據桶中的數據寫入緩存文件,并將數據桶清空;
16、其中,m個數據桶的日志數據轉移到一個或多個緩存文件中,由于緩存文件可以重復利用追加寫入,所以同時寫入的緩存文件不超過m個。
17、進一步的,所述步驟s2中,當有多個數據桶同時達到數據刷新閾值時,采用“獨占+循環利用”的方式寫入緩存文件,其中,每一個數據桶的數據刷新操作,都有一個單獨的線程負責執行;
18、具體地,“獨占”指:
19、數據桶中日志數據刷新的線程,搶占緩存文件隊列頭的一個緩存文件,執行日志數據的寫入;此線程在搶占成功的同時,將此緩存文件從緩存文件隊列移除;上述步驟作為一個不可分割的操作進行執行,以保證不會有兩個線程同時搶占到此緩存文件;
20、如果線程未獲取到緩存文件,即緩存文件隊列為空,則創建一個新的緩存文件;
21、“循環利用”指:
22、當數據刷新線程執行完日志數據寫入后,將緩存文件放回緩存文件隊列,以供其他的數據刷新線程搶占寫入,即多個數據刷新線程在不同的占有周期內對同一個緩存文件執行批量追加寫入。
23、進一步的,所述步驟s3將緩存文件輸出到數據庫導入文件隊列的步驟,包括:
24、對緩存文件隊列中的緩存文件進行以下閾值的判斷:
25、當一個緩存文件從緩存文件隊列中取出并寫入日志數據之后,判斷該緩存文件大小是否達到設置的“文件大小”閾值;
26、對處在緩存文件隊列中,等待被取出執行數據寫入的緩存文件,以及正在執行寫入的緩存文件,判斷日志的緩存時長是否達到設置的“數據緩存時長”閾值;
27、如果以上兩項判斷中任意一個達到閾值,則將緩存文件從緩存文件隊列移除,并將該緩存文件放進數據庫導入文件隊列。
28、進一步的,所述步驟s3中,判斷緩存文件大小是否達到設置的“文件大小”閾值的步驟,具體包括:
29、從緩存文件隊列中取出緩存文件時,從文件元數據信息中獲取到文件大小s1,加上當前待寫入日志數據大小s2,即為寫入完成之后緩存文件總大小s=s1+s2;
30、判斷s與緩存文件大小閾值t1大小,
31、如果s小于t1,則將此緩存文件放回緩存文件隊列,等待下一次被取出;
32、如果s大于等于t1,則將緩存文件從緩存文件隊列移除,并將該緩存文件放進數據庫導入文件隊列。
33、進一步的,所述步驟s3中,判斷日志的緩存時長是否達到設置的“數據緩存時長”閾值的步驟,具體包括:
34、將緩存文件名稱轉換為時間戳,計算跟當前時間的時間差,得到緩存文件的創建時長;其中,緩存文件在創建時,將其創建時刻的時間戳作為緩存文件的文件名;
35、設緩存文件的創建時間為t,當前時間為t',則緩存時長為:δt=t'-t;
36、判斷δt與緩存文件緩存時長閾值t2的大小;
37、如果δt大于等于t2,則將此緩存文件從緩存文件隊列移除,并將該緩存文件放進數據庫導入文件隊列。
38、進一步的,所述步驟s4具體包括:
39、開啟單獨的數據導入線程,監聽數據庫導入文件隊列,
40、從隊列中取出緩存文件,執行數據導入,包括:數據倉庫自帶的客戶端程序,建立與數據倉庫服務器的網絡連接,將緩存數據文件以流的形式發送到數據倉庫服務器,執行數據解析、校驗、寫入、持久化;
41、導入完畢,刪除緩存文件。
42、與現有技術相比,本公開的有益效果是:
43、(1)日志數據從接收到入庫的執行流程模塊化;
44、(2)如果業務對不同日志數據在數據倉庫有分表存儲需求,則不同類型日志數據可以啟用各自的模塊流水線,不同類型日志數據在模塊流水線處理過程中,互不交叉;還可以根據不同日志類型的重要程度,靈活的參數配置給不同的模塊分配不同的資源,在有限的資源里優先保障重要數據的入庫效率,做到日志數據的隔離性和差異化;
45、(本文檔來自技高網...
【技術保護點】
1.一種批量日志入庫的方法,包括以下步驟:
2.根據權利要求1所述的方法,其特征在于,所述步驟S1具體包括:
3.根據權利要求1或2所述的方法,其特征在于,所述步驟S1中,日志寫入數據桶的具體方法包括:
4.根據權利要求1所述的方法,其特征在于,所有日志緩存文件,包括空閑緩存文件、正在導入過程中的游離緩存文件、以及待導入緩存文件,均在tmpfs目錄下生成,對該目錄下的緩存文件的操作,都在內存中進行。
5.根據權利要求2所述的方法,其特征在于,所述步驟S2包括:
6.根據權利要求5所述的方法,其特征在于,所述步驟S2中,當有多個數據桶同時達到數據刷新閾值時,采用“獨占+循環利用”的方式寫入緩存文件,其中,每一個數據桶的數據刷新操作,都有一個單獨的線程負責執行;
7.根據權利要求1所述的方法,其特征在于,所述步驟S3將緩存文件輸出到數據庫導入文件隊列的步驟,包括:
8.根據權利要求7所述的方法,其特征在于,所述步驟S3中,判斷緩存文件大小是否達到設置的“文件大小”閾值的步驟,具體包括:
9
10.根據權利要求1所述的方法,其特征在于,所述步驟S4具體包括:
...【技術特征摘要】
1.一種批量日志入庫的方法,包括以下步驟:
2.根據權利要求1所述的方法,其特征在于,所述步驟s1具體包括:
3.根據權利要求1或2所述的方法,其特征在于,所述步驟s1中,日志寫入數據桶的具體方法包括:
4.根據權利要求1所述的方法,其特征在于,所有日志緩存文件,包括空閑緩存文件、正在導入過程中的游離緩存文件、以及待導入緩存文件,均在tmpfs目錄下生成,對該目錄下的緩存文件的操作,都在內存中進行。
5.根據權利要求2所述的方法,其特征在于,所述步驟s2包括:
6.根據權利要求5所述的方法,其特征在于,所述步驟s2中,當有多個數據桶同...
【專利技術屬性】
技術研發人員:王川,肖振勛,
申請(專利權)人:北京啟明星辰信息安全技術有限公司,
類型:發明
國別省市:
還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。