專利名稱:高性能的Syslog日志處理和存儲方法
技術(shù)領(lǐng)域:
本發(fā)明是一種高性能的Syslog日志處理和存儲方法,涉及計(jì)算機(jī)系統(tǒng)集成及應(yīng)用技術(shù),尤其涉及網(wǎng)絡(luò)信息安全中的syslog日志的處理和存儲技術(shù)。
背景技術(shù):
隨著網(wǎng)絡(luò)環(huán)境規(guī)模的日益擴(kuò)大,網(wǎng)絡(luò)中各種設(shè)備的數(shù)量急劇增加,來自外部和內(nèi)部的各種安全和攻擊也在急劇增加,威脅著網(wǎng)絡(luò)信息安全,因此安全審計(jì)變的極為重要,各種設(shè)備的日志記錄了設(shè)備運(yùn)行狀態(tài),各類用戶執(zhí)行的操作等等詳細(xì)信息。在目前的網(wǎng)絡(luò)環(huán)境中,各種設(shè)備的日志已經(jīng)成為海量數(shù)據(jù),syslog作為主要的日志類型,被各種操作系統(tǒng),網(wǎng)絡(luò)設(shè)備和安全設(shè)備廣泛支持,成為日志的重要標(biāo)準(zhǔn),對于其他類型的日志,也可以轉(zhuǎn)換為syslog日志格式,便于統(tǒng)一分析。
由于目前的日志量極大,因此如何有效地進(jìn)行處理和存儲變得極為重要,在一個(gè)中型的企業(yè)中,一天的日志量可以達(dá)到幾十G,而一般要求這些日志至少保持3個(gè)月,那么在一個(gè)安全審計(jì)系統(tǒng)中,這些日志的處理和存儲成為最基礎(chǔ)和最重要的一環(huán)。
另外由于日志量極大,對于日志的處理和接收也提出了嚴(yán)重的課題,因?yàn)樵诎踩珜徲?jì)系統(tǒng)中需要對日志進(jìn)行格式歸一化,才能夠?qū)θ罩具M(jìn)行規(guī)則處理分析,由于目前的日志分析技術(shù)基本比較完善,性能提高的可能幅度不大,如果存在大量的規(guī)則,處理分析的時(shí)間占用不可避免,成為制約日志處理的瓶頸,但是靠單純提高分析性能已經(jīng)無法起到顯著的作用。
傳統(tǒng)的日志處理和存儲技術(shù)一般采用日志文件和數(shù)據(jù)庫,這兩種方法各有利弊 日志文件存儲快,管理方便,但是查詢性能較差,由于沒有索引,查詢效率比較低,不便于對日志進(jìn)行查詢和分析。
數(shù)據(jù)庫存儲對數(shù)據(jù)庫要求高,需要采用昂貴的商業(yè)數(shù)據(jù)庫,價(jià)格高,存儲速度比較慢,管理復(fù)雜,但是查詢性能好,便于進(jìn)行查詢和分析。
因此需要找到一種更高效率的處理和存儲方式,滿足海量日志處理和存儲的需求。
發(fā)明內(nèi)容
本發(fā)明的目的正是針對現(xiàn)在技術(shù)中存在的問題而設(shè)計(jì)提供了一種高性能的Syslog日志處理和存儲方法,該方法可以大幅度地提高日志的處理速度,同時(shí)可以很方便地進(jìn)行查詢和分析。本發(fā)明方法的日志處理速度可以達(dá)到6000條/秒以上。為此,本發(fā)明技術(shù)方案結(jié)合了數(shù)據(jù)庫和日志文件的優(yōu)點(diǎn),采用異步日志處理和并發(fā)日志存儲技術(shù),這兩個(gè)環(huán)節(jié)相互相承,有機(jī)協(xié)調(diào)地應(yīng)對日志總量和日志并發(fā)量的問題,利用空間換時(shí)間,極大地提高了日志處理能力。
異步日志處理技術(shù)是本發(fā)明技術(shù)方案的核心,并發(fā)日志存儲技術(shù)是配合的手段和補(bǔ)充,如果僅僅有異步日志處理技術(shù),沒有存儲的技術(shù)保障,仍然不能發(fā)揮異步處理的優(yōu)勢,還可能造成緩存日志寫滿后不能及時(shí)記錄和存儲。
異步日志處理技術(shù)是指非阻塞的處理方式,基本原理是采用不同的線程分別進(jìn)行接收和處理操作,一個(gè)線程負(fù)責(zé)接收日志,將日志寫入緩存隊(duì)列,一個(gè)線程負(fù)責(zé)處理日志,從緩存隊(duì)列中讀取日志進(jìn)行處理,如果緩存隊(duì)列沒有數(shù)據(jù),將會(huì)處于等待狀態(tài),一旦有新的日志寫入緩存,將會(huì)觸發(fā)處理線程啟動(dòng)開始處理日志,還可以根據(jù)需求配置緩存隊(duì)列的大小,能夠適應(yīng)大規(guī)模的日志處理。
由于日志量極大,可能達(dá)到6000條/秒以上,平均一條日志按照0.5k計(jì)算,每秒的數(shù)據(jù)量達(dá)到3M以上,因此一般的緩存方法難于達(dá)到好的效果,傳統(tǒng)的緩存方法一般基于內(nèi)存,引用速度快,操作方便,但是對于日志處理不太適合,因?yàn)槊棵氲臄?shù)據(jù)量達(dá)到3M以上,緩存大小是關(guān)鍵,按照一般的日志處理,至少需要緩存10分鐘,那么數(shù)據(jù)就達(dá)到1.8G,內(nèi)存作為緩存就不太合適;而采用簡單的文件緩存,由于文件較大,打開和讀寫都比較慢。因此本發(fā)明采用循環(huán)多文件緩存,具體方式是采用多個(gè)文件緩存,對這些文件進(jìn)行循環(huán)讀寫,每個(gè)文件可以緩存一定數(shù)量的日志,能夠避免單個(gè)文件太大的弊病,又不會(huì)無限制增長,文件緩存格式采用直接存儲接收的syslog日志的二進(jìn)制內(nèi)容,提高了讀寫速度。
處理完畢后的日志需要寫入到存儲設(shè)備上,由于單個(gè)設(shè)備畢竟存儲空間有限,而且磁盤IO更是性能瓶頸,因此采用并發(fā)存儲,采用不同的線程將日志寫入到不同的磁盤上,一是可以擴(kuò)大存儲量,二是采用在不同的磁盤并發(fā)寫入,發(fā)揮磁盤IO的處理性能。同時(shí)為了提高查詢效率。
而日志的存儲格式,借鑒關(guān)系數(shù)據(jù)庫的存儲方法,以時(shí)間作為索引,采用多線程并發(fā)讀取,提高查詢效率。由于各個(gè)廠商的設(shè)備眾多,各種日志內(nèi)容千差萬別,所以在存儲前必須進(jìn)行歸一化后處理,否則無法進(jìn)行高效的查詢和分析。
對接收的事件進(jìn)行格式處理,根據(jù)配置文件,按照其配置文件中的字段定義,對事件進(jìn)行歸一化,配置文件采用XML配置日志的具體字段定義,可以進(jìn)行擴(kuò)展支持任意格式的日志內(nèi)容。本系統(tǒng)可以支持多個(gè)配置文件,每個(gè)配置文件可以配置一種或多種日志格式。
對于日志格式的解析提取采用正則表達(dá)式進(jìn)行處理,同時(shí)采用映射賦值和直接賦值進(jìn)行字段統(tǒng)一表示,例如將不同設(shè)備的事件等級映射為標(biāo)準(zhǔn)的等級。
事件歸一化采用分級歸一化,首先采用正則表達(dá)式將日志中的公有字段提取出來,對于其他私有字段進(jìn)行二次提取,避免了重復(fù)掃描,又具有靈活性,這種分級歸一化可以較大地提高處理日志的性能。
本發(fā)明技術(shù)方案的具體技術(shù)措施如下 (1)日志接收日志服務(wù)器軟件通過綁定指定的UDP端口(514),以獨(dú)立線程的運(yùn)行方式接收syslog的數(shù)據(jù)報(bào)文,并將數(shù)據(jù)報(bào)文直接生成syslog數(shù)據(jù)類,將syslog數(shù)據(jù)類寫入到日志緩存中; (2)日志緩存日志緩存負(fù)責(zé)臨時(shí)存儲接收的syslog日志數(shù)據(jù),日志緩存是在硬盤上創(chuàng)建一個(gè)文件數(shù)據(jù)緩存空間,按照先進(jìn)先出的原則將數(shù)據(jù)存為緩存隊(duì)列,緩存隊(duì)列負(fù)責(zé)存儲上一步聚中生成syslog數(shù)據(jù)類,每一個(gè)新接收的數(shù)據(jù)將會(huì)被存儲到隊(duì)尾,隊(duì)列頭部的數(shù)據(jù)將會(huì)等待日志歸一化服務(wù)進(jìn)行處理; (3)日志歸一化處理以獨(dú)立線程的運(yùn)行方式不斷地在檢測日志緩存隊(duì)列頭部,如果日志緩存隊(duì)列中有新數(shù)據(jù),將會(huì)從緩存隊(duì)列中取出數(shù)據(jù),根據(jù)日志歸一化配置文件的字段描述信息將日志內(nèi)容進(jìn)行歸一化,然后調(diào)用日志存儲模塊將日志存儲為統(tǒng)一的格式; (4)日志存儲采用存儲線程池將上一步驟中歸一化的日志寫入到日志存儲文件中,每個(gè)線程負(fù)責(zé)寫入日志數(shù)據(jù)到一個(gè)文件中,多個(gè)線程將可以將日志寫入到不同的目錄和磁盤,提高存儲效率。
采用以上的處理和存儲框架,日志處理性能得到極大提高。
1)存儲的數(shù)據(jù)總量基本沒有限制,根據(jù)用戶的存儲介質(zhì)大小而定。
2)單個(gè)事件服務(wù)并發(fā)處理的日志性能達(dá)到6000條/秒,在某用戶全國骨干網(wǎng)的日志審計(jì)中,取得了較好的效果。
日志歸一化配置文件的基本格式如下 <config> <event Name=″ciscopix″Description=″cisco pix日志″ Match=″(^(?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s\d{2}\s\d{2}:\d{2}:\d{2})\s(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})\s%PIX-(\d)-(\d{6}):\s([^$]+)″> Event表示日志的歸一化模式,可以配置多個(gè)。
其中 Match能夠區(qū)分此類日志的特征字符串,采用正則表達(dá)式,可以將日志公有字段匹配出來,其他私有部分可以提取出來進(jìn)行二次提取。
<field Name=″priority″Description=″等級″Index=″3″Format=″″Value=″″> <fieldvalue Match=″^
″Value=″1″/> <fieldvalue Match=″^[2-4]″Value=″2″/> <fieldvalue Match=″^[5-7]″Value=″3″/> </field> 其中 Field基本定義如下 Name對應(yīng)字段名稱。
Index對應(yīng)第一次提取的字段索引,對應(yīng)event的Match中的正則表達(dá)式的組數(shù),從1開始。
Format目前針對時(shí)間格式,只對時(shí)間字段有效,例如yyyy/MM/ddHH:mm:ss。
Value對于此字段直接賦值。
如果直接采用提取的結(jié)果,就不需要配置fieldvalue,如果需要根據(jù)提取的結(jié)果作二次提取,可以配置Fieldvalue。
Fieldvalue基本定義如下 Match從已經(jīng)提取的字段中進(jìn)行提取該字段的正則表達(dá)式。
Value字段賦值,根據(jù)Match匹配的結(jié)果賦值,如果為空,直接采用提取的結(jié)果,例如提取IP地址。
例如一個(gè)防火墻日志歸一化對應(yīng)的配置文件的格式如下 <config><event Name=″secgate″Description=″secgate日志″Match=″^devid=.*date=";([^";]+)";sdname=([^s]+)slogtype=([^s]+)spri=([^s]+)smod=([^s]+)ssa=([^s]+)ssport=([^s]+)sda=([^s]+)sservice=([^s]+)sproto=([^s]+)spolicy=([^s]+)sduration=([^s]+)srcvd=([^s]+)ssent=([^s]+)ssata=([^s]+)ssatport=([^s]+)sia=([^s]+)siport=([^s]+)″><field Name=″category″Description=″事件分類″Index=″″Format=″″Value=″″/><field Name=″type″Description=″事件具體類型″Index=″3″Format=″″Value=″″/><field Name=″priority″Description=″等級″Index=″4″Format=″″Value=″″><fieldvalue Match=″^
″Value=″1″/><fieldvalue Match=″^[2-4]″Value=″2″/><fieldvalue Match=″^[5-7]″Value=″3″/></field><field Name=″occurTime″Description=″事件產(chǎn)生時(shí)刻″Index=″2″Format=″yyyy/MM/dd HH:mm:ss″Value=″″/><field Name=″sendTime″Description=″事件發(fā)送時(shí)刻″Index=″2″Format=″yyyy/MM/dd HH:mm:ss″Value=″″/><field Name=″duration″Description=″持續(xù)時(shí)刻″Index=″12″Format=″″Value=″″/><field Name=″send″Description=″發(fā)送字節(jié)數(shù)″Index=″14″Format=″″Value=″″/><field Name=″receive″Description=″接收字節(jié)數(shù)″Index=″13″Format=″″Value=″″/><field Name=″protocol″Description=″協(xié)議″Index=″10″Format=″″Value=″″/><field Name=″appProtocol″Description=″應(yīng)用協(xié)議″Index=″″Format=″″Value=″″/><field Name=″sAddr″Description=″源地址″Index=″6″Format=″″Value=″″/><field Name=″sName″Description=″源名稱″Index=″″Format=″″Value=″″/><field Name=″sport″Description=″源端口″Index=″7″Format=″″Value=″″/> <field Name=″sProcess″Description=″源進(jìn)程名稱″Index=″″Format=″″Value=″″/><field Name=″sUserID″Description=″源用戶ID″Index=″″Format=″″Value=″″/><field Name=″sUserName″Description=″源用戶名稱″Index=″″Format=″″Value=″″/><field Name=″stAddr″Description=″源地址轉(zhuǎn)換″Index=″15″Format=″″Val ue=″″/><field Name=″stPort″Description=″源地址轉(zhuǎn)換端口″Index=″16″Format=″″Value=″″/><field Name=″dAddr″Description=″目的地址″Index=″8″Format=″″Value=″″/><field Name=″dName″Description=″目的名稱″Index=″″Format=″″Value=″″/><field Name=″dPort″Description=″目的端口″Index=″9″Format=″″Value=″″/><field Name=″dProcess″Description=″目的進(jìn)程名稱″Index=″″Format=″″Value=″″/> <field Name=″dUserID″Description=″目的用戶ID″Index=″″Format=″″Value=″″/><field Name=″dUserName″Description=″目的用戶名稱″Index=″″Format=″″Value=″″/><field Name=″dtAdrr″Description=″目的地址轉(zhuǎn)換″Index=″17″Format=″″Value=″″/><field Name=″dtPort″Description=″目的地址轉(zhuǎn)換端口″Index=″18″Format=″″Value=″″/><field Name=″devAddr″Description=″設(shè)備地址″Index=″″Format=″″Value=″″/><field Name=″devName″Description=″設(shè)備名稱″Index=″1″ Format=″″Value=″″/></config> 日志存儲文件的構(gòu)成 日志存儲文件采用時(shí)間進(jìn)行索引,提高分析和查詢功能,每個(gè)日志存儲文件分為數(shù)據(jù)文件和索引文件,數(shù)據(jù)文件存儲日志數(shù)據(jù),索引文件存儲按照時(shí)間存儲數(shù)據(jù)在數(shù)據(jù)文件中的位置。
數(shù)據(jù)文件格式 數(shù)據(jù)文件存儲每個(gè)日志數(shù)據(jù)分為兩個(gè)部分,數(shù)據(jù)大小和數(shù)據(jù)內(nèi)容,首先采用int數(shù)據(jù)類型的4個(gè)字節(jié)存儲數(shù)據(jù)大小,然后存儲數(shù)據(jù)內(nèi)容,基本格式如下 數(shù)據(jù)大小(int)數(shù)據(jù)內(nèi)容(byte[]) 數(shù)據(jù)大小(int)數(shù)據(jù)內(nèi)容(byte[]) …… 索引文件格式 索引文件按照時(shí)間(采用long型數(shù)據(jù)表示時(shí)間)存儲數(shù)據(jù)文件中數(shù)據(jù)的位置(采用long型數(shù)據(jù)表示數(shù)據(jù)所在的字節(jié)位置),基本格式如下 日志時(shí)間(long)數(shù)據(jù)位置(long) 日志時(shí)間(long)數(shù)據(jù)位置(long) ……
圖1是本發(fā)明技術(shù)方案中日志處理和存儲流程圖 圖2是本發(fā)明技術(shù)方案中事件處理主從式部署圖
具體實(shí)施例方式 應(yīng)用于某安全審計(jì)系統(tǒng)中的本發(fā)明技術(shù)方案完成其系統(tǒng)的日志處理工作。由于用戶是該部門系統(tǒng)的全國骨干網(wǎng)絡(luò),日常訪問量很大,因此日志數(shù)據(jù)量極大,日志峰值可以達(dá)到6000條/秒以上,每天可達(dá)50G的日志數(shù)據(jù)總量。在這個(gè)安全審計(jì)系統(tǒng)中,用戶處安裝日中審計(jì)軟件,負(fù)責(zé)審計(jì)兩臺千兆防火墻,2臺骨干網(wǎng)路由器,4臺三層交換機(jī)。日志審計(jì)系統(tǒng)基本配置如下 硬件 CPU4個(gè)Intel至強(qiáng)處理器 內(nèi)存4G 軟件 Windows 2003 Enterprise Server 采用本發(fā)明技術(shù)方案能夠順利完成日志接收和處理工作,沒有發(fā)生死機(jī)和無法接收的情況。日志處理和存儲部分包括以下四個(gè)步驟日志接收、日志緩存、日志歸一化處理、日志存儲。
1)日志接收作為獨(dú)立的線程運(yùn)行,綁定指定的UDP端口,主要負(fù)責(zé)接收syslog的數(shù)據(jù)報(bào),將數(shù)據(jù)報(bào)文解析成為標(biāo)準(zhǔn)格式,生成syslog數(shù)據(jù)類,將數(shù)據(jù)類寫入到日志緩存隊(duì)列。
2)日志緩存是一個(gè)可配置大小的數(shù)據(jù)緩存池,具備先進(jìn)先出的特性,采用循環(huán)文件緩存,負(fù)責(zé)緩存寫入的尚未處理的數(shù)據(jù)類,等待日志歸一化服務(wù)進(jìn)行處理,根據(jù)不同的需求和用戶環(huán)境,可以調(diào)節(jié)緩存隊(duì)池的大小。
3)日志歸一化處理作為獨(dú)立的線程運(yùn)行,不斷地在檢測日志緩存隊(duì)列,如果日志緩存隊(duì)列中有數(shù)據(jù),將會(huì)讀取數(shù)據(jù)進(jìn)行歸一化,歸一化服務(wù)將會(huì)根據(jù)配置文件對日志內(nèi)容進(jìn)行格式歸一化,處理完畢后調(diào)用日志存儲服務(wù),按照標(biāo)準(zhǔn)的日志格式寫入到日志文件中,整個(gè)處理過程完畢后會(huì)向日志緩存隊(duì)列讀取下一條數(shù)據(jù),如果日志緩存隊(duì)列為空,則日志歸一化服務(wù)處于等待狀態(tài)。
4)日志存儲是一個(gè)可配置的線程池,每個(gè)線程負(fù)責(zé)寫入日志數(shù)據(jù)到一個(gè)文件中,多個(gè)線程將可以寫入到不同的目錄和磁盤,提高寫入效率,日志文件每天存儲一個(gè)文件,文件以時(shí)間作為每行存儲的字段頭和索引,提高檢索速度。存儲服務(wù)還有一個(gè)守護(hù)線程,可以根據(jù)配置的信息檢測日志數(shù)據(jù)文件的大小,可以根據(jù)設(shè)置的閾值進(jìn)行報(bào)警,可以根據(jù)配置信息壓縮備份日志文件,采用高比率的壓縮算法,可以達(dá)到40-100的壓縮比,極大地節(jié)省了存儲空間。
對于某些大型企業(yè),需要采集日志的設(shè)備眾多,單個(gè)服務(wù)器無論從空間,還是性能上都無法滿足需求。為了能夠適應(yīng)大規(guī)模的事件處理,采用主從式的方案解決負(fù)載均衡和級聯(lián),事件服務(wù)可以獨(dú)立成為集中處理的服務(wù),也可以作為分布式處理的事件收集服務(wù)。
主從式部署,參見附圖2所示。采用大集中的分析處理,由一個(gè)事件服務(wù)作為主要核心處理服務(wù),其他分布式部署的事件服務(wù)作為事件收集的服務(wù),將收集和處理過的事件轉(zhuǎn)發(fā)到核心服務(wù)器中,可以適應(yīng)大規(guī)模的日志處理,事件分析仍然在核心服務(wù)器上進(jìn)行。
主從式部署可以分擔(dān)負(fù)載,提高性能,同時(shí)對于某些特殊的日志和環(huán)境,例如一些難于識別的日志,可以采用一個(gè)事件服務(wù)專門解析此類日志,將解析過的日志發(fā)送到集中管理的服務(wù)器上。
權(quán)利要求
1.高性能的Syslog日志處理和存儲方法,其特征在于該方法的步驟為
(1)日志接收日志服務(wù)器軟件通過綁定指定的UDP端口(514),以獨(dú)立線程的運(yùn)行方式接收syslog的數(shù)據(jù)報(bào)文,并將數(shù)據(jù)報(bào)文直接生成syslog數(shù)據(jù)類,將syslog數(shù)據(jù)類寫入到日志緩存中;
(2)日志緩存日志緩存負(fù)責(zé)臨時(shí)存儲接收的syslog日志數(shù)據(jù),日志緩存是在硬盤上創(chuàng)建一個(gè)文件數(shù)據(jù)緩存空間,按照先進(jìn)先出的原則將數(shù)據(jù)存為緩存隊(duì)列,緩存隊(duì)列負(fù)責(zé)存儲上一步聚中生成syslog數(shù)據(jù)類,每一個(gè)新接收的數(shù)據(jù)將會(huì)被存儲到隊(duì)尾,隊(duì)列頭部的數(shù)據(jù)將會(huì)等待日志歸一化服務(wù)進(jìn)行處理;
(3)日志歸一化處理以獨(dú)立線程的運(yùn)行方式不斷地在檢測日志緩存隊(duì)列頭部,如果日志緩存隊(duì)列中有新數(shù)據(jù),將會(huì)從緩存隊(duì)列中取出數(shù)據(jù),根據(jù)日志歸一化配置文件的字段描述信息將日志內(nèi)容進(jìn)行歸一化,然后調(diào)用日志存儲模塊將日志存儲為統(tǒng)一的格式;
(4)日志存儲采用存儲線程池將上一步驟中歸一化的日志寫入到日志存儲文件中,每個(gè)線程負(fù)責(zé)寫入日志數(shù)據(jù)到一個(gè)文件中,多個(gè)線程將可以將日志寫入到不同的目錄和磁盤。
2.根據(jù)權(quán)利要求1所述的高性能的Syslog日志處理和存儲方法,其特征在于日志歸一化配置文件的基本格式如下
<config>
<event Name=″ciscopix″Description=″cisco pix日志″
Match=″(^(?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s\d{2}\s\d{2}:\d{2}:\d{2})\s(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})\s%PIX-(\d)-(\d{6}):\s([^$]+)″>
Event表示日志的歸一化模式,可以配置多個(gè)。
其中
Match能夠區(qū)分此類日志的特征字符串,采用正則表達(dá)式,可以將日志公有字段匹配出來,其他私有部分可以提取出來進(jìn)行二次提取。
<field Name=″priority″Description=″等級″Index=″3″Format=″″Value=″″>
<fieldvalue Match=″^
″Value=″1″/>
<fieldvalue Match=″^[2-4]″Value=″2″/>
<fieldvalue Match=″^[5-7]″Value=″3″/>
</field>
其中
Field定義如下
Name對應(yīng)字段名稱。
Index對應(yīng)第一次提取的字段索引,對應(yīng)event的Match中的正則表達(dá)式的組數(shù),從1開始。
Format目前針對時(shí)間格式,只對時(shí)間字段有效,例如yyyy/MM/ddHH:mm:ss。
Value對于此字段直接賦值。
如果直接采用提取的結(jié)果,就不需要配置Fieldvalue,如果需要根據(jù)提取的結(jié)果作二次提取,可以配置Fieldvalue。
Fieldvalue定義如下
Match從已經(jīng)提取的字段中進(jìn)行提取該字段的正則表達(dá)式。
Value字段賦值,根據(jù)Match匹配的結(jié)果賦值,如果為空,直接采用提取的結(jié)果,例如提取IP地址。
3.根據(jù)權(quán)利要求l所述的高性能的Syslog日志處理和存儲方法,其特征在于日志存儲文件的構(gòu)成是
存儲的日志存儲文件采用時(shí)間進(jìn)行索引,每個(gè)日志存儲文件分為數(shù)據(jù)文件和索引文件,數(shù)據(jù)文件存儲日志數(shù)據(jù),索引文件存儲按照時(shí)間存儲數(shù)據(jù)在數(shù)據(jù)文件中的位置;
數(shù)據(jù)文件格式
數(shù)據(jù)文件存儲每個(gè)日志數(shù)據(jù)分為兩個(gè)部分,數(shù)據(jù)大小和數(shù)據(jù)內(nèi)容,首先采用int數(shù)據(jù)類型的4個(gè)字節(jié)存儲數(shù)據(jù)大小,然后存儲數(shù)據(jù)內(nèi)容,基本格式如下
數(shù)據(jù)大小(int)數(shù)據(jù)內(nèi)容(byte[])
數(shù)據(jù)大小(int)數(shù)據(jù)內(nèi)容(byte[])
……
索引文件格式
索引文件按照時(shí)間(采用long型數(shù)據(jù)表示時(shí)間)存儲數(shù)據(jù)文件中數(shù)據(jù)的位置(采用long型數(shù)據(jù)表示數(shù)據(jù)所在的字節(jié)位置),基本格式如下
日志時(shí)間(long)數(shù)據(jù)位置(long)
日志時(shí)間(long)數(shù)據(jù)位置(long)
……
通過索引文件能夠提高數(shù)據(jù)查詢效率,優(yōu)于普通的文件存儲。
全文摘要
本發(fā)明是一種高性能的Syslog日志處理和存儲方法,其步驟為(1)日志接收日志服務(wù)器軟件通過綁定指定的UDP端口(514),以獨(dú)立線程的運(yùn)行方式接收syslog的數(shù)據(jù)報(bào)文,并將數(shù)據(jù)報(bào)文直接生成syslog數(shù)據(jù)類,將syslog數(shù)據(jù)類寫入到日志緩存中;(2)日志緩存日志緩存負(fù)責(zé)臨時(shí)存儲接收的syslog日志數(shù)據(jù);(3)日志歸一化處理以獨(dú)立線程的運(yùn)行方式不斷地在檢測日志緩存隊(duì)列頭部,如果日志緩存隊(duì)列中有新數(shù)據(jù),將會(huì)從緩存隊(duì)列中取出數(shù)據(jù),根據(jù)日志歸一化配置文件的字段描述信息將日志內(nèi)容進(jìn)行歸一化,然后調(diào)用日志存儲模塊將日志存儲為統(tǒng)一的格式;(4)日志存儲采用存儲線程池將上一步驟中歸一化的日志寫入到日志存儲文件中,每個(gè)線程負(fù)責(zé)寫入日志數(shù)據(jù)到一個(gè)文件中,多個(gè)線程將可以將日志寫入到不同的目錄和磁盤,提高存儲效率。本發(fā)明技術(shù)方案采用異步日志處理和并發(fā)日志存儲技術(shù),這兩個(gè)環(huán)節(jié)相互相承,有機(jī)協(xié)調(diào)地應(yīng)對日志總量和日志并發(fā)量的問題,利用空間換時(shí)間,極大地提高了日志處理能力。
文檔編號H04L29/02GK101087210SQ20071010316
公開日2007年12月12日 申請日期2007年5月22日 優(yōu)先權(quán)日2007年5月22日
發(fā)明者文華, 朱震, 王新華 申請人:網(wǎng)御神州科技(北京)有限公司