欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

在支持查詢的同時(shí)高效地存儲(chǔ)日志數(shù)據(jù)的制作方法

文檔序號(hào):6595422閱讀:569來(lái)源:國(guó)知局
專利名稱:在支持查詢的同時(shí)高效地存儲(chǔ)日志數(shù)據(jù)的制作方法
技術(shù)領(lǐng)域
本發(fā)明一般涉及安全信息/事件管理(SIM或SIEM),并且特別地涉及在支持查詢的同時(shí)高效地存儲(chǔ)安全信息/事件。
背景技術(shù)
安全信息/事件管理(SIM或SIEM)的領(lǐng)域通常涉及1)從網(wǎng)絡(luò)和聯(lián)網(wǎng)設(shè)備收集反映設(shè)備的網(wǎng)絡(luò)活動(dòng)和/或操作的數(shù)據(jù)和2)分析數(shù)據(jù)以提高安全性。例如,可以分析數(shù)據(jù)以識(shí)別對(duì)網(wǎng)絡(luò)或聯(lián)網(wǎng)設(shè)備的攻擊并確定哪個(gè)用戶或機(jī)器負(fù)責(zé)。如果攻擊正在進(jìn)行中,則可以執(zhí)行抵制措施以挫敗該攻擊或減輕該攻擊造成的損壞。所收集的數(shù)據(jù)通常源自于消息(諸如事件、警報(bào)、或警告)或日志文件中的條目,其是由聯(lián)網(wǎng)設(shè)備生成的。示例性聯(lián)網(wǎng)設(shè)備包括防火墻、入侵檢測(cè)系統(tǒng)和服務(wù)器。每個(gè)消息或日志文件條目(“事件”)被存儲(chǔ)以供未來(lái)使用??梢砸远喾N方式來(lái)組織所存儲(chǔ)的事件。就寫(xiě)事件數(shù)據(jù)、搜索事件數(shù)據(jù)和刪除事件數(shù)據(jù)而言,每個(gè)組織方法具有其自己的優(yōu)點(diǎn)和缺點(diǎn)。考慮以下情形每個(gè)事件包括稱為事件接收時(shí)間的屬性。由于事件接收時(shí)間屬性的值被頻繁地用于搜索,所以基于事件的事件接收時(shí)間來(lái)存儲(chǔ)事件。例如,針對(duì)一天的每分鐘創(chuàng)建一個(gè)文件。為了存儲(chǔ)事件,確定事件的事件接收時(shí)間。將事件附加于與事件接收時(shí)間的該分鐘相對(duì)應(yīng)的文件。當(dāng)后續(xù)事件到達(dá)時(shí),其事件接收時(shí)間將始終單調(diào)增加。這意味著寫(xiě)后續(xù)事件數(shù)據(jù)將僅要求附加操作。不需要存儲(chǔ)介質(zhì)的查尋。這導(dǎo)致寫(xiě)事件數(shù)據(jù)方面的良好的效率。為了基于事件接收時(shí)間來(lái)搜索事件數(shù)據(jù),一旦已經(jīng)識(shí)別了第一事件,則通過(guò)按順序讀取存儲(chǔ)介質(zhì)可獲得后續(xù)事件。再次地,不需要查尋。這在基于事件接收時(shí)間來(lái)搜索事件數(shù)據(jù)方面導(dǎo)致良好的效率。為了刪除最舊的事件數(shù)據(jù),將最舊文件刪除。如果始終首先刪除最舊文件, 則存儲(chǔ)介質(zhì)將不會(huì)變得破碎。這在刪除事件數(shù)據(jù)方面導(dǎo)致良好的效率。這種方法的問(wèn)題在于基于除事件接收時(shí)間之外的任何屬性來(lái)搜索事件數(shù)據(jù)是非常耗時(shí)的。例如,假設(shè)每個(gè)事件還包括指示生成事件的設(shè)備或應(yīng)用(“事件源”)的屬性。為了搜索事件數(shù)據(jù)以尋找指示特定事件源的事件(即,包括事件源屬性的特定值的事件),將必須檢查整個(gè)存儲(chǔ)介質(zhì)。這是非常低效的。所需的是一種在支持對(duì)不同事件屬性的查詢的同時(shí)高效地存儲(chǔ)安全信息/事件的方式。

發(fā)明內(nèi)容
一種日志記錄(logging)系統(tǒng)在支持對(duì)不同事件屬性的查詢的同時(shí)高效地存儲(chǔ)安全信息/事件??梢耘c安全信息/事件管理(SIEM)系統(tǒng)相結(jié)合地使用日志記錄系統(tǒng)??梢杂筛鞣N源(包括設(shè)備和應(yīng)用)生成的日志數(shù)據(jù)可以采取任何格式。日志數(shù)據(jù)由稱為“事件” 的一個(gè)或多個(gè)數(shù)據(jù)實(shí)例組成。事件可以例如是日志文件中的條目、系統(tǒng)日志服務(wù)器中的條目、警報(bào)、警告、網(wǎng)絡(luò)分組、電子郵件或通知頁(yè)面。通常,事件被生成一次且后來(lái)不改變。在一個(gè)實(shí)施例中,日志記錄系統(tǒng)包括事件接收器、存儲(chǔ)管理器和通信機(jī)構(gòu)。事件接收器接收日志數(shù)據(jù),處理日志數(shù)據(jù),并輸出基于列的數(shù)據(jù)“塊(chunk)”。事件接收器包括控制系統(tǒng)、一組緩沖器和元數(shù)據(jù)結(jié)構(gòu)。所述控制系統(tǒng)控制事件接收器的操作。該組緩沖器存儲(chǔ)一個(gè)或多個(gè)事件。如果不同的事件包括相同類型的字段,則可以在表格中組織事件。表格的每行將表示不同的事件,并且表格的每列將表示不同的字段。每個(gè)緩沖器與特定的字段相關(guān)聯(lián),并且包括來(lái)自于一個(gè)或多個(gè)事件的來(lái)自該字段的值(“屬性”)。元數(shù)據(jù)結(jié)構(gòu)存儲(chǔ)關(guān)于該組緩沖器的內(nèi)容的元數(shù)據(jù)。在一個(gè)實(shí)施例中,所述元數(shù)據(jù)包括與事件接收器相關(guān)聯(lián)的唯一標(biāo)識(shí)符、該組緩沖器中的事件的數(shù)目和用于一個(gè)或多個(gè)“感興趣字段”中的每一個(gè)的最小值和最大值,所述最小值和最大值反映該組緩沖器中的所有事件上的該字段的值的范圍。在查詢事件數(shù)據(jù)時(shí),元數(shù)據(jù)結(jié)構(gòu)充當(dāng)搜索索引。所述存儲(chǔ)管理器接收基于列的數(shù)據(jù)塊并將其存儲(chǔ),使得其能夠被查詢。所述存儲(chǔ)管理器包括控制系統(tǒng)、數(shù)據(jù)文件表格、塊表格和一個(gè)或多個(gè)數(shù)據(jù)文件??刂葡到y(tǒng)控制存儲(chǔ)管理器的操作。數(shù)據(jù)文件表格存儲(chǔ)關(guān)于該一個(gè)或多個(gè)數(shù)據(jù)文件的信息。在一個(gè)實(shí)施例中,對(duì)于每個(gè)數(shù)據(jù)文件,此信息包括與該數(shù)據(jù)文件相關(guān)聯(lián)的唯一標(biāo)識(shí)符和該數(shù)據(jù)文件的位置。塊表格存儲(chǔ)關(guān)于被存儲(chǔ)在存儲(chǔ)管理器中(具體地,存儲(chǔ)在該一個(gè)或多個(gè)數(shù)據(jù)文件中)的一個(gè)或多個(gè)基于列的塊的信息。在一個(gè)實(shí)施例中,對(duì)于每個(gè)基于列的塊,此信息包括存儲(chǔ)在該塊中的元數(shù)據(jù)和該塊的位置。數(shù)據(jù)文件存儲(chǔ)多個(gè)塊。通信機(jī)構(gòu)通信地將事件接收器和存儲(chǔ)管理器華禹合。事件接收器和存儲(chǔ)管理器聯(lián)合地執(zhí)行用于存儲(chǔ)日志數(shù)據(jù)的方法。在該方法開(kāi)始之前,對(duì)該組緩沖器和元數(shù)據(jù)結(jié)構(gòu)進(jìn)行初始化。事件接收器接收日志數(shù)據(jù)。事件接收器控制系統(tǒng)將日志數(shù)據(jù)分離成一個(gè)或多個(gè)事件,并確定每個(gè)事件何時(shí)被事件接收器接收到。控制系統(tǒng)在該組緩沖器中存儲(chǔ)事件的字段值并且對(duì)于每個(gè)事件,存儲(chǔ)反映何時(shí)接收到事件的時(shí)間/日期戳??刂葡到y(tǒng)還更新元數(shù)據(jù)結(jié)構(gòu)。在某個(gè)時(shí)間點(diǎn)處,控制系統(tǒng)基于元數(shù)據(jù)結(jié)構(gòu)和該組緩沖器的內(nèi)容來(lái)生成基于列的數(shù)據(jù)塊(每個(gè)緩沖器一個(gè)基于列的塊)。在一個(gè)實(shí)施例中,基于列的塊包括元數(shù)據(jù)結(jié)構(gòu)和緩沖器內(nèi)容的壓縮版本。對(duì)該組緩沖器和元數(shù)據(jù)結(jié)構(gòu)進(jìn)行重新初始化,從而清洗(flush)該組緩沖器。控制系統(tǒng)將基于列的塊發(fā)送到存儲(chǔ)管理器。 存儲(chǔ)管理器接收塊,將塊存儲(chǔ)在數(shù)據(jù)文件中,并更新塊表格。存儲(chǔ)管理器執(zhí)行用于回收(reclaim)存儲(chǔ)的方法。識(shí)別與特定保留(retention) 策略相關(guān)聯(lián)的最舊數(shù)據(jù)文件。從塊表格去除關(guān)于包括在所識(shí)別的數(shù)據(jù)文件中的所有基于列的塊的信息。刪除表示所識(shí)別的數(shù)據(jù)文件的數(shù)據(jù)文件表格中的條目。在數(shù)據(jù)文件表格中創(chuàng)建新的條目。將新回收的數(shù)據(jù)文件添加到可用的預(yù)分配數(shù)據(jù)文件的列表并準(zhǔn)備好接收新的塊。
在已經(jīng)將基于列的塊存儲(chǔ)在數(shù)據(jù)文件中之后,可以查詢塊內(nèi)的字段值。將查詢表示為能夠針對(duì)事件進(jìn)行評(píng)估的表達(dá)式(expression)。該表達(dá)式包括一個(gè)或多個(gè)搜索項(xiàng)。搜索項(xiàng)涉及事件的內(nèi)容,具體地涉及特定的字段和該字段的值。為了執(zhí)行查詢,首先基于“感興趣字段”信息(如存儲(chǔ)在塊的元數(shù)據(jù)中)來(lái)過(guò)濾數(shù)據(jù)塊。然后基于字段值(如存儲(chǔ)在塊的 “有效負(fù)荷”中)來(lái)過(guò)濾剩余塊。最后,將滿足該查詢的事件聚集。雖然剛剛描述的塊是基于列的,塊也可以是基于行的。美國(guó)申請(qǐng)No. 11/966,078 ("'078申請(qǐng)”)描述了使用基于行的塊來(lái)存儲(chǔ)事件數(shù)據(jù)。第三類型的事件存儲(chǔ)使用基于行的塊和基于列的塊二者。這種類型的事件存儲(chǔ)將事件存儲(chǔ)兩次一使用基于行的塊存儲(chǔ)一次且使用一個(gè)或多個(gè)基于列的塊存儲(chǔ)一次。例如,一組事件將被存儲(chǔ)為一個(gè)基于行的塊。那些事件的字段值還將被存儲(chǔ)為基于列的塊(每個(gè)字段一個(gè)基于列的塊)。


圖1是舉例說(shuō)明根據(jù)一個(gè)實(shí)施例的具有安全信息/事件管理系統(tǒng)的環(huán)境的方框圖。圖2是舉例說(shuō)明根據(jù)一個(gè)實(shí)施例的用于充當(dāng)安全信息/事件管理系統(tǒng)的日志記錄系統(tǒng)的計(jì)算機(jī)的方框圖。圖3是舉例說(shuō)明根據(jù)一個(gè)實(shí)施例的安全信息/事件管理系統(tǒng)的日志記錄系統(tǒng)的方框圖。圖4是舉例說(shuō)明根據(jù)一個(gè)實(shí)施例的用于存儲(chǔ)日志數(shù)據(jù)的方法的流程圖。圖5是舉例說(shuō)明根據(jù)一個(gè)實(shí)施例的用于回收存儲(chǔ)的方法的流程圖。圖6是舉例說(shuō)明根據(jù)一個(gè)實(shí)施例的用于查詢的方法的流程圖。附圖僅僅出于圖示的目的描繪實(shí)施例。本領(lǐng)域的技術(shù)人員將很容易從以下說(shuō)明認(rèn)識(shí)到在不脫離本文所述的原理的情況下可以采用本文所舉例說(shuō)明的結(jié)構(gòu)和方法的替換實(shí)施例。
具體實(shí)施例方式本文描述的是用于跨計(jì)算機(jī)網(wǎng)絡(luò)從不同的設(shè)備收集數(shù)據(jù)、將數(shù)據(jù)規(guī)格化成公共模式并將規(guī)格化數(shù)據(jù)合并的基于計(jì)算機(jī)的系統(tǒng)。然后可以以集中的方式監(jiān)視、分析數(shù)據(jù)(“事件”)并將其用于調(diào)查和糾正??梢允故录c規(guī)則互相關(guān)以創(chuàng)建元事件。相關(guān)包括例如發(fā)現(xiàn)事件之間的關(guān)系,推斷那些關(guān)系的重要性(例如,通過(guò)生成元事件),將事件和元事件按優(yōu)先次序排列,以及提供用于采取行動(dòng)的框架。該系統(tǒng)(其一個(gè)實(shí)施例被表示為計(jì)算機(jī)軟件) 實(shí)現(xiàn)了可疑網(wǎng)絡(luò)活動(dòng)的聚合、相關(guān)、檢測(cè)和調(diào)查性跟蹤。所述系統(tǒng)還支持響應(yīng)管理、特別 (AD-HOC)查詢解析、用于鑒證分析的報(bào)告和重放以及網(wǎng)絡(luò)威脅和活動(dòng)的圖形可視化。雖然將參考各種舉例說(shuō)明的示例來(lái)討論本系統(tǒng),但不應(yīng)將這些示例理解為限制本發(fā)明的更廣泛精神和范圍。例如,本文給出的示例描述了分布式代理、管理器和控制臺(tái),其僅僅是本發(fā)明的一個(gè)實(shí)施例。本發(fā)明的一般概念和范圍是寬得多的,并且可以擴(kuò)展至任何基于計(jì)算機(jī)或基于網(wǎng)絡(luò)的安全系統(tǒng)。并且,給出了可以被傳遞到系統(tǒng)的組件和從系統(tǒng)的組件傳遞的消息和可以被系統(tǒng)的組件使用的數(shù)據(jù)模式的示例以嘗試進(jìn)一步描述本發(fā)明,但是其并不意圖是包括一切的示例,并且不應(yīng)這樣認(rèn)為。
按照對(duì)計(jì)算機(jī)存儲(chǔ)器內(nèi)的數(shù)據(jù)的操作的算法和符號(hào)表示給出了以下詳細(xì)說(shuō)明的某些部分。這些算法說(shuō)明和表示是計(jì)算機(jī)科學(xué)領(lǐng)域的那些技術(shù)人員用來(lái)最有效地向本領(lǐng)域的其它技術(shù)人員傳達(dá)其工作的主旨的手段。算法在這里且一般地被認(rèn)為是產(chǎn)生期望結(jié)果的步驟的獨(dú)立序列。所述步驟是要求物理量的物理操縱的那些操作。通常,但不一定,這些量采取能夠被存儲(chǔ)、傳輸、組合、比較和以其他方式操縱的電或磁信號(hào)的形式。有時(shí),主要是由于公共使用的原因,已經(jīng)證明將這些信號(hào)稱為位、值、元素、符號(hào)、字符、項(xiàng)、數(shù)字等是方便的。然而,應(yīng)記住的是所有這些和類似術(shù)語(yǔ)將與適當(dāng)?shù)奈锢砹肯嚓P(guān)聯(lián),并且僅僅是應(yīng)用于這些量的方便標(biāo)記。除非另外具體地說(shuō)明,應(yīng)認(rèn)識(shí)到遍及本發(fā)明的說(shuō)明書(shū),諸如“處理”、“計(jì)算”、“運(yùn)算”“確定”、“顯示”等術(shù)語(yǔ)的使用指的是計(jì)算機(jī)系統(tǒng)或類似電子計(jì)算設(shè)備的動(dòng)作和過(guò)程,所述計(jì)算機(jī)系統(tǒng)或類似電子計(jì)算設(shè)備將被表示為計(jì)算機(jī)系統(tǒng)的寄存器和存儲(chǔ)器內(nèi)的物理(電子)量的數(shù)據(jù)操縱并變換成類似地被表示為計(jì)算機(jī)系統(tǒng)存儲(chǔ)器或寄存器或其它此類信息存儲(chǔ)、傳輸或顯示設(shè)備內(nèi)的物理量的其它數(shù)據(jù)。如上文所指示的,以計(jì)算機(jī)軟件、亦即機(jī)器可讀指令來(lái)實(shí)例化本發(fā)明的一個(gè)實(shí)施例,所述機(jī)器可讀指令在被一個(gè)或多個(gè)計(jì)算機(jī)處理器/系統(tǒng)執(zhí)行時(shí)命令處理器/系統(tǒng)執(zhí)行指定動(dòng)作。此類計(jì)算機(jī)軟件可以駐留于一個(gè)或多個(gè)機(jī)器可讀存儲(chǔ)介質(zhì)中,諸如硬盤(pán)驅(qū)動(dòng)器、 ⑶-R0M、DVD-R0M、只讀存儲(chǔ)器、讀寫(xiě)存儲(chǔ)器等。此類軟件可以被分布在這些介質(zhì)中的一個(gè)或多個(gè)上,或者可以被使得可用于跨一個(gè)或多個(gè)計(jì)算機(jī)網(wǎng)絡(luò)(例如因特網(wǎng))進(jìn)行下載。無(wú)論格式如何,本文所討論的計(jì)算機(jī)編程、再現(xiàn)和處理技術(shù)僅僅是可以用來(lái)實(shí)現(xiàn)本發(fā)明的方面的編程、再現(xiàn)和處理技術(shù)的類型的示例。這些示例不應(yīng)以任何方式限制本發(fā)明,參考在本說(shuō)明書(shū)之后的權(quán)利要求可最好地理解本發(fā)明。1.安全信息/事件管理(SIEM)系統(tǒng)架構(gòu)
圖1是舉例說(shuō)明根據(jù)一個(gè)實(shí)施例的具有安全信息/事件管理系統(tǒng)的環(huán)境的方框圖。圖 1包括安全信息/事件管理(SIEM)系統(tǒng)100和一個(gè)或多個(gè)數(shù)據(jù)源110。數(shù)據(jù)源110是網(wǎng)絡(luò)節(jié)點(diǎn),該網(wǎng)絡(luò)節(jié)點(diǎn)可以是設(shè)備或軟件應(yīng)用。示例性數(shù)據(jù)源110包括入侵檢測(cè)系統(tǒng)(IDS)、入侵預(yù)防系統(tǒng)(IPS)、易損性評(píng)估工具、防火墻、防病毒工具、防垃圾郵件工具、加密工具、應(yīng)用審計(jì)日志和物理安全日志。數(shù)據(jù)源110的類型包括安全檢測(cè)和代理系統(tǒng)、訪問(wèn)和策略控制、核心服務(wù)日志和日志合并程序、網(wǎng)絡(luò)硬件、加密設(shè)備和物理安全。示例性安全檢測(cè)和代理系統(tǒng)包括IDS、IPS、 多功能安全工具、易損性評(píng)估和管理、防病毒、蜜罐、威脅響應(yīng)技術(shù)和網(wǎng)絡(luò)監(jiān)視。示例性訪問(wèn)和策略控制系統(tǒng)包括訪問(wèn)和身份管理、虛擬專用網(wǎng)絡(luò)(VPN)、高速緩存引擎、防火墻和安全策略管理。示例性核心服務(wù)日志和日志合并程序包括操作系統(tǒng)日志、數(shù)據(jù)庫(kù)審計(jì)日志、應(yīng)用日志、日志合并程序、web服務(wù)器日志和管理控制臺(tái)。示例性網(wǎng)絡(luò)硬件包括路由器和交換機(jī)。 示例性加密設(shè)備包括數(shù)據(jù)安全和完整性。示例性物理安全系統(tǒng)包括卡密鑰讀取器、生物測(cè)量、防竊報(bào)警器和火警報(bào)警器。在所示的實(shí)施例中,SIEM系統(tǒng)100包括一個(gè)或多個(gè)代理120、一個(gè)或多個(gè)管理器 130、一個(gè)或多個(gè)數(shù)據(jù)庫(kù)140、一個(gè)或多個(gè)在線檔案150、一個(gè)或多個(gè)用戶接口 160和一個(gè)或多個(gè)日志記錄系統(tǒng)170。在某些實(shí)施例中,將這些模塊組合在單個(gè)平臺(tái)中或分布在兩個(gè)、三個(gè)或更多平臺(tái)中(諸如在圖1中)。此多層架構(gòu)的使用支持隨著計(jì)算機(jī)網(wǎng)絡(luò)或系統(tǒng)的增長(zhǎng)的可縮放性。在2008年5月20日授權(quán)的美國(guó)專利No. 7,376,969中進(jìn)一步描述了 SIEM系統(tǒng)100,其被整體地通過(guò)引用結(jié)合到本文中。代理120提供到數(shù)據(jù)源110的接口。具體地,代理120從數(shù)據(jù)源110收集數(shù)據(jù)(“原始事件”),處理數(shù)據(jù),并將已處理數(shù)據(jù)(“事件”)發(fā)送到管理器130。代理120能夠在任何地方進(jìn)行操作,諸如在經(jīng)由諸如簡(jiǎn)單網(wǎng)絡(luò)管理協(xié)議(SNMP)陷阱的協(xié)議通信的單獨(dú)設(shè)備處、在網(wǎng)絡(luò)內(nèi)的合并點(diǎn)處或在數(shù)據(jù)源110處。例如,如果數(shù)據(jù)源110是軟件應(yīng)用,則可以在主控?cái)?shù)據(jù)源的設(shè)備上對(duì)代理120進(jìn)行共同主控(co-host)。在一個(gè)實(shí)施例中,代理120是來(lái)自加拿大庫(kù)珀蒂諾的ArcSight公司的連接器產(chǎn)品。處理可以包括規(guī)格化(normalization)、聚合和過(guò)濾。例如,可以對(duì)單獨(dú)的原始事件進(jìn)行解析和規(guī)格化以供管理器130使用。規(guī)格化可以涉及將值(諸如嚴(yán)重程度、優(yōu)先級(jí)和時(shí)區(qū))規(guī)格化成公共格式和/或?qū)?shù)據(jù)結(jié)構(gòu)規(guī)格化成公共模式??梢允褂霉驳娜丝勺x格式將事件分類。此格式使得用戶更容易理解事件,并且使得更容易使用過(guò)濾器、規(guī)則、報(bào)告和數(shù)據(jù)監(jiān)視器來(lái)分析事件。在一個(gè)實(shí)施例中,所述公共格式是來(lái)自ArcSight公司的公共事件格式(CEF)日志管理標(biāo)準(zhǔn)。在2002年12月2日提交的美國(guó)申請(qǐng)No. 10/308,941中進(jìn)一步描述了規(guī)格化,其被整體地通過(guò)應(yīng)用結(jié)合到本文中。聚合和過(guò)濾減少被發(fā)送到管理器130的事件的量,這節(jié)省網(wǎng)絡(luò)帶寬和存儲(chǔ)空間, 增加管理器的效率和準(zhǔn)確度,并減少事件處理時(shí)間。在2002年12月2日提交的美國(guó)申請(qǐng) No. 10/308,584和在2004年10月27日提交的美國(guó)申請(qǐng)No. 10/975,962中進(jìn)一步描述了聚合,這兩個(gè)申請(qǐng)被整體地通過(guò)引用結(jié)合到本文中。代理120基于時(shí)間段的截止或基于到達(dá)的事件的閾值數(shù)目分批地將事件發(fā)送到管理器130。在2007年5月15日授權(quán)的美國(guó)專利No. 7,219,239中進(jìn)一步描述了對(duì)事件分批以便傳輸?shù)焦芾砥?30,其被整體地通過(guò)引用結(jié)合到本文中。代理120還可以向數(shù)據(jù)源110發(fā)送命令和/或在本地主機(jī)上執(zhí)行命令,諸如命令掃描儀運(yùn)行掃描??梢允謩?dòng)地或通過(guò)來(lái)自規(guī)則和數(shù)據(jù)監(jiān)視器的自動(dòng)化動(dòng)作來(lái)執(zhí)行這些動(dòng)作。在2002年12月2日提交的美國(guó)申請(qǐng)No. 10/308,417中進(jìn)一步描述了命令支持,其被整體地通過(guò)引用結(jié)合到本文中。代理120還可以向其已經(jīng)收集的數(shù)據(jù)添加信息,諸如通過(guò)查找網(wǎng)際協(xié)議(IP)地址和/或主機(jī)名以便在管理器130處解析IP/主機(jī)名查找。經(jīng)由相關(guān)配置文件(未示出)來(lái)配置代理120。代理120可以包括一個(gè)或多個(gè)軟件模塊,所述模塊包括規(guī)格化組件、時(shí)間修正組件、聚合組件、分批組件、解析器組件、傳輸組件和/或附加組件??梢酝ㄟ^(guò)配置文件中的適當(dāng)命令來(lái)對(duì)這些組件進(jìn)行激活和/或去激活。 在配置期間,向管理器130注冊(cè)代理120并用基于其數(shù)據(jù)源110和期望行為的特性來(lái)配置代理120。代理120是可通過(guò)手動(dòng)和自動(dòng)化過(guò)程兩者來(lái)進(jìn)一步配置的。例如,管理器130可以向代理120發(fā)送命令或配置更新。在2002年12月2日提交的美國(guó)申請(qǐng)No. 10/308, 548 中進(jìn)一步描述了代理組件,其被整體地通過(guò)引用結(jié)合到本文中。在2004年10月27日提交的美國(guó)申請(qǐng)No. 10/974,105;在2004年12月23日提交的美國(guó)申請(qǐng)No. 11/021,601;在 2005年3月1日提交的美國(guó)申請(qǐng)No. 11/070,024;以及在2008年10月14日授權(quán)的美國(guó)專利No. 7,437,359中描述了附加代理能力,其被整體地通過(guò)引用結(jié)合到本文中。管理器130提供分析能力、情況管理工作流能力和服務(wù)能力。管理器130與代理 120之間的通信可以是雙向的(例如以使得管理器130能夠向主控代理120的平臺(tái)傳送命令)并被加密。在某些裝置中,管理器130能夠充當(dāng)用于多個(gè)代理120的集中器,并且能夠?qū)⑿畔⑥D(zhuǎn)發(fā)到其它管理器130(例如,在企業(yè)總部處部署的管理器)。為了執(zhí)行其任務(wù),管理器130使用多種過(guò)濾器、規(guī)則、報(bào)告、數(shù)據(jù)監(jiān)視器、儀表盤(pán)和網(wǎng)絡(luò)模型。在一個(gè)實(shí)施例中,管理器130是諸如來(lái)自ArcSight公司的企業(yè)安全管理器(ESM)產(chǎn)品的基于Java的服務(wù)器。分析可以包括檢測(cè)、相關(guān)和升級(jí)。例如,管理器130使用規(guī)則引擎(未示出)使從代理120接收到的事件互相關(guān),所述規(guī)則引擎用網(wǎng)絡(luò)模型和易損性信息來(lái)評(píng)估每個(gè)事件以獲得實(shí)時(shí)威脅概要。在2002年12月2日提交的美國(guó)申請(qǐng)No. 10/308,767中進(jìn)一步描述了相關(guān),其被整體地通過(guò)應(yīng)用結(jié)合到本文中。關(guān)于情況管理,管理器130可以保持關(guān)于安全事故的狀態(tài)及其解決方案的報(bào)告。在2003年11月14日提交的美國(guó)申請(qǐng)No. 10/713,471 中進(jìn)一步描述了事故報(bào)告,其被整體地通過(guò)引用結(jié)合到本文中。服務(wù)可以包括管理、通知和報(bào)告。管理器130還可以提供對(duì)知識(shí)庫(kù)的訪問(wèn)。在2004年4月9日提交的美國(guó)申請(qǐng)No. 10/821,459 ;在2007年8月21日授權(quán)的美國(guó)專利No. 7,260, 844 ;在2009年7月21日授權(quán)的美國(guó)專利No. 7,565,696 ;以及在2009年3月M日授權(quán)的美國(guó)專利No. 7,509,677中描述了附加管理器能力,其被整體地通過(guò)引用結(jié)合到本文中。在管理器130接收到事件時(shí),其被存儲(chǔ)在數(shù)據(jù)庫(kù)140中。存儲(chǔ)事件使得其稍后能夠被用于分析和參考。在一個(gè)實(shí)施例中,數(shù)據(jù)庫(kù)140是諸如來(lái)自加拿大Redwood S1OresW Oracle公司的數(shù)據(jù)庫(kù)的關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)。在一個(gè)實(shí)施例中,數(shù)據(jù)庫(kù)140按分區(qū)存儲(chǔ)數(shù)據(jù),所述分區(qū)是數(shù)據(jù)庫(kù)的按時(shí)間排序的切片。例如,每天創(chuàng)建一個(gè)新的分區(qū)以存儲(chǔ)當(dāng)天的事件。可以將分區(qū)壓縮并存儲(chǔ)在在線檔案150中以供稍后檢索。在2004年5月4日提交的美國(guó)申請(qǐng)No. 10/839,563中進(jìn)一步描述了分區(qū)管理,其被整體地通過(guò)引用結(jié)合到本文中。在一個(gè)實(shí)施例中,由來(lái)自ArcSight 公司的安全生命周期信息管理(SLIM)產(chǎn)品的SmartStorage存檔和檢索組件來(lái)提供分區(qū)管理。用戶經(jīng)由用戶接口 160與管理器130相交互。用戶接口 160使得用戶能夠?qū)芾砥?30的特征和功能進(jìn)行導(dǎo)航。單個(gè)管理器130能夠支持多個(gè)用戶接口實(shí)例。可用于用戶的特征和功能可以取決于用戶的角色和許可和/或管理器的配置。在一個(gè)實(shí)施例中,訪問(wèn)控制列表使得多個(gè)安全專業(yè)人員能夠使用相同的管理器130和數(shù)據(jù)庫(kù)140,但每個(gè)專業(yè)人員具有適合于其責(zé)任的其自己的視圖、相關(guān)規(guī)則、警報(bào)、報(bào)告和知識(shí)庫(kù)。管理器130與用戶接口 160之間的通信是雙向的,并且可以被加密。在一個(gè)實(shí)施例中,存在兩種類型的用戶接口 160 基于工作站的接口和基于web瀏覽器的接口。工作站接口是意圖供安全操作中心(SOC)或類似安全監(jiān)視環(huán)境中的專職安全人員使用的獨(dú)立軟件應(yīng)用。工作站接口包括用于創(chuàng)建和修改過(guò)濾器、規(guī)則、報(bào)告、模式發(fā)現(xiàn)、 儀表盤(pán)和數(shù)據(jù)監(jiān)視器的創(chuàng)作工具。工作站接口還使得用戶能夠管理用戶、數(shù)據(jù)庫(kù)分區(qū)和工作流(例如,事故調(diào)查和報(bào)告)。例如,工作站接口使得用戶能夠執(zhí)行例行監(jiān)視、構(gòu)建復(fù)雜的相關(guān)和長(zhǎng)序列規(guī)則并執(zhí)行例行的管理功能。在一個(gè)實(shí)施例中,工作站接口是來(lái)自ArcSight 公司的ESM控制臺(tái)產(chǎn)品。在2002年12月2日提交的美國(guó)申請(qǐng)No. 10/308,418和2008年 2月19日授權(quán)的美國(guó)專利No. 7,333,999中進(jìn)一步描述了用戶接口,其被整體地通過(guò)引用結(jié)合到本文中。web接口是為web瀏覽器客戶端提供與管理器130的安全接口的獨(dú)立且可遠(yuǎn)程安裝的web服務(wù)器。web接口意圖被用作用于管理的服務(wù)安全提供商(MSSP)的客戶、SOC運(yùn)
10營(yíng)商和需要從受保護(hù)網(wǎng)絡(luò)的外部訪問(wèn)管理器130的用戶的有效(streamlined)接口。由于web瀏覽器能夠被安裝在遠(yuǎn)離管理器130的位置處,所以web服務(wù)器能夠在保護(hù)管理器 130的防火墻外部操作。web接口提供事件監(jiān)視和細(xì)查能力。在一個(gè)實(shí)施例中,作為安全特征,web接口沒(méi)有實(shí)現(xiàn)創(chuàng)作或管理功能。在一個(gè)實(shí)施例中,web接口是來(lái)自ArcSight公司的 ArcSight Web 產(chǎn)品。在一個(gè)實(shí)施例中,日志記錄系統(tǒng)170是針對(duì)極高的事件吞吐量被最優(yōu)化的事件數(shù)據(jù)存儲(chǔ)工具。日志記錄系統(tǒng)170存儲(chǔ)安全事件(有時(shí)稱為“日志數(shù)據(jù)”)。在一個(gè)實(shí)施例中, 以壓縮形式來(lái)存儲(chǔ)安全事件。然而,日志記錄系統(tǒng)170能夠在需要時(shí)檢索這些事件并將其恢復(fù)成其原始的未修改形式以得到鑒證質(zhì)量的數(shù)據(jù)。多個(gè)日志記錄系統(tǒng)170能夠一起工作以在存儲(chǔ)事件時(shí)擴(kuò)展為支持高持續(xù)輸入速率??梢钥缛罩居涗浵到y(tǒng)170的對(duì)等網(wǎng)絡(luò)來(lái)分布事件查詢。用戶能夠經(jīng)由用戶接口(未示出)來(lái)配置日志記錄系統(tǒng)170。在一個(gè)實(shí)施例中, 日志記錄系統(tǒng)170是來(lái)自ArcSight公司的記錄器產(chǎn)品。日志記錄系統(tǒng)170能夠接收已處理事件(例如,遵守公共事件格式的事件)和原始事件。在一個(gè)實(shí)施例中,直接從數(shù)據(jù)源110(諸如系統(tǒng)日志消息和日志文件)接收原始事件, 并且從代理120或管理器130接收已處理事件。日志記錄系統(tǒng)170還可以發(fā)送原始事件和已處理事件兩者。在一個(gè)實(shí)施例中,原始事件被作為系統(tǒng)日志消息發(fā)送(至任何設(shè)備;未示出),并且已處理事件被發(fā)送到管理器130。下面將進(jìn)一步描述日志記錄系統(tǒng)170。通過(guò)上述架構(gòu),SIEM系統(tǒng)100能夠支持集中式或分散式環(huán)境。這是有用的,因?yàn)榻M織可能希望實(shí)現(xiàn)SIEM系統(tǒng)100的單個(gè)實(shí)例并使用訪問(wèn)控制列表來(lái)劃分用戶??商鎿Q地,組織可能選擇為許多組中的每一個(gè)部署單獨(dú)的SIEM系統(tǒng)100并在“主”級(jí)別處合并結(jié)果。此類部署還能夠?qū)崿F(xiàn)“跟著太陽(yáng)走”布置,其中,在地理上分散的對(duì)等組通過(guò)將主要監(jiān)督責(zé)任傳遞至當(dāng)前工作在標(biāo)準(zhǔn)營(yíng)業(yè)時(shí)間的組來(lái)相互協(xié)作。還可以按企業(yè)層級(jí)部署SIEM系統(tǒng)100, 其中,業(yè)務(wù)部門單獨(dú)地工作并支持到集中式管理功能的匯總。2.日志數(shù)據(jù)
本文描述的是用于在支持查詢的同時(shí)高效地存儲(chǔ)日志數(shù)據(jù)的系統(tǒng)和方法??梢杂筛鞣N源來(lái)產(chǎn)生本文所使用的“日志數(shù)據(jù)”,所述源包括設(shè)備和應(yīng)用。這些源包括例如上述的數(shù)據(jù)源110以及網(wǎng)絡(luò)系統(tǒng)、計(jì)算機(jī)、操作系統(tǒng)、防病毒系統(tǒng)、數(shù)據(jù)庫(kù)、物理基礎(chǔ)設(shè)施、身份管理系統(tǒng)、目錄服務(wù)、系統(tǒng)健康信息系統(tǒng)、web業(yè)務(wù)、遺留系統(tǒng)、專用系統(tǒng)、主機(jī)、主機(jī)應(yīng)用、安全系統(tǒng)、物理設(shè)備和SIEM源(諸如代理120和管理器130)。系統(tǒng)能夠以許多方式來(lái)獲得日志數(shù)據(jù)。例如,可以接收日志數(shù)據(jù)(例如根據(jù)系統(tǒng)日志協(xié)議)??商鎿Q地,可以訪問(wèn)日志數(shù)據(jù)(例如,通過(guò)讀取被本地或遠(yuǎn)程地存儲(chǔ)的文件)。其它方法包括例如開(kāi)放式數(shù)據(jù)庫(kù)連接性(ODBC)、簡(jiǎn)單網(wǎng)絡(luò)管理協(xié)議(SNMP)陷阱、NetFlow和專用應(yīng)用編程接口(API)。還可以由用戶來(lái)輸入日志數(shù)據(jù)(例如,使用命令行接口(CLI))。日志數(shù)據(jù)可以采用任何格式。一個(gè)此類格式是例如公共事件格式(上述)。其它格式例如是生成日志數(shù)據(jù)的數(shù)據(jù)源110所特有的。日志數(shù)據(jù)由稱為“事件”的一個(gè)或多個(gè)數(shù)據(jù)實(shí)例組成。事件可以是例如日志文件中的條目、系統(tǒng)日志服務(wù)器中的條目、警報(bào)、警告、網(wǎng)絡(luò)分組、電子郵件或通知頁(yè)面。通常,事件被生成一次且后來(lái)不改變。在一個(gè)實(shí)施例中,事件包括隱含元數(shù)據(jù)和消息。隱含元數(shù)據(jù)可以包括關(guān)于例如生
11成事件的設(shè)備或應(yīng)用(“事件源”)和何時(shí)從事件源接收到事件(“接收時(shí)間”)的信息。在一個(gè)實(shí)施例中,接收時(shí)間是日期/時(shí)間戳,并且事件源是網(wǎng)絡(luò)端點(diǎn)標(biāo)識(shí)符(例如,IP地址或介質(zhì)接入控制(MAC)地址)和/或源的描述,可能包括關(guān)于產(chǎn)品的供應(yīng)商和版本的信息。該消息表示從事件源接收到的內(nèi)容,并且可以是任何形式(二進(jìn)制數(shù)據(jù)、字母數(shù)字?jǐn)?shù)據(jù)等)。在一個(gè)實(shí)施例中,消息是描述值得注意的情形或變化的自由形式文本。在另一實(shí)施例中,消息還包括顯式元數(shù)據(jù)。顯式元數(shù)據(jù)是例如通過(guò)解析消息獲得的。當(dāng)事件源生成事件時(shí),事件通常包括指示事件何時(shí)發(fā)生(“事件發(fā)生時(shí)間”)的信息。通常是日期/時(shí)間戳的事件發(fā)生時(shí)間是顯式元數(shù)據(jù)的示例,并且被頻繁地用于分析。不同的事件源常常產(chǎn)生不一致的顯式元數(shù)據(jù)(例如,事件的優(yōu)先級(jí)或關(guān)鍵性、受事件影響的設(shè)備/應(yīng)用/用戶和哪些用戶觸發(fā)事件)。在一個(gè)實(shí)施例中,如果事件不包括發(fā)生時(shí)間,則由事件接收器在其接收到事件時(shí)生成的隱含時(shí)間戳(下文描述)被視作原始發(fā)生時(shí)間戳。當(dāng)事件被處理并潛在地通過(guò)各種系統(tǒng)轉(zhuǎn)發(fā)時(shí),每個(gè)系統(tǒng)通常具有事件接收時(shí)間的隱含注釋。在一個(gè)實(shí)施例中,事件表示包括一個(gè)或多個(gè)字段的數(shù)據(jù)結(jié)構(gòu),其中,每個(gè)字段可以包含值(有時(shí)稱為“屬性”)。此數(shù)據(jù)結(jié)構(gòu)的尺寸通常落在100字節(jié)至10千字節(jié)的范圍內(nèi)。3.行存儲(chǔ)和列存儲(chǔ)
如果不同的事件包括相同類型的字段,則可以在表格中組織事件。表格的每行將表示不同的事件,并且表格的每列將表示不同的字段??梢允褂脙蓚€(gè)架構(gòu)來(lái)將事件數(shù)據(jù)存儲(chǔ)在數(shù)據(jù)庫(kù)中行存儲(chǔ)和列存儲(chǔ)。在行存儲(chǔ)架構(gòu)中,存儲(chǔ)是面向記錄(行)的。記錄(或元組)的屬性(字段值)被鄰接地放置在儲(chǔ)存器中。 在此架構(gòu)中,單次盤(pán)寫(xiě)入足以將單個(gè)記錄的所有字段推出到盤(pán)中。因此,實(shí)現(xiàn)了高性能的寫(xiě)入,并且具有行存儲(chǔ)架構(gòu)的數(shù)據(jù)庫(kù)管理系統(tǒng)(DBMS)被稱為寫(xiě)入優(yōu)化系統(tǒng)(W0S)。在列存儲(chǔ)架構(gòu)中,存儲(chǔ)是面向字段(列)的??缍鄠€(gè)記錄地被存儲(chǔ)在一個(gè)列中的值被鄰接地放置在儲(chǔ)存器中。在此架構(gòu)中,DBMS需要讀取僅僅那些處理給定查詢所需的列的值,并且能夠避免向存儲(chǔ)器中加載不相關(guān)的字段值(屬性)。因此,實(shí)現(xiàn)了高性能的特別查詢,并且具有列存儲(chǔ)架構(gòu)的DBMS被稱為讀取優(yōu)化系統(tǒng)(R0S)。美國(guó)申請(qǐng)No. 11/966,078 (“’ 078申請(qǐng)”)描述了使用基于行的“塊”來(lái)存儲(chǔ)事件數(shù)據(jù)。具體地,’ 078申請(qǐng)描述了包括事件接收器和存儲(chǔ)管理器的日志記錄系統(tǒng)。接收器接收日志數(shù)據(jù),對(duì)其進(jìn)行處理,并輸出基于行的數(shù)據(jù)“塊”。管理器接收基于行的數(shù)據(jù)塊并將其存儲(chǔ),使得其能夠被查詢。接收器包括存儲(chǔ)事件的緩沖器和存儲(chǔ)關(guān)于緩沖器的內(nèi)容的信息的元數(shù)據(jù)結(jié)構(gòu)。元數(shù)據(jù)包括與接收器相關(guān)聯(lián)的唯一標(biāo)識(shí)符、緩沖器中的事件的數(shù)目以及對(duì)于每一個(gè)“感興趣字段”包括最小值和最大值,所述最小值和最大值反映緩沖器中的所有事件上的該字段的值的范圍。塊包括元數(shù)據(jù)結(jié)構(gòu)和緩沖器內(nèi)容的壓縮版本。在查詢事件數(shù)據(jù)時(shí),元數(shù)據(jù)結(jié)構(gòu)充當(dāng)搜索索引??梢耘c安全信息/事件管理(SIEM)系統(tǒng)相結(jié)合地使用日志記錄系統(tǒng)。在’ 078申請(qǐng)中,塊包括事件接收器緩沖器的內(nèi)容(采取壓縮形式),并且緩沖器包含一個(gè)或多個(gè)事件。因此,塊包括一個(gè)或多個(gè)事件。由于能夠?qū)⑹录暈楸砀竦男?,所以能夠?qū)K視為包含表格的一個(gè)或多個(gè)行。換言之,在’ 078申請(qǐng)中描述的塊遵循行存儲(chǔ)架構(gòu)。雖然在’ 078申請(qǐng)中描述的塊是基于行的,但是塊也可以遵循列存儲(chǔ)架構(gòu)。例如,考慮存儲(chǔ)事件的事件接收器中的緩沖器。在’ 078申請(qǐng)中,這些事件被一個(gè)事件接另一個(gè)事件地聯(lián)接在一起,以便被放入(基于行的)塊中。構(gòu)建塊的不同方式將是將事件“表格”的每個(gè)列存儲(chǔ)為不同的(基于列的)塊。每個(gè)基于列的塊將表示表格中的列(即,用于多個(gè)事件中的相同字段的一組值)。不是將表格表示為包含所有行(事件)的一個(gè)大的基于行的塊,而是將表格表示為多個(gè)基于列的塊(表格的每列一個(gè))。本申請(qǐng)描述了使用基于列的塊來(lái)存儲(chǔ)事件數(shù)據(jù),使得塊遵循列存儲(chǔ)架構(gòu)。本申請(qǐng)還描述了使用基于行的塊和基于列的塊的組合來(lái)存儲(chǔ)事件數(shù)據(jù)。將首先描述純基于列的存儲(chǔ),接著是基于行和基于列的存儲(chǔ)的組合。4.日志記錄系統(tǒng)架構(gòu)
圖2是根據(jù)一個(gè)實(shí)施例的用于充當(dāng)安全信息/事件管理(SIEM)系統(tǒng)100的日志記錄系統(tǒng)170的計(jì)算機(jī)200的高級(jí)方框圖。所示的是被耦合到總線204的至少一個(gè)處理器202。耦合到總線204的還有存儲(chǔ)器206、存儲(chǔ)設(shè)備208、鍵盤(pán)210、圖形適配器212、指示(pointing) 設(shè)備214和網(wǎng)絡(luò)適配器216。在一個(gè)實(shí)施例中,由互連芯片組來(lái)提供總線204的功能。顯示器218被耦合到圖形適配器212。存儲(chǔ)設(shè)備208是能夠保持?jǐn)?shù)據(jù)的任何設(shè)備,例如硬盤(pán)驅(qū)動(dòng)器、緊致盤(pán)只讀存儲(chǔ)器 (⑶-ROM)、DVD或固態(tài)存儲(chǔ)器設(shè)備。存儲(chǔ)器206保持處理器202所使用的指令和數(shù)據(jù)。指示設(shè)備214可以是鼠標(biāo)、軌跡球或其它類型的指示設(shè)備,并且被與鍵盤(pán)210相結(jié)合地用來(lái)向計(jì)算機(jī)200中輸入數(shù)據(jù)。圖形適配器212在顯示器218上顯示圖像及其它信息。網(wǎng)絡(luò)適配器216將計(jì)算機(jī)200耦合到局域網(wǎng)或廣域網(wǎng)。如本領(lǐng)域中已知的,計(jì)算機(jī)200可以具有與圖2所示的那些不同的和/或其它組件。另外,計(jì)算機(jī)200可以缺少某些所示組件。例如,充當(dāng)日志記錄系統(tǒng)170的計(jì)算機(jī)200 可以缺少鍵盤(pán)210、指示設(shè)備214、圖形適配器212和/或顯示器218。此外,存儲(chǔ)設(shè)備208 可以是本地的和/或遠(yuǎn)離計(jì)算機(jī)200 (諸如在存儲(chǔ)區(qū)域網(wǎng)(SAN)內(nèi)實(shí)現(xiàn))。圖3是舉例說(shuō)明根據(jù)一個(gè)實(shí)施例的安全信息/事件管理(SIEM)系統(tǒng)100的日志記錄系統(tǒng)170的方框圖。在所示的實(shí)施例中,日志記錄系統(tǒng)170包括事件接收器310、存儲(chǔ)管理器320和通信機(jī)構(gòu)330。雖然為了明了起見(jiàn)僅示出了一個(gè)事件接收器310,但系統(tǒng)170 能夠支持與許多事件接收器310的大量并發(fā)會(huì)話。在一個(gè)實(shí)施例中,每個(gè)事件接收器310 與唯一標(biāo)識(shí)符相關(guān)聯(lián)。事件接收器310接收日志數(shù)據(jù)340,處理日志數(shù)據(jù)340并輸出數(shù)據(jù)“塊” 350。事件接收器310包括控制系統(tǒng)355、一個(gè)或多個(gè)緩沖器360的組和元數(shù)據(jù)結(jié)構(gòu)365??刂葡到y(tǒng) 355被通信地耦合到一個(gè)或多個(gè)緩沖器360的組和元數(shù)據(jù)結(jié)構(gòu)365??刂葡到y(tǒng)355控制事件接收器310的操作,并且下文參考圖4來(lái)進(jìn)一步描述。每個(gè)緩沖器360存儲(chǔ)關(guān)于一個(gè)或多個(gè)事件的信息。在一個(gè)實(shí)施例中,緩沖器的尺寸是固定的,但是該尺寸本身是可配置的?;叵肴绻煌氖录ㄏ嗤愋偷淖侄危瑒t可以在表格中組織事件。表格的每行將表示不同的事件,并且表格的每列將表示不同的字段。 在一個(gè)實(shí)施例中,每個(gè)緩沖器360與特定的字段相關(guān)聯(lián),并且包括來(lái)自一個(gè)或多個(gè)事件的來(lái)自該字段的值(“屬性”)。在另一實(shí)施例中,每個(gè)緩沖器360還包括指示哪個(gè)字段與該緩沖器相關(guān)聯(lián)的標(biāo)識(shí)符(“ hdexID”)。例如,假設(shè)事件包括稱為SourceIPAddress (源IP地址)的字段,其值反映發(fā)起由事件表示的動(dòng)作的設(shè)備的IP地址。與SourceIPAddress字段相關(guān)聯(lián)的緩沖器360將包含一個(gè)或多個(gè)IP地址(由事件接收器310作為日志數(shù)據(jù)340的一部分接收并處理的每個(gè)事件一個(gè)IP地址)。緩沖器360還可以包含指示SourceIPAddress字段的“ 100”的hdexID值。在一個(gè)實(shí)施例中,該組緩沖器360包括用于每個(gè)事件字段的一個(gè)緩沖器。當(dāng)接收到事件時(shí),解析出每個(gè)字段值并將其存儲(chǔ)在適當(dāng)?shù)木彌_器中(下文所述)。最終,每個(gè)緩沖器被存儲(chǔ)為單獨(dú)的基于列的塊(下文討論)。以此方式,事件“表格”的每個(gè)列被存儲(chǔ)為不同的 (基于列的)塊。每個(gè)基于列的塊將表示表格中的列(即,用于多個(gè)事件中的相同字段的一組值)。不是將表格表示為包含所有行(事件)的一個(gè)大的基于行的塊,而是將表格表示為多個(gè)基于列的塊(表格的每列一個(gè))。在另一實(shí)施例中,該組緩沖器還包括ReceiptTime (接收時(shí)間)緩沖器,其對(duì)于每個(gè)事件存儲(chǔ)時(shí)間/日期戳,所述時(shí)間/日期戳反映何時(shí)由事件接收器310接收到該事件。在又一實(shí)施例中,該組緩沖器還包括對(duì)于每個(gè)事件存儲(chǔ)“導(dǎo)出”值的緩沖器,所述“導(dǎo)出”值是基于存儲(chǔ)在事件的一個(gè)或多個(gè)字段中的值確定的。元數(shù)據(jù)結(jié)構(gòu)365存儲(chǔ)關(guān)于該組緩沖器360的內(nèi)容的元數(shù)據(jù)。在一個(gè)實(shí)施例中,此元數(shù)據(jù)包括與接收事件的事件接收器310相關(guān)聯(lián)的唯一標(biāo)識(shí)符、該組緩沖器中的事件的數(shù)目以及對(duì)于一個(gè)或多個(gè)“感興趣字段”中的每一個(gè)包括最小值和最大值,所述最小值和最大值反映該組緩沖器中的所有事件上的該字段的值的范圍。在查詢事件數(shù)據(jù)(下文描述)時(shí), 元數(shù)據(jù)結(jié)構(gòu)365充當(dāng)搜索索引。 例如,假設(shè)事件包括稱為OccurrenceTime (發(fā)生時(shí)間)的字段,其值反映事件發(fā)生的時(shí)間。如果OccurrenceTime是感興趣字段,則元數(shù)據(jù)結(jié)構(gòu)365將包括用于 OccurrenceTime的最小值禾口用于OccurrenceTime的最大值。OccurrenceTime的最小值將是該組緩沖器360中的首先發(fā)生的事件的OccurrenceTime。OccurrenceTime的最大值將是該組緩沖器360中的最后發(fā)生的事件的OccurrenceTime。在一個(gè)實(shí)施例中,ReceiptTime也是感興趣字段。因此,在本實(shí)施例中,元數(shù)據(jù)結(jié)構(gòu)365還存儲(chǔ)反映該組緩沖器中的所有事件的接收時(shí)間的值范圍的最小值和最大值。ReceiptTime的最小值將是該組緩沖器360中首先接收到的事件的ReceiptTime。 ReceiptTime的最大值將是該組緩沖器360中最后接收到的事件的ReceiptTime。在一個(gè)實(shí)施例中,僅存儲(chǔ)ReceiptTime的最小值。在該實(shí)施例中,未存儲(chǔ)ReceiptTime的最大值;這降低了存儲(chǔ)要求。如果緩沖器360常常被清洗(這在生成塊時(shí)發(fā)生,如下文所述),則 ReceiptTime的最大值將接近ReceiptTime的最小值(例如,遲一秒鐘)。在一個(gè)實(shí)施例中,感興趣字段本身不是事件字段。代替地,其是基于存儲(chǔ)在事件的一個(gè)或多個(gè)字段中的值確定的“導(dǎo)出”值。存儲(chǔ)管理器320接收數(shù)據(jù)塊350并將其存儲(chǔ),使得其能夠被查詢。存儲(chǔ)管理器320 包括控制系統(tǒng)370、數(shù)據(jù)文件表格375、塊表格380和一個(gè)或多個(gè)數(shù)據(jù)文件385??刂葡到y(tǒng) 370被通信地耦合到數(shù)據(jù)文件表格375、塊表格380和一個(gè)或多個(gè)數(shù)據(jù)文件385。控制系統(tǒng)370控制存儲(chǔ)管理器320的操作,并且下文參考圖4來(lái)進(jìn)一步描述。數(shù)據(jù)文件表格375存儲(chǔ)關(guān)于一個(gè)或多個(gè)數(shù)據(jù)文件385的信息。在一個(gè)實(shí)施例中, 數(shù)據(jù)文件表格375中的每個(gè)條目表示已經(jīng)為其分配空間的一個(gè)數(shù)據(jù)文件385,并且該條目包括與數(shù)據(jù)文件相關(guān)聯(lián)的唯一標(biāo)識(shí)符和數(shù)據(jù)文件的位置(例如,文件系統(tǒng)、其中的路徑和文件名)。在數(shù)據(jù)文件表格375中列出的數(shù)據(jù)文件385可以包含或可以不包含數(shù)據(jù)(例如,塊 350)。數(shù)據(jù)文件表格375被例如存儲(chǔ)在數(shù)據(jù)庫(kù)(未示出)中。在一個(gè)實(shí)施例中,在需要數(shù)據(jù)文件385之前將其分配。在該實(shí)施例中,保持這些預(yù)先分配的數(shù)據(jù)文件385的列表(稱為 “自由列表”)。塊表格380存儲(chǔ)關(guān)于存儲(chǔ)在存儲(chǔ)管理器320中(具體地,存儲(chǔ)在一個(gè)或多個(gè)數(shù)據(jù)文件385中)的一個(gè)或多個(gè)塊350的信息。在一個(gè)實(shí)施例中,對(duì)于每個(gè)塊350而言,此信息包括存儲(chǔ)在塊中的元數(shù)據(jù)(下文描述)和塊的位置(例如,與存儲(chǔ)塊的數(shù)據(jù)文件相關(guān)聯(lián)的唯一標(biāo)識(shí)符和數(shù)據(jù)文件中存儲(chǔ)該塊的位置(例如,作為偏移(offset)))。塊表格380被例如存儲(chǔ)在數(shù)據(jù)庫(kù)(未示出)中。數(shù)據(jù)文件385存儲(chǔ)多個(gè)塊350。在一個(gè)實(shí)施例中,所有的數(shù)據(jù)文件是相同的尺寸 (例如,1千兆字節(jié))并被按照時(shí)間順序組織。數(shù)據(jù)文件385被例如存儲(chǔ)在原始盤(pán)上或諸如文件系統(tǒng)(未示出)的數(shù)據(jù)存儲(chǔ)系統(tǒng)中。如果數(shù)據(jù)文件385被存儲(chǔ)在原始盤(pán)上,則能夠更快地訪問(wèn)數(shù)據(jù),因?yàn)椴恍枰郊拥拈g接層。并且,能夠增加安全性。通信機(jī)構(gòu)330通信地將事件接收器310和存儲(chǔ)管理器320耦合。在一個(gè)實(shí)施例中, 通信機(jī)構(gòu)330包括部分公用或完全公用的網(wǎng)絡(luò),諸如因特網(wǎng)。在其它實(shí)施例中,通信機(jī)構(gòu) 330包括專用網(wǎng)絡(luò)或一個(gè)或多個(gè)不同的或邏輯專用網(wǎng)絡(luò)(例如虛擬專用網(wǎng)絡(luò)或局域網(wǎng))。去往和來(lái)自通信機(jī)構(gòu)330的通信鏈路可以是有線或無(wú)線的(例如基于陸地或衛(wèi)星的收發(fā)機(jī))。 在一個(gè)實(shí)施例中,通信機(jī)構(gòu)330是分組交換網(wǎng),諸如使用以太網(wǎng)協(xié)議的基于IP的廣域網(wǎng)或城域網(wǎng)。在另一實(shí)施例中,通信機(jī)構(gòu)330對(duì)于單個(gè)計(jì)算機(jī)系統(tǒng)而言是本地的(例如,如果事件接收器310的一部分和存儲(chǔ)管理器320的一部分在同一設(shè)備上執(zhí)行)。在該實(shí)施例中,例如通過(guò)本地的僅軟件的回環(huán)設(shè)備來(lái)實(shí)現(xiàn)通信機(jī)構(gòu)330。例如,數(shù)據(jù)被拷貝到存儲(chǔ)器中的各種位置,并且通信經(jīng)由API發(fā)生。在又一實(shí)施例中,通信機(jī)構(gòu)330對(duì)于單個(gè)過(guò)程而言是本地的(例如,如果事件接收器310的一部分和存儲(chǔ)管理器320的一部分在同一設(shè)備上和同一過(guò)程中執(zhí)行)。在該實(shí)施例中,例如,通過(guò)共享存儲(chǔ)器和/或到共享存儲(chǔ)器的指針來(lái)實(shí)現(xiàn)通信機(jī)構(gòu)330。5.初始存儲(chǔ)
圖4是舉例說(shuō)明根據(jù)本發(fā)明的一個(gè)實(shí)施例的用于存儲(chǔ)日志數(shù)據(jù)的方法的流程圖。在一個(gè)實(shí)施例中,由事件接收器310 (例如,其控制系統(tǒng)355)和存儲(chǔ)管理器320 (例如,其控制系統(tǒng)370)來(lái)聯(lián)合地執(zhí)行圖4的方法400。在一個(gè)實(shí)施例中,在方法400開(kāi)始之前,對(duì)該組緩沖器360和元數(shù)據(jù)結(jié)構(gòu)365進(jìn)行初始化。例如,控制系統(tǒng)355在每個(gè)緩沖器中存儲(chǔ)適當(dāng)?shù)膆dexID??刂葡到y(tǒng)355還在元數(shù)據(jù)結(jié)構(gòu)365中存儲(chǔ)與事件接收器310相關(guān)聯(lián)的唯一標(biāo)識(shí)符。方法400在事件接收器310接收到410日志數(shù)據(jù)340時(shí)開(kāi)始。在一個(gè)實(shí)施例中, 以流的形式來(lái)接收日志數(shù)據(jù)340。控制系統(tǒng)355將日志數(shù)據(jù)分離420成一個(gè)或多個(gè)事件,并確定420每個(gè)事件何時(shí)被事件接收器310接收到??刂葡到y(tǒng)355將事件解析430成其字段值,并將字段值和接收時(shí)間存儲(chǔ)在適當(dāng)?shù)木彌_器中。控制系統(tǒng)355還更新430元數(shù)據(jù)結(jié)構(gòu)365。例如,緩沖器中的事件的數(shù)目將已經(jīng)增加??赡苓€需要更新用于(一個(gè)或多個(gè))感興趣字段的最小值和最大值。在一個(gè)實(shí)施例中, 使數(shù)據(jù)寫(xiě)操作和元數(shù)據(jù)寫(xiě)操作同步以避免在發(fā)生系統(tǒng)崩潰的情況下的可能的不一致。例如,使用事務(wù)型數(shù)據(jù)庫(kù)系統(tǒng),使得如果字段值被存儲(chǔ)在緩沖器360中,保證元數(shù)據(jù)結(jié)構(gòu)365 被相應(yīng)地更新,即使底層系統(tǒng)在兩個(gè)步驟之間崩潰。在某個(gè)時(shí)間點(diǎn)(見(jiàn)下文),控制系統(tǒng)355基于元數(shù)據(jù)結(jié)構(gòu)365和緩沖器360的內(nèi)容來(lái)生成440數(shù)據(jù)塊350。具體地,為每個(gè)緩沖器生成一個(gè)塊。不同的塊可以具有不同的尺寸。塊尺寸可以由于例如存儲(chǔ)在塊中的字段值的類型(和下文討論的對(duì)其應(yīng)用的壓縮算法) 和促使該快被生成的觸發(fā)器的類型(也在下文討論)而不同。在一個(gè)實(shí)施例中,可以指定最大塊尺寸。在一個(gè)實(shí)施例中,每個(gè)塊包括元數(shù)據(jù)結(jié)構(gòu)365、相關(guān)緩沖器的內(nèi)容、塊標(biāo)識(shí)符 (ChunkID)、條帶標(biāo)識(shí)符(StripeID)和一組索引位置標(biāo)識(shí)符(IndexLocationID)。請(qǐng)注意,涉及塊的元數(shù)據(jù)部分的感興趣字段和涉及塊的“有效負(fù)荷”部分的與緩沖器相關(guān)聯(lián)的字段需要不是相同字段。ChimkID相對(duì)于其它塊唯一地識(shí)別所述塊。使用在塊組之間被共享的MripeID來(lái)將塊相互關(guān)聯(lián)(因?yàn)樗袎K涉及同一組事件)。下一次控制系統(tǒng)355 生成440數(shù)據(jù)塊350時(shí),該塊將涉及一組不同的事件,因此將使用不同的MripelD。該組MdexLocationID包括用于緩沖器/塊中的每個(gè)字段值的一個(gè)hdexLocationID。 IndexLocationID用來(lái)訪問(wèn)對(duì)應(yīng)于同一事件的不同塊中的字段值。在一個(gè)實(shí)施例中, IndexLocationID 包括 StripeID 和偏移標(biāo)識(shí)符(OffsetID)。OffsetID 指示(緩沖器 / 土夬內(nèi))哪個(gè)字段值對(duì)應(yīng)于期望事件。在一個(gè)實(shí)施例中,相關(guān)緩沖器360的內(nèi)容在其被存儲(chǔ)在塊350中之前被壓縮。壓縮緩沖器內(nèi)容使得這種方法成為用于長(zhǎng)期數(shù)據(jù)存儲(chǔ)的成本有效的選擇。可以使用任何數(shù)據(jù)壓縮算法來(lái)生成內(nèi)容的壓縮版本。在一個(gè)實(shí)施例中,使用列類型特定壓縮算法。例如,包含時(shí)間戳的基于列的塊 (諸如與ReceiptTime字段相關(guān)聯(lián)的塊)可以使用增量編碼。增量編碼存儲(chǔ)相對(duì)于前一個(gè)值的差,而不是存儲(chǔ)值本身。例如,如果原始值是序列<88888123、88888125、88888126、 88888127、88888128>,則增量編碼將產(chǎn)生序列<88888123,2,1,1,1>。作為另一示例,低基數(shù)的列可以使用常見(jiàn)的串壓縮。生成唯一串符號(hào)表格。存儲(chǔ)符號(hào)表格中的條目的索引而不是串本身。例如,如果原始值是〈成功、失敗、成功、失敗、成功、成功、失敗〉的序列且符號(hào)表格是〈成功、失敗〉,則常見(jiàn)的串壓縮將產(chǎn)生<0,1,0,1,0,0,1>的序列。在另一實(shí)施例中,使用不同的無(wú)損壓縮算法,諸如GNU zip (gzip)。在一個(gè)實(shí)施例中,塊350還包括“幻數(shù)”和版本標(biāo)識(shí)符。有時(shí)稱為文件簽名的幻數(shù)是識(shí)別塊的數(shù)據(jù)類型的字節(jié)的短序列。例如,幻數(shù)在其它數(shù)據(jù)和文件格式(包括其它塊)上是合理地唯一的(即,以高概率是唯一的)。因此,當(dāng)讀取塊時(shí),容易確定塊是否采取期望的格式。如果塊的實(shí)際幻數(shù)不同于期望的幻數(shù),則塊是“錯(cuò)誤的”(例如,被損壞)?;脭?shù)從而幫助檢測(cè)數(shù)據(jù)損壞并重新使數(shù)據(jù)塊邊界同步以便恢復(fù)損壞數(shù)據(jù)。(如果實(shí)際幻數(shù)與期望的幻數(shù)匹配,則在塊中稍后發(fā)生的數(shù)據(jù)仍可能是錯(cuò)誤的。然而,匹配幻數(shù)對(duì)大多數(shù)常見(jiàn)情況排除了這種可能性。)版本標(biāo)識(shí)符使得能夠適應(yīng)已經(jīng)改變的數(shù)據(jù)和文件格式。例如,當(dāng)讀取塊時(shí),可以與幻數(shù)相結(jié)合地使用版本標(biāo)識(shí)符以指示關(guān)于數(shù)據(jù)或文件格式的附加信息。在另一實(shí)施例中(也未示出),控制系統(tǒng)355還生成緩沖器360的內(nèi)容的消息摘要。例如,控制系統(tǒng)355對(duì)存儲(chǔ)在緩沖器360中的字節(jié)應(yīng)用密碼散列函數(shù)??梢允褂萌魏蚊艽a散列函數(shù),諸如消息摘要算法5 (MD5)或安全散列算法家族中的算法(例如,SHA-256)。在一個(gè)實(shí)施例中,摘要值被存儲(chǔ)在塊350中。此值稍后可以用來(lái)確定(以壓縮形式)存儲(chǔ)在塊中的緩沖器數(shù)據(jù)是否已改變或被篡改。這通過(guò)在事件已經(jīng)改變時(shí)使得其引起注意來(lái)幫助保證存儲(chǔ)事件的完整性。并且,當(dāng)塊350到達(dá)存儲(chǔ)管理器320時(shí),可以將摘要值連同塊的元數(shù)據(jù)一起存儲(chǔ)在塊表格380中。這樣,如果稍后塊在其被存儲(chǔ)在數(shù)據(jù)文件385中的時(shí)候被篡改(或損壞),則被篡改塊的消息摘要將不與先前存儲(chǔ)在塊表格380中的消息摘要匹配。然后將該組緩沖器360和元數(shù)據(jù)結(jié)構(gòu)365重新初始化440,從而清洗緩沖器360。 在一個(gè)實(shí)施例中,該組緩沖器360包括附加緩沖器,其能夠用來(lái)在其它緩沖器滿了或正在被清洗的時(shí)候存儲(chǔ)進(jìn)入的事件。在一個(gè)實(shí)施例中,在緩沖器360中的任何一個(gè)裝滿時(shí)執(zhí)行(“觸發(fā)”)步驟440。在另一實(shí)施例中,當(dāng)已經(jīng)逝去特定時(shí)間段(“超時(shí)窗口”)時(shí)執(zhí)行(觸發(fā))步驟440,在該特定時(shí)間段期間,事件接收器310未接收到事件。控制系統(tǒng)355將數(shù)據(jù)塊350發(fā)送450到存儲(chǔ)管理器320。存儲(chǔ)管理器320接收460塊350??刂葡到y(tǒng)370將塊存儲(chǔ)470在一個(gè)或多個(gè)數(shù)據(jù)文件385中(見(jiàn)下文)。在一個(gè)實(shí)施例中,在塊被存儲(chǔ)之前出于安全目的將其加密??刂葡到y(tǒng)370還更新470塊表格380。例如,控制系統(tǒng)370向該表格添加關(guān)于其剛剛存儲(chǔ)在(一個(gè)或多個(gè))數(shù)據(jù)文件385中的塊350的信息??刂葡到y(tǒng)370在每個(gè)數(shù)據(jù)文件385內(nèi)按照“附加”順序來(lái)寫(xiě)入塊350。這有時(shí)稱為 “寫(xiě)一次日記(write once journaled)”。在一個(gè)實(shí)施例中,控制系統(tǒng)保持指示數(shù)據(jù)文件內(nèi)的能夠?qū)懭雺K的位置的“寫(xiě)指針”。在塊已被寫(xiě)入數(shù)據(jù)文件之后,修改寫(xiě)指針以指示同一數(shù)據(jù)文件內(nèi)的位置(具體地,在剛剛寫(xiě)入的塊的結(jié)尾處)。如果寫(xiě)入塊裝滿了數(shù)據(jù)文件,則將寫(xiě)指針修改為指示不同數(shù)據(jù)文件內(nèi)的能夠用來(lái)存儲(chǔ)塊的位置(具體地,在開(kāi)頭處)。在一個(gè)實(shí)施例中(未示出),通過(guò)首先將塊高速緩存在存儲(chǔ)器中來(lái)推遲塊寫(xiě)入。然后將多個(gè)連續(xù)塊組合到一個(gè)寫(xiě)操作中以便在RAID 5盤(pán)存儲(chǔ)系統(tǒng)上最優(yōu)化完全條帶化寫(xiě)入。通過(guò)使用諸如寫(xiě)的大型順序輸入操作,以高速度、吞吐量和并發(fā)性來(lái)驅(qū)動(dòng)硬件。如果存在預(yù)先分配的數(shù)據(jù)文件(例如,如在上述自由列表中列出的),則控制系統(tǒng) 370使用該數(shù)據(jù)文件并將該數(shù)據(jù)文件的唯一標(biāo)識(shí)符從自由列表去除(因?yàn)樵摂?shù)據(jù)文件不再可用)。如果不存在預(yù)先分配的數(shù)據(jù)文件,則控制系統(tǒng)370通過(guò)定位可用空間并更新數(shù)據(jù)文件表格375來(lái)創(chuàng)建新的數(shù)據(jù)文件。例如,控制系統(tǒng)370向該表格添加關(guān)于其剛剛創(chuàng)建的新數(shù)據(jù)文件385的信息。在一個(gè)實(shí)施例中,分派給新數(shù)據(jù)文件385的唯一標(biāo)識(shí)符等于1和與最近分配的數(shù)據(jù)文件385相關(guān)聯(lián)的唯一標(biāo)識(shí)符的和。方法400具有許多期望的特性。例如,其是高度可縮放的,因?yàn)槠淠軌蛑С纸邮辗浅8叩臄?shù)目的每秒事件(EPS)??梢允褂枚鄠€(gè)事件接收器310,并且事件數(shù)據(jù)的寫(xiě)入是快速的,因?yàn)槠鋬H涉及附加操作而沒(méi)有查尋操作。方法400還以高可用性為特征,因?yàn)槠涮峁?duì)數(shù)據(jù)的連續(xù)訪問(wèn)。刪除舊事件不會(huì)使得存儲(chǔ)介質(zhì)破碎,這意味著不要求碎片整理過(guò)程,以及因此也不要求維護(hù)窗口。不要求用于清理任務(wù)的隱含停機(jī)時(shí)間。并且,由于盤(pán)寫(xiě)入操作是高效的,所以其避免了開(kāi)銷,以便為處理查詢留出余地。6.存儲(chǔ)回收在某個(gè)時(shí)間點(diǎn)(下文討論),回收正在被一個(gè)或多個(gè)數(shù)據(jù)文件385使用的存儲(chǔ)以供未來(lái)使用。圖5是舉例說(shuō)明根據(jù)一個(gè)實(shí)施例的回收存儲(chǔ)的方法。在一個(gè)實(shí)施例中,由存儲(chǔ)管理器320 (例如,其控制系統(tǒng)370)來(lái)執(zhí)行圖5的方法500。識(shí)別510與特定保留策略(下文描述)相關(guān)聯(lián)的最舊數(shù)據(jù)文件385。由于數(shù)據(jù)文件具有基于單調(diào)增加編號(hào)的唯一標(biāo)識(shí)符,所以容易查詢數(shù)據(jù)文件表格375以找到與保留策略相關(guān)聯(lián)的最舊數(shù)據(jù)文件(即,具有最低唯一標(biāo)識(shí)符的數(shù)據(jù)文件)。從塊表格380去除520關(guān)于包含在已識(shí)別數(shù)據(jù)文件385中的所有塊350的信息。刪除530表示已識(shí)別數(shù)據(jù)文件385的數(shù)據(jù)文件表格375中的條目。用a)新的唯一標(biāo)識(shí)符(其比最高的所使用的數(shù)據(jù)文件標(biāo)識(shí)符高一)和b)引用先前最舊數(shù)據(jù)文件(即在步驟510中識(shí)別的數(shù)據(jù)文件)的物理位置的路徑屬性在數(shù)據(jù)文件表格 375中創(chuàng)建540新的條目。新回收的數(shù)據(jù)文件385被添加550到可用的預(yù)先分配數(shù)據(jù)文件的列表并準(zhǔn)備好接收新的塊。在所示的實(shí)施例中,當(dāng)回收了數(shù)據(jù)文件的存儲(chǔ),該數(shù)據(jù)文件被重復(fù)利用(例如,重新使用或重寫(xiě))而不是刪除。存儲(chǔ)回收算法的細(xì)節(jié)(包括例如何時(shí)執(zhí)行它和回收多少存儲(chǔ))取決于與數(shù)據(jù)文件 385相關(guān)聯(lián)的保留策略。保留策略基于例如盤(pán)空間使用閾值或保留塊的最大時(shí)間來(lái)限制塊 350的保留。何時(shí)執(zhí)行存儲(chǔ)回收算法的示例是當(dāng)與該策略相關(guān)聯(lián)的所有數(shù)據(jù)文件都是滿的且不能再分配數(shù)據(jù)文件時(shí)(例如,因?yàn)闆](méi)有留下的存儲(chǔ)空間);當(dāng)已經(jīng)達(dá)到特定閾值時(shí)(例如,在為與該保留策略相關(guān)聯(lián)的數(shù)據(jù)文件留下的自由存儲(chǔ)空間的量的方面);當(dāng)已經(jīng)逝去特定時(shí)間段時(shí);當(dāng)存在與該策略相關(guān)聯(lián)的特定數(shù)目的數(shù)據(jù)文件時(shí);以及當(dāng)與該策略相關(guān)聯(lián)的數(shù)據(jù)文件中的最舊塊已經(jīng)達(dá)到閾值年齡時(shí)。在一個(gè)實(shí)施例中,數(shù)據(jù)文件在回收其空間之前被備份到另一系統(tǒng)上。以此方式,可以在仍保持現(xiàn)有數(shù)據(jù)的同時(shí)使得更多的存儲(chǔ)可用。在一個(gè)實(shí)施例中,所有數(shù)據(jù)文件385與同一保留策略相關(guān)聯(lián)。在另一實(shí)施例中,存在多個(gè)保留策略,并且每個(gè)數(shù)據(jù)文件與多個(gè)保留策略中的任何一個(gè)相關(guān)聯(lián)??梢詫⒍鄠€(gè)數(shù)據(jù)文件與同一保留策略相關(guān)聯(lián)??梢杂捎脩魜?lái)創(chuàng)建并修改保留策略。在一個(gè)實(shí)施例中,存儲(chǔ)管理器320在邏輯上為每個(gè)保留策略保持上述的存儲(chǔ)回收算法的一個(gè)實(shí)例。例如,每個(gè)數(shù)據(jù)文件385包括指示應(yīng)用于該數(shù)據(jù)文件的保留策略的元數(shù)據(jù),并且塊被存儲(chǔ)在對(duì)應(yīng)于該塊的保留策略的數(shù)據(jù)文件中。如果存在多個(gè)保留策略,則略微修改圖3所示的系統(tǒng)170 (未示出)。具體地,事件接收器310包括用于每個(gè)保留策略的一組緩沖器360和一個(gè)元數(shù)據(jù)結(jié)構(gòu)365。在從事件提取字段值并將其存儲(chǔ)在該組緩沖器中且更新元數(shù)據(jù)結(jié)構(gòu)(步驟430)之前,控制系統(tǒng)355確定應(yīng)對(duì)該事件應(yīng)用哪個(gè)保留策略。此確定是基于例如特定時(shí)間的靜態(tài)映射或?qū)傩???梢允褂萌魏螌傩?,諸如優(yōu)先級(jí)或事件源?;诖舜_定,控制系統(tǒng)355將事件字段值存儲(chǔ)在適當(dāng)?shù)囊唤M緩沖器中并更新適當(dāng)?shù)脑獢?shù)據(jù)結(jié)構(gòu)。因此,一組特定緩沖器中的所有事件字段值將與同一保留策略相關(guān)聯(lián)。因而斷定,基于該該組緩沖器生成的基于列的塊350將與同一保留策略相關(guān)聯(lián)。 在將塊存儲(chǔ)在數(shù)據(jù)文件385中(步驟470)之前,控制系統(tǒng)370確定塊的保留策略并將塊存儲(chǔ)在與該策略相關(guān)聯(lián)的數(shù)據(jù)文件中。因此,特定數(shù)據(jù)文件中的所有塊將與同一保留策略相關(guān)聯(lián)??商鎿Q地,可以將基于列的塊相關(guān)的不同緩沖器360與不同的保留策略相關(guān)聯(lián), 即使緩沖器正在存儲(chǔ)來(lái)自同一組事件的字段值。例如,存儲(chǔ)被更經(jīng)常搜索的字段的塊能夠具有與存儲(chǔ)不那么經(jīng)常被搜索的字段的塊不同的保留策略。在該實(shí)施例中,可以將來(lái)自第一事件的第一字段值與第一保留策略相關(guān)聯(lián),并且可以將來(lái)自同一事件的第二字段值與第二(不同的)保留策略相關(guān)聯(lián)。在一個(gè)實(shí)施例中,每個(gè)保留策略具有其自己的數(shù)據(jù)文件385的群組。用唯一編號(hào)來(lái)標(biāo)記每個(gè)數(shù)據(jù)文件。該編號(hào)確定一個(gè)群組內(nèi)的文件的順序。按照附加順序來(lái)寫(xiě)入數(shù)據(jù)文件。文件未被更新,并且文件被寫(xiě)入一次且在僅附加模式下操作,這防止日志數(shù)據(jù)篡改。當(dāng)一個(gè)保留群組內(nèi)的所有文件被裝滿時(shí),從該群組中的第一(即最舊)文件回收存儲(chǔ)。在一個(gè)實(shí)施例中,針對(duì)每個(gè)保留策略來(lái)保持單獨(dú)的數(shù)據(jù)文件表格375,其包含用于已被分配給該保留策略的數(shù)據(jù)文件385的條目。如果保持自由列表,則只有一個(gè)自由列表被用于整個(gè)存儲(chǔ)管理器320,無(wú)論存在多少保留策略。7.查詢/數(shù)據(jù)檢索
回想基于行的塊包含用于一組事件的完整信息。來(lái)自該同一組事件的字段值的基于列的塊是包含在基于行的塊中的信息的子集。由于基于列的塊包含比基于行的塊少的信息, 所以加載到存儲(chǔ)器中(例如從數(shù)據(jù)文件)并進(jìn)行搜索也是更快的。因此,如果搜索查詢項(xiàng)涉及基于列的塊的字段,則搜索基于列的塊比搜索基于行的塊更快。由于基于列的塊有助于搜索,所以其有時(shí)稱為“搜索索引,,或簡(jiǎn)單地“索引”。在塊350已被存儲(chǔ)在數(shù)據(jù)文件385中之后,可以查詢塊內(nèi)的字段值??梢元?dú)立地或作為處理交互搜索或生成報(bào)告的一部分來(lái)執(zhí)行查詢。查詢被表示為能夠被針對(duì)事件進(jìn)行評(píng)估的表達(dá)式。該表達(dá)式包括一個(gè)或多個(gè)搜索項(xiàng)。搜索項(xiàng)涉及事件的內(nèi)容,具體地涉及特定字段和該字段的值。例如,搜索項(xiàng)“TransportProtocol (傳輸協(xié)議)=TCP”涉及 TransportProtocol字段和等于“TCP”的該字段的值。作為另一示例,搜索項(xiàng)“優(yōu)先級(jí)包含 ‘高’ ”涉及優(yōu)先級(jí)字段和等于“ ‘高’ ”的該字段的值。搜索項(xiàng)的一個(gè)常見(jiàn)類型包括時(shí)間戳字段(例如EventReceipt (事件接收))和時(shí)間段(例如起始時(shí)間和結(jié)束時(shí)間)。執(zhí)行搜索查詢的結(jié)果常常是一個(gè)或多個(gè)事件的組。例如,搜索查詢“從其中TransportProtocol = TCP的事件選擇*”將返回一組事件,其中的每一個(gè)在其TransportProtocol字段中具有“TCP”的值。在一個(gè)實(shí)施例中,查詢過(guò)程分多個(gè)階段發(fā)生。第一階段基于“感興趣字段”信息 (如存儲(chǔ)在塊的元數(shù)據(jù)中)來(lái)過(guò)濾數(shù)據(jù)塊350。第二階段基于字段值(如存儲(chǔ)在塊的“有效負(fù)荷”中)來(lái)過(guò)濾數(shù)據(jù)塊350。第三階段將滿足該查詢的事件聚集。第一階段從而充當(dāng)用于識(shí)別應(yīng)進(jìn)一步調(diào)查哪些數(shù)據(jù)塊(及其對(duì)應(yīng)事件)和應(yīng)忽視哪些數(shù)據(jù)塊(及其對(duì)應(yīng)事件)的“粗切割”。在大多數(shù)情況下,當(dāng)查詢或檢索事件時(shí)不考慮分派給塊的保留策略,因?yàn)槟膫€(gè)保留策略應(yīng)用于包含事件的塊不是令人感興趣的。在第一階段中,識(shí)別涉及包含在元數(shù)據(jù)結(jié)構(gòu)365 (當(dāng)事件字段值被存儲(chǔ)在緩沖器 360中而不是作為數(shù)據(jù)文件385中的數(shù)據(jù)塊350的一部分時(shí)返回)中的信息的查詢內(nèi)的搜索項(xiàng)。此元數(shù)據(jù)信息包括相關(guān)事件接收器的唯一標(biāo)識(shí)符并且對(duì)于每個(gè)感興趣字段包括最小值和最大值,所述最小值和最大值一起反映多個(gè)事件(最初,其字段值被存儲(chǔ)在同一緩沖器中的事件;稍后,其字段值被存儲(chǔ)在同一數(shù)據(jù)塊中的事件)上的該字段的值的范圍?;叵朐獢?shù)據(jù)信息被作為塊150的一部分傳送到存儲(chǔ)管理器320。然后,元數(shù)據(jù)信息被存儲(chǔ)在塊表格 380中。因此,為了基于此元數(shù)據(jù)來(lái)搜索事件,使用“元數(shù)據(jù)搜索項(xiàng)”來(lái)搜索塊表格380。這將產(chǎn)生哪些塊(如果有的話)可能包含滿足元數(shù)據(jù)搜索項(xiàng)的事件。以此方式,可以基于用于事件接收器和/或感興趣字段的特定值(或值范圍)來(lái)約束搜索(因?yàn)檫@些值被存儲(chǔ)在塊表格380中的元數(shù)據(jù)中)。由于“感興趣字段”元數(shù)據(jù)被表示為值的范圍,所以塊滿足元數(shù)據(jù)搜索項(xiàng)的事實(shí)不一定意味著塊包含滿足元數(shù)據(jù)搜索項(xiàng)的事件。例如,如果元數(shù)據(jù)搜索項(xiàng)是10的字段值且塊包含其字段值分別是5和15的事件,則10將落在該范圍內(nèi),并且該塊將被識(shí)別為滿足元數(shù)據(jù)搜索項(xiàng)。然而,塊可能不包含具有10的字段值的事件。(這就是為什么查詢分多個(gè)階段發(fā)生的原因。)然而,始終是成立的是如果塊可以包含滿足搜索項(xiàng)的事件,則該塊將被識(shí)別為滿足搜索項(xiàng)。在第二階段中,基于字段值(如存儲(chǔ)在塊的“有效負(fù)荷”中)來(lái)進(jìn)一步過(guò)濾由第一階段識(shí)別的數(shù)據(jù)塊350。具體地,識(shí)別涉及其值被存儲(chǔ)在基于列的塊350中的字段(即“索引化”字段)的查詢內(nèi)的搜索項(xiàng)。例如,如果搜索項(xiàng)涉及SourceIPAddress字段,則識(shí)別與 SourceIPAddress字段相關(guān)聯(lián)的基于列的塊。(這可以通過(guò)檢查塊的hdexID來(lái)完成。)然后在已識(shí)別塊內(nèi)搜索該搜索項(xiàng)的請(qǐng)求值(例如,特定IP地址)。如果塊的有效負(fù)荷部分(即, 一組字段值)采取壓縮格式,則在其中搜索所述搜索項(xiàng)的請(qǐng)求值之前對(duì)其解壓縮。在第三階段中,將滿足查詢的事件聚集。繼續(xù)前一示例,假設(shè)已經(jīng)識(shí)別了與 SourceIPAddress字段相關(guān)聯(lián)的特定的基于列的塊。此外,假設(shè)特定的字段值條目已經(jīng)在塊內(nèi)被識(shí)別為與搜索項(xiàng)的請(qǐng)求值匹配。該特定字段值條目與hdexLocationID相關(guān)聯(lián)?,F(xiàn)在使用hdexLocationID來(lái)獲得事件的其余字段值?;叵?IndexLocationID 包括 StripeID 和 OffsetID0 StripeID 用來(lái)識(shí)別涉及同一組事件的其它基于列的塊。(在一個(gè)實(shí)施例中,存儲(chǔ)管理器320保持MripeID到與該MripeID相關(guān)聯(lián)的ChimkID列表的映射。)一旦識(shí)別了那些其它基于列的塊,則使用 OffsetID來(lái)獲得適當(dāng)?shù)淖侄沃?S卩,屬于與基于SourceIPAddress字段識(shí)別的事件相同的事件的那些字段值)。作為示例,考慮一組事件,其中的每一個(gè)包括DeviceVendor (設(shè)備供應(yīng)商)字段、 TransportProtocol 字段和 I^riority(優(yōu)先級(jí))字段。搜索查詢“從其中 TransportProtocol =TCP且I^riority = ’ Very High'的事件中選擇*”將返回一組事件,其中的每一個(gè)在其 TransportProtocol字段中具有“TCP”的值且在其I^riority字段中具有“ ‘Very High,,,的值。搜索查詢“從其中TransportProtocol = TCP且Priority = 'Very High'的事件中選擇DeviceVendor”將僅返回來(lái)自該組事件(其中的每一個(gè)在其TransportProtocol字段中具有“TCP”的值且在其I^riority字段中具有‘Very High,的值)的DeviceVendor字段值。假設(shè)DeviceVendor、TransportProtocol 和 Priority 不是“感興趣字段”(并因此不具有存儲(chǔ)在任何塊的元數(shù)據(jù)部分中的值范圍)。執(zhí)行此查詢的一種方式如下1)識(shí)別與 TransportProtocol字段相關(guān)聯(lián)的基于列的塊。搜索那些塊以尋找等于“TCP”的字段值。對(duì)于每個(gè)匹配的字段值而言,存儲(chǔ)相關(guān)的hdexLocationID。2)識(shí)別與I^riority字段相關(guān)聯(lián)的基于列的塊。搜索那些塊以尋找等于“‘Very High’ ”的字段值。對(duì)于每個(gè)匹配的字段值而言,存儲(chǔ)相關(guān)的IndexLocationID0 3)確定在(1)中存儲(chǔ)的IndexLocationID和在(2)中存儲(chǔ)的MdexLocationID的交集(即確定哪些MdexLocationID被存儲(chǔ)在(1)和(2)兩者中)。 4)識(shí)別與DeviceVendor字段相關(guān)聯(lián)的基于列的塊。對(duì)于(3)中的每個(gè)hdexLocationID 而言,確定對(duì)應(yīng)的字段值并將該值作為搜索結(jié)果的一部分返回。在一個(gè)實(shí)施例(未示出)中,按照特定的順序來(lái)分析事件。例如,按照升序(即首先是最舊事件)或降序(首先是最新事件),基于事件的事件接收時(shí)間來(lái)分析事件。按照特定順序來(lái)分析事件并將匹配事件附加于搜索結(jié)果意味著搜索結(jié)果中的事件將已經(jīng)處于該特定順序。不要求事件的排序。在第一階段中,可能的是沒(méi)有搜索項(xiàng)涉及包含在元數(shù)據(jù)結(jié)構(gòu)365中的信息。如果這種情況發(fā)生,則所有塊350將被識(shí)別為可能包含滿足元數(shù)據(jù)搜索項(xiàng)的事件字段值(因?yàn)椴淮嬖谠獢?shù)據(jù)搜索項(xiàng))。上述算法搜索被存儲(chǔ)在塊350中的事件字段值。然而,日志記錄系統(tǒng)170可以包含事件接收器310中(例如,該組緩沖器360內(nèi))的尚未被存儲(chǔ)在塊中的附加事件字段值。以上算法將不搜索這些事件字段值。在一個(gè)實(shí)施例中,在執(zhí)行算法之前,清洗該組緩沖器360, 使得事件字段值將被發(fā)送到存儲(chǔ)管理器320并存儲(chǔ)在塊中。這樣,當(dāng)執(zhí)行算法時(shí),還將搜索先前在該組緩沖器中的事件字段值。在另一實(shí)施例中,與上述算法類似地,使用該組緩沖器 360和元數(shù)據(jù)結(jié)構(gòu)365的內(nèi)容在事件接收器310上執(zhí)行單獨(dú)的搜索。這樣,將搜索所有事件字段值,無(wú)論其被存儲(chǔ)在存儲(chǔ)管理器320中還是事件接收器310中。圖6是舉例說(shuō)明根據(jù)一個(gè)實(shí)施例的用于查詢的方法的流程圖。在一個(gè)實(shí)施例中, 由存儲(chǔ)管理器320 (例如,其控制系統(tǒng)370)來(lái)執(zhí)行圖6的方法600。在方法600開(kāi)始之前, 接收搜索查詢。該搜索查詢包括一個(gè)或多個(gè)搜索項(xiàng)。識(shí)別610 (在接收到的搜索查詢內(nèi))任何元數(shù)據(jù)搜索項(xiàng)。使用已識(shí)別的元數(shù)據(jù)搜索項(xiàng)來(lái)搜索620塊表格380?;叵雺K表格380中的每個(gè)條目對(duì)應(yīng)于塊350,并且條目包括存儲(chǔ)在塊中的元數(shù)據(jù)和塊的位置。使用已識(shí)別的元數(shù)據(jù)搜索項(xiàng)來(lái)搜索塊表格380的元數(shù)據(jù)部分。使用存儲(chǔ)在塊表格380中的塊的位置來(lái)檢索630其元數(shù)據(jù)滿足元數(shù)據(jù)搜索項(xiàng)的每個(gè)塊350。識(shí)別640 (在接收到的搜索查詢內(nèi))任何索引化搜索項(xiàng)。(從在步驟630中檢索的那些之中)識(shí)別650與索引化搜索項(xiàng)相關(guān)聯(lián)的任何塊。使用所識(shí)別的索引化搜索項(xiàng)來(lái)搜索660在步驟640中識(shí)別的塊的有效負(fù)荷部分。將滿足搜索查詢的事件聚集670。當(dāng)塊的有效負(fù)荷部分內(nèi)的字段值條目與搜索
項(xiàng)匹配時(shí),確定條目的hdexLocationlD并將其用來(lái)訪問(wèn)匹配事件的其余字段的字段值條目。8.附加實(shí)施例一存檔
在一個(gè)實(shí)施例中,日志記錄系統(tǒng)170支持用于數(shù)據(jù)文件385的存檔功能。例如,可以將數(shù)據(jù)文件385導(dǎo)入日志記錄系統(tǒng)170并從日志記錄系統(tǒng)170導(dǎo)出。作為另一示例,可以將數(shù)據(jù)文件385備份到另一系統(tǒng)上,并稍后恢復(fù)到日志記錄系統(tǒng)170中。由于事件被存儲(chǔ)在塊中且塊被存儲(chǔ)在數(shù)據(jù)文件中,所以事件可容易地轉(zhuǎn)移成近線或離線存儲(chǔ)。在一個(gè)實(shí)施例中, 基于檔案標(biāo)準(zhǔn)自動(dòng)地將數(shù)據(jù)文件存檔,所述檔案標(biāo)準(zhǔn)可以類似于用于查詢的標(biāo)準(zhǔn)(例如,存
21儲(chǔ)在數(shù)據(jù)文件內(nèi)的塊的元數(shù)據(jù)結(jié)構(gòu)中的信息的值)。在另一實(shí)施例中,手動(dòng)地將數(shù)據(jù)文件存檔(例如,響應(yīng)于用戶命令)。9.與基于列的塊相結(jié)合的基于行的塊 A.存儲(chǔ)
'078申請(qǐng)描述了僅使用基于行的塊來(lái)存儲(chǔ)事件數(shù)據(jù)。在上文中,本申請(qǐng)描述了僅使用基于列的塊來(lái)存儲(chǔ)事件數(shù)據(jù)。第三種類型的事件存儲(chǔ)使用基于行的塊和基于列的塊兩者。 這種類型的事件存儲(chǔ)將事件存儲(chǔ)兩次一使用基于行的塊存儲(chǔ)一次和使用一個(gè)或多個(gè)基于列的塊存儲(chǔ)一次。例如,一組事件將被存儲(chǔ)為一個(gè)基于行的塊。那些事件的字段值還將被存儲(chǔ)為基于列的塊(每個(gè)字段一個(gè)基于列的塊)?;叵牖谛械拇鎯?chǔ)是寫(xiě)最優(yōu)化的,而基于列的存儲(chǔ)是讀最優(yōu)化的。使用基于行和基于列的塊兩者來(lái)存儲(chǔ)事件的優(yōu)點(diǎn)是這兩種優(yōu)化都是可用的?;谛械膲K的寫(xiě)入更快,因此使用該架構(gòu)使得事件能夠被更加快速地存儲(chǔ)?;诹械膲K讀起來(lái)更快,因此使用該架構(gòu)使得事件能夠被更快速地讀取(例如查詢)。在其中正在使用基于行的塊和基于列的塊兩者的一個(gè)實(shí)施例中,不作為同一事務(wù)的一部分來(lái)執(zhí)行基于行的塊的生成和存儲(chǔ)及基于列的塊的生成和存儲(chǔ)。如果正在以非常高的速率接收事件,則基于列的塊的生成和存儲(chǔ)(“索引化”)可以落后于基于行的塊的生成和存儲(chǔ)。并沒(méi)有以索引化為成本(例如,時(shí)間成本)而放棄或延遲數(shù)據(jù)。請(qǐng)注意,即使索引化落在基于行的塊的生成和存儲(chǔ)后面,用戶仍能夠使用基于行的塊來(lái)查詢所有事件數(shù)據(jù)。并且,可以將基于行的塊和基于列的塊與不同的保留策略相關(guān)聯(lián)。例如,可以將存儲(chǔ)一組事件的基于行的塊與第一保留策略相關(guān)聯(lián),并且可以將存儲(chǔ)同一組事件的基于列的塊與第二保留策略(或多個(gè)保留策略,如上所述)相關(guān)聯(lián)。只要存在基于行的塊,則在必要時(shí)能夠重新創(chuàng)建基于列的塊。同樣地,只要存在基于列的塊,則在必要時(shí)能夠重新創(chuàng)建基于行的塊。通常,在多個(gè)基于列的塊中比在一個(gè)基于行的塊中要求更少的空間來(lái)存儲(chǔ)一組事件。 因此,在一個(gè)實(shí)施例中,(例如,對(duì)于同一組事件)比基于行的塊更長(zhǎng)地存儲(chǔ)基于列的塊。如果正在使用基于行和基于列的塊兩者,這不一定意味著必須將事件的所有列 (字段)存儲(chǔ)在基于列的塊中??紤]使用基于行的塊存儲(chǔ)的一組事件。代替將事件的所有列存儲(chǔ)為基于列的塊,以這種方式僅存儲(chǔ)所選列。由于基于列的塊查詢起來(lái)更快,所以也許僅僅被最頻繁查詢的列被存儲(chǔ)為基于列的塊。請(qǐng)注意,即使其余列未被存儲(chǔ)為基于列的塊,仍能通過(guò)使用基于行的塊來(lái)查詢其字段值,因?yàn)榛谛械膲K包括所有事件數(shù)據(jù)。因而斷定,最優(yōu)化對(duì)于存儲(chǔ)為基于行的塊的事件的查詢的一種方式是為被最頻繁地查詢的事件字段創(chuàng)建基于列的塊。這些基于列的塊的創(chuàng)建可以在事件存儲(chǔ)過(guò)程中的任何點(diǎn)發(fā)生。例如,’078申請(qǐng)描述了存儲(chǔ)基于行的塊的數(shù)據(jù)文件。可以從存儲(chǔ)的基于行的塊提取事件并然后將其用來(lái)創(chuàng)建一個(gè)或多個(gè)基于列的塊。(請(qǐng)注意,如果期望,可以將來(lái)自多個(gè)基于行的塊的字段值的列存儲(chǔ)在一個(gè)基于列的塊中。)可替換地,當(dāng)存儲(chǔ)管理器首先接收到塊并將該塊加載到存儲(chǔ)器中時(shí),管理器可以創(chuàng)建一個(gè)或多個(gè)基于列的塊。這樣,不必從存儲(chǔ)的基于行的塊提取事件并在稍后將其加載到存儲(chǔ)器中。另一可能性是事件接收器創(chuàng)建基于列的塊,如上所述?;蛘?,被發(fā)送到事件接收器的日志數(shù)據(jù)可以已經(jīng)采取基于列的格式。上述四個(gè)存儲(chǔ)類型(僅行、僅列、行和所有列以及行和所選列)不是互相排斥的。 一個(gè)日志記錄系統(tǒng)可以使用全部四個(gè)存儲(chǔ)類型。例如,可以使用基于行的塊來(lái)存儲(chǔ)第一組事件,可以使用基于列的塊來(lái)存儲(chǔ)第二組事件,可以使用基于行和基于列的塊(對(duì)于所有列而言)來(lái)存儲(chǔ)第三組事件,并可以使用基于行和基于列的塊(對(duì)于所選列而言)來(lái)存儲(chǔ)第四組事件。哪個(gè)存儲(chǔ)方案是最好的取決于情況。雖然基于行的塊創(chuàng)建起來(lái)更快,但基于列的塊查詢起來(lái)更快。在一個(gè)實(shí)施例中,基于何時(shí)接收到事件來(lái)選擇存儲(chǔ)架構(gòu)。例如,使用基于行和基于列的塊(對(duì)于所有列而言)來(lái)存儲(chǔ)最近(例如,在過(guò)去的30天內(nèi))接收到的事件。使用僅基于行的塊(或僅基于列的塊)來(lái)存儲(chǔ)較舊的事件。如果先前使用基于行和基于列的塊(對(duì)于所有塊而言)來(lái)存儲(chǔ)較舊的事件,則基于行的塊和基于列的塊包含相同的信息,因此可以刪除任何一個(gè)。如果先前使用基于行和基于列的塊(對(duì)于所選列而言)來(lái)存儲(chǔ)較舊的事件,則基于行的塊和基于列的塊不包含相同的信息,并且刪除基于行的塊將導(dǎo)致信息被丟失。在這種情況下,刪除基于列的塊可能更好(因?yàn)槠浒男畔⑹侨哂嗟?。在另一實(shí)施例中,基于接收到事件的事件接收器來(lái)選擇存儲(chǔ)架構(gòu)。例如,使用基于行和基于列的塊來(lái)存儲(chǔ)由第一接收器接收到的事件。使用僅基于行的塊(或僅基于列的塊) 來(lái)存儲(chǔ)由第二接收器接收到的事件。在一個(gè)實(shí)施例中,日志記錄系統(tǒng)170的初始化包括指定存儲(chǔ)方案(例如,僅行、僅列、行和所有列或行和所選列)和應(yīng)何時(shí)使用該方案(例如,基于事件接收時(shí)間落在時(shí)間段內(nèi)或基于由特定事件接收器接收到事件)。在另一實(shí)施例中,可以在任何時(shí)間改變存儲(chǔ)方案 (和/或應(yīng)何時(shí)使用該方案)。B.查詢/數(shù)據(jù)檢索
'078申請(qǐng)描述了對(duì)于使用僅基于行的塊存儲(chǔ)的事件數(shù)據(jù)的查詢和數(shù)據(jù)檢索。為了執(zhí)行查詢,識(shí)別可以包含滿足該查詢的事件的數(shù)據(jù)塊。具體地,識(shí)別查詢內(nèi)的包含被包含在元數(shù)據(jù)結(jié)構(gòu)中的信息的搜索項(xiàng)。使用“元數(shù)據(jù)搜索項(xiàng)”來(lái)搜索塊表格。以此方式,可以基于存儲(chǔ)在元數(shù)據(jù)中的信息的特定值來(lái)約束搜索。將所識(shí)別的塊分解成其組成事件。識(shí)別滿足該查詢的事件。在上文中,本申請(qǐng)描述了對(duì)于使用僅基于列的塊存儲(chǔ)的事件數(shù)據(jù)的查詢和數(shù)據(jù)檢索。為了執(zhí)行查詢,首先基于“感興趣字段”信息(如存儲(chǔ)在塊的元數(shù)據(jù)中)來(lái)過(guò)濾數(shù)據(jù)塊。 然后基于字段值(如存儲(chǔ)在塊的“有效負(fù)荷”中)來(lái)過(guò)濾剩余塊。最后,將滿足該查詢的事件逐字段地聚集?;叵牖诹械膲K包括一組索引位置標(biāo)識(shí)符(hdexLocationID)。該組 IndexLocationID^fgM^?1SitIndexLocationlD。 IndexLocationlD 用來(lái)訪問(wèn)對(duì)應(yīng)于同一事件的不同塊中的字段值。當(dāng)僅存在基于列的塊時(shí),使用 IndexLocationID來(lái)將滿足搜索查詢的事件(逐字段地)聚集。當(dāng)存在基于行和基于列的塊兩者時(shí),不需要逐字段地將滿足搜索查詢的事件聚集。作為替代,能夠全部從對(duì)應(yīng)的基于行的塊獲得事件。具體地,基于列的塊使用“表格位置標(biāo)識(shí)符”(TableLocationID)來(lái)間接地引用其相關(guān)的基于行的塊。在一個(gè)實(shí)施例中,一組表格位置標(biāo)識(shí)符(TableLocationID)被存儲(chǔ)為其自己的基于列的塊。該塊中的每個(gè)TableLocationID對(duì)應(yīng)于特定的事件。TableLocationID包括基于行的塊標(biāo)識(shí)符 (RBChunkID)和基于列的塊偏移標(biāo)識(shí)符(RBChunkOffsetID)。RBChunkID指示哪個(gè)基于行的塊包含與TableLocationID相關(guān)聯(lián)的事件。RBChunkOffsetID指示該事件(在基于行的塊內(nèi))在哪里開(kāi)始。每當(dāng)生成一組基于列的塊(例如,基于現(xiàn)有基于行的塊或由事件接收器, 如上文關(guān)于步驟440所述)時(shí),還生成TableLocationID基于列的塊。稍后,當(dāng)執(zhí)行查詢并在這些基于列的塊中的一個(gè)中找到匹配字段值時(shí),使用相關(guān)hdexLocationlD (具體地為 OffsetID)來(lái)訪問(wèn)來(lái)自TableLocationID基于列的塊的適當(dāng)TableLocationID。以此方式, 單個(gè)查詢可以使用基于行的存儲(chǔ)和基于列的存儲(chǔ)二者。剛剛已描述了三個(gè)不同的查詢執(zhí)行方案一僅行、僅列以及行和列。查詢優(yōu)化器確定應(yīng)對(duì)特定的查詢使用哪個(gè)執(zhí)行方案。具體地,查詢優(yōu)化器計(jì)算每個(gè)執(zhí)行方案的“總成本” 并且然后選擇具有最低成本的方案。(在一個(gè)實(shí)施例中,查詢優(yōu)化器僅考慮僅列方案及行和列方案,因?yàn)閮H行方案在成本上很可能是最高的。)執(zhí)行方案的總成本是不同的子成本的函數(shù),所述子成本諸如CPU成本和輸入/輸出(1/0)成本。子成本又是查詢的謂詞的選擇性和在查詢(謂詞和期望搜索結(jié)果兩者)中涉及的列(字段)的數(shù)目的函數(shù)?;陉P(guān)于過(guò)去事件的字段的統(tǒng)計(jì)信息來(lái)估計(jì)該選擇性。例如,由直方圖來(lái)提供關(guān)于字段上的數(shù)據(jù)分布的信息,直方圖將字段上的值劃分到k個(gè)桶中。通常,選擇性越低,查詢優(yōu)化器越有可能選擇僅列方案。選擇性越高,查詢優(yōu)化器越有可能選擇行和列方案。并且,列的數(shù)目越低,查詢優(yōu)化器越有可能選擇僅列方案。列的數(shù)目越高,查詢優(yōu)化器越有可能選擇行和列方案。搜索查詢可能不請(qǐng)求滿足該查詢的事件的所有字段。在這種情況下,可以如上所述(使用TableLocationID和基于行的塊)整體地獲得事件,以及然后可以在生成搜索結(jié)果之前去除不必要的字段。如果搜索查詢請(qǐng)求許多字段,則這種方法可能比從不同的基于列的塊單獨(dú)地獲得每個(gè)字段更快?;叵胨阉骰诹械膲K比搜索基于行的塊更快??紤]涉及特定事件字段的搜索查詢項(xiàng)。如果該字段與現(xiàn)有基于列的塊相關(guān)聯(lián),則搜索該基于列的塊來(lái)尋找期望字段值。如果不存在此類基于列的塊,則改為搜索適當(dāng)?shù)幕谛械膲K??商鎿Q地,可以(基于基于行的塊) 創(chuàng)建基于列的塊并然后對(duì)其進(jìn)行搜索。當(dāng)將需要針對(duì)若干事件搜索同一字段時(shí),創(chuàng)建基于列的塊可能是優(yōu)選的。C.附加實(shí)施例
在其中正在使用基于行的塊和基于列的塊兩者的一個(gè)實(shí)施例中,基于列的塊發(fā)生器 (“索引器”)支持檢查點(diǎn)恢復(fù)。具體地,在系統(tǒng)崩潰的情況下,索引器能夠從上一次的檢查點(diǎn)恢復(fù)并重新開(kāi)始。檢查點(diǎn)間隔是可配置的。間隔越長(zhǎng),索引器的性能越高(例如,用來(lái)生成基于列的塊的速度越高),但是崩潰恢復(fù)時(shí)間越長(zhǎng)。在檢查點(diǎn)階段期間,索引器保持上次掃描的TableLocationID和上次創(chuàng)建的hdexLocationID。在恢復(fù)階段期間,索引器在所保持的TableLocationID和MdexLocationID處開(kāi)始并繼續(xù)索引化表格中的任何剩余數(shù)據(jù)。可以對(duì)基于行的存儲(chǔ)和/或基于列的存儲(chǔ)執(zhí)行存檔。用于自動(dòng)存檔的檔案標(biāo)準(zhǔn)在基于行的存儲(chǔ)與基于列的存儲(chǔ)之間可以是不同的。包括以上說(shuō)明是為了舉例說(shuō)明優(yōu)選實(shí)施例的操作且并不意圖限制本發(fā)明的范圍。 本發(fā)明的范圍僅僅由以下權(quán)利要求來(lái)限制。根據(jù)以上討論,許多變化對(duì)于相關(guān)領(lǐng)域的技術(shù)人員來(lái)說(shuō)將是顯而易見(jiàn)的,所述變化仍被本發(fā)明的精神和范圍所涵蓋。
2權(quán)利要求
1.一種用于處理日志數(shù)據(jù)的方法,包括接收包括多個(gè)事件的日志數(shù)據(jù),其中,事件包括一組字段,并且其中,字段存儲(chǔ)值;以及對(duì)于所述多個(gè)事件中的每個(gè)事件而言將事件存儲(chǔ)在一組緩沖器中,其中,事件的每個(gè)字段與不同的緩沖器相關(guān)聯(lián);以及更新包括關(guān)于緩沖器的內(nèi)容的信息的元數(shù)據(jù)結(jié)構(gòu),其中,關(guān)于緩沖器的內(nèi)容的信息包括反映存儲(chǔ)在緩沖器中的所有事件的第一字段的最小值的第一最小值。
2.權(quán)利要求1的方法,其中,關(guān)于緩沖器的內(nèi)容的信息還包括反映存儲(chǔ)在緩沖器中的所有事件的第一字段的最大值的第一最大值。
3.權(quán)利要求1的方法,其中,關(guān)于緩沖器的內(nèi)容的信息還包括反映存儲(chǔ)在緩沖器中的所有事件的第二字段的最小值的第二最小值。
4.權(quán)利要求1的方法,其中,關(guān)于緩沖器的內(nèi)容的信息還包括存儲(chǔ)在緩沖器中的事件的數(shù)目。
5.權(quán)利要求1的方法,還包括響應(yīng)于第一觸發(fā)條件,為該組緩沖器中的每個(gè)緩沖器生成一個(gè)數(shù)據(jù)塊,其中,所述數(shù)據(jù)塊基于元數(shù)據(jù)結(jié)構(gòu)的內(nèi)容并且還基于緩沖器的內(nèi)容。
6.權(quán)利要求5的方法,其中,所述第一觸發(fā)條件基于緩沖器使用閾值或基于超時(shí)窗口。
7.權(quán)利要求5的方法,還包括響應(yīng)于第二觸發(fā)條件,回收被數(shù)據(jù)塊中的一個(gè)使用的存儲(chǔ)空間。
8.權(quán)利要求7的方法,其中,所述第二觸發(fā)條件基于與數(shù)據(jù)塊相關(guān)聯(lián)的保留策略。
9.權(quán)利要求7的方法,其中,所述第二觸發(fā)條件基于盤(pán)空間使用閾值或基于保留數(shù)據(jù)塊的最大時(shí)間。
10.權(quán)利要求5的方法,還包括響應(yīng)于第二觸發(fā)條件,將數(shù)據(jù)塊中的一個(gè)存檔。
11.權(quán)利要求10的方法,其中,所述第二觸發(fā)條件基于與數(shù)據(jù)塊相關(guān)聯(lián)的檔案標(biāo)準(zhǔn)。
12.權(quán)利要求10的方法,其中,所述第二觸發(fā)條件包括用戶命令。
13.權(quán)利要求1的方法,還包括對(duì)于所述多個(gè)事件中的每個(gè)事件而言確定何時(shí)接收到該事件;以及在附加緩沖器中存儲(chǔ)反映何時(shí)接收到該事件的時(shí)間戳。
14.權(quán)利要求1的方法,其中,將事件存儲(chǔ)在該組緩沖器中包括將事件的每個(gè)字段值存儲(chǔ)在與該字段相關(guān)聯(lián)的緩沖器中。
15.權(quán)利要求1的方法,還包括為該組緩沖器中的每個(gè)緩沖器生成一個(gè)數(shù)據(jù)塊,其中, 所述數(shù)據(jù)塊包括元數(shù)據(jù)結(jié)構(gòu)的內(nèi)容和緩沖器的內(nèi)容的壓縮版本。
16.權(quán)利要求15的方法,其中,所述數(shù)據(jù)塊還包括文件簽名或版本標(biāo)識(shí)符。
17.權(quán)利要求15的方法,其中,所述數(shù)據(jù)塊還包括緩沖器的內(nèi)容的消息摘要。
18.根據(jù)權(quán)利要求15所述的方法,還包括 接收包括一個(gè)或多個(gè)搜索項(xiàng)的組的搜索查詢;從該組搜索項(xiàng)中識(shí)別涉及包含在元數(shù)據(jù)結(jié)構(gòu)中的信息的一個(gè)或多個(gè)第一搜索項(xiàng);以及通過(guò)針對(duì)每個(gè)數(shù)據(jù)塊將已識(shí)別的第一搜索項(xiàng)與包括在數(shù)據(jù)塊內(nèi)的元數(shù)據(jù)結(jié)構(gòu)的內(nèi)容相比較來(lái)搜索一個(gè)或多個(gè)數(shù)據(jù)塊。
19.權(quán)利要求18的方法,還包括對(duì)于滿足已識(shí)別的第一搜索項(xiàng)的每個(gè)數(shù)據(jù)塊而言從該組搜索項(xiàng)中識(shí)別涉及與和該數(shù)據(jù)塊相關(guān)聯(lián)的緩沖器相關(guān)聯(lián)的字段的一個(gè)或多個(gè)第二搜索項(xiàng);將已識(shí)別的第二搜索項(xiàng)與包括在該數(shù)據(jù)塊內(nèi)的緩沖器的內(nèi)容的未壓縮版本相比較。
20.權(quán)利要求19的方法,還包括對(duì)于滿足已識(shí)別的第二搜索項(xiàng)的每個(gè)字段值而言 識(shí)別與該字段值相關(guān)聯(lián)的索引位置標(biāo)識(shí)符; 對(duì)于該組緩沖器中的每個(gè)緩沖器而言 訪問(wèn)與該緩沖器相關(guān)聯(lián)的數(shù)據(jù)塊;以及識(shí)別該數(shù)據(jù)塊中的與索引位置標(biāo)識(shí)符匹配的字段值;以及將已識(shí)別的字段值聚集成事件。
21.一種用于處理日志數(shù)據(jù)的計(jì)算機(jī)程序產(chǎn)品,該計(jì)算機(jī)程序產(chǎn)品包括機(jī)器可讀存儲(chǔ)介質(zhì),該機(jī)器可讀存儲(chǔ)介質(zhì)包含用于執(zhí)行方法的計(jì)算機(jī)程序代碼,該方法包括接收包括多個(gè)事件的日志數(shù)據(jù),其中,事件包括一組字段,并且其中,字段存儲(chǔ)值;以及對(duì)于所述多個(gè)事件中的每個(gè)事件而言將事件存儲(chǔ)在一組緩沖器中,其中,事件的每個(gè)字段與不同的緩沖器相關(guān)聯(lián);以及更新包括關(guān)于緩沖器的內(nèi)容的信息的元數(shù)據(jù)結(jié)構(gòu),其中,關(guān)于緩沖器的內(nèi)容的信息包括反映存儲(chǔ)在緩沖器中的所有事件的第一字段的最小值的第一最小值。
22.一種用于處理日志數(shù)據(jù)的系統(tǒng),包括機(jī)器可讀存儲(chǔ)介質(zhì),其包含用于執(zhí)行方法的計(jì)算機(jī)程序代碼,該方法包括 接收包括多個(gè)事件的日志數(shù)據(jù),其中,事件包括一組字段,并且其中字段存儲(chǔ)值;以及對(duì)于所述多個(gè)事件中的每個(gè)事件而言將事件存儲(chǔ)在一組緩沖器中,其中,事件的每個(gè)字段與不同的緩沖器相關(guān)聯(lián);以及更新包括關(guān)于緩沖器的內(nèi)容的信息的元數(shù)據(jù)結(jié)構(gòu),其中,關(guān)于緩沖器的內(nèi)容的信息包括反映存儲(chǔ)在緩沖器中的所有事件的第一字段的最小值的第一最小值;以及處理器,其被配置為執(zhí)行由所述機(jī)器可讀介質(zhì)存儲(chǔ)的計(jì)算機(jī)程序代碼。
23.一種用于處理事件的方法,其中,事件包括多個(gè)字段,并且其中,字段存儲(chǔ)值,包括接收一組事件;生成包括該組事件和關(guān)于該組事件的元數(shù)據(jù)的基于行的塊;以及生成基于列的塊,所述基于列的塊包括關(guān)于該組事件的元數(shù)據(jù)以及對(duì)于該組事件中的每個(gè)事件包括特定字段的值,其中,關(guān)于該組事件的元數(shù)據(jù)包括反映該組事件中的所有事件上的第一字段的最小值的第一最小值。
24.權(quán)利要求23的方法,還包括生成第二基于列的塊,所述第二基于列的塊包括關(guān)于該組事件的元數(shù)據(jù)以及對(duì)于該組事件中的每個(gè)事件包括附加字段的值。
25.權(quán)利要求23的方法,其中,所述基于行的塊與第一保留策略相關(guān)聯(lián),并且其中,所述基于列的塊與不同的保留策略相關(guān)聯(lián)。
26.一種用于處理事件的方法,其中,事件包括多個(gè)字段,并且其中,字段存儲(chǔ)值,包括接收第一組事件;生成基于行的塊,所述基于行的塊包括所述第一組事件和關(guān)于所述第一組事件的元數(shù)據(jù),其中,關(guān)于所述第一組事件的元數(shù)據(jù)包括反映所述第一組事件中的所有事件上的第一字段的最小值的第一最小值; 接收第二組事件;以及生成基于列的塊,所述基于列的塊包括關(guān)于所述第二組事件的元數(shù)據(jù)以及對(duì)于所述第二組事件中的每個(gè)事件包括特定字段的值,其中,關(guān)于所述第二組事件的元數(shù)據(jù)包括反映所述第二組事件中的所有事件上的第二字段的最小值的第二最小值。
27.權(quán)利要求沈的方法,其中,關(guān)于所述第一組事件的元數(shù)據(jù)還包括反映所述第一組事件中的所有事件上的第一字段的最大值的第一最大值。
28.權(quán)利要求沈的方法,其中,關(guān)于所述第一組事件的元數(shù)據(jù)還包括反映所述第一組事件中的所有事件上的第三字段的最小值的第三最小值。
29.權(quán)利要求沈的方法,還包括生成第二基于列的塊,所述第二基于列的塊包括關(guān)于第二組事件的元數(shù)據(jù)以及對(duì)于第二組事件中的每個(gè)事件包括附加字段的值,其中,關(guān)于第二組事件的元數(shù)據(jù)包括反映第二組事件中的所有事件上的第二字段的最小值的第二最小值。
30.一種用于根據(jù)搜索查詢來(lái)搜索一組事件的方法,其中,事件包括多個(gè)字段,并且其中字段存儲(chǔ)值,并且其中所述搜索查詢指示期望值和多個(gè)字段中的一個(gè)字段,所述方法包括訪問(wèn)第一基于列的塊,所述第一基于列的塊包括用于該組事件中的每個(gè)事件的所指示的字段的值和相關(guān)索引位置標(biāo)識(shí)符;識(shí)別第一基于列的塊中的與所述期望值匹配的值; 識(shí)別與所識(shí)別的值相關(guān)的索引位置標(biāo)識(shí)符;訪問(wèn)第二基于列的塊,所述第二基于列的塊包括用于該組事件中的每個(gè)事件的表格位置標(biāo)識(shí)符和相關(guān)索引位置標(biāo)識(shí)符;識(shí)別所述第二基于列的塊中的與所識(shí)別的索引位置標(biāo)識(shí)符相關(guān)聯(lián)的表格位置標(biāo)識(shí)符;訪問(wèn)包括該組事件中的每個(gè)事件的基于行的塊;以及識(shí)別基于行的塊中的與所識(shí)別的表格位置標(biāo)識(shí)符相關(guān)聯(lián)的事件。
31.一種用于選擇用于查詢的執(zhí)行方案的方法,包括 估計(jì)查詢的謂詞的選擇性;確定查詢中所涉及的字段的數(shù)目;響應(yīng)于所述選擇性是低的且列的數(shù)目是低的,選擇僅列方案;以及響應(yīng)于所述選擇性是高的且列的數(shù)目是高的,選擇行和列方案。
全文摘要
一種日志記錄系統(tǒng)包括事件接收器和存儲(chǔ)管理器。接收器接收日志數(shù)據(jù),對(duì)其進(jìn)行處理并輸出基于列的數(shù)據(jù)“塊”。管理器接收并存儲(chǔ)塊。接收器包括存儲(chǔ)事件的緩沖器和存儲(chǔ)關(guān)于緩沖器的內(nèi)容的元數(shù)據(jù)的元數(shù)據(jù)結(jié)構(gòu)。每個(gè)緩沖器與特定的事件字段相關(guān)聯(lián)并包括來(lái)自一個(gè)或多個(gè)事件的來(lái)自該字段的值。對(duì)于每個(gè)“感興趣字段”而言,元數(shù)據(jù)包括反映緩沖器中的所有事件上的該字段的值范圍的最小值和最大值。為每個(gè)緩沖器生成塊,并且該塊包括元數(shù)據(jù)結(jié)構(gòu)和緩沖器內(nèi)容的壓縮版本。在查詢事件數(shù)據(jù)時(shí)元數(shù)據(jù)結(jié)構(gòu)充當(dāng)搜索索引。該日志記錄系統(tǒng)可以與安全信息/事件管理(SIEM)系統(tǒng)相結(jié)合地使用。
文檔編號(hào)G06F7/00GK102239472SQ200980144159
公開(kāi)日2011年11月9日 申請(qǐng)日期2009年9月4日 優(yōu)先權(quán)日2008年9月5日
發(fā)明者于 B., F. 比德金 C., 唐 W., 黃 W., 周 Y. 申請(qǐng)人:Arc景象有限責(zé)任公司
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
太仓市| 武乡县| 碌曲县| 邓州市| 蒙自县| 鄂托克前旗| 于田县| 双流县| 尉犁县| 新源县| 镇安县| 霍邱县| 双流县| 郎溪县| 惠东县| 平邑县| 浦江县| 唐山市| 宜章县| 旅游| 南溪县| 浮梁县| 古蔺县| 台东县| 铜鼓县| 锡林郭勒盟| 黎平县| 平泉县| 海城市| 海安县| 通河县| 新河县| 西华县| 龙口市| 吴桥县| 商南县| 秦皇岛市| 鄂尔多斯市| 墨玉县| 临泽县| 富民县|