專利名稱:用于日志分析的模式匹配框架的制作方法
用于日志分析的模式匹配框架
背景技術:
日志可以由計算設備用于各種各樣的目的。例如,日志可以用于記錄在軟件安裝期間遇到的事件,諸如錯誤消息等等。因而,日志可以充當被一個或多個計算設備遇到的事件的書面記錄。然而,隨著計算設備的使用變得日益更為流行,被生成來描述事件的日志也可能是相應較大的。例如,用于追蹤搜索引擎所遇到的事件的日志可能耗費15兆兆字節(jié)來描述在一天內(nèi)遇到的事件。然而,為了分析日志而開發(fā)的傳統(tǒng)技術可能是效率低的,并因此在面臨在當前日志中可能遇到的大量信息時是不合適的。
發(fā)明內(nèi)容
描述用于日志分析的模式匹配框架。在一個或多個實施方式中,經(jīng)由計算設備的用戶界面來接收一個或多個輸入,其中這一個或多個輸入描述指定將被匹配并被從日志中提取的數(shù)據(jù)的過濾模式以及指定將如何輸出使用過濾模式提取的數(shù)據(jù)的至少一部分的投影模式。由計算設備從過濾模式和投影模式中形成被配置成分析日志的查詢。在一個或多個實施方式中,用戶界面由計算設備輸出,其中用戶界面被配置成包括多個形狀,其中一個或多個形狀可配置為指定將利用該形狀來表示的數(shù)據(jù)并且一個到另一個(one to another)被安排在用戶界面中,以定義該數(shù)據(jù)的模式。由計算設備為一個或多個模式形成查詢,其中這些模式利用一個到另一個的多個形狀的安排以及這些形狀所表示的數(shù)據(jù)來定義,該查詢將被用于分析日志。在一個或多個實施方式中,在計算設備上接收查詢,該查詢包括過濾模式和投影模式,其中過濾模式和投影模式中的每一種模式利用多個形狀所表示的數(shù)據(jù)以及多個形狀在用戶界面中一個到另一個的安排來定義。由計算設備使用該查詢來分析日志,該分析包括從日志中提取與過濾模式相匹配的數(shù)據(jù),以及輸出與投影模式相匹配的提取數(shù)據(jù)。提供這個概述部分來以簡化形式介紹下面在詳細描述部分中進一步描述的概念的選擇。這個概述部分并不打算標識所請求保護主題的關鍵特征或基本特征,也不打算被用作確定所請求保護主題的范圍的輔助手段。
參考附圖來描述詳細描述部分。在附圖中,參考數(shù)字的最左邊的一個或多個數(shù)字標識該參考數(shù)字首次出現(xiàn)在其中的附圖。在說明書和附圖的不同實例中相同的參考數(shù)字的使用可以指示相似或相同的項。圖1是可操作來將模式匹配框架用于日志分析的示例實施方式中的環(huán)境的說明。圖2描述可用于指定用于查詢的模式的用戶界面中的可視化表示的示例實施方式。圖3描述可用于匹配日志中的多個行的用戶界面中的可視化表示的示例實施方式。
圖4描述可用于指定涉及分隔開日志中的任何數(shù)量的行的模式的用戶界面中的可視化表示的示例實施方式。圖5描述可用于指定涉及分隔開日志中的特定數(shù)量的行的模式的用戶界面中的可視化表示的示例實施方式。圖6描述可用于在基于組件的服務(CBS) (component based servicing)日志中指定模式的用戶界面中的可視化表示的示例實施方式。圖7描述其中擴展圖6的實施方式以捕獲在其期間安裝嘗試失敗的程序包名稱和相應錯誤代碼的示例實施方式。圖8描述其中進一步修改圖7的查詢來創(chuàng)建查詢以追蹤程序包的安裝失敗的示例實施方式。圖9描述其中進一步修改圖8的查詢來創(chuàng)建查詢以追蹤程序包的特定失敗序列的示例實施方式。圖10描述其中進一步修改圖9的查詢來使用邏輯否定運算符創(chuàng)建查詢以排除與一些模式相匹配的輸入中的內(nèi)容的示例實施方式。圖11描述其中修改圖2的查詢來創(chuàng)建涉及多次出現(xiàn)(occurrence)的查詢的示例實施方式。圖12描述被配置成從輸入文本中返回被綁定到過濾模式中的變量“ErrorCode (錯誤代碼)”的多個實例的投影模式的示例實施方式。圖13描述顯示另一個投影模式的示例實施方式。圖14描述顯示對圖13的投影模式進行的修改的示例實施方式。圖15是可以用于顯示為圖8的過濾模式所發(fā)現(xiàn)的匹配的投影模式的示例實施方式的說明。圖16是可以用于顯示為圖8的過濾模式所發(fā)現(xiàn)的匹配的另一個投影模式的示例實施方式的說明。圖17是描述其中用戶界面被輸出以指定將被用作查詢來分析日志的一個或多個模式的示例實施方式中的程序的流程圖。圖18是描述其中接收查詢來分析日志的示例實施方式中的程序的流程圖。
具體實施例方式綜述
日志可以用于描述被各種不同的計算設備遇到的各種不同的事件。例如,這些事件的范圍可以從描述軟件在單個計算設備上的安裝到利用服務器群進行的搜索引擎的運行等等。但是,用于分析日志的傳統(tǒng)技術往往缺乏靈活性且是低效的,并因此不適合與可能描述廣泛情況的這些不同類型的日志一起工作。描述用于日志分析的模式匹配框架。在一個或多個實施方式中,描述允許用戶指定用于諸如操作簡檔等等之類的日志的分析的模式(例如,二維模式)的查詢語言。因而,查詢語言可以被配置成支持可以用于分析描述各種各樣情況的日志的模式的表達描述。在以下的討論中,查詢引擎的框架結合示例環(huán)境來描述。隨后與可以被用于簡化查詢的開發(fā)和操縱的語言的可視化表示一起來描述框架語言(frame language)。包括說明查詢語言的表達力的示例,其后跟隨著可以使用示例環(huán)境等來執(zhí)行的示例程序。示例環(huán)境
圖1是可操作來采用在這里描述的技術的示例實施方式中的環(huán)境100的說明。所示的環(huán)境100包括可以采用各種方式來配置的計算設備102。例如,計算設備102可以被配置為通信耦合到所示的顯示設備104的計算機、筆記本計算機、移動站、娛樂設備、通信耦合到顯示設備的機頂盒、無線電話、游戲控制臺等等。因而,計算設備102的范圍可以從具有大量存儲器和處理器資源的全資源設備(例如,個人計算機、游戲控制臺)到具有有限的存儲器和/或處理資源的低資源設備(例如,傳統(tǒng)的機頂盒、手持游戲控制臺)。此外,雖然顯示單個計算設備102,但是計算設備102可以代表多個不同的設備,諸如由公司用來執(zhí)行操作的多個服務器、遙控器與機頂盒組合、圖像捕獲設備以及被配置成捕獲姿態(tài)的游戲控制臺寸寸。計算設備102也可以包括引起計算設備102中的硬件執(zhí)行操作的實體(例如,軟件),例如處理器、功能塊等。例如,計算設備102可以包括計算機可讀介質,其可以被配置為保持引起計算設備并且尤其引起計算設備102的硬件執(zhí)行操作的指令。因而,這些指令起作用來將硬件配置成執(zhí)行操作,并以這種方式導致硬件的變換來執(zhí)行功能。這些指令可以利用計算機可讀介質通過各種不同的配置被提供給計算設備102。計算機可讀介質的一種這樣的配置是信號承載(bearing)介質,并因而被配置成諸如經(jīng)由網(wǎng)絡104發(fā)送指令(例如,作為載波)給計算設備的硬件。計算機可讀介質也可以被配置成計算機可讀存儲介質,并因而不是信號承載介質。計算機可讀存儲介質的示例包括隨機存取存儲器(RAM)、只讀存儲器(ROM)、光盤、閃存、硬盤存儲器以及可以使用磁技術、光學技術和其他技術來存儲指令與其他數(shù)據(jù)的其他存儲設備。用于處理日志106 (在下文也被稱為“日志文件”)的傳統(tǒng)方法從開發(fā)者打開日志文件并手動檢查它們之中的每一個以識別問題到采用編輯器應用的“發(fā)現(xiàn)”功能而各不相同。即使“發(fā)現(xiàn)”功能能夠加速在日志文件內(nèi)識別熱點的處理,但是這些方法都是冗長的且容易出錯。進一步,這些傳統(tǒng)方法并沒有調節(jié)(scale)來解決大量日志文件的分析的問題, 并且不適合解決模式問題。例如,涉及操作簡檔分析的日志106的一些更富有表達力的傳統(tǒng)方法牽涉隱式轉換日志為表格,并支持使用SQL的子集來查詢它們。雖然這樣的方法在提取聚集信息方面可能是強效的,但是這些方法并不適于提取模式。例如,對于來自網(wǎng)絡 (web)服務器的日志,這樣的方法可以用于聚集信息或提取與特定過濾器相匹配的事件。例如
1)由用戶利用特定的IP地址瀏覽的頁面。
2)對于特定頁面的訪問者的數(shù)量。
3)來自特定國家的訪問者的數(shù)量。但是,這些方法在描述在以下示例中顯示的模式方面可能具有缺陷
1)多少訪問者以那個順序訪問了頁面A、B和C ?這樣的查詢能夠在SQL中通過一系列事件使用自聯(lián)接(self-join)(—個用于A-B,而另一個用于B-C)至與個別訪問者相關的線程記錄來構造。這個解決方案在牽涉較大的日志文件和較長序列的事件時變成計算量大的。2)多少訪問過頁面A的用戶沒有訪問B、隨后訪問C或訪問C、隨后訪問D ?再一次,這樣的查詢通常涉及“自聯(lián)接”并且是計算量大的。因而,傳統(tǒng)的方法并不支持用于從描述執(zhí)行痕跡、操作簡檔、被配置成事件日志等等的日志中提取信息的一般模式匹配框架。在一個或多個實施方式中,描述允許用戶指定二維模式的查詢語言。該查詢語言可以將正規(guī)表達式用于在日志106內(nèi)的行水平上的模式匹配。此外,該查詢語言可以允許用戶指定如何在日志106內(nèi)相對彼此來“布置”這些個別行。以下是涉及操作簡檔分析的日志106的三個示例,其中所述分析涉及更高階模式匹配并且可以使用在這里描述的查詢語言來完成
1)考慮到來自一組設備的日志,其中有多少具有錯誤代碼E的KBXXXXXX失敗的安裝嘗試、其后跟隨著具有錯誤代碼E’的KBXXXXXX的安裝失敗、最后跟隨著具有相同KB的安裝成功?
2)考慮到來自一組設備的日志以及具有特定錯誤代碼的失敗的三種已知情形,隔離不適合這些已知情形的具有相同錯誤代碼的失敗的日志。
3)考慮到來自搜索引擎的日志,潛在不愉快的用戶展示什么類型的瀏覽模式? 說明查詢構造器模塊108,其代表允許用戶構建查詢110的功能。例如,所示的查詢構
造器模塊108包括可視查詢構造器模塊112,其代表使用圖形用戶界面來構建查詢110的功能,其中圖形用戶界面可以被輸出,以便在顯示設備104上顯示。查詢構造器模塊108也被說明為包括文本查詢構造器模塊114來構建文本查詢。因而,查詢構造器模塊108被配置成允許用戶作為文本或采用在下面更詳細描述的可視查詢語言來操縱查詢110。完全或部分開發(fā)的查詢110能夠作為查詢文件來保存。例如,這些文件可以采用文本格式來存儲查詢。這些查詢文件隨后可以作為輸入被傳遞到查詢引擎116,以便處理。如所示的,查詢引擎116包括代表讀取日志106的功能的讀取器模塊118。例如, 讀取器模塊118可以被配置成讀取使用SQL查詢從數(shù)據(jù)庫中提取的作為純文本文件、結構化xml存儲的操作簡檔信息等等。讀取器模塊118隨后可以將這個數(shù)據(jù)提供給模式匹配引擎120,以便處理,諸如,從而將日志中的數(shù)據(jù)與查詢110相匹配。這種處理的結果隨后可以被提供給寫入器模塊122,以便被寫入存儲設備124。寫入器模塊122可以采用諸如純文本、結構化xml (具有來自過濾模式的變量名作為標簽)之類的各種方式來輸出匹配的模式,將結構化的結果插入數(shù)據(jù)庫表格,等等。查詢引擎116也被說明為包括查詢解析器126,其代表對查詢110 (例如,輸入查詢文件)進行解析以便處理輸入的功能。讀取器模塊118也被配置成允許用戶指定將被讀取并被處理的日志106(例如,輸入文件)的數(shù)量,這可能有助于改善可以處理該文件的速度。如下給出一些示例
1)在輸入文件中的前面“η”行上處理查詢。
2)在輸入文件中的最后“η”行上處理查詢。
3)將輸入文件拆分為各具有50行的大塊(chunk),并隨后在這些大塊中的每一個上處
理查詢。在一個或多個實施方式中,默認設置是處理整個輸入文件,但是也可以設想其他的默認實施方式。也可能希望在一次通過(single pass through)輸入數(shù)據(jù)文件中處理查詢,以顧及包含相對大量數(shù)據(jù)的輸入數(shù)據(jù)文件。包含有界的“預測先行(Iookahead)”的查詢110可以服從(amenable)為了正被處理的框架實例而相對于輸入文件中被保留在存儲器中的多個行進行的最優(yōu)化。另一方面,具有無界的預測先行的寫的不好的查詢在最壞的情況下可能導致跨越整個輸入文件的匹配。設計糟糕的查詢也可能發(fā)現(xiàn)眾多的匹配,這可能導致大量的部分匹配的框架存儲在存儲器中。因此,在一個或多個實施方式中,模式匹配引擎120可以將其狀態(tài)寫入臨時文件, 并輸出所遇到的運行時錯誤。用戶隨后可以選擇來如下面進一步描述的那樣對投影模式進行一種或多種改變,并且從保存的狀態(tài)中恢復查詢處理,從一開始重新啟動查詢處理,等等。例如,如果如下面進一步描述的那樣對過濾模式進行改變,用戶可以從該輸入的開頭重新啟動新查詢的處理。以這種方式,模式匹配引擎可能由于查詢的投影模式中不相容的投射操作而減少運行時錯誤的可能性。從計算的角度來看,這樣的運行時錯誤是昂貴的,這是因為這些錯誤可能在已匹配了過濾模式之后出現(xiàn),并且甚至有可能在已遍歷(traverse)輸入文件中的相對大量數(shù)據(jù)之后出現(xiàn)。結合涉及“框架語言”節(jié)開始的下面各節(jié)可以找到該環(huán)境的操作的進一步討論。一般來說,在這里描述的任何功能能夠使用軟件、固件、硬件(例如,固定邏輯電路)、人工處理或這些實施方式的組合來實現(xiàn)。在這里使用的術語“模塊”、“引擎”和“功能” 通常代表硬件、軟件、固件或其組合。在軟件實施方式的情況中,模塊、功能或引擎代表指令以及執(zhí)行由例如一個或多個處理器和/或功能塊之類的硬件指定的操作的硬件。框架語言
可以從兩種模式即過濾模式和投影模式中形成查詢。過濾模式指定將被匹配并被從輸入文件中提取的數(shù)據(jù)。投影模式指定將被寫入輸出文件的數(shù)據(jù)。可以被用于過濾模式的示例語法如下與相應的產(chǎn)生一起進行介紹。該語法的進一步定義遵循此介紹。
After-> ini
Repeats-> int「Π、?
Occuireiiccs-> 圓lit j" ‘ *
Var-> siring
Sir·> [ VarI i gex 丨 Var
Pal-> Str Str + Pal
BPat-> [After] [Repeats] Pat
Block-> BPat ; BPal + Block
Frarnc-> Block && Frame Block || Frame |11-'ramc | Block
Filter-> [Occurrences! Frarnc
由于正規(guī)表達式可以用于匹配在輸入文件的行內(nèi)的子串,在上面的語法中,可以將正規(guī)表達式(regex)與“string”和“int” 一起視為終端。“Mr”匹配輸入的行中的子串與“string”或“regex”??蛇x地,匹配可以被綁定到變量并稍后在過濾模式中或在投影模式中被引用。模式(Pat)包括“Str”或與“Pat”級聯(lián)的“Str”。模式與輸入數(shù)據(jù)文件中的一行
相匹配。塊包括標記模式(用于檢測塊內(nèi)的第一行的模式),其后跟隨著預測先行模式的列表。有界的預測先行模式涉及行,其是在與用于塊的標記模式相匹配的行之后(After)的行的指定數(shù)量。另一方面,無界的預測先行模式可以匹配在與用于該塊的標記模式相匹配的行之后的任何行。在實施方式中,如果沒有指定“After”,則這就是默認值。此外,模式可以與輸入內(nèi)的行的一次或多次重復出現(xiàn)(Itepeat)相匹配。在實施方式中,如果沒有指定 "Repeat",則默認情況是一個匹配。過濾模式(Frame)可以涉及塊和框架的結合(&&)或分離(I |)。過濾模式(Frame) 也可以涉及框架或塊模式的否定(!)。為過濾模式指定的“Occurrence”可以用于確定被返回的輸入中的匹配實例的數(shù)量。在實施方式中,默認情況是提取這些匹配中的每一個,但是可以設想其他的默認情況??蚣苷Z言的可視化表示可以用于構建和操縱查詢,如下面進一步描述的。 可以采用召回(recal 1)功能,其中過濾查詢中的約束變量可以稍后在相同的查詢中重新使用來自動匹配相同的內(nèi)容。如在以下各節(jié)的示例中所示的,此召回功能在跨越具有共同方面(例如,錯誤代碼、機器、用戶等等)的事件構造過濾模式中是有用的。投影模式用于控制如何在輸出中顯示與過濾模式相匹配的輸入文件中的內(nèi)容。例如,投影模式可以用來控制顯示匹配內(nèi)容中的哪些部分,如果有的話,以及如何在查詢輸出中顯示這些部分。以下元素可以在構成投影模式中使用。1)全局變量
全局變量可以用于過濾和投影模式中。全局變量的示例包括輸出文件名(Outfile)、在查詢處理開始時的時間戳(StartTimestamp)、在查詢處理結束時的時間戳(EndTimestamp) 以及當前日期(CurDate)。2)過濾模式中的約束變量
通過使用過濾模式中的約束變量作為投影模式的一部分,可以在輸出文件中顯示輸入文件中的數(shù)據(jù)。由于過濾模式中的變量可以與輸入文件中的文本的一個以上的實例相匹配,所以約束變量可以被配置為匹配值的數(shù)組。3)靜態(tài)文本/標簽
用戶可以在投影模式中輸入附加文本作為注釋或標簽。這些字符串可以“依現(xiàn)狀(as is)”被包括在所生成的輸出中。4)聚集函數(shù)
投影模式可以支持在約束變量上使用如同COUNT、DISTINCT、SUM、AVERAGE、MIN、MAX和 DATEDIFF之類的聚集函數(shù)。5)類型投射操作
由于輸入被讀取為字符串,所以在一些情況中用戶可能希望將一些匹配內(nèi)容投射到其他數(shù)據(jù)類型。支持從字符串到日期、時間戳、整數(shù)和十進制的變換。這些在各種情況中諸如在用戶對匹配內(nèi)容運行聚集函數(shù)時可能是有用的。上面的元素如下被反映在用于投影模式的示例語法中
權利要求
1.一種方法,包括經(jīng)由計算設備的用戶界面接收一個或多個輸入,其中所述一個或多個輸入描述指定將被匹配并被從日志中提取的數(shù)據(jù)的過濾模式以及指定將如何輸出使用過濾模式提取的數(shù)據(jù)的至少一部分的投影模式(1704);以及由所述計算設備從所述過濾模式和所述投影模式中形成被配置成分析日志的查詢 (1706)。
2.如權利要求1所述的方法,其中所述用戶界面被配置為圖形用戶界面,所述圖形用戶界面被配置成輸出一個或多個形狀,其中經(jīng)由所述一個或多個形狀,用戶可以安排來提供輸入。
3.如權利要求2所述的方法,其中所述一個或多個形狀被配置成指定所述日志中將被匹配的用于各自的所述塊的特定數(shù)據(jù);所述形狀一個到另一個的安排被配置成指定將被視為過濾模式的匹配的日志中的數(shù)據(jù)的安排。
4.如權利要求2所述的方法,其中所述一個或多個形狀被配置成指定將被輸出的利用所述過濾模式從所述日志中提取的數(shù)據(jù)中的用于各自的所述塊的特定數(shù)據(jù);以及所述形狀一個到另一個的安排被配置成指定將被視為投影模式的匹配的數(shù)據(jù)在從所述日志中提取的數(shù)據(jù)中的安排。
5.如權利要求2所述的方法,其中所述用戶界面被配置成指定將被綁定到利用各自的所述形狀表示的相應變量的值。
6.如權利要求1所述的方法,其中利用投影模式對于將如何輸出使用所述過濾模式提取的數(shù)據(jù)的至少一部分的指定包括對于是否將輸出所述數(shù)據(jù)的所述部分的指定。
7.如權利要求1所述的方法,其中所述用戶界面被配置成指定在所述日志中各自的所述過濾模式或投影模式的至少一部分的匹配的出現(xiàn)次數(shù),以發(fā)現(xiàn)對于各自的所述過濾模式或投影模式的匹配。
8.一種方法,包括由計算設備輸出用戶界面,所述用戶界面被配置成包括多個形狀,其中一個或多個形狀可配置成指定將利用所述形狀表示的數(shù)據(jù)并且一個到另一個被安排在所述用戶界面中, 以定義所述數(shù)據(jù)的模式(1702);以及由所述計算設備為一個或多個模式形成查詢,其中利用所述多個形狀一個到另一個的安排以及利用所述形狀表示的數(shù)據(jù)來定義所述模式,所述查詢將被用于分析日志。
9.如權利要求8所述的方法,其中所述一個或多個模式包括過濾模式,其指定將被匹配并被從所述日志中提取的數(shù)據(jù)。
10.如權利要求9所述的方法,其中所述一個或多個模式包括投影模式,其指定將如何輸出使用所述過濾模式提取的數(shù)據(jù)的至少一部分。
全文摘要
描述用于日志分析的模式匹配框架。在一個或多個實施方式中,經(jīng)由計算設備的用戶接口來接收一個或多個輸入,其中這一個或多個輸入描述過濾模式和投影模式,其中過濾模式指定將被匹配并被從日志中提取的數(shù)據(jù),而投影模式指定將如何輸出使用過濾模式提取的數(shù)據(jù)的至少一部分。由計算設備從過濾模式和投影模式中形成被配置成分析日志的查詢。
文檔編號G06F11/34GK102521316SQ20111039417
公開日2012年6月27日 申請日期2011年12月1日 優(yōu)先權日2010年12月1日
發(fā)明者R.阿布拉罕 申請人:微軟公司