本發(fā)明涉及計算機(jī)信息處理領(lǐng)域,具體而言,涉及一種用于處理非結(jié)構(gòu)化日志的方法及裝置。
背景技術(shù):
:通常情況下,分布式系統(tǒng)軟件開發(fā)人員開發(fā)程序時會打印日志消息來跟蹤系統(tǒng)的運(yùn)行狀態(tài),以幫助確定程序運(yùn)行時可能出現(xiàn)的問題。人們經(jīng)常使用分布式系統(tǒng)生成的系統(tǒng)日志進(jìn)行故障排除和問題診斷。但是,在短時間內(nèi)可能會有數(shù)千個失敗的作業(yè)發(fā)生。由于分布式系統(tǒng)的規(guī)模和復(fù)雜性日益增加,人工逐一檢查這些作業(yè)來檢測異常是不可行的?,F(xiàn)有技術(shù)中,大多數(shù)系統(tǒng)產(chǎn)生并收集日志進(jìn)行故障排除,開發(fā)人員和管理員通常通過人工檢查系統(tǒng)打印的日志來檢測異常情況。然而,隨著許多大規(guī)模和復(fù)雜應(yīng)用程序的部署,許多失敗的作業(yè)可能會在短時間內(nèi)發(fā)生,人工檢測發(fā)生異常的原因變得非常困難和低效。首先,通過人工檢查大規(guī)模分布式系統(tǒng)生成的大量日志消息來診斷異常是非常耗時的。其次,因?yàn)樵S多大型企業(yè)系統(tǒng)經(jīng)常使用第三方組件,以至于單個開發(fā)人員或系統(tǒng)管理員可能沒有足夠的對于整個系統(tǒng)的認(rèn)識。此外,分布式系統(tǒng)的復(fù)雜性日益增加,也進(jìn)一步降低了人工問題診斷的效率。由于許多失敗的作業(yè)可能是由相同的原因造成的,因此對基于日志分析進(jìn)而定位故障產(chǎn)生原因的技術(shù)有很大的需求,因此,需要一種新的用于處理非結(jié)構(gòu)化日志的方法及裝置。在所述
背景技術(shù):
部分公開的上述信息僅用于加強(qiáng)對本發(fā)明的背景的理解,因此它可以包括不構(gòu)成對本領(lǐng)域普通技術(shù)人員已知的現(xiàn)有技術(shù)的信息。技術(shù)實(shí)現(xiàn)要素:有鑒于此,本發(fā)明提供一種用于處理非結(jié)構(gòu)化日志的方法及裝置,能夠幫助開發(fā)人員大幅減少人工檢查失敗作業(yè)的數(shù)量,并自動初步分析故障原因,確保服務(wù)質(zhì)量。本發(fā)明的其他特性和優(yōu)點(diǎn)將通過下面的詳細(xì)描述變得顯然,或部分地通過本發(fā)明的實(shí)踐而習(xí)得。根據(jù)本發(fā)明的一方面,提出一種用于處理非結(jié)構(gòu)化日志的方法,該方法包括:獲取異常消息數(shù)據(jù);通過日志簽名對所述異常消息數(shù)據(jù)進(jìn)行故障來源分類,以提取故障參數(shù);通過所述故障參數(shù)與作業(yè)簽名對所述異常消息數(shù)據(jù)進(jìn)行標(biāo)記分類,以獲取分類數(shù)據(jù);以及根據(jù)分類數(shù)據(jù)對故障情況進(jìn)行處理。在本公開的一種示例性實(shí)施例中,獲取異常消息數(shù)據(jù),包括:對原始的異常消息數(shù)據(jù)進(jìn)行處理,以獲得異常消息數(shù)據(jù)。在本公開的一種示例性實(shí)施例中,對原始的異常消息數(shù)據(jù)進(jìn)行處理,以獲得異常消息數(shù)據(jù),包括以下至少一者:去除原始的異常消息數(shù)據(jù)中的噪音消息,以獲得異常消息數(shù)據(jù);去除原始的異常消息數(shù)據(jù)中冗余的異常消息,以獲得異常消息數(shù)據(jù);以及將原始的異常消息數(shù)據(jù)中嵌套的異常消息替換為內(nèi)層異常消息,以獲得異常消息數(shù)據(jù)。在本公開的一種示例性實(shí)施例中,通過日志簽名對所述異常消息數(shù)據(jù)進(jìn)行故障來源分類,以提取故障參數(shù),包括:通過編輯距離將異常消息分類,生成故障來源分類數(shù)據(jù);提取故障來源分類數(shù)據(jù)中每一個分類的最長公共子串;以及通過故障來源分類數(shù)據(jù)與最長公共子串提取故障參數(shù)。在本公開的一種示例性實(shí)施例中,通過編輯距離將異常消息分類,生成故障來源分類數(shù)據(jù),包括:獲取每兩個異常消息之間的編輯距離;確定閾值;以及根據(jù)閾值對異常消息數(shù)據(jù)進(jìn)行分類,以生成故障來源分類數(shù)據(jù)。在本公開的一種示例性實(shí)施例中,提取故障來源分類數(shù)據(jù)中每一個分類的最長公共子串,包括:通過最長公共子序列算法提取提取故障來源分類數(shù)據(jù)中每一個分類的最長公共子串。在本公開的一種示例性實(shí)施例中,通過故障來源分類數(shù)據(jù)與最長公共子串提取故障參數(shù),包括:通過故障來源分類數(shù)據(jù)中每一個分類中的數(shù)據(jù)與最長公共子串進(jìn)行比較,以提取第一故障參數(shù);通過第一故障參數(shù)與預(yù)設(shè)的參數(shù)模式進(jìn)行比較,以獲取故障參數(shù)。在本公開的一種示例性實(shí)施例中,通過所述故障參數(shù)與作業(yè)簽名對所述異常消息數(shù)據(jù)進(jìn)行標(biāo)記分類,以獲取分類數(shù)據(jù),包括:通過故障參數(shù)確定每一個異常消息的作業(yè)簽名;通過作業(yè)簽名對異常消息數(shù)據(jù)進(jìn)行標(biāo)記分類,以獲取第二數(shù)據(jù);將第二數(shù)據(jù)進(jìn)行統(tǒng)計處理以獲取分類數(shù)據(jù)。在本公開的一種示例性實(shí)施例中,根據(jù)分類數(shù)據(jù)對故障情況進(jìn)行處理,包括以下情況至少一者:通過作業(yè)出現(xiàn)次數(shù)對故障情況進(jìn)行處理;通過作業(yè)類別出現(xiàn)次數(shù)對故障情況進(jìn)行處理;以及通過消息出現(xiàn)次數(shù)對故障情況進(jìn)行處理。在本公開的一種示例性實(shí)施例中,還包括:通過分類數(shù)據(jù)與預(yù)設(shè)數(shù)據(jù)對故障情況進(jìn)行分析。根據(jù)本發(fā)明的一方面,提出一種用于處理非結(jié)構(gòu)化日志的裝置,該裝置包括:接收模塊,用于獲取異常消息數(shù)據(jù);故障來源分類模塊,用于通過日志簽名對異常消息數(shù)據(jù)進(jìn)行故障來源分類,以提取故障參數(shù);標(biāo)記分類模塊,用于通過故障參數(shù)與作業(yè)簽名對異常消息數(shù)據(jù)進(jìn)行標(biāo)記分類,以獲取分類數(shù)據(jù);以及評估模塊,用于根據(jù)分類數(shù)據(jù)對故障情況進(jìn)行處理。在本公開的一種示例性實(shí)施例中,還包括:分析模塊,用于通過分類數(shù)據(jù)與預(yù)設(shè)數(shù)據(jù)對故障情況進(jìn)行分析。根據(jù)本發(fā)明的一方面,提出一種電子設(shè)備,該電子設(shè)備包括:一個或多個處理器;存儲裝置,用于存儲一個或多個程序;當(dāng)一個或多個程序被一個或多個處理器執(zhí)行,使得一個或多個處理器實(shí)現(xiàn)如上文的方法。根據(jù)本發(fā)明的一方面,提出一種計算機(jī)可讀介質(zhì),其上存儲有計算機(jī)程序,其特征在于,程序被處理器執(zhí)行時實(shí)現(xiàn)如上文中的方法。根據(jù)本發(fā)明的用于處理非結(jié)構(gòu)化日志的方法及裝置,能夠幫助開發(fā)人員大幅減少人工檢查失敗作業(yè)的數(shù)量,并自動初步分析故障原因,確保服務(wù)質(zhì)量。應(yīng)當(dāng)理解的是,以上的一般描述和后文的細(xì)節(jié)描述僅是示例性的,并不能限制本發(fā)明。附圖說明通過參照附圖詳細(xì)描述其示例實(shí)施例,本發(fā)明的上述和其它目標(biāo)、特征及優(yōu)點(diǎn)將變得更加顯而易見。下面描述的附圖僅僅是本發(fā)明的一些實(shí)施例,對于本領(lǐng)域的普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖1是根據(jù)一示例性實(shí)施例示出的一種用于處理非結(jié)構(gòu)化日志的方法的流程圖。圖2a-2c是根據(jù)另一示例性實(shí)施例示出的一種用于處理非結(jié)構(gòu)化日志的方法的參數(shù)提取示例。圖3a-3c是根據(jù)另一示例性實(shí)施例示出的一種用于處理非結(jié)構(gòu)化日志的方法的參數(shù)提取示例。圖4a-4d是根據(jù)另一示例性實(shí)施例示出的一種用于處理非結(jié)構(gòu)化日志的方法的參數(shù)提取示例。圖5是根據(jù)另一示例性實(shí)施例示出的一種用于處理非結(jié)構(gòu)化日志的方法的參數(shù)提取示例。圖6是根據(jù)另一示例性實(shí)施例示出的一種用于處理非結(jié)構(gòu)化日志的方法的流程圖。圖7是根據(jù)一示例性實(shí)施例示出的一種用于處理非結(jié)構(gòu)化日志的裝置的框圖。圖8是根據(jù)一示例性實(shí)施例示出的一種電子設(shè)備的框圖。圖9是根據(jù)一示例性實(shí)施例示出的一種計算機(jī)可讀介質(zhì)示意圖。具體實(shí)施例現(xiàn)在將參考附圖更全面地描述示例實(shí)施例。然而,示例實(shí)施例能夠以多種形式實(shí)施,且不應(yīng)被理解為限于在此闡述的實(shí)施例;相反,提供這些實(shí)施例使得本發(fā)明將全面和完整,并將示例實(shí)施例的構(gòu)思全面地傳達(dá)給本領(lǐng)域的技術(shù)人員。在圖中相同的附圖標(biāo)記表示相同或類似的部分,因而將省略對它們的重復(fù)描述。此外,所描述的特征、結(jié)構(gòu)或特性可以以任何合適的方式結(jié)合在一個或更多實(shí)施例中。在下面的描述中,提供許多具體細(xì)節(jié)從而給出對本發(fā)明的實(shí)施例的充分理解。然而,本領(lǐng)域技術(shù)人員將意識到,可以實(shí)踐本發(fā)明的技術(shù)方案而沒有特定細(xì)節(jié)中的一個或更多,或者可以采用其它的方法、組元、裝置、步驟等。在其它情況下,不詳細(xì)示出或描述公知方法、裝置、實(shí)現(xiàn)或者操作以避免模糊本發(fā)明的各方面。附圖中所示的方框圖僅僅是功能實(shí)體,不一定必須與物理上獨(dú)立的實(shí)體相對應(yīng)。即,可以采用軟件形式來實(shí)現(xiàn)這些功能實(shí)體,或在一個或多個硬件模塊或集成電路中實(shí)現(xiàn)這些功能實(shí)體,或在不同網(wǎng)絡(luò)和/或處理器裝置和/或微控制器裝置中實(shí)現(xiàn)這些功能實(shí)體。附圖中所示的流程圖僅是示例性說明,不是必須包括所有的內(nèi)容和操作/步驟,也不是必須按所描述的順序執(zhí)行。例如,有的操作/步驟還可以分解,而有的操作/步驟可以合并或部分合并,因此實(shí)際執(zhí)行的順序有可能根據(jù)實(shí)際情況改變。應(yīng)理解,雖然本文中可能使用術(shù)語第一、第二、第三等來描述各種組件,但這些組件不應(yīng)受這些術(shù)語限制。這些術(shù)語乃用以區(qū)分一組件與另一組件。因此,下文論述的第一組件可稱為第二組件而不偏離本公開概念的教示。如本文中所使用,術(shù)語“及/或”包括相關(guān)聯(lián)的列出項(xiàng)目中的任一個及一或多者的所有組合。本領(lǐng)域技術(shù)人員可以理解,附圖只是示例實(shí)施例的示意圖,附圖中的模塊或流程并不一定是實(shí)施本發(fā)明所必須的,因此不能用于限制本發(fā)明的保護(hù)范圍。下面結(jié)合附圖對本公開示例實(shí)施方式進(jìn)行詳細(xì)說明。圖1是根據(jù)一示例性實(shí)施例示出的一種用于處理非結(jié)構(gòu)化日志的方法的流程圖。如圖1所示,在s102中,獲取異常消息數(shù)據(jù)。大規(guī)模分布式系統(tǒng)正在成為it行業(yè)的重要引擎。對于大型商業(yè)系統(tǒng),執(zhí)行異常(包括錯誤行為或意外的長時間響應(yīng)時間)通常會導(dǎo)致用戶不滿或利益損失。這些異常可能是由分布式系統(tǒng)組件中的硬件問題,網(wǎng)絡(luò)通信擁塞或軟件錯誤引起的。在發(fā)生失敗的作業(yè)時,其對應(yīng)的日志文件總是包含一些異常消息,這可能部分地解釋了異常的原因。在本申請中,將這些異常消息稱為trap消息。本申請中的異常消息包括大型分布式系統(tǒng)產(chǎn)生的異常消息。日志文件中包含有trap消息,而且,在每個日志消息都具有指示其生成時間的對應(yīng)時間戳。操作系統(tǒng)會使用線程id或請求id對日志進(jìn)行重新編碼,以區(qū)分不同線程或工作流的日志。大多數(shù)現(xiàn)代操作系統(tǒng)(如windows和linux)和平臺都提供了線程id。因此,可以使用順序日志來提取異常消息。此外,每個日志條目都包含作業(yè)id屬性,它記錄日志條目屬于哪個作業(yè)。在s104中,通過日志簽名對異常消息數(shù)據(jù)進(jìn)行故障來源分類,以提取故障參數(shù)。雖然失敗的作業(yè)日志中可能存在大量的異常消息,但是這些異常消息中有很多是由相同的源代碼語句打印出來。在本實(shí)施例中認(rèn)為同一條源代碼語句打印出來的消息是同一個類別的??衫鐚惓O⒎诸惖讲煌念悇e中,這些類別可例如能夠說明故障的來源,通過這些分類可以進(jìn)一步提取每個異常消息的故障參數(shù)。這些故障參數(shù)通常會指出錯誤的對象,錯誤對象可能是網(wǎng)站、服務(wù)器id等。在s106中,通過故障參數(shù)與作業(yè)簽名對異常消息數(shù)據(jù)進(jìn)行標(biāo)記分類,以獲取分類數(shù)據(jù)。每個失敗的作業(yè)日志文件都可能包含一些異常消息。所有失敗的作業(yè)日志文件中的所有異常消息都按照上述異常消息分類方法進(jìn)行分類。如果某個作業(yè)日志文件與另一個文件包含相同的異常消息類別,則兩個作業(yè)日志文件具有相同的作業(yè)類別。在本申請中,將每個作業(yè)的異常消息類別集合稱為“作業(yè)簽名”。通過上文中的故障參數(shù)與作業(yè)簽名繼續(xù)對異常消息進(jìn)行分類,本次分類可例如,通過故障參數(shù)對異常消息進(jìn)行標(biāo)記??衫纾煌墓收显?qū)?yīng)著不同的故障參數(shù),將不同的故障參數(shù)分別設(shè)定標(biāo)識,通過標(biāo)識為異常消息進(jìn)行標(biāo)記分類,以獲取分類數(shù)據(jù)。在s108中,根據(jù)分類數(shù)據(jù)對故障情況進(jìn)行處理??衫?,根據(jù)分類數(shù)據(jù),統(tǒng)計不同的故障來源的數(shù)量以及不同的故障情況的數(shù)量,可例如,根據(jù)預(yù)先設(shè)定的優(yōu)先級,分別處理不同的故障。還可例如,根據(jù)數(shù)量的多少,依次處理故障,還可例如,根據(jù)故障帶來的影響大小,進(jìn)行故障處理,本發(fā)明不以此為限。根據(jù)本發(fā)明的用于處理非結(jié)構(gòu)化日志的方法,通過將異常消息進(jìn)行故障分類提取故障參數(shù),進(jìn)而通過故障參數(shù)對異常消息進(jìn)行標(biāo)記分類的方式,能夠幫助開發(fā)人員大幅減少人工檢查失敗作業(yè)的數(shù)量,并初步定位故障原因,確保服務(wù)質(zhì)量。應(yīng)清楚地理解,本發(fā)明描述了如何形成和使用特定示例,但本發(fā)明的原理不限于這些示例的任何細(xì)節(jié)。相反,基于本發(fā)明公開的內(nèi)容的教導(dǎo),這些原理能夠應(yīng)用于許多其它實(shí)施例。在本公開的一種示例性實(shí)施例中,獲取異常消息數(shù)據(jù),包括:對原始的異常消息數(shù)據(jù)進(jìn)行處理,以獲得異常消息數(shù)據(jù)。在本公開的一種示例性實(shí)施例中,對原始的異常消息數(shù)據(jù)進(jìn)行處理,以獲得異常消息數(shù)據(jù),包括以下至少一者:去除原始的異常消息數(shù)據(jù)中的噪音消息,以獲得異常消息數(shù)據(jù);去除原始的異常消息數(shù)據(jù)中冗余的異常消息,以獲得異常消息數(shù)據(jù);以及將原始的異常消息數(shù)據(jù)中嵌套的異常消息替換為內(nèi)層異常消息,以獲得異常消息數(shù)據(jù)。去除原始的異常消息數(shù)據(jù)中的噪音消息,以獲得異常消息數(shù)據(jù)可例如通過以下方式:作業(yè)的日志文件可能包含一些實(shí)際上不應(yīng)屬于該作業(yè)的噪音消息。這是因?yàn)樵诜植际较到y(tǒng)中,許多作業(yè)同時運(yùn)行,如果任何日志條目沒有記錄正確的作業(yè)id,則系統(tǒng)可能會將其寫入到實(shí)際上是另一個作業(yè)的日志文件中??衫缛绫?所示:processidthreadidjobidmessaeemachinename64962510551060executejobforexecution.gfe01216-00878604-1thejobhasbeenready.cca03205-00364962510551060updatingbuildversion.gfe01216-008649625-1trap:......gfe01216-00878604-1trap:......cca03205-003上表是日志文件“10551060.log”的日志條目的一部分。在這些屬性中,“processid”,“threadid”和“machinename”共同區(qū)分不同的工作流。在上面的示例中,有兩個不同的線程:“6495,25,gfe01216-008”和“7860,4,cca03205-003”。噪音消息刪除規(guī)則可例如為:如果某個工作流的日志條目沒有包含與作業(yè)名稱相同正確作業(yè)id,那么將該線程的消息視為有噪聲的消息。在上面的示例中,“7860,4,cca03205-003”工作流程的所有jobids為-1,那么我們將“7860,4,cca03205-003”工作流的消息視為噪聲消息,并將其刪除。處理完畢后,剩下的日志條目如表2所示:processidthreadidjobidmessagemachinename64962510551060executejobforexecution.gfe01216-00864962510551060updatingbuildversion.gfe01216-008649625-1trap:......gfe01216-008去除原始的異常消息數(shù)據(jù)中冗余的異常消息,以獲得異常消息數(shù)據(jù)可例如通過以下方式:刪除噪音消息后,需要刪除日志文件的冗余trap消息。例如,在刪除有噪聲的消息后,日志文件具有以下trap消息:a.trap:retryexception:[machine:cca23510-009:trap:exception[gridretryexception:failedtoadjustupauserrightspermissions.trap_details:errorfile[c:\grid\sharepoint_common\gridsitecollection.psl],errorline[1495:throw$errorrecord].trap_action:rethrow.].trap_action:job1024232willretry.b.trap:exception[gridretryexception:failedtoadjustupauserrightspermissions.trap_details:errorfile[c:\grid\sharepoint_common\gridsitecollection.ps1],errorline[1495:throw$errorrecord].trap_action:rethrow.從中可以發(fā)現(xiàn)更長的trap消息a恰好包含較短的trap消息b??衫鐚⑤^短的trap消息b作為該作業(yè)的根異常,并將較長的trap消息視為冗余trap消息。冗余trap消息刪除規(guī)則可例如為,如果記錄為“trap1”的某個trap消息包含長度短于“trap1”長度的該日志文件的任何一個trap消息,那么可例如將“trap1”視為冗余的trap消息,需要從日志文件中刪除“trap1”。刪除多余的trap消息后,上面的示例包含剩余的trap為:trap:exception[gridretryexception:failedtoadjustupauserrightspermissions.trap_details:errorfile[c:\grid\sharepoint_common\gridsitecollection.ps1],errorline[1495:throw$errorrecord].trap_action:rethrow.將原始的異常消息數(shù)據(jù)中嵌套的異常消息替換為內(nèi)層異常消息,以獲得異常消息數(shù)據(jù)可例如通過以下方式:刪除日志文件的冗余trap消息后,如果仍然存在嵌套的trap消息,則需要將其替換為內(nèi)層trap消息。例如,刪除冗余消息后,日志文件包含以下trap消息:trap:retryexception:[machine:cca23510-009:trap:exception[gridretryexception:failedtoadjustupauserrightspermissions.trap_details:errorfile[c:\grid\sharepoint_common\gridsitecollection.ps1],errorline[1495:throw$errorrecord].trap_action:rethrow.].trap_action:job1024232willretry.從中可以發(fā)現(xiàn)該trap消息是一個嵌套的消息。可例如認(rèn)為內(nèi)層trap是該trap的根本原因,并用其內(nèi)層trap替換trap。因此,這個過程的規(guī)則可例如為,如果一個trap消息是一個嵌套的消息,我們用其內(nèi)層trap替換。在使用內(nèi)層trap替換嵌套的trap之后,上面的示例包含剩余的trap為:trap:exception[gridretryexception:failedtoadjustupauserrightspermissions.trap_details:errorfile[c:\grid\sharepoint_common\gridsitecollection.ps1],errorline[1495:throw$errorrecord].trap_action:rethrow.根據(jù)本發(fā)明的用于處理非結(jié)構(gòu)化日志的方法,通過將原始的異常消息進(jìn)行去除噪聲消息、去除冗余消息以及去除嵌套消息等操作,能夠在后續(xù)異常消息處理時,提升處理效率,節(jié)約處理時間。在本公開的一種示例性實(shí)施例中,通過日志簽名對異常消息數(shù)據(jù)進(jìn)行故障來源分類,以提取故障參數(shù),包括:通過編輯距離將異常消息分類,生成故障來源分類數(shù)據(jù);提取故障來源分類數(shù)據(jù)中每一個分類的最長公共子串;以及通過故障來源分類數(shù)據(jù)與最長公共子串提取故障參數(shù)。在本公開的一種示例性實(shí)施例中,通過編輯距離將異常消息分類,生成故障來源分類數(shù)據(jù),包括:獲取每兩個異常消息之間的編輯距離;確定閾值;以及根據(jù)閾值對異常消息數(shù)據(jù)進(jìn)行分類,以生成故障來源分類數(shù)據(jù)??衫缤ㄟ^如下方式:a.計算每個兩個trap消息的編輯距離給定兩個字符串,它們之間的編輯距離是從一個字符串轉(zhuǎn)換為另一個字符串所需編輯操作的最小數(shù)量。最常見的允許的編輯操作是:(i)將字符插入到字符串中;(ii)從字符串中刪除字符,(iii)用另一個字符替換字符串的字符。在本實(shí)施例中將一個異常消息的詞作為一個字符來計算編輯距離。例如,字符串“iamdavid”和“iamjohn”的編輯距離是1,而不是5。把一個詞作為編輯距離的單位,因?yàn)橛眠@種方式計算的編輯距離可以更好地反映兩個異常消息的相似度。通過上述處理,可以獲得每兩個trap消息的編輯距離。b.分析這些編輯距離并設(shè)置閾值設(shè)置編輯距離的閾值,以判斷任何兩個trap消息是否屬于同一類別。首先對這些編輯距離進(jìn)行分類,可例如通過人工觀察設(shè)置編輯距離的閾值。如果觀察到較高的編輯距離和較低編輯距離之間存在很大差距,可例如將它們之間的值設(shè)置為閾值。c.根據(jù)閾值對trap消息進(jìn)行分類如果兩個trap消息的編輯距離低于上一步設(shè)置的閾值,那么可例如將這兩個trap消息認(rèn)為是屬于同一類的,基于此可以將trap消息分類到不同的類別。各個文件之間的編輯距離可例如如表3所示,abcda0b10c13150d151620對編輯距離進(jìn)行排序:1,2,13,15,15,16??梢园l(fā)現(xiàn),較高的值和較低的值之間存在很大的差距,因此,可例如將閾值設(shè)置為5。在本公開的一種示例性實(shí)施例中,提取故障來源分類數(shù)據(jù)中每一個分類的最長公共子串,包括:通過最長公共子序列算法提取提取故障來源分類數(shù)據(jù)中每一個分類的最長公共子串??衫缤ㄟ^如下方式:在trap自動消息分類之后,得到故障來源分類數(shù)據(jù),在參數(shù)提取之前提取每個類別的最長公共子串。a.初步提取每個類別的最長公共子串通過最長公共子序列算法(longestcommonsubsequence,lcs)提取最長公共子串,在本實(shí)施例中用lcs作為lcs算法的單位。例如,“failedtoconnectdatabaseserversql181051-020”和“failedtoconnectdatabaseserversql181051-023”的最長公共子串為“failedtoconnectdatabaseserver”。可例如,某trap消息如圖2a所示,執(zhí)行l(wèi)cs算法后,提取該類別的初步最長公共子串如圖2b所示。b.再次提取每個類別最長公共子串在通過lcs算法初步提取lcs之后,該lcs中也可能存在潛在的參數(shù)。在lcs中刪除這些參數(shù),并獲得每個trap消息類別準(zhǔn)確的最長公共子串。這里可例如編寫一個存儲可能的參數(shù)模式的配置文件。將初步lcs與配置文件中的參數(shù)進(jìn)行模式匹配。刪除可以匹配任何參數(shù)模式的子字符串,并獲得準(zhǔn)確的lcs。將上文中得到的初步lcs與配置文件中所有的參數(shù)模式進(jìn)行比較,可例如,發(fā)現(xiàn)lcs字符串中包含于參數(shù)匹配的“content-53990”。所以將這個lcs字符串縮短如下,獲得更加精準(zhǔn)的lcs:trap:id=incontentdatabaseondatabaseservertrap_action:rethrow.c.基于lcs提取每個類別的公共子串集合(日志簽名)在獲得lcs后,將lcs與該類別的每個trap消息進(jìn)行比較。然后可以通過分析參數(shù)和trap消息的不同部分來提取公共子串集合,由于它能表征同一消息類別的特征,在本發(fā)明實(shí)施例中將其稱為“日志簽名”。日志簽名可用于準(zhǔn)確提取每個trap消息的參數(shù)。將再次提取的lcs與此類別中的每個trap消息進(jìn)行比較,獲得公共子串集合。上文的trap消息類別的最終公共子串集合如圖2c所示。在本公開的一種示例性實(shí)施例中,通過故障來源分類數(shù)據(jù)與最長公共子串提取故障參數(shù),包括:通過故障來源分類數(shù)據(jù)中每一個分類中的數(shù)據(jù)與最長公共子串進(jìn)行比較,以提取第一故障參數(shù);通過第一故障參數(shù)與預(yù)設(shè)的參數(shù)模式進(jìn)行比較,以獲取故障參數(shù)。在得到故障來源分類數(shù)據(jù)中每個類別的公共子串集合后,可以提取每個trap消息的參數(shù)。a.通過將每個trap消息與公共子串集合進(jìn)行比較來提取可能的參數(shù),將每個兩個相鄰公共子串之間的字符串視為可能的參數(shù)。b.將每個可能的參數(shù)與參數(shù)模式進(jìn)行比較,如果可能的參數(shù)與參數(shù)模式匹配,則打印出與模式完全匹配的子串。否則,將整個參數(shù)字符串作為參數(shù)??衫?,通過提取公共子串得到如圖3a的結(jié)果,將公共子串集合與每條trap消息比較,得到可能的參數(shù)如圖3b所示。每個可能的參數(shù)與配置文件中的參數(shù)模式進(jìn)行匹配,如果匹配成功,則輸出匹配的參數(shù)。可例如,輸出結(jié)果為sql181051-020,而不是帶引號的“sql181051-020”,最終故障參數(shù)可例如圖3c所示。在本公開的一種示例性實(shí)施例中,通過故障參數(shù)與作業(yè)簽名對異常消息數(shù)據(jù)進(jìn)行標(biāo)記分類,以獲取分類數(shù)據(jù),包括:通過故障參數(shù)確定每一個異常消息的作業(yè)簽名;通過作業(yè)簽名對異常消息數(shù)據(jù)進(jìn)行標(biāo)記分類,以獲取第二數(shù)據(jù);將第二數(shù)據(jù)進(jìn)行統(tǒng)計處理以獲取分類數(shù)據(jù)??衫纾?個作業(yè)日志文件,他們的異常消息內(nèi)容如圖4a所示。進(jìn)行trap消息分類之后,所有的trap消息被分為如圖4b所示的類別??梢詮闹械弥鳂I(yè)日志中,每條trap消息屬于哪一類別??衫缛鐖D4c所示。進(jìn)而獲得每個作業(yè)日志文件的作業(yè)簽名如圖4d所示。如果一個作業(yè)與另一個作業(yè)具有相同的trap消息類別集合,即他們具有相同的作業(yè)簽名,則可認(rèn)為這兩個作業(yè)具有相同的作業(yè)類別。進(jìn)而可以將這些作業(yè)日志歸類為幾個作業(yè)類別,這個作業(yè)類別以及分類相關(guān)的數(shù)據(jù),即為分類數(shù)據(jù):jobcategory1:{job1,job4}jobcategory2:{job2,job3}在本公開的一種示例性實(shí)施例中,根據(jù)分類數(shù)據(jù)對故障情況進(jìn)行處理,包括以下情況至少一者:通過作業(yè)出現(xiàn)次數(shù)對故障情況進(jìn)行處理;通過作業(yè)類別出現(xiàn)次數(shù)對故障情況進(jìn)行處理;以及通過消息出現(xiàn)次數(shù)對故障情況進(jìn)行處理。異常消息類別的重要性可例如通過以下標(biāo)準(zhǔn)進(jìn)行評估:·作業(yè)出現(xiàn)次數(shù),即出現(xiàn)該異常消息類別的作業(yè)總數(shù)。·作業(yè)類別出現(xiàn)次數(shù),即出現(xiàn)該異常消息類別的作業(yè)類別的總數(shù)?!は⒊霈F(xiàn)次數(shù),即屬于該異常消息類別的消息出現(xiàn)總數(shù)。若相應(yīng)的出現(xiàn)次數(shù)較高,則認(rèn)為該異常類別的重要性偏高。以上文中提到的數(shù)據(jù)為例,每個trap類別的trap消息內(nèi)容如圖5所示。將上文中的分類數(shù)據(jù)進(jìn)行統(tǒng)計,獲得統(tǒng)計結(jié)果可例如如表4所示。在本公開的一種示例性實(shí)施例中,還包括:通過分類數(shù)據(jù)與預(yù)設(shè)數(shù)據(jù)對故障情況進(jìn)行分析。預(yù)設(shè)數(shù)據(jù)可例如為關(guān)鍵對象的參數(shù)模式,預(yù)設(shè)數(shù)據(jù)可例如在配置文件中預(yù)定義的,如數(shù)據(jù)庫服務(wù)器“sql181051-024”,內(nèi)容數(shù)據(jù)庫“content_53987”和站點(diǎn)集合id“ca7867d5-e058-4987-b4e0-b060e534c1bc”,這些數(shù)據(jù)可例如為預(yù)設(shè)數(shù)據(jù)。這些預(yù)設(shè)數(shù)據(jù)可能出現(xiàn)在不同的作業(yè)日志文件中。通過關(guān)鍵對象統(tǒng)計,可以得到相應(yīng)對象參數(shù)的作業(yè)分布情況。對于經(jīng)常出現(xiàn)在失敗作業(yè)中的對象參數(shù),可以優(yōu)先進(jìn)行分析調(diào)查。從上文中故障參數(shù)提取步驟得到故障參數(shù)分析結(jié)果。一些實(shí)際配置日志的對象參數(shù)分析結(jié)果可例如如下:表5,top3異常數(shù)據(jù)庫服務(wù)器數(shù)據(jù)庫服務(wù)器名稱失敗作業(yè)數(shù)量作業(yè)占比sql181051-02721824%sql181051-021334%sql181051-023324%表6,top3異常cca服務(wù)器cca服務(wù)器名稱失敗作業(yè)數(shù)量作業(yè)占比cca111092-000222%cca111092-001202%cca111092-002202%根據(jù)本發(fā)明的用于處理非結(jié)構(gòu)化日志的方法,通過異常消息分類,進(jìn)而進(jìn)行異常消息類別的重要性評估和關(guān)鍵對象分析,可以快速初步定位失敗原因及對象。圖6是根據(jù)另一示例性實(shí)施例示出的一種用于處理非結(jié)構(gòu)化日志的方法的流程圖。如圖所示,在s602中,進(jìn)行異常消息預(yù)處理。在s604中,基于日志簽名的異常消息分類。在s606中,基于作業(yè)簽名的作業(yè)分類。在s608中,異常消息類別的重要性評估(可例如,根據(jù)實(shí)際情況需要選擇進(jìn)行)。在s610中,關(guān)鍵對象分析(可例如,根據(jù)實(shí)際情況需要選擇進(jìn)行)。根據(jù)本發(fā)明的用于處理非結(jié)構(gòu)化日志的方法,提高故障檢測人員對失敗作業(yè)分析的效率、協(xié)助確定作業(yè)分析優(yōu)先級、自動初步分析故障原因、確保服務(wù)質(zhì)量,而有效降低了大型商業(yè)分布式系統(tǒng)中執(zhí)行異常(包括但不限于:錯誤行為或意外的長時間響應(yīng)時間,分布式系統(tǒng)組件中的硬件問題,網(wǎng)絡(luò)通信擁塞或軟件錯誤)導(dǎo)致的用戶不滿或利益損失。本領(lǐng)域技術(shù)人員可以理解實(shí)現(xiàn)上述實(shí)施例的全部或部分步驟被實(shí)現(xiàn)為由cpu執(zhí)行的計算機(jī)程序。在該計算機(jī)程序被cpu執(zhí)行時,執(zhí)行本發(fā)明提供的上述方法所限定的上述功能。所述的程序可以存儲于一種計算機(jī)可讀存儲介質(zhì)中,該存儲介質(zhì)可以是只讀存儲器,磁盤或光盤等。此外,需要注意的是,上述附圖僅是根據(jù)本發(fā)明示例性實(shí)施例的方法所包括的處理的示意性說明,而不是限制目的。易于理解,上述附圖所示的處理并不表明或限制這些處理的時間順序。另外,也易于理解,這些處理可以是例如在多個模塊中同步或異步執(zhí)行的。下述為本發(fā)明裝置實(shí)施例,可以用于執(zhí)行本發(fā)明方法實(shí)施例。對于本發(fā)明裝置實(shí)施例中未披露的細(xì)節(jié),請參照本發(fā)明方法實(shí)施例。圖7是根據(jù)一示例性實(shí)施例示出的一種用于處理非結(jié)構(gòu)化日志的裝置的框圖。接收模塊702用于獲取異常消息數(shù)據(jù)。故障來源分類模塊704用于通過日志簽名對異常消息數(shù)據(jù)進(jìn)行故障來源分類,以提取故障參數(shù)。標(biāo)記分類模塊706用于通過故障參數(shù)與作業(yè)簽名對異常消息數(shù)據(jù)進(jìn)行標(biāo)記分類,以獲取分類數(shù)據(jù)。評估模塊708用于根據(jù)分類數(shù)據(jù)對故障情況進(jìn)行處理。在本公開的一種示例性實(shí)施例中,還包括:分析模塊(圖中未示出)用于通過分類數(shù)據(jù)與預(yù)設(shè)數(shù)據(jù)對故障情況進(jìn)行分析。根據(jù)本發(fā)明的用于處理非結(jié)構(gòu)化日志的裝置,通過將異常消息進(jìn)行故障分類提取故障參數(shù),進(jìn)而通過故障參數(shù)對異常消息進(jìn)行標(biāo)記分類的方式,能夠幫助開發(fā)人員大幅減少人工檢查失敗作業(yè)的數(shù)量,并初步定位故障原因,確保服務(wù)質(zhì)量。圖8是根據(jù)一示例性實(shí)施例示出的一種電子設(shè)備的框圖。下面參照圖8來描述根據(jù)本發(fā)明的這種實(shí)施方式的電子設(shè)備400。圖8顯示的電子設(shè)備400僅僅是一個示例,不應(yīng)對本發(fā)明實(shí)施例的功能和使用范圍帶來任何限制。如圖8所示,電子設(shè)備400以通用計算設(shè)備的形式表現(xiàn)。電子設(shè)備400的組件可以包括但不限于:至少一個處理單元410、至少一個存儲單元420、連接不同系統(tǒng)組件(包括存儲單元420和處理單元410)的總線430、顯示單元440等。其中,所述存儲單元存儲有程序代碼,所述程序代碼可以被所述處理單元410執(zhí)行,使得所述處理單元410執(zhí)行本說明書上述電子處方流轉(zhuǎn)處理方法部分中描述的根據(jù)本發(fā)明各種示例性實(shí)施方式的步驟。例如,所述處理單元410可以執(zhí)行如圖1中所示的步驟。所述存儲單元420可以包括易失性存儲單元形式的可讀介質(zhì),例如隨機(jī)存取存儲單元(ram)5201和/或高速緩存存儲單元4202,還可以進(jìn)一步包括只讀存儲單元(rom)4203。所述存儲單元420還可以包括具有一組(至少一個)程序模塊4205的程序/實(shí)用工具4204,這樣的程序模塊4205包括但不限于:操作系統(tǒng)、一個或者多個應(yīng)用程序、其它程序模塊以及程序數(shù)據(jù),這些示例中的每一個或某種組合中可能包括網(wǎng)絡(luò)環(huán)境的實(shí)現(xiàn)??偩€430可以為表示幾類總線結(jié)構(gòu)中的一種或多種,包括存儲單元總線或者存儲單元控制器、外圍總線、圖形加速端口、處理單元或者使用多種總線結(jié)構(gòu)中的任意總線結(jié)構(gòu)的局域總線。電子設(shè)備400也可以與一個或多個外部設(shè)備400(例如鍵盤、指向設(shè)備、藍(lán)牙設(shè)備等)通信,還可與一個或者多個使得用戶能與該電子設(shè)備400交互的設(shè)備通信,和/或與使得該電子設(shè)備400能與一個或多個其它計算設(shè)備進(jìn)行通信的任何設(shè)備(例如路由器、調(diào)制解調(diào)器等等)通信。這種通信可以通過輸入/輸出(i/o)接口450進(jìn)行。并且,電子設(shè)備400還可以通過網(wǎng)絡(luò)適配器460與一個或者多個網(wǎng)絡(luò)(例如局域網(wǎng)(lan),廣域網(wǎng)(wan)和/或公共網(wǎng)絡(luò),例如因特網(wǎng))通信。網(wǎng)絡(luò)適配器460可以通過總線430與電子設(shè)備400的其它模塊通信。應(yīng)當(dāng)明白,盡管圖中未示出,可以結(jié)合電子設(shè)備400使用其它硬件和/或軟件模塊,包括但不限于:微代碼、設(shè)備驅(qū)動器、冗余處理單元、外部磁盤驅(qū)動陣列、raid系統(tǒng)、磁帶驅(qū)動器以及數(shù)據(jù)備份存儲系統(tǒng)等。通過以上的實(shí)施方式的描述,本領(lǐng)域的技術(shù)人員易于理解,這里描述的示例實(shí)施方式可以通過軟件實(shí)現(xiàn),也可以通過軟件結(jié)合必要的硬件的方式來實(shí)現(xiàn)。因此,根據(jù)本公開實(shí)施方式的技術(shù)方案可以以軟件產(chǎn)品的形式體現(xiàn)出來,該軟件產(chǎn)品可以存儲在一個非易失性存儲介質(zhì)(可以是cd-rom,u盤,移動硬盤等)中或網(wǎng)絡(luò)上,包括若干指令以使得一臺計算設(shè)備(可以是個人計算機(jī)、服務(wù)器、或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行根據(jù)本公開實(shí)施方式的上述電子處方流轉(zhuǎn)處理方法。圖9是根據(jù)一示例性實(shí)施例示出的一種計算機(jī)可讀介質(zhì)示意圖。參考圖9所示,描述了根據(jù)本發(fā)明的實(shí)施方式的用于實(shí)現(xiàn)上述方法的程序產(chǎn)品500,其可以采用便攜式緊湊盤只讀存儲器(cd-rom)并包括程序代碼,并可以在終端設(shè)備,例如個人電腦上運(yùn)行。然而,本發(fā)明的程序產(chǎn)品不限于此,在本文件中,可讀存儲介質(zhì)可以是任何包含或存儲程序的有形介質(zhì),該程序可以被指令執(zhí)行系統(tǒng)、裝置或者器件使用或者與其結(jié)合使用。所述程序產(chǎn)品可以采用一個或多個可讀介質(zhì)的任意組合??勺x介質(zhì)可以是可讀信號介質(zhì)或者可讀存儲介質(zhì)??勺x存儲介質(zhì)例如可以為但不限于電、磁、光、電磁、紅外線、或半導(dǎo)體的系統(tǒng)、裝置或器件,或者任意以上的組合??勺x存儲介質(zhì)的更具體的例子(非窮舉的列表)包括:具有一個或多個導(dǎo)線的電連接、便攜式盤、硬盤、隨機(jī)存取存儲器(ram)、只讀存儲器(rom)、可擦式可編程只讀存儲器(eprom或閃存)、光纖、便攜式緊湊盤只讀存儲器(cd-rom)、光存儲器件、磁存儲器件、或者上述的任意合適的組合。所述計算機(jī)可讀存儲介質(zhì)可以包括在基帶中或者作為載波一部分傳播的數(shù)據(jù)信號,其中承載了可讀程序代碼。這種傳播的數(shù)據(jù)信號可以采用多種形式,包括但不限于電磁信號、光信號或上述的任意合適的組合??勺x存儲介質(zhì)還可以是可讀存儲介質(zhì)以外的任何可讀介質(zhì),該可讀介質(zhì)可以發(fā)送、傳播或者傳輸用于由指令執(zhí)行系統(tǒng)、裝置或者器件使用或者與其結(jié)合使用的程序??勺x存儲介質(zhì)上包含的程序代碼可以用任何適當(dāng)?shù)慕橘|(zhì)傳輸,包括但不限于無線、有線、光纜、rf等等,或者上述的任意合適的組合。可以以一種或多種程序設(shè)計語言的任意組合來編寫用于執(zhí)行本發(fā)明操作的程序代碼,所述程序設(shè)計語言包括面向?qū)ο蟮某绦蛟O(shè)計語言—諸如java、c++等,還包括常規(guī)的過程式程序設(shè)計語言—諸如“c”語言或類似的程序設(shè)計語言。程序代碼可以完全地在用戶計算設(shè)備上執(zhí)行、部分地在用戶設(shè)備上執(zhí)行、作為一個獨(dú)立的軟件包執(zhí)行、部分在用戶計算設(shè)備上部分在遠(yuǎn)程計算設(shè)備上執(zhí)行、或者完全在遠(yuǎn)程計算設(shè)備或服務(wù)器上執(zhí)行。在涉及遠(yuǎn)程計算設(shè)備的情形中,遠(yuǎn)程計算設(shè)備可以通過任意種類的網(wǎng)絡(luò),包括局域網(wǎng)(lan)或廣域網(wǎng)(wan),連接到用戶計算設(shè)備,或者,可以連接到外部計算設(shè)備(例如利用因特網(wǎng)服務(wù)提供商來通過因特網(wǎng)連接)。本領(lǐng)域技術(shù)人員可以理解上述各模塊可以按照實(shí)施例的描述分布于裝置中,也可以進(jìn)行相應(yīng)變化唯一不同于本實(shí)施例的一個或多個裝置中。上述實(shí)施例的模塊可以合并為一個模塊,也可以進(jìn)一步拆分成多個子模塊。通過以上的實(shí)施例的描述,本領(lǐng)域的技術(shù)人員易于理解,這里描述的示例實(shí)施例可以通過軟件實(shí)現(xiàn),也可以通過軟件結(jié)合必要的硬件的方式來實(shí)現(xiàn)。因此,根據(jù)本發(fā)明實(shí)施例的技術(shù)方案可以以軟件產(chǎn)品的形式體現(xiàn)出來,該軟件產(chǎn)品可以存儲在一個非易失性存儲介質(zhì)(可以是cd-rom,u盤,移動硬盤等)中或網(wǎng)絡(luò)上,包括若干指令以使得一臺計算設(shè)備(可以是個人計算機(jī)、服務(wù)器、移動終端、或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行根據(jù)本發(fā)明實(shí)施例的方法。通過以上的詳細(xì)描述,本領(lǐng)域的技術(shù)人員易于理解,根據(jù)本發(fā)明實(shí)施例的用于處理非結(jié)構(gòu)化日志的方法及裝置具有以下優(yōu)點(diǎn)中的一個或多個。根據(jù)一些實(shí)施例,本發(fā)明的用于處理非結(jié)構(gòu)化日志的方法,通過將異常消息進(jìn)行故障分類提取故障參數(shù),進(jìn)而通過故障參數(shù)對異常消息進(jìn)行標(biāo)記分類的方式,能夠幫助開發(fā)人員大幅減少人工檢查失敗作業(yè)的數(shù)量,并初步定位故障原因,確保服務(wù)質(zhì)量。根據(jù)另一些實(shí)施例,本發(fā)明的用于處理非結(jié)構(gòu)化日志的方法,通過將原始的異常消息進(jìn)行去除噪聲消息、去除冗余消息以及去除嵌套消息等操作,能夠在后續(xù)異常消息處理時,提升處理效率,節(jié)約處理時間。根據(jù)再一些實(shí)施例,本發(fā)明的用于處理非結(jié)構(gòu)化日志的方法,通過異常消息分類,進(jìn)而進(jìn)行異常消息類別的重要性評估和關(guān)鍵對象分析,可以快速初步定位失敗原因及對象。以上具體地示出和描述了本發(fā)明的示例性實(shí)施例。應(yīng)可理解的是,本發(fā)明不限于這里描述的詳細(xì)結(jié)構(gòu)、設(shè)置方式或?qū)崿F(xiàn)方法;相反,本發(fā)明意圖涵蓋包含在所附權(quán)利要求的精神和范圍內(nèi)的各種修改和等效設(shè)置。此外,本說明書說明書附圖所示出的結(jié)構(gòu)、比例、大小等,均僅用以配合說明書所公開的內(nèi)容,以供本領(lǐng)域技術(shù)人員了解與閱讀,并非用以限定本公開可實(shí)施的限定條件,故不具技術(shù)上的實(shí)質(zhì)意義,任何結(jié)構(gòu)的修飾、比例關(guān)系的改變或大小的調(diào)整,在不影響本公開所能產(chǎn)生的技術(shù)效果及所能實(shí)現(xiàn)的目的下,均應(yīng)仍落在本公開所公開的技術(shù)內(nèi)容得能涵蓋的范圍內(nèi)。同時,本說明書中所引用的如“上”、“第一”、“第二”及“一”等的用語,也僅為便于敘述的明了,而非用以限定本公開可實(shí)施的范圍,其相對關(guān)系的改變或調(diào)整,在無實(shí)質(zhì)變更技術(shù)內(nèi)容下,當(dāng)也視為本發(fā)明可實(shí)施的范疇。當(dāng)前第1頁12