本申請(qǐng)涉及計(jì)算機(jī)技術(shù)領(lǐng)域,尤其涉及一種日志去重處理方法及裝置。
背景技術(shù):
日志,是網(wǎng)絡(luò)設(shè)備、系統(tǒng)及服務(wù)程序等在運(yùn)作時(shí)產(chǎn)生的事件記錄,用于以字符串的方式記載日期、時(shí)間、使用者及動(dòng)作等相關(guān)操作的描述。
在現(xiàn)有的分布式系統(tǒng)中,為了保證系統(tǒng)能夠正常運(yùn)行,需要對(duì)業(yè)務(wù)系統(tǒng)的運(yùn)行狀態(tài)進(jìn)行監(jiān)控,以便于在發(fā)生故障時(shí)能夠及時(shí)通知開發(fā)以及運(yùn)維人員進(jìn)行維護(hù)、調(diào)試等管理。
目前,主要通過瀏覽日志的信息內(nèi)容的方式對(duì)業(yè)務(wù)系統(tǒng)的運(yùn)行狀態(tài)進(jìn)行監(jiān)控,然而,在業(yè)務(wù)系統(tǒng)的運(yùn)行過程中,日志是連續(xù)產(chǎn)生的,且針對(duì)同一故障產(chǎn)生的日志數(shù)量很大,大多是由于可變參數(shù)的不同而出現(xiàn)的重復(fù)日志,致使工作人員不易對(duì)日志的信息內(nèi)容進(jìn)行觀察,進(jìn)而無法及時(shí)發(fā)現(xiàn)故障原因,降低維護(hù)效率。
技術(shù)實(shí)現(xiàn)要素:
本申請(qǐng)實(shí)施例提供一種日志去重處理方法,用以解決現(xiàn)有技術(shù)中存在的由于日志數(shù)量多而無法及時(shí)發(fā)現(xiàn)故障原因的問題。
本申請(qǐng)實(shí)施例還提供一種日志去重處理裝置,用以解決現(xiàn)有技術(shù)中存在的由于日志數(shù)量多而無法及時(shí)發(fā)現(xiàn)故障原因的問題。
本申請(qǐng)實(shí)施例采用下述技術(shù)方案:
一種日志去重處理方法,包括:
獲取待去重處理的樣本日志;
檢測預(yù)設(shè)存儲(chǔ)空間中是否存在與所述樣本日志相比滿足預(yù)設(shè)相似度條件的日志;
若檢測到與所述樣本日志相比滿足預(yù)設(shè)相似度條件的日志,則更新與所述樣本日志相比滿足預(yù)設(shè)相似度條件的日志對(duì)應(yīng)的統(tǒng)計(jì)信息,其中,所述統(tǒng)計(jì)信息至少包含相似日志條數(shù);
若未檢測到與所述樣本日志相比滿足預(yù)設(shè)相似度條件的日志,則存儲(chǔ)所述樣本日志,并為所述樣本日志設(shè)置初始化的統(tǒng)計(jì)信息。
一種日志去重處理裝置,包括:
獲取單元,用于獲取待去重處理的樣本日志;
檢測單元,用于檢測預(yù)設(shè)存儲(chǔ)空間中是否存在與所述樣本日志相比滿足預(yù)設(shè)相似度條件的日志;
更新單元,用于在檢測到與所述樣本日志相比滿足預(yù)設(shè)相似度條件的日志時(shí),更新與所述樣本日志相比滿足預(yù)設(shè)相似度條件的日志對(duì)應(yīng)的統(tǒng)計(jì)信息,其中,所述統(tǒng)計(jì)信息至少包含相似日志條數(shù);
存儲(chǔ)單元,用于在未檢測到與所述樣本日志相比滿足預(yù)設(shè)相似度條件的日志時(shí),存儲(chǔ)所述樣本日志,并為所述樣本日志設(shè)置初始化的統(tǒng)計(jì)信息。
本申請(qǐng)實(shí)施例采用的上述至少一個(gè)技術(shù)方案能夠達(dá)到以下有益效果:
在本發(fā)明中,利用樣本日志遍歷預(yù)設(shè)存儲(chǔ)空間中的日志,以樣本日志的哈希值分別與遍歷到的各個(gè)日志的哈希值進(jìn)行比對(duì),從而不需要對(duì)相似日志進(jìn)行存儲(chǔ),而僅對(duì)不相似的日志進(jìn)行存儲(chǔ),實(shí)現(xiàn)去重歸并處理,減少了存儲(chǔ)的日志的數(shù)量,降低了觀察識(shí)別的難度,以便于及時(shí)發(fā)現(xiàn)故障原因。
附圖說明
此處所說明的附圖用來提供對(duì)本申請(qǐng)的進(jìn)一步理解,構(gòu)成本申請(qǐng)的一部分,本申請(qǐng)的示意性實(shí)施例及其說明用于解釋本申請(qǐng),并不構(gòu)成對(duì)本申請(qǐng)的不當(dāng)限定。在附圖中:
圖1為本發(fā)明實(shí)施例一提供的一種日志去重方法的步驟示意圖;
圖2為本發(fā)明實(shí)施例中通過服務(wù)接口傳輸預(yù)設(shè)存儲(chǔ)空間中存儲(chǔ)信息的示意圖;
圖3為本發(fā)明提供的日志去重處理流程示意圖;
圖4(a)-圖4(c)為本發(fā)明所涉及的三張預(yù)設(shè)日志列表示意圖;
圖5為本發(fā)明實(shí)施例二提供的一種日志去重處理裝置結(jié)構(gòu)示意圖。
具體實(shí)施方式
為使本申請(qǐng)的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本申請(qǐng)具體實(shí)施例及相應(yīng)的附圖對(duì)本申請(qǐng)技術(shù)方案進(jìn)行清楚、完整地描述。顯然,所描述的實(shí)施例僅是本申請(qǐng)一部分實(shí)施例,而不是全部的實(shí)施例?;诒旧暾?qǐng)中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本申請(qǐng)保護(hù)的范圍。
需要說明的是,本發(fā)明以下實(shí)施例中“預(yù)設(shè)存儲(chǔ)空間”中以及“預(yù)設(shè)日志列表”中所涉及的日志均為由于故障而產(chǎn)生的錯(cuò)誤、異常或警告類型的日志。
以下結(jié)合附圖,詳細(xì)說明本申請(qǐng)各實(shí)施例提供的技術(shù)方案。
實(shí)施例一
如圖1所示,為本發(fā)明實(shí)施例一提供的一種日志去重方法的步驟示意圖,其中,該日志去重方法的執(zhí)行主體可以為一種服務(wù)器,用以實(shí)現(xiàn)系統(tǒng)業(yè)務(wù)運(yùn)行服務(wù),具體地,該服務(wù)器可以為電腦、手機(jī)或者大型分布式計(jì)算機(jī)系統(tǒng);該日志去重過程主要包括以下步驟:
步驟11:獲取待去重處理的樣本日志。
本發(fā)明中所涉及的樣本日志可以理解為業(yè)務(wù)系統(tǒng)由于故障而產(chǎn)生的日志,主要包括錯(cuò)誤、異常、警告這三類,而每一條日志可以包含時(shí)間信息、所處位置(具體至哪一文件夾、哪一行)、返回值以及日志類型等。
在實(shí)際的業(yè)務(wù)系統(tǒng)運(yùn)行過程中,會(huì)不間斷的產(chǎn)生日志到kafka中,其中,kafka是專門用于進(jìn)行日志處理的分布式消息隊(duì)列。針對(duì)存入kafka中的日志進(jìn)行故障識(shí)別,具體可根據(jù)讀取每條日志中的日志類型來識(shí)別該日志是否為由故障而產(chǎn)生的日志,若識(shí)別到該日志中的日志類型為錯(cuò)誤、異常、警告中的任一種,則提取該日志作為本發(fā)明方案中的樣本日志,否則,識(shí)別為正常運(yùn)行產(chǎn)生的日志,不作處理。
步驟12:檢測預(yù)設(shè)存儲(chǔ)空間中是否存在與所述樣本日志相比滿足預(yù)設(shè)相似度條件的日志,若檢測到與所述樣本日志相比滿足預(yù)設(shè)相似度條件的日志,則執(zhí)行步驟13,否則,執(zhí)行步驟14。
其中,該步驟12中所涉及的預(yù)設(shè)存儲(chǔ)空間可以為執(zhí)行主體中用戶存儲(chǔ)空間,用以臨時(shí)存儲(chǔ)一些所需數(shù)據(jù),例如,本發(fā)明中用以存儲(chǔ)去重歸并后的日志。
具體地,在本發(fā)明中,該步驟12可具體執(zhí)行為以下步驟:
第一步,根據(jù)Simhash算法計(jì)算樣本日志的哈希值。
Simhash算法是一種文檔去重的哈希hash算法,其去重速度較快且高效??紤]到本發(fā)明中所涉及樣本日志的日志信息包含有英文字母、數(shù)字以及特殊符號(hào)等字符串,雖然采用Simhash算法,但是,不同于現(xiàn)有技術(shù)中的文檔分詞方式,而是對(duì)Simhash算法進(jìn)行了改進(jìn),利用空格、特殊字符等除數(shù)字和字母以外的字符對(duì)樣本日志的日志信息這一字符串進(jìn)行分割來實(shí)現(xiàn)分詞處理,然后,對(duì)分割后的單詞進(jìn)行Simhash計(jì)算,得到該樣本日志的哈希值(即hashcode)。舉例說明:當(dāng)前樣本日志的日志信息為:“Connect DB Error IP:xx1 Port:xx2”,按照本發(fā)明中的方式,采用空格對(duì)該日志信息進(jìn)行分詞處理,得到以下分詞結(jié)果:分詞1“Connect”,分詞2“DB”,分詞3“Error”,分詞4“IP:xx1”,分詞5“Port:xx2”;之后,按照現(xiàn)有的Simhash算法分配相應(yīng)權(quán)重并計(jì)算出該樣本日志的哈希值。通過改進(jìn)后的Simhash算法對(duì)樣本日志進(jìn)行哈希值的計(jì)算,可提升該樣本日志的哈希值的精準(zhǔn)度,且能夠較好的反映樣本日志的性能,便于后續(xù)進(jìn)行相似度匹配。
第二步,將樣本日志的哈希值與預(yù)設(shè)存儲(chǔ)空間中日志的哈希值進(jìn)行比對(duì),確定預(yù)設(shè)存儲(chǔ)空間中是否存在比對(duì)結(jié)果大于等于相似度閾值的日志。
在該步驟中,通過上述確定的樣本日志的哈希值,遍歷預(yù)設(shè)存儲(chǔ)空間中的所有日志,第一種情況是:預(yù)設(shè)存儲(chǔ)空間還未存儲(chǔ)日志,顯然預(yù)設(shè)存儲(chǔ)空間中不存在與樣本日志相似的日志;第二種情況是:預(yù)設(shè)存儲(chǔ)空間存儲(chǔ)有至少一條日志,且樣本日志的哈希值與預(yù)設(shè)存儲(chǔ)空間中的任一條日志的哈希值比對(duì)后,都小于相似度閾值,則確定預(yù)設(shè)存儲(chǔ)空間中不存在與樣本日志相似的日志;第三種情況是:預(yù)設(shè)存儲(chǔ)空間存儲(chǔ)有至少一條日志,且樣本日志的哈希值與預(yù)設(shè)存儲(chǔ)空間中的其中一條日志的哈希值比對(duì)后,大于等于相似度閾值,則確定預(yù)設(shè)存儲(chǔ)空間中存在與樣本日志相似的日志。
可選地,在本發(fā)明實(shí)施例中,考慮到日志信息的長度對(duì)日志的相似度比對(duì)影響較大,因此,可以根據(jù)樣本日志的日志信息的長度確定合適的相似度閾值,具體地,考慮到日志信息的長度與其包含的可變參數(shù)的數(shù)量呈正相關(guān),即日志信息的長度越長,其中的可變參數(shù)可能越多,那么,可設(shè)置較低的相似度閾值,例如相似度閾值設(shè)置為0.7;日志信息的長度越短,可變參數(shù)越少,可設(shè)置較高的相似度閾值,例如相似度閾值設(shè)置為0.8或0.9。
一種較佳的相似度閾值設(shè)置方案:大致統(tǒng)計(jì)日志的字符數(shù),根據(jù)字符數(shù)大小將日志分為三個(gè)等級(jí),一級(jí):包含字符數(shù)0-100的日志;二級(jí):包含字符數(shù)100-200的日志;三級(jí):包含字符數(shù)200-500的日志。其中,一級(jí)的日志對(duì)應(yīng)相似度閾值可配置為0.9;二級(jí)日志對(duì)應(yīng)相似度閾值可配置為0.8;對(duì)應(yīng)相似度閾值可配置為0.7。從而,通過這種方式將相似度條件的粒度精細(xì)化處理,盡可能將相似的日志歸并在一起,提升去重的精度。
步驟13:更新與所述樣本日志相比滿足預(yù)設(shè)相似度條件的日志對(duì)應(yīng)的統(tǒng)計(jì)信息。其中,統(tǒng)計(jì)信息至少包含相似日志條數(shù)。
針對(duì)第三種情況,在確定預(yù)設(shè)存儲(chǔ)空間中存在與樣本日志相似的日志后,說明與樣本日志相似的日志已經(jīng)被記錄,不需要再次存儲(chǔ)該樣本日志,而是采用對(duì)所述日志對(duì)應(yīng)的統(tǒng)計(jì)信息進(jìn)行更新的方式對(duì)該樣本日志進(jìn)行歸并處理。舉例說明,在確定已存儲(chǔ)有與樣本日志x1相似的日志x2后,不對(duì)該樣本日志x1進(jìn)行存儲(chǔ),而僅是對(duì)日志x2對(duì)應(yīng)的統(tǒng)計(jì)信息中的相似日志條數(shù)進(jìn)行更新,假設(shè)當(dāng)前日志x2對(duì)應(yīng)的統(tǒng)計(jì)信息中記錄的相似日志條數(shù)為4條,那么,對(duì)該統(tǒng)計(jì)信息進(jìn)行更新的操作即為:在當(dāng)前相似日志條數(shù)4條的基礎(chǔ)上加1,將相似日志條數(shù)更新為5條。從而,通過這種歸并處理,對(duì)重復(fù)的樣本日志進(jìn)行條數(shù)的累加,以便于運(yùn)維人員獲知該類重復(fù)的日志的出現(xiàn)概率。
步驟14:存儲(chǔ)樣本日志,并為樣本日志設(shè)置初始化的統(tǒng)計(jì)信息。
針對(duì)第一種情況以及第二種情況,在確定預(yù)設(shè)存儲(chǔ)空間中不存在與樣本日志相似的日志后,說明該樣本日志在系統(tǒng)運(yùn)行過程中第一次出現(xiàn),需要對(duì)該樣本日志進(jìn)行記錄,以展示給運(yùn)維人員進(jìn)行處理。舉例說明,在確定未發(fā)現(xiàn)與樣本日志y1相似的日志后,對(duì)該樣本日志y1進(jìn)行存儲(chǔ),可選地,按照上述Simhash算法確定出樣本日志y1的哈希值后,可將該樣本日志y1的哈希值作為鍵值信息進(jìn)行保存,將樣本日志y1的日志信息作為實(shí)值信息進(jìn)行保存,同時(shí),在實(shí)值信息中設(shè)置該樣本日志y1對(duì)應(yīng)的相似日志條數(shù)為初始值1。通過該方式對(duì)樣本日志進(jìn)行存儲(chǔ),即存儲(chǔ)樣本日志的日志信息的同時(shí),還存儲(chǔ)樣本日志的哈希值,便于后續(xù)直接利用哈希值與下一個(gè)樣本日志的哈希值進(jìn)行比對(duì);而且,不需要額外為樣本日志分配標(biāo)識(shí)以區(qū)分存儲(chǔ)了的各個(gè)日志;可見,本發(fā)明通過將哈希值作為鍵值存儲(chǔ),既實(shí)現(xiàn)了區(qū)分日志的目的,同時(shí)還避免了后續(xù)比對(duì)時(shí)重新計(jì)算哈希值的繁瑣。
可選地,參照?qǐng)D2所示,為本發(fā)明實(shí)施例中通過服務(wù)接口傳輸預(yù)設(shè)存儲(chǔ)空間中存儲(chǔ)信息的示意圖,其中,日志去重處理裝置21設(shè)置有http接口22,并通過該http接口22與顯示界面23連接,用以將預(yù)設(shè)存儲(chǔ)空間中的存儲(chǔ)的信息通過一種輕量級(jí)的數(shù)據(jù)交換方式進(jìn)行信息匯總,即轉(zhuǎn)換成JavaScript對(duì)象表示法(JavaScript Object Notation,JSON)格式,并傳輸?shù)斤@示界面23進(jìn)行展示。從而,便于運(yùn)維人員更為直觀的發(fā)現(xiàn)錯(cuò)誤、異常和警告日志的詳細(xì)信息,并及時(shí)解決。需要說明的是,該展示操作可以在日志去重處理裝置21與顯示界面23連接之后就開啟,即實(shí)時(shí)傳輸展示,也可以在對(duì)一條樣本日志進(jìn)行去重處理之后進(jìn)行展示更新。其實(shí),在本發(fā)明中,采用JSON方式進(jìn)行數(shù)據(jù)格式的轉(zhuǎn)換是一種優(yōu)選實(shí)現(xiàn)方案,也可以不對(duì)存儲(chǔ)信息進(jìn)行數(shù)據(jù)格式轉(zhuǎn)換,直接展示存儲(chǔ)信息。
考慮到業(yè)務(wù)系統(tǒng)中的錯(cuò)誤、異常和警告日志可能是由于有限的幾處代碼運(yùn)行產(chǎn)生的,但是,由于每個(gè)代碼處可設(shè)置不同的參數(shù),因此,每處代碼會(huì)重復(fù)發(fā)送類似的日志(錯(cuò)誤或異?;蚓?,這種重復(fù)數(shù)量很大,導(dǎo)致產(chǎn)生成千上萬條日志,若不對(duì)這些日志進(jìn)行去重處理,將會(huì)全部展示給運(yùn)維人員,而運(yùn)維人員對(duì)大量日志進(jìn)行觀察并從中發(fā)現(xiàn)問題,這種管理實(shí)現(xiàn)難度相當(dāng)大,且效率很低。通過本發(fā)明實(shí)施例,通過上述方案對(duì)樣本日志進(jìn)行去重歸并,即使有很多由于相同故障而產(chǎn)生的日志,也可以通過在日志的統(tǒng)計(jì)信息中記錄相似日志條數(shù)的方式進(jìn)行去重歸并處理,而不對(duì)所有日志進(jìn)行存儲(chǔ)。從而,保證展示的日志是沒有重復(fù)的,減少了展示給運(yùn)維人員的日志數(shù)量;便于運(yùn)維人員直觀發(fā)現(xiàn)日志所反映出的故障原因,并及時(shí)查看和調(diào)用。
可選地,在本發(fā)明實(shí)施例中,考慮到運(yùn)維人員并不是時(shí)刻對(duì)展示界面進(jìn)行觀察,因此,當(dāng)運(yùn)維人員外出或是下班期間,一方面通過JSON的方式將預(yù)設(shè)存儲(chǔ)空間中的信息展示至顯示界面,另一方面,可通過向運(yùn)維人員發(fā)送報(bào)警郵件的方式匯報(bào)當(dāng)前的故障事件;具體地,在確定不存在相似的日志時(shí),向已綁定的運(yùn)維人員的郵箱發(fā)出報(bào)警郵件,較佳地,報(bào)警郵件中可攜帶有該樣本日志的日志信息,以便于運(yùn)維人員提前大致了解問題的嚴(yán)重程度,進(jìn)而做出合適的調(diào)度工作。在運(yùn)維人員獲知該報(bào)警郵件后,可以通過觀察顯示界面展示的內(nèi)容及時(shí)發(fā)現(xiàn)由于故障而產(chǎn)生的日志,進(jìn)而及時(shí)對(duì)該日志進(jìn)行調(diào)用處理以解決該故障。
其實(shí),在相關(guān)技術(shù)中,在檢測到錯(cuò)誤、異?;蚓娴阮愋偷娜罩緯r(shí),即會(huì)通過發(fā)送報(bào)警郵件的方式向運(yùn)維人員報(bào)警,而由于故障產(chǎn)生的日志數(shù)量較大,運(yùn)維人員可能會(huì)在很短的時(shí)間內(nèi)收到成千上萬封郵件,這種郵件積壓以及短時(shí)間內(nèi)的大量接收,會(huì)給郵箱負(fù)載帶來壓力,且不便于運(yùn)維人員查看。為了避免這種問題的發(fā)生,本發(fā)明中所涉及的統(tǒng)計(jì)信息還包含:存儲(chǔ)日志時(shí)的初始時(shí)間以及更新相似日志條數(shù)的更新時(shí)間;那么,當(dāng)檢測到與樣本日志相比滿足預(yù)設(shè)相似度條件的日志之后,且在更新與樣本日志相比滿足預(yù)設(shè)相似度條件的日志對(duì)應(yīng)的統(tǒng)計(jì)信息之前,可根據(jù)日志對(duì)應(yīng)的統(tǒng)計(jì)信息中的初始時(shí)間以及更新時(shí)間,判斷此時(shí)的更新時(shí)間是否落入當(dāng)前報(bào)警周期內(nèi),若是,則不作處理;否則,發(fā)出報(bào)警消息。
下面通過具體的實(shí)例對(duì)本發(fā)明實(shí)施例一所涉及的方案進(jìn)行更為詳細(xì)的說明。
如圖3所示,為本發(fā)明提供的日志去重處理流程示意圖,本流程僅示出對(duì)任意一個(gè)類型為異常的樣本日志的處理過程,其他類型的樣本日志類似。
步驟31:從kafka中提取待去重處理的異常日志A。
步驟32:利用空格對(duì)該異常日志A進(jìn)行分詞處理,并計(jì)算該異常日志A的哈希值。
假設(shè)計(jì)算得到異常日志A的哈希值為200。
步驟33:將該異常日志A的哈希值遍歷預(yù)設(shè)日志列表中的日志的哈希值,若遍歷到相似的日志B,則執(zhí)行步驟34,否則,執(zhí)行步驟35。
所述預(yù)設(shè)日志列表為上述實(shí)施例中預(yù)設(shè)存儲(chǔ)空間的一種具體實(shí)現(xiàn)形式,該預(yù)設(shè)日志列表中設(shè)置有鍵值項(xiàng)以及實(shí)值項(xiàng),參照?qǐng)D4(a)所示的一種可能實(shí)現(xiàn)的預(yù)設(shè)日志列表示意圖,該列表中存儲(chǔ)有三條日志,其中,鍵值項(xiàng)存儲(chǔ)有每條日志的哈希值,實(shí)值項(xiàng)存儲(chǔ)有每條日志的日志信息、相似日志條數(shù)以及初始時(shí)間、更新時(shí)間。
其實(shí),該預(yù)設(shè)日志列表中可以為空,即未存儲(chǔ)有任何日志。
在本步驟33中,首先確定該異常日志A的字符數(shù),假設(shè)為256,之后,根據(jù)確定的字符數(shù)從預(yù)設(shè)的日志等級(jí)中選擇合適的相似度閾值,該異常日志A對(duì)應(yīng)的相似度閾值為0.7;接著,將該異常日志A分別與預(yù)設(shè)日志列表中的日志進(jìn)行比對(duì),其實(shí)質(zhì)是得到異常日志A的哈希值分別與預(yù)設(shè)日志列表中的日志的哈希值的百分比(其中,若異常日志A的哈希值小于預(yù)設(shè)日志列表中的日志的哈希值,則異常日志A的哈希值作為分子;反之,異常日志A的哈希值作為分母)。然后,將得到的百分比與選擇的相似度閾值進(jìn)行比較,若大于等于相似度閾值,則表示該異常日志A與進(jìn)行比對(duì)的日志相似,若小于相似度閾值,則表示該異常日志A與進(jìn)行比對(duì)的日志不相似。
步驟34:判斷更新時(shí)間是否落入當(dāng)前報(bào)警周期內(nèi),若是,則更新日志B對(duì)應(yīng)的相似日志條數(shù)以及更新時(shí)間,否則,執(zhí)行步驟36。
為了避免用戶在一段時(shí)間內(nèi)反復(fù)收到由于同一故障發(fā)送的相似郵件,可為相似日志觸發(fā)發(fā)送郵件設(shè)置一報(bào)警周期,例如,假設(shè),發(fā)現(xiàn)預(yù)設(shè)日志列表中存在與異常日志A相似的日志B,且日志B的報(bào)警周期設(shè)置為1小時(shí),而發(fā)現(xiàn)日志B中初始時(shí)間為2:30,而更新時(shí)間為2:50,當(dāng)前時(shí)間為3:00進(jìn)而可以確定在當(dāng)前報(bào)警周期2:30-3:30之間已經(jīng)報(bào)警了,因此,當(dāng)該異常日志來到后,不需要發(fā)送報(bào)警郵件,僅執(zhí)行去重歸并時(shí)更新處理操作即可。若發(fā)現(xiàn)日志B中初始時(shí)間為2:30,而更新時(shí)間為2:50,當(dāng)前時(shí)間為4:00,進(jìn)而可以確定在當(dāng)前報(bào)警周期3:30-4:30之間還未報(bào)警,因此,當(dāng)該異常日志來到后,可以發(fā)送報(bào)警郵件。從而,通過這種方式減少由于相似日志而發(fā)送大量類似報(bào)警郵件的問題,便于用戶觀察及解決故障。
步驟36:更新日志B對(duì)應(yīng)的相似日志條數(shù)以及更新時(shí)間,并發(fā)出報(bào)警郵件。
其實(shí),該步驟是對(duì)異常日志A的一種歸并處理,即不對(duì)異常日志A進(jìn)行重復(fù)存儲(chǔ),而是在已存儲(chǔ)的且與異常日志A相似的日志對(duì)應(yīng)的相似日志條數(shù)中進(jìn)行加1處理,表示該類重復(fù)日志又出現(xiàn)一條;并在對(duì)更新時(shí)間進(jìn)行更新處理。假設(shè),圖4(a)中鍵值為236的日志與異常日志A相似,那么,參照?qǐng)D4(b)所示,不會(huì)在該預(yù)設(shè)日志列表中添加異常日志A,而是在鍵值為236的日志對(duì)應(yīng)的相似日志條數(shù)處更新為3,同時(shí),初始時(shí)間不做處理,更新時(shí)間更新為當(dāng)前時(shí)刻3:00。
步驟35:存儲(chǔ)異常日志A,并為該異常日志A設(shè)置初始化的相似日志條數(shù)、初始時(shí)間以及更新時(shí)間,并發(fā)出報(bào)警郵件。
參照?qǐng)D4(c)所示,在該預(yù)設(shè)日志列表中添加異常日志A,具體地,在鍵值位置處添加200,實(shí)值位置處添加該異常日志A的日志信息,同時(shí),設(shè)置相似日志條數(shù)為1,初始時(shí)間為3:00,更新時(shí)間為3:00。其中,初始時(shí)間為存儲(chǔ)該異常日志A的時(shí)刻,不會(huì)更新,而更新時(shí)間會(huì)隨著相似日志條數(shù)的更新而更新。
之后,會(huì)通過發(fā)送報(bào)警郵件的方式通知運(yùn)維人員進(jìn)行維護(hù)。
其實(shí),在上述實(shí)施例中,并沒有對(duì)錯(cuò)誤、異常、警告這三類日志進(jìn)行區(qū)分,即這三類日志可以統(tǒng)一在一張預(yù)設(shè)日志列表中進(jìn)行去重歸并,而實(shí)際上,為了便于維護(hù)人員及時(shí)發(fā)現(xiàn)并維護(hù)系統(tǒng)運(yùn)行安全,可以根據(jù)日志的三種類型進(jìn)行分類,即可以通過分別設(shè)置錯(cuò)誤日志列表、異常日志列表以及警告日志列表的方式來實(shí)現(xiàn),其具體可以根據(jù)日志信息中的日志類型來識(shí)別區(qū)分。
同時(shí),考慮到在發(fā)送報(bào)警郵件的同時(shí),還會(huì)將預(yù)設(shè)日志列表中更新的內(nèi)容實(shí)時(shí)轉(zhuǎn)換并展示至顯示界面,因此,該方案還可以包括:
步驟37:將預(yù)設(shè)日志列表轉(zhuǎn)換為JSON形式的數(shù)據(jù)。
步驟38:通過服務(wù)接口將轉(zhuǎn)換后的預(yù)設(shè)日志列表進(jìn)行展示。
由此,采用以上技術(shù)方案,利用樣本日志遍歷預(yù)設(shè)存儲(chǔ)空間中的日志,以樣本日志的哈希值分別與遍歷到的各個(gè)日志的哈希值進(jìn)行比對(duì),若相似,則更新與樣本日志相似的日志對(duì)應(yīng)的相似日志條數(shù);若不相似,則存儲(chǔ)該樣本日志,并為樣本日志設(shè)置初始化的統(tǒng)計(jì)信息,從而不需要對(duì)相似日志進(jìn)行存儲(chǔ),而僅對(duì)不相似的日志進(jìn)行存儲(chǔ),實(shí)現(xiàn)去重歸并處理,減少了存儲(chǔ)的日志的數(shù)量,降低了觀察識(shí)別的難度,以便于及時(shí)發(fā)現(xiàn)故障原因。
實(shí)施例二
與上述實(shí)施例一提供的一種日志去重處理方法屬于同一發(fā)明構(gòu)思,本發(fā)明還提供了一種日志去重處理裝置。
如圖5所示,為本發(fā)明實(shí)施例二提供的一種日志去重處理裝置結(jié)構(gòu)示意圖,該裝置主要包括以下功能單元:
獲取單元51,用于獲取一待去重處理的樣本日志.
檢測單元52,用于檢測預(yù)設(shè)存儲(chǔ)空間中是否存在與樣本日志相比滿足預(yù)設(shè)相似度條件的日志。
更新單元53,用于在檢測到與樣本日志相比滿足預(yù)設(shè)相似度條件的日志時(shí),更新與樣本日志相比滿足預(yù)設(shè)相似度條件的日志對(duì)應(yīng)的統(tǒng)計(jì)信息,其中,統(tǒng)計(jì)信息至少包含相似日志條數(shù);
存儲(chǔ)單元54,用于在未檢測到與樣本日志相比滿足預(yù)設(shè)相似度條件的日志時(shí),存儲(chǔ)樣本日志,并為樣本日志設(shè)置初始化的統(tǒng)計(jì)信息。
可選地,為了實(shí)現(xiàn)快速有效的相似度檢測,檢測單元具體用于根據(jù)Simhash算法確定所述樣本日志的哈希值;將樣本日志的哈希值與所述預(yù)設(shè)存儲(chǔ)空間中日志的哈希值進(jìn)行比對(duì),確定所述預(yù)設(shè)存儲(chǔ)空間中是否存在比對(duì)結(jié)果大于等于相似度閾值的日志。
可選地,為了提高確定哈希值的準(zhǔn)確性以及完整反映日志的性能,檢測單元在根據(jù)Simhash算法確定所述樣本日志的哈希值時(shí),具體用于利用空格和/或特殊字符對(duì)樣本日志的日志信息進(jìn)行分詞處理;根據(jù)Simhash算法計(jì)算分詞處理后的樣本日志的哈希值。
可選地,為了提高去重精度,相似度閾值與預(yù)設(shè)存儲(chǔ)空間中日志的日志信息的長度呈負(fù)相關(guān),其中,日志信息的長度與所述日志中可變參數(shù)的數(shù)量呈正相關(guān)。
可選地,該去重處理裝置還包括:處理單元用于采用JSON的方式對(duì)預(yù)設(shè)存儲(chǔ)空間中存儲(chǔ)的信息進(jìn)行數(shù)據(jù)轉(zhuǎn)換,通過服務(wù)接口將轉(zhuǎn)換后的信息對(duì)應(yīng)的內(nèi)容進(jìn)行展示。
其中,該服務(wù)接口可以為http接口,例如,可以通過輸入網(wǎng)址的方式實(shí)現(xiàn)數(shù)據(jù)轉(zhuǎn)換并展示。
可選地,為了保證運(yùn)維人員能夠及時(shí)獲知由于故障而產(chǎn)生的日志,以及減少相同故障發(fā)送的相似郵件的數(shù)量,該去重處理裝置還包括:報(bào)警單元,用于未檢測到與所述樣本日志相比滿足預(yù)設(shè)相似度條件的日志時(shí),發(fā)出報(bào)警消息;
所述統(tǒng)計(jì)信息還包含:存儲(chǔ)所述日志時(shí)的初始時(shí)間以及更新相似日志條數(shù)的更新時(shí)間;所述裝置還包括:判斷單元,用于在檢測到與所述樣本日志相比滿足預(yù)設(shè)相似度條件的日志之后,且在更新與所述樣本日志相比滿足預(yù)設(shè)相似度條件的日志對(duì)應(yīng)的統(tǒng)計(jì)信息之前,根據(jù)所述日志對(duì)應(yīng)的統(tǒng)計(jì)信息中的初始時(shí)間以及更新時(shí)間,判斷所述更新時(shí)間是否落入當(dāng)前報(bào)警周期內(nèi),若是,則不作處理,否則,觸發(fā)所述報(bào)警單元發(fā)出報(bào)警消息。
實(shí)施例三
基于上述實(shí)施例二提供的一種日志去重處理裝置,本發(fā)明實(shí)施例三還提供了一種服務(wù)器,該服務(wù)器包括上述任一日志去重處理裝置。
本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)明白,本發(fā)明的實(shí)施例可提供為方法、系統(tǒng)、或計(jì)算機(jī)程序產(chǎn)品。因此,本發(fā)明可采用完全硬件實(shí)施例、完全軟件實(shí)施例、或結(jié)合軟件和硬件方面的實(shí)施例的形式。而且,本發(fā)明可采用在一個(gè)或多個(gè)其中包含有計(jì)算機(jī)可用程序代碼的計(jì)算機(jī)可用存儲(chǔ)介質(zhì)(包括但不限于磁盤存儲(chǔ)器、CD-ROM、光學(xué)存儲(chǔ)器等)上實(shí)施的計(jì)算機(jī)程序產(chǎn)品的形式。
本發(fā)明是參照根據(jù)本發(fā)明實(shí)施例的方法、設(shè)備(系統(tǒng))、和計(jì)算機(jī)程序產(chǎn)品的流程圖和/或方框圖來描述的。應(yīng)理解可由計(jì)算機(jī)程序指令實(shí)現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合。可提供這些計(jì)算機(jī)程序指令到通用計(jì)算機(jī)、專用計(jì)算機(jī)、嵌入式處理機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器以產(chǎn)生一個(gè)機(jī)器,使得通過計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的裝置。
這些計(jì)算機(jī)程序指令也可存儲(chǔ)在能引導(dǎo)計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備以特定方式工作的計(jì)算機(jī)可讀存儲(chǔ)器中,使得存儲(chǔ)在該計(jì)算機(jī)可讀存儲(chǔ)器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能。
這些計(jì)算機(jī)程序指令也可裝載到計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備上,使得在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計(jì)算機(jī)實(shí)現(xiàn)的處理,從而在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行的指令提供用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的步驟。
在一個(gè)典型的配置中,計(jì)算設(shè)備包括一個(gè)或多個(gè)處理器(CPU)、輸入/輸出接口、網(wǎng)絡(luò)接口和內(nèi)存。
內(nèi)存可能包括計(jì)算機(jī)可讀介質(zhì)中的非永久性存儲(chǔ)器,隨機(jī)存取存儲(chǔ)器(RAM)和/或非易失性內(nèi)存等形式,如只讀存儲(chǔ)器(ROM)或閃存(flash RAM)。內(nèi)存是計(jì)算機(jī)可讀介質(zhì)的示例。
計(jì)算機(jī)可讀介質(zhì)包括永久性和非永久性、可移動(dòng)和非可移動(dòng)媒體可以由任何方法或技術(shù)來實(shí)現(xiàn)信息存儲(chǔ)。信息可以是計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序的模塊或其他數(shù)據(jù)。計(jì)算機(jī)的存儲(chǔ)介質(zhì)的例子包括,但不限于相變內(nèi)存(PRAM)、靜態(tài)隨機(jī)存取存儲(chǔ)器(SRAM)、動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)、其他類型的隨機(jī)存取存儲(chǔ)器(RAM)、只讀存儲(chǔ)器(ROM)、電可擦除可編程只讀存儲(chǔ)器(EEPROM)、快閃記憶體或其他內(nèi)存技術(shù)、只讀光盤只讀存儲(chǔ)器(CD-ROM)、數(shù)字多功能光盤(DVD)或其他光學(xué)存儲(chǔ)、磁盒式磁帶,磁帶磁磁盤存儲(chǔ)或其他磁性存儲(chǔ)設(shè)備或任何其他非傳輸介質(zhì),可用于存儲(chǔ)可以被計(jì)算設(shè)備訪問的信息。按照本文中的界定,計(jì)算機(jī)可讀介質(zhì)不包括暫存電腦可讀媒體(transitory media),如調(diào)制的數(shù)據(jù)信號(hào)和載波。
還需要說明的是,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、商品或者設(shè)備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、商品或者設(shè)備所固有的要素。在沒有更多限制的情況下,由語句“包括一個(gè)……”限定的要素,并不排除在包括所述要素的過程、方法、商品或者設(shè)備中還存在另外的相同要素。
以上所述僅為本申請(qǐng)的實(shí)施例而已,并不用于限制本申請(qǐng)。對(duì)于本領(lǐng)域技術(shù)人員來說,本申請(qǐng)可以有各種更改和變化。凡在本申請(qǐng)的精神和原理之內(nèi)所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本申請(qǐng)的權(quán)利要求范圍之內(nèi)。