本發(fā)明涉及計算機技術(shù)領(lǐng)域,具體涉及一種處理日志數(shù)據(jù)的方法和裝置。
背景技術(shù):
企業(yè)、公司尤其是互聯(lián)網(wǎng)公司,日常業(yè)務往往會產(chǎn)生大量的日志數(shù)據(jù),對這些數(shù)據(jù)進行管理是一項非常浩大而又需要規(guī)范化設計的任務。例如,有些數(shù)據(jù)是無用數(shù)據(jù)需要丟棄,有些數(shù)據(jù)需要按生成時間進行入庫等等。由于這些數(shù)據(jù)繁雜不一,格式各異,在統(tǒng)一管理上存在難題。
技術(shù)實現(xiàn)要素:
鑒于上述問題,提出了本發(fā)明以便提供一種克服上述問題或者至少部分地解決上述問題的處理日志數(shù)據(jù)的方法和裝置。
依據(jù)本發(fā)明的一個方面,提供了一種處理日志數(shù)據(jù)的方法,包括:
對輸入的一條樣例日志進行解析處理,輸出格式化的解析結(jié)果;
接收用戶的解析結(jié)果確認指令后,記錄解析所述樣例日志所采用的日志解析規(guī)則;
根據(jù)所記錄的所述日志解析規(guī)則,對用戶指定的業(yè)務的源日志數(shù)據(jù)進行解析處理,得到該業(yè)務的格式化的日志數(shù)據(jù)并保存到數(shù)據(jù)倉庫中。
可選地,該方法還包括:
接收關(guān)于指定業(yè)務的日志統(tǒng)計請求;
根據(jù)所述日志統(tǒng)計請求,對數(shù)據(jù)倉庫中的所述指定業(yè)務的格式化的日志數(shù)據(jù)進行統(tǒng)計計算,輸出統(tǒng)計計算結(jié)果。
可選地,所述對用戶輸入的一條樣例日志進行解析處理,輸出格式化的解析結(jié)果包括:
預設多個日志內(nèi)容識別引擎,用于分別識別不同格式的日志內(nèi)容并解析成一個或多個字段;
將所述樣例日志依次輸入到所述多個日志內(nèi)容識別引擎中;
將各日志內(nèi)容識別引擎的輸出各字段進行匯總得到所述格式化的解析結(jié)果。
可選地,其中,所述記錄解析所述樣例日志所采用的日志解析規(guī)則包括:
將有輸出結(jié)果的各日志內(nèi)容識別引擎的識別解析規(guī)則匯總記錄為解析所述樣例日志所采用的日志解析規(guī)則。
可選地,該方法還包括:
當所述樣例日志中存在各日志內(nèi)容識別引擎均無法識別的內(nèi)容時,通過自定義識別接口輸出該內(nèi)容;
通過自定義識別接口接收人工識別后輸入的識別結(jié)果和相應的識別解析規(guī)則;
將該人工識別后輸入的識別解析規(guī)則記錄為解析所述樣例日志所采用的日志解析規(guī)則的一部分。
可選地,所述多個日志內(nèi)容識別引擎包括如下中的一種或多種:
IP地址識別引擎;時間戳識別引擎;用戶ID識別引擎;渠道識別引擎;JSON格式內(nèi)容識別引擎。
可選地,該方法還包括:
提供日志內(nèi)容識別引擎編輯接口,通過該接口接收增加/刪除/修改日志內(nèi)容識別引擎的指令,根據(jù)指令執(zhí)行相應的日志內(nèi)容識別模塊增加/刪除/修改操作。
可選地,所述多個日志內(nèi)容識別引擎包括IP地址識別引擎;
所述IP地址識別引擎在識別出IP地址后,進一步解析IP地址,IP地址解析結(jié)果包括如下一個或多個字段:國家、省、市、運營商。
可選地,該方法還包括:提供解析結(jié)果編輯界面,通過該界面接收輸入的對解析結(jié)果中的各字段進行操作的指令,并執(zhí)行相應的操作;
所述對解析結(jié)果中的各字段進行操作的指令包括如下中的一種或多種:
調(diào)整各字段的排序順序的指令;
修改指定字段的名稱的指令;
刪除指定字段的指令。
可選地,一個日志內(nèi)容識別引擎的識別解析規(guī)則包括:對識別并解析出的一個或多個字段中的指定字段的參數(shù)值設置限定閾值;
對于參數(shù)值超出限定閾值的日志數(shù)據(jù)進行丟棄處理。
依據(jù)本發(fā)明的另一方面,提供了一種處理日志數(shù)據(jù)的裝置,包括:
樣例解析單元,適于對輸入的一條樣例日志進行解析處理,輸出格式化的解析結(jié)果;
解析規(guī)則記錄單元,適于接收用戶的解析結(jié)果確認指令后,記錄解析所述樣例日志所采用的日志解析規(guī)則;
日志解析單元,適于根據(jù)所記錄的所述日志解析規(guī)則,對用戶指定的業(yè)務的源日志數(shù)據(jù)進行解析處理,得到該業(yè)務的格式化的日志數(shù)據(jù)并保存到數(shù)據(jù)倉庫中。
可選地,該裝置還包括:
統(tǒng)計計算單元,適于接收關(guān)于指定業(yè)務的日志統(tǒng)計請求;根據(jù)所述日志統(tǒng)計請求,對數(shù)據(jù)倉庫中的所述指定業(yè)務的格式化的日志數(shù)據(jù)進行統(tǒng)計計算,輸出統(tǒng)計計算結(jié)果。
可選地,所述樣例解析單元包括:
多個日志內(nèi)容識別引擎,用于分別識別不同格式的日志內(nèi)容并解析成一個或多個字段;
匯總處理單元,適于將所述樣例日志依次輸入到所述多個日志內(nèi)容識別引擎中,將各日志內(nèi)容識別引擎的輸出各字段進行匯總得到所述格式化的解析結(jié)果。
可選地,所述解析規(guī)則記錄單元,適于將有輸出結(jié)果的各日志內(nèi)容識別引擎的識別解析規(guī)則匯總記錄為解析所述樣例日志所采用的日志解析規(guī)則。
可選地,該裝置還包括:
自定識別單元,適于當所述樣例日志中存在各日志內(nèi)容識別引擎均無法識別的內(nèi)容時,通過自定義識別接口輸出該內(nèi)容;通過自定義識別接口接收人工識別后輸入的識別結(jié)果和相應的識別解析規(guī)則;將該人工識別后輸入的識別解析規(guī)則記錄為解析所述樣例日志所采用的日志解析規(guī)則的一部分。
可選地,所述多個日志內(nèi)容識別引擎包括如下中的一種或多種:
IP地址識別引擎;時間戳識別引擎;用戶ID識別引擎;渠道識別引擎;JSON格式內(nèi)容識別引擎。
可選地,該裝置還包括:
識別引擎管理單元,適于提供日志內(nèi)容識別引擎編輯接口,通過該接口接收增加/刪除/修改日志內(nèi)容識別引擎的指令,根據(jù)指令執(zhí)行相應的日志內(nèi)容識別模塊增加/刪除/修改操作。
可選地,所述多個日志內(nèi)容識別引擎包括IP地址識別引擎;
所述IP地址識別引擎在識別出IP地址后,進一步解析IP地址,IP地址解析結(jié)果包括如下一個或多個字段:國家、省、市、運營商。
可選地,所述樣例解析單元,還適于提供解析結(jié)果編輯界面,通過該界面接收輸入的對解析結(jié)果中的各字段進行操作的指令,并執(zhí)行相應的操作;
所述對解析結(jié)果中的各字段進行操作的指令包括如下中的一種或多種:
調(diào)整各字段的排序順序的指令;
修改指定字段的名稱的指令;
刪除指定字段的指令。
可選地,一個日志內(nèi)容識別引擎的識別解析規(guī)則包括:對識別并解析出的一個或多個字段中的指定字段的參數(shù)值設置限定閾值;
所述日志解析單元,適于對于參數(shù)值超出限定閾值的日志數(shù)據(jù)進行丟棄處理。
由上述可知,本發(fā)明的技術(shù)方案,對輸入的一條樣例日志進行解析處理,輸出格式化的解析結(jié)果,經(jīng)用戶確認后將其記錄為解析樣例日志所采用的日志解析規(guī)則,利用該規(guī)則對用戶指定的業(yè)務的源日志數(shù)據(jù)進行解析處理,得到該業(yè)務的格式化的日志數(shù)據(jù)并保存到數(shù)據(jù)倉庫中。該技術(shù)方案利用對樣例日志進行解析得到的日志解析規(guī)則,實現(xiàn)了對業(yè)務的日志數(shù)據(jù)的格式化解析、統(tǒng)一管理入庫,規(guī)范、有秩序地實現(xiàn)了對日志數(shù)據(jù)的管控。
上述說明僅是本發(fā)明技術(shù)方案的概述,為了能夠更清楚了解本發(fā)明的技術(shù)手段,而可依照說明書的內(nèi)容予以實施,并且為了讓本發(fā)明的上述和其它目的、特征和優(yōu)點能夠更明顯易懂,以下特舉本發(fā)明的具體實施方式。
附圖說明
通過閱讀下文優(yōu)選實施方式的詳細描述,各種其他的優(yōu)點和益處對于本領(lǐng)域普通技術(shù)人員將變得清楚明了。附圖僅用于示出優(yōu)選實施方式的目的,而并不認為是對本發(fā)明的限制。而且在整個附圖中,用相同的參考符號表示相同的部件。在附圖中:
圖1示出了日志數(shù)據(jù)平臺的工作流程示意圖;
圖2示出了根據(jù)本發(fā)明一個實施例的一種處理日志數(shù)據(jù)的方法的流程示意圖;
圖3示出了根據(jù)本發(fā)明一個實施例的一種處理日志數(shù)據(jù)的裝置的結(jié)構(gòu)示意圖。
具體實施方式
下面將參照附圖更詳細地描述本公開的示例性實施例。雖然附圖中顯示了本公開的示例性實施例,然而應當理解,可以以各種形式實現(xiàn)本公開而不應被這里闡述的實施例所限制。相反,提供這些實施例是為了能夠更透徹地理解本公開,并且能夠?qū)⒈竟_的范圍完整的傳達給本領(lǐng)域的技術(shù)人員。
本發(fā)明的技術(shù)方案可以應用于日志數(shù)據(jù)平臺,圖1示出了日志數(shù)據(jù)平臺的工作流程示意圖。如圖1所示,該日志數(shù)據(jù)平臺將日志數(shù)據(jù)通過ETL(Extract-Transform-Load,抽取-轉(zhuǎn)換-加載)處理,將結(jié)果數(shù)據(jù)保存到數(shù)據(jù)倉庫,同時支持對日志數(shù)據(jù)的統(tǒng)計計算,生成報表保存到報表數(shù)據(jù)庫;以及提供前端頁面,便于用戶的訪問,了解任務的運行狀況以及將報表數(shù)據(jù)進行可視化展示等。整個平臺還提供權(quán)限管理功能和任務調(diào)度功能,對日志數(shù)據(jù)的處理、統(tǒng)計和展示進行調(diào)控。本發(fā)明將著重介紹ETL處理部分的內(nèi)容,重點在于日志數(shù)據(jù)抽取和轉(zhuǎn)換部分的內(nèi)容。
圖2示出了根據(jù)本發(fā)明一個實施例的一種處理日志數(shù)據(jù)的方法的流程示意圖,如圖2所示,該方法包括:
步驟S210,對輸入的一條樣例日志進行解析處理,輸出格式化的解析結(jié)果。
步驟S220,接收用戶的解析結(jié)果確認指令后,記錄解析樣例日志所采用的日志解析規(guī)則。
例如對于樣例日志:<id=123><sex=male><age=18>,可以得到日志解析規(guī)則為:用戶ID是以“id=”開始的一串數(shù)字;性別是以“sex=”開始的一串字符;年齡是以“age=”開始的數(shù)字。那么應用該日志解析規(guī)則,就可以對<id=1233><sex=male><age=8>、<id=12332><sex=male><age=28>這樣的源日志數(shù)據(jù)進行解析了。
步驟S230,根據(jù)所記錄的日志解析規(guī)則,對用戶指定的業(yè)務的源日志數(shù)據(jù)進行解析處理,得到該業(yè)務的格式化的日志數(shù)據(jù)并保存到數(shù)據(jù)倉庫中。
數(shù)據(jù)倉庫(Data Warehouse)特別適合將分散的數(shù)據(jù)進行規(guī)范化存儲,并且數(shù)據(jù)倉庫中可以根據(jù)業(yè)務的具體內(nèi)容,設置相應的事實表和維度表,通常情況下,日志數(shù)據(jù)會被保存到相應的事實表中。當業(yè)務較多時,數(shù)據(jù)倉庫中會設置多個數(shù)據(jù)集市(Data Mart),每個數(shù)據(jù)集市可以對應一類業(yè)務。因此具體地可以將業(yè)務的格式化的日志數(shù)據(jù)保存到數(shù)據(jù)倉庫中對應的數(shù)據(jù)集市中。
可見,圖2所示的方法,對輸入的一條樣例日志進行解析處理,輸出格式化的解析結(jié)果,經(jīng)用戶確認后將其記錄為解析樣例日志所采用的日志解析規(guī)則,利用該規(guī)則對用戶指定的業(yè)務的源日志數(shù)據(jù)進行解析處理,得到該業(yè)務的格式化的日志數(shù)據(jù)并保存到數(shù)據(jù)倉庫中。該技術(shù)方案利用對樣例日志進行解析得到的日志解析規(guī)則,實現(xiàn)了對業(yè)務的日志數(shù)據(jù)的格式化解析、統(tǒng)一管理入庫,規(guī)范、有秩序地實現(xiàn)了對日志數(shù)據(jù)的管控。
在本發(fā)明的一個實施例中,上述方法還包括:為數(shù)據(jù)倉庫中的各數(shù)據(jù)集市按用戶分組配置權(quán)限;提供前端頁面,根據(jù)前端頁面發(fā)送的用戶登錄信息,確定該用戶的用戶分組信息;當接收到前端頁面發(fā)送的數(shù)據(jù)集市查看指令時,根據(jù)該用戶的用戶分組信息,通過前端頁面向該用戶展示其有查看權(quán)限的數(shù)據(jù)集市信息。例如,產(chǎn)品A的部門成員只擁有對產(chǎn)品A的數(shù)據(jù)集市的查看權(quán)限,而不會擁有對產(chǎn)品B的數(shù)據(jù)集市的查看權(quán)限。如果用戶A通過前端頁面提交數(shù)據(jù)集市查看指令,可以查看到其擁有查看權(quán)限的數(shù)據(jù)集市信息,如數(shù)據(jù)集市名稱。
在本發(fā)明的一個實施例中,上述方法還包括:配置業(yè)務和域名的對應關(guān)系,將接收到的日志數(shù)據(jù)按域名進行分類;對至少一個指定業(yè)務的日志數(shù)據(jù)進行解析處理包括:根據(jù)該業(yè)務對應的域名,對該域名分類下的日志數(shù)據(jù)進行解析處理。
在實際應用中,以互聯(lián)網(wǎng)公司為例,其往往會為經(jīng)營的各業(yè)務分配不同的域名開進行業(yè)務的開展,因此產(chǎn)生的日志數(shù)據(jù)也都來自于不同的域名,將接收到的日志數(shù)據(jù)按域名進行分類可以快捷準確地實現(xiàn)將日志數(shù)據(jù)進行分類。由于分布式集群的廣泛應用,各業(yè)務往往會在不同的分布式集群上進行開展,例如,同一業(yè)務的功能模塊可能在全國的若干個不同集群上部署,同樣地,同一集群上可能運行有多個業(yè)務線的任務,那么日志數(shù)據(jù)按來源等方式進行分類遠遠不如按域名分類快速簡便。在本例中各域名下還可以有多個子域名,對應業(yè)務中的子業(yè)務,這樣域名與業(yè)務的對應關(guān)系比較繁多,可以將其保存為元數(shù)據(jù),作為數(shù)據(jù)字典來進行管理和使用。當然,也可以為元數(shù)據(jù)的查看、修改等按用戶分組分配不同的權(quán)限,例如管理員可以擁有修改權(quán)限,普通用戶僅擁有查看部分內(nèi)容的權(quán)限等。
在本發(fā)明的一個實施例中,上述方法還包括:預設多個日志內(nèi)容識別引擎,用于分別識別不同格式的日志內(nèi)容并解析成一個或多個字段;將樣例日志依次輸入到多個日志內(nèi)容識別引擎中;將各日志內(nèi)容識別引擎的輸出各字段進行匯總得到格式化的解析結(jié)果。
由于各業(yè)務所使用的系統(tǒng)或服務器可能不同,產(chǎn)生的日志數(shù)據(jù)的格式也是多種多樣的。下面給出了幾種日志的示例:
1、http://mbs.hao.#/index.php?id=1353332&sex=male&age=28&....
2、{"id":"13532232332","sex":"male","age":"28"}
3、<id=13532232332><sex=male><age=28>
4、id->13532232332;sex->male;age->28
可見這四種日志的格式是完全不同的。在上述實施例中可以利用預設的多個日志識別引擎來識別不同格式的日志內(nèi)容。例如,JSON是一種較為常用的數(shù)據(jù)格式,其內(nèi)容包含的結(jié)構(gòu)通常是特定的,例如以大括號、冒號,引號等符號將日志內(nèi)容分隔為多個字段(如上面的示例2),而針對JSON格式的日志識別引擎就可以將日志內(nèi)容按這些分隔符進行解析處理,得到一個或多個字段的一條或多條數(shù)據(jù)。具體地,日志內(nèi)容識別引擎可以包括如下中的一種或多種:IP地址識別引擎;時間戳識別引擎;用戶ID識別引擎;渠道識別引擎;JSON格式內(nèi)容識別引擎。IP地址的格式是可以預估的(例如:xxx.xxx.xxx.xxx),用戶ID往往將NAME、USER_ID或ID等作為key值,渠道會由開發(fā)人員設置相應的key值(例如channel),時間戳的格式通常為“YYYY-MM-DD HH:mm:SS”。特別地,IP地址識別引擎還可以在識別出IP地址后,進一步解析IP地址,IP地址解析結(jié)果包括如下一個或多個字段:國家、省、市、運營商。當然,也可以根據(jù)需求,將其拓展到更詳細的地址,IP地址解析結(jié)果還可以包括區(qū)、街道等拓展字段,但這些在通常情況下對于后續(xù)的處理用處較低,會浪費一定的資源,可以根據(jù)需求進行設置。
可以看出,日志識別引擎也是可配置的,例如不同業(yè)務對渠道所使用的key可能是不同的。因此在本發(fā)明的一個實施例中,提供日志內(nèi)容識別引擎編輯接口,通過該接口接收增加/刪除/修改日志內(nèi)容識別引擎的指令,根據(jù)指令執(zhí)行相應的日志內(nèi)容識別模塊增加/刪除/修改操作。
在實際中日志的格式非常繁多。幸而這些日志格式大多都包含規(guī)范、可識別的結(jié)構(gòu),可以被不同的日志識別引擎所識別。但是對一個業(yè)務產(chǎn)生的日志數(shù)據(jù)而言,通常并不會用到所有的日志識別引擎,而業(yè)務產(chǎn)生的日志數(shù)據(jù)數(shù)量繁多,如果每次都調(diào)用所有的日志識別引擎來進行識別,不僅浪費資源,效率還很底下。因此在本發(fā)明的一個實施例中,上述方法中,僅將有輸出結(jié)果的各日志內(nèi)容識別引擎的識別解析規(guī)則匯總記錄。這樣下次在對該業(yè)務的日志數(shù)據(jù)進行解析處理時,就沒有必要浪費實際不會使用到日志內(nèi)容識別引擎了。
然而,并不是所有日志數(shù)據(jù)都是以這樣規(guī)范的格式生成的,預設的日志識別引擎可以處理大部分的日志數(shù)據(jù),但也會存在解析結(jié)果不符合日志原意的情況。因此在本發(fā)明的一個實施例中,當樣例日志中存在各日志內(nèi)容識別引擎均無法識別的內(nèi)容時,通過自定義識別接口輸出該內(nèi)容;通過自定義識別接口接收人工識別后輸入的識別結(jié)果和相應的識別解析規(guī)則;將該人工識別后輸入的識別解析規(guī)則記錄為解析樣例日志所采用的日志解析規(guī)則的一部分。例如,常用的分隔符包括冒號、分號、大小括號等,如果一類業(yè)務的日志數(shù)據(jù)中包含了不常用的分隔符,就需要用戶在自定義識別接口中進行識別結(jié)果和相應的識別解析規(guī)則輸入。
在本發(fā)明的一個實施例中,上述方法還包括:通過前端頁面接收輸入的對解析結(jié)果中的各字段進行操作的指令,并執(zhí)行相應的操作;對解析結(jié)果中的各字段進行操作的指令包括如下中的一種或多種:調(diào)整各字段的排序順序的指令;修改指定字段的名稱的指令;刪除指定字段的指令。
例如,解析結(jié)果中的一個字段的數(shù)據(jù)對后續(xù)統(tǒng)計計算沒有任何幫助,可以刪除該字段;解析結(jié)果中的字段名稱為“USERNAME”,后續(xù)處理時希望將其改為“用戶名”等等,這些都可以在解析結(jié)果編輯界面進行操作。
上一實施例中可以對整個字段進行操作,而在本發(fā)明的一個實施例中,上述方法中,一個日志內(nèi)容識別引擎的識別解析規(guī)則包括:對識別并解析出的一個或多個字段中的指定字段的參數(shù)值設置限定閾值;對于參數(shù)值超出限定閾值的日志數(shù)據(jù)進行丟棄處理。這樣可以在日志解析時就丟棄掉部分不需要的數(shù)據(jù),減少了后期進行日志數(shù)據(jù)丟棄的操作。
上述實施例中介紹了對日志數(shù)據(jù)進行解析處理的操作,而解析得到的業(yè)務的格式化的日志數(shù)據(jù)被保存到數(shù)據(jù)倉庫中對應的數(shù)據(jù)集市中,具體地,需要根據(jù)字段屬性確定該字段對應的數(shù)據(jù)倉庫中的列;將待存儲數(shù)據(jù)按字段存儲到數(shù)據(jù)倉庫中相應的列中。
前文述及,數(shù)據(jù)倉庫中可以包括事實表和維度表,這些數(shù)據(jù)表通常是預先建好的,用于存儲接收到的數(shù)據(jù)。因此,接收到的數(shù)據(jù)會被按屬性確定其對應的是數(shù)據(jù)表中的哪個列。而各個表包含的列通常是不同的,因此在本實施例中只需要確定其對應的是數(shù)據(jù)倉庫中的哪個列即可。
具體地,根據(jù)字段屬性確定該字段對應的數(shù)據(jù)倉庫中的列包括:讀取數(shù)據(jù)倉庫的元數(shù)據(jù),得到數(shù)據(jù)倉庫中各列的屬性;根據(jù)字段屬性和數(shù)據(jù)倉庫中各列的屬性,建立待存儲數(shù)據(jù)中各字段的數(shù)據(jù)和各列的映射關(guān)系。元數(shù)據(jù)包括:數(shù)據(jù)倉庫各列的業(yè)務屬性和/或數(shù)據(jù)屬性,其中,業(yè)務屬性包括如下中的至少一種:業(yè)務名稱、業(yè)務域名、業(yè)務描述信息;數(shù)據(jù)屬性包括如下中的至少一種:列名、數(shù)據(jù)格式、數(shù)據(jù)類型。例如,“用戶名”這個字段對應的是哪個列,諸如此類的對應關(guān)系可以保存在數(shù)據(jù)倉庫的元數(shù)據(jù)中。
在本發(fā)明的一個實施例中,上述方法還包括:通過前端頁面接收輸入的對指定列的數(shù)據(jù)進行處理的指令,指令包括如下中的至少一種:數(shù)據(jù)解密,數(shù)據(jù)格式轉(zhuǎn)換、數(shù)據(jù)編碼轉(zhuǎn)換;根據(jù)接收到的指令,對指定列的數(shù)據(jù)進行相應的處理。
例如,對該列的數(shù)據(jù)進行反序列化處理,使其變得可讀;日志中的時間為冒號格式的數(shù)據(jù),將其轉(zhuǎn)換為時間戳,等等。
前述實施例中可以在日志識別引擎中對數(shù)據(jù)進行篩除,在本發(fā)明的一個實施例中還提供了對數(shù)據(jù)倉庫中的數(shù)據(jù)進行篩除的方法:通過前端頁面接收輸入的對指定列的列值設置限定閾值的指令;根據(jù)該指令,將列值超出限定閾值的整條數(shù)據(jù)進行刪除處理。例如,將訪問次數(shù)低于3的整條數(shù)據(jù)進行刪除。
相類似地,還可以通過前端界面接收輸入的他對數(shù)據(jù)倉庫中的各列進行操作的指令,并執(zhí)行相應的操作;對數(shù)據(jù)倉庫中的各列進行操作的指令包括如下中的一種或多種:調(diào)整各列的排序順序的指令;修改指定列的列名的指令;刪除指定列的指令。
需要注意的是,在該實施例中直接對數(shù)據(jù)倉庫中的數(shù)據(jù)進行調(diào)整,而在前述實施例中雖然也可以調(diào)整各字段的排序順序、修改指定字段的名稱或刪除指定字段,但這些數(shù)據(jù)還未存入數(shù)據(jù)倉庫,處于數(shù)據(jù)緩存中。
在本發(fā)明的一個實施例中,上述方法中,數(shù)據(jù)集市包括至少一個數(shù)據(jù)表;為數(shù)據(jù)倉庫中的各數(shù)據(jù)集市按用戶分組配置權(quán)限還包括:為數(shù)據(jù)集市的各數(shù)據(jù)表按用戶分組配置查看權(quán)限,以及為數(shù)據(jù)表的各列按用戶分組配置查看權(quán)限;根據(jù)該用戶的用戶分組信息,通過前端頁面向該用戶展示其有查看權(quán)限的數(shù)據(jù)集市信息包括:根據(jù)該用戶的用戶分組信息,向該用戶展示其有查看權(quán)限的數(shù)據(jù)表,和/或向該用戶展示其有查看權(quán)限的數(shù)據(jù)表中的列。例如,運營人員可以查看業(yè)務流水的數(shù)據(jù)表,而技術(shù)人員不能查看。
在本發(fā)明的一個實施例中,上述方法還包括:接收關(guān)于指定業(yè)務的日志統(tǒng)計請求;根據(jù)日志統(tǒng)計請求,對數(shù)據(jù)倉庫中的指定業(yè)務的格式化的日志數(shù)據(jù)進行統(tǒng)計計算,輸出統(tǒng)計計算結(jié)果。當需要生成報表時,指定業(yè)務的日志統(tǒng)計請求可以為報表生成任務。則在本發(fā)明的一個實施例中,上述方法還包括:接收并保存用戶通過前端頁面提交的報表生成任務;根據(jù)報表生成任務中指定的數(shù)據(jù)集市中的日志數(shù)據(jù),生成報表并保存至報表數(shù)據(jù)庫;其中,生成的報表的各列的權(quán)限與其對應的數(shù)據(jù)集市中的數(shù)據(jù)表中列的權(quán)限相同;根據(jù)報表的各列的權(quán)限確定該報表的權(quán)限。
在本實施例中可以根據(jù)數(shù)據(jù)倉庫中的日志數(shù)據(jù),進行統(tǒng)計計算,生成統(tǒng)計報表等。由于是根據(jù)數(shù)據(jù)倉庫中的數(shù)據(jù)生成的報表,其權(quán)限也跟隨了原數(shù)據(jù)的權(quán)限。最后,如果一個報表包含四列,那么只有對這四列中任一列有權(quán)限的用戶分組的用戶才能查看該報表,并且其只能查看到其有查看權(quán)限的那一列。例如,用戶A所在的用戶分組可以查看報表的前三列,那么他看到的報表就只有三列而不是四列。
在本發(fā)明的一個實施例中,上述方法中,根據(jù)報表生成任務中指定的數(shù)據(jù)集市中的日志數(shù)據(jù),生成報表并保存至報表數(shù)據(jù)庫包括:根據(jù)報表生成任務,確定完成報表生成任務的數(shù)據(jù)處理模型,以及從相應的數(shù)據(jù)集市中讀取指定日志數(shù)據(jù);利用確定的數(shù)據(jù)處理模型對待日志數(shù)據(jù)進行數(shù)據(jù)處理,生成報表并保存至報表數(shù)據(jù)庫。
現(xiàn)有的報表開發(fā)往往需要技術(shù)人員手動編寫代碼,對數(shù)據(jù)進行統(tǒng)計計算,費時費力,而且在需求的報表數(shù)量較多時,不能快速滿足用戶的需求。本實施例提供了一種報表的自動生成方法,用戶只需要指定生成報表所需的日志數(shù)據(jù),選擇指定的數(shù)據(jù)處理模型,就可以得到相應的報表,簡單省時。其中,報表生成任務包括:輸入地址;根據(jù)報表生成任務中指定的數(shù)據(jù)集市中的日志數(shù)據(jù),生成報表并保存至報表數(shù)據(jù)庫包括:從輸入地址讀取日志數(shù)據(jù),生成報表并保存至報表數(shù)據(jù)庫。當然,報表數(shù)據(jù)庫也可以由輸出地址來指定。
除了指定輸入地址,還可以由用戶在報表生成任務中限定更多條件,例如使用數(shù)據(jù)集市中某個數(shù)據(jù)表的部分數(shù)據(jù)。因此在本發(fā)明的一個實施例中,報表生成任務包括:用戶輸入的標準查詢語句或用戶輸入的查詢參數(shù);該方法還包括:以用戶輸入的標準查詢語句查詢相應的數(shù)據(jù)集市,得到用戶指定的數(shù)據(jù)集市中的日志數(shù)據(jù);或者,根據(jù)用戶輸入的查詢參數(shù)生成標準查詢語句,以生成的標準查詢語句查詢相應的數(shù)據(jù)集市,得到指定的數(shù)據(jù)集市中的日志數(shù)據(jù)。例如對于企業(yè)數(shù)據(jù)中心的技術(shù)人員而言,編寫標準查詢語句得心應手,但對于普通的業(yè)務人員可能并不會編寫這樣的查詢語句。因此在本實施例中提供了將用戶輸入的查詢條件進行拼裝的功能。為了方便識別用戶輸入的內(nèi)容,用戶在查詢時除了指定相應的數(shù)據(jù)集市外,還可以指定用于識別輸入內(nèi)容的字符庫,避免輸入的內(nèi)容不被正確識別。
由于數(shù)據(jù)集市中的數(shù)據(jù)量十分龐大,如果用戶不在查詢條件中設置相應的限制,例如時間條件,所請求的數(shù)據(jù)量可能會引起數(shù)據(jù)集市的崩潰。因此在本發(fā)明的一個實施例中,上述方法還包括:設置語句過濾規(guī)則,對用戶輸入的標準查詢語句或生成的標準查詢語句進行過濾。上述查詢的方法不僅可以用于具體日志數(shù)據(jù)的查詢,也可以用于數(shù)據(jù)集市信息的查詢。
生成報表所需的數(shù)據(jù)處理模型可以是用戶指定的,也可以用戶從提供的數(shù)據(jù)處理模型中選擇的,在本發(fā)明的一個實施例中,根據(jù)報表生成任務,確定完成報表生成任務的數(shù)據(jù)處理模型包括:從數(shù)據(jù)處理模型庫中選擇指定的數(shù)據(jù)處理模型,其中,數(shù)據(jù)處理模型庫中包含如下的至少一種數(shù)據(jù)處理模型:新增統(tǒng)計模型;活躍統(tǒng)計模型;留存統(tǒng)計模型。這些模型可以從日志中分別統(tǒng)計出某一日的日志中,在歷史上未出現(xiàn)過的用戶(新增用戶)數(shù)量、指定時間段內(nèi)活躍用戶的數(shù)量、某一日新增用戶的留存情況。當然,具體的數(shù)據(jù)模型可以根據(jù)業(yè)務需求進行添加或配置,在此不做限制。用戶在使用這些數(shù)據(jù)處理模型時,一般不再需要編寫代碼,只需要提供參數(shù)信息即可使用,例如使用哪些列進行統(tǒng)計計算等。也就是說,報表生成任務還包括:指定的數(shù)據(jù)處理模型的參數(shù)信息;利用確定的數(shù)據(jù)處理模型對日志數(shù)據(jù)進行數(shù)據(jù)處理包括:應用參數(shù)信息對指定的數(shù)據(jù)處理模型進行配置后,利用配置后的數(shù)據(jù)處理模型對日志進行數(shù)據(jù)處理。
當然,這種“傻瓜式”的模型不能夠滿足用戶的所有需求。因此在本發(fā)明的一個實施例中,上述方法中指定的數(shù)據(jù)處理模型為streaming模型;報表生成任務還包括:至少一段自定義的代碼片段;參數(shù)信息包括:每段代碼片段與streaming模型中一塊邏輯分塊的對應關(guān)系。
例如,用戶希望利用Map-Reduce框架執(zhí)行對日志數(shù)據(jù)的統(tǒng)計計算。那么在本實施例中,用戶只需要分別開發(fā)Map程序代碼段和Reduce程序代碼段(也就是執(zhí)行計算的核心邏輯),而不需再編寫完整代碼。在提交報表任務時,只需要將Map程序代碼段和Reduce程序代碼段分別填入前端頁面中與Map段和Reduce段相應的代碼輸入框,就可以在后臺實現(xiàn)整體代碼的拼裝,這樣程序易于管理和修改,也減少了代碼編寫錯誤的可能。
在上述模型都不能滿足用戶需求的情況下,用戶也可以選擇自定義的模型,因此上述方法中,報表生成任務包括:自定義的數(shù)據(jù)處理模型的地址;確定完成報表生成任務的數(shù)據(jù)處理模型包括:從該地址讀取自定義的數(shù)據(jù)處理模型。或者,在代碼量較小的情況下也可以通過前端頁面之間上傳。自定義的數(shù)據(jù)處理模型也可以保存到數(shù)據(jù)處理模型庫中,上傳者也可以為其分配權(quán)限。
除了上面根據(jù)數(shù)據(jù)集市中的日志數(shù)據(jù)生成報表的方法,用戶也可以將其他方式開發(fā)的報表上傳到報表數(shù)據(jù)庫,進行統(tǒng)一的權(quán)限控制和管理。因此在本發(fā)明的一個實施例中,上述方法還包括:接收用戶通過前端頁面上傳的報表,和/或根據(jù)用戶通過前端頁面提交的報表存儲路徑,從該路徑獲取指定的報表,保存到報表數(shù)據(jù)庫。
在本發(fā)明的一個實施例中,上述方法還包括:根據(jù)用戶的用戶分組信息,向其展示可編輯權(quán)限的數(shù)據(jù)集市和/或報表;接收用戶提交的權(quán)限編輯指令,對數(shù)據(jù)集市和/或報表的權(quán)限進行相應的編輯。
在本實施例中提供了權(quán)限的管理控制方法,擁有較高權(quán)限的管理者(例如數(shù)據(jù)中心的管理員)可以對其擁有編輯權(quán)限的數(shù)據(jù)的權(quán)限進行編輯。例如,業(yè)務負責人可以控制其每個小組的成員只可以看到該小組相關(guān)的報表。
在本發(fā)明的一個實施例中,上述方法還包括:根據(jù)該用戶的用戶分組信息,通過前端頁面向該用戶展示其有查看權(quán)限的報表名稱;報表生成任務包括:用戶指定的報表;根據(jù)報表生成任務中指定的數(shù)據(jù)集市中的日志數(shù)據(jù),生成報表并保存至報表數(shù)據(jù)庫包括:使用用戶指定的報表的配置信息,根據(jù)報表生成任務中指定的數(shù)據(jù)集市中的日志數(shù)據(jù)生成報表。
在本實施例中提供了根據(jù)已有報表生成新報表的方法,可以稱為“報表克隆”,即利用一個已開發(fā)完成的報表的配置信息,生成新的報表,這樣新報表的形式等都與已開發(fā)的原報表相類似。
在本發(fā)明的一個實施例中,上述方法還包括:當接收到用戶輸入的報表查看指令時,通過前端頁面向該用戶展示該報表中用戶具有查看權(quán)限的列的數(shù)據(jù)。
由于報表中的數(shù)據(jù)量通常是很大的(可能包含業(yè)務開展以來的所有數(shù)據(jù),例如幾年的數(shù)據(jù)),在前述實施例中只展示列名而不展示列中的具體數(shù)據(jù)。而在用戶輸入查看指令后,再將具體的數(shù)據(jù)(包含限制條件,例如,時間條件)進行展示。
在本發(fā)明的一個實施例中,上述方法還包括:將報表數(shù)據(jù)庫中新增報表的查看次數(shù)初始化為零;當接收到用戶輸入的報表查看指令時,將相應報表的查看次數(shù)增加一;為各報表設置清理周期,在到達清理周期的時間點時,根據(jù)判斷該報表的查看次數(shù)是否低于清理閾值,若低于,則刪除相應的報表生成任務。
在報表生成任務設立后,由于日志數(shù)據(jù)在不斷生成,因此報表數(shù)據(jù)也在不斷的更新,這無疑耗費了大量的資源,因此對于查看量較少甚至為0的報表,將相應的報表生成任務進行刪除可以節(jié)約資源。
在本發(fā)明的一個實施例中,上述方法還包括:根據(jù)用戶的用戶分組信息,向其展示其有使用權(quán)限的統(tǒng)計圖模型,以使前端頁面根據(jù)用戶選定的統(tǒng)計圖模型和已展示報表的數(shù)據(jù),生成相應的統(tǒng)計圖。
報表通常是表格的方式,這并不利于觀看,而統(tǒng)計圖的方式就更為直觀,例如餅狀圖、柱狀圖等。因此在本實施例中提供了根據(jù)報表數(shù)據(jù)生成統(tǒng)計圖的方法。而具體地,統(tǒng)計圖模型包括如下中的任一種:根據(jù)前端頁面中緩存的已展示報表的數(shù)據(jù)生成統(tǒng)計圖的模型;重新從數(shù)據(jù)源獲取該報表中用戶具有查看權(quán)限的列的數(shù)據(jù),生成統(tǒng)計圖的模型;對已展示報表的數(shù)據(jù)源進行編輯的統(tǒng)計圖模型。
上述模型中,根據(jù)前端頁面中緩存的已展示報表的數(shù)據(jù)生成統(tǒng)計圖的模型不需要與服務器進行交互,這樣用戶即使在前端頁面上對數(shù)據(jù)進行排序、分類等等操作,都不會再浪費時間和資源對報表數(shù)據(jù)庫進行訪問;而對于數(shù)據(jù)實時性較為敏感的報表,就可以使用重新從數(shù)據(jù)源獲取該報表中用戶具有查看權(quán)限的列的數(shù)據(jù),生成統(tǒng)計圖的模型。另外,由于許多情況下用戶希望對報表進行修改,例如修改列名,而訪問報表數(shù)據(jù)庫是十分復雜的,因此還提供了對已展示報表的數(shù)據(jù)源進行編輯的統(tǒng)計圖模型。
由于報表生成任務會耗費資源,因此對任務進行合理的調(diào)度是十分必要的。在本發(fā)明的一個實施例中,上述方法還包括:根據(jù)報表生成任務生成并保存相應的任務配置文件;根據(jù)已保存的多個任務配置文件,生成并保存包含任務間依賴關(guān)系的任務拓撲圖;根據(jù)生成的任務拓撲圖完成任務調(diào)度。
任務拓撲圖示出了任務間的依賴關(guān)系,例如任務A只有在任務B運行完成后才能運行。那么具體地,根據(jù)生成的任務拓撲圖完成任務調(diào)度包括:當任務拓撲圖中的任一個任務滿足該任務的除任務間依賴關(guān)系外的其他運行條件時,根據(jù)任務拓撲圖判斷該任務是否依賴于其他任務運行;如果不依賴其他任務運行,讀取該任務的任務配置文件,直接運行該任務;如果依賴其他任務運行,則在其依賴的其他任務全部運行結(jié)束后,再讀取該任務的任務配置文件,運行該任務。
現(xiàn)有的報表生成任務的調(diào)度往往是預估其依賴的任務的運行時間,例如任務B可能在下午兩點運行完畢,那么任務A的運行時間可能被設置為下午兩點十分。但是考慮到任務的運行與運行任務的集群的空閑度有關(guān),當集群較忙時,可能任務B會在下午兩點半才運行完畢,這樣在下午兩點十分運行的任務A就會運行異常;而當集群較閑時,可能任務B在下午一點半就已運行完畢,而直到下午兩點十分任務A才會運行,這四十分鐘的時間集群的資源就被浪費了。而在本實施例中,當任務運行的其他條件滿足后,在其依賴的任務運行完畢后該任務就可以運行。
具體地,報表生成任務還包括如下中的任一種:任務的基本參數(shù);任務運行的時間條件;任務運行的集群;任務運行的物理資源條件;任務運行的數(shù)據(jù)資源條件;任務與其他任務的依賴關(guān)系。
例如,指定任務在哪個集群上運行,要求集群上的機器滿足什么配置;周期性任務可以設置為每日的固定時間段內(nèi)執(zhí)行,而臨時任務也可以增加限制性條件,如僅在指定的一周內(nèi)的每日的固定時間段內(nèi)執(zhí)行。將任務提交到集群時,可以根據(jù)負載均衡原則,從任務運行的集群中選擇至少一臺機器運行該任務。
如果報表生成任務中包含任務與其他任務的依賴關(guān)系,則可以直接根據(jù)任務與其他任務的依賴關(guān)系生成任務拓撲圖;也可以根據(jù)任務運行的數(shù)據(jù)資源條件生成任務拓撲圖,其中,任務運行的數(shù)據(jù)資源條件包括:任務運行所需數(shù)據(jù)的輸入地址,和/或任務運行結(jié)果的輸出地址。
舉例而言,任務A所需的數(shù)據(jù)是任務B得到的結(jié)果,那么任務B的輸出地址與任務A的輸入地址就是匹配的,這樣就得到了任務A依賴于任務B。
用戶可以通過前端頁面查看到有查看權(quán)限的任務拓撲圖,并對其進行修改。因此在本發(fā)明的一個實施例中,該方法還包括:響應于前端頁面發(fā)送的展示指令,將多個任務和/或包含多個任務間依賴關(guān)系的任務拓撲圖返回給前端頁面進行展示。用戶還可以根據(jù)有查看權(quán)限的多個任務,生成新的任務拓撲圖。例如,將任務A和任務B添加到新的任務拓撲圖中,并制定任務A依賴于任務B?;蛘?,對已有的任務拓撲圖中的依賴關(guān)系進行修改。即:接收前端頁面發(fā)送的任務間依賴關(guān)系的新增/修改/刪除指令,相應地生成或修改任務拓撲圖。前端頁面可以可視化地呈現(xiàn)任務拓撲圖,例如,用戶在修改拓撲圖時,只需要將任務作為節(jié)點拖入或拖出圖,在兩任務間以箭頭標識依賴關(guān)系。
在本發(fā)明的一個實施例,還可以通過對報表生成任務進行修改,來使得相應的任務拓撲圖發(fā)送更改。即接收報表生成任務修改指令,對相應任務的任務配置文件進行修改;根據(jù)報表生成任務修改指令判斷是否需要對該任務相關(guān)的任務拓撲圖進行修改,若是,則根據(jù)修改后的任務配置文件對該任務相關(guān)的任務拓撲圖進行修改。例如,更改了輸入地址,可能會使得任務A不再依賴任務B,而是變?yōu)橐蕾嚾蝿誄。
由于報表生成任務可以面向企業(yè)內(nèi)的所有用戶,為保證穩(wěn)定性,可以采用如下方法:提供用于接收報表生成任務的報表生成任務提交接口;為任務調(diào)度服務器的至少一項運行狀態(tài)參數(shù)設置相應的報警閾值,監(jiān)控任務調(diào)度服務器的當前運行狀態(tài)參數(shù);當監(jiān)控到的任一項運行狀態(tài)參數(shù)達到相應的報警閾值時,執(zhí)行與該報警閾值對應的預定報警操作,以及將報表生成任務提交接口置為不可用。這樣在任務調(diào)度服務器高負荷運行時,可以停用報表生成任務提交接口,不再接收新的報表生成任務,而在任務調(diào)度服務器不再高負荷運行時,重新恢復報表任務提交接口的可用性。即,當監(jiān)控到的運行狀態(tài)參數(shù)下降到報警閾值之下時,重新將報表生成任務提交接口置為可用;通過報表生成任務提交接口接收提交的報表生成任務,生成并保存相應的任務配置文件。
前述實施例中提及,任務需要提交到相應的集群中運行。在本發(fā)明的一個實施例中,還提供了如下方法:判斷任務運行的集群是否滿足任務提交條件,若滿足,將相應的任務配置文件提交到相應的集群上。其中,任務提交條件包括如下中的至少一種:任務運行的集群可以訪問;任務運行的集群的可用資源未超過預定閾值;任務運行的集群未處于維護狀態(tài)。
也就是說,先判斷任務運行的集群是否網(wǎng)絡通暢、是否正在進行維護、是否還能運行該任務。否則任務無法正常提交到該集群,即使提交到了該集群,也不能夠正確的運行。
用戶還可以通過前端頁面查看任務的運行狀況。在本發(fā)明的一個實施例中,該方法還包括:響應于前端頁面提交的任務選擇指令,獲取各集群中相應任務的任務運行狀態(tài)信息,將相應任務的任務運行狀態(tài)信息返回給前端頁面進行展示。這樣用戶可以隨時查看其有查看權(quán)限的任務的運行狀態(tài)信息,如:任務運行階段信息;任務運行進度信息;任務剩余時間信息;任務運行日志信息。任務的錯誤日志可以被及時讀取,對任務進行修正;或者,任務分為多個階段,例如需要進行多個階段的統(tǒng)計計算,可以查看任務正在進行那個階段。根據(jù)任務的總工作量和集群資源,還可以推斷任務的運行進度和任務剩余時間。
任務往往不能夠總是在集群上正常運行,現(xiàn)有技術(shù)中需要人工排除任務的錯誤信息,費時費力,在本發(fā)明的一個實施例中,上述方法還包括:接收各集群提交的任務失敗日志;對任務失敗日志進行分析,得到任務的失敗信息。這樣就把人工查看任務失敗日志,排查失敗原因的時間節(jié)省出來。具體地,對任務失敗日志進行分析,得到任務的失敗信息包括:預設包含至少一個失敗模型的失敗樣例庫;失敗模型包括:任務失敗日志匹配規(guī)則和任務的失敗信息;將任務失敗日志與失敗樣例庫中的失敗模型進行匹配,根據(jù)匹配到的失敗模型得到任務的失敗信息。
例如,輸入路徑中沒有數(shù)據(jù),這樣任務無法運行,那么日志中就會有相應的記錄。如果為這樣的失敗設置相應的失敗模型,那么將任務失敗日志與失敗樣例庫中的失敗模型進行匹配,就可以快速確定任務的失敗信息,例如包括:任務的失敗原因,任務的錯誤代碼、任務的錯誤類型。任務的錯誤類型可以包括可重試型和不可重試型。以輸入路徑中沒有數(shù)據(jù)為例,即使重試該任務,該輸入路徑中依然沒有數(shù)據(jù),那么任務還是不會正常運行。而如果僅是無法連接到相應的數(shù)據(jù)庫,那么重試后很可能就會成功,這樣的錯誤類型就是可重試型錯誤。因此任務的失敗信息還可以包括:任務失敗的解決方案;該方法還包括:依據(jù)任務失敗的解決方案,將該任務重新提交到相應的集群上,或者,進行預定方式的報警處理。對于可重試型錯誤,將其將該任務重新提交到相應的集群上進行重試;對于不可重試型錯誤,進行預定方式的報警處理,例如向維護人員發(fā)送郵件或短信。
在本發(fā)明的一個實施例中,上述方法還包括:對用戶執(zhí)行的任一項操作進行記錄,按操作時間和用戶信息對應保存到監(jiān)控數(shù)據(jù)庫中。
可以看出,用戶執(zhí)行的操作雖然有著嚴格的權(quán)限管理,但依然是十分敏感的操作。在本實施例中對用戶執(zhí)行的任一項操作進行記錄,可以方便日后的排除,以及在發(fā)生秘密泄露事故時快速確定可疑人員。
在本發(fā)明的一個實施例中,上述方法還包括:按操作類型設置操作報警策略和對應執(zhí)行的報警操作;當用戶執(zhí)行的任一項操作的匹配該操作類型的操作報警策略時,執(zhí)行對應的報警操作。
例如,某用戶雖然擁有對大批報表的查看權(quán)限,但在較短的時間段內(nèi),其大量地訪問了這些報表,這種行為很可能是泄露企業(yè)秘密的行為,因此需要執(zhí)行對應的報警操作,這樣就可以盡量減少秘密泄露的損失,及時進行挽救。
圖3示出了根據(jù)本發(fā)明一個實施例的一種處理日志數(shù)據(jù)的裝置的結(jié)構(gòu)示意圖,如圖3所示,處理日志數(shù)據(jù)的裝置300包括:
樣例解析單元310,適于對輸入的一條樣例日志進行解析處理,輸出格式化的解析結(jié)果。
解析規(guī)則記錄單元320,適于接收用戶的解析結(jié)果確認指令后,記錄解析樣例日志所采用的日志解析規(guī)則。
日志解析單元330,適于根據(jù)所記錄的日志解析規(guī)則,對用戶指定的業(yè)務的源日志數(shù)據(jù)進行解析處理,得到該業(yè)務的格式化的日志數(shù)據(jù)并保存到數(shù)據(jù)倉庫中。
可見,圖3所示的裝置,對輸入的一條樣例日志進行解析處理,輸出格式化的解析結(jié)果,經(jīng)用戶確認后將其記錄為解析樣例日志所采用的日志解析規(guī)則,利用該規(guī)則對用戶指定的業(yè)務的源日志數(shù)據(jù)進行解析處理,得到該業(yè)務的格式化的日志數(shù)據(jù)并保存到數(shù)據(jù)倉庫中。該技術(shù)方案利用對樣例日志進行解析得到的日志解析規(guī)則,實現(xiàn)了對業(yè)務的日志數(shù)據(jù)的格式化解析、統(tǒng)一管理入庫,規(guī)范、有秩序地實現(xiàn)了對日志數(shù)據(jù)的管控。
在本發(fā)明的一個實施例中,上述裝置還包括:統(tǒng)計計算單元,適于接收關(guān)于指定業(yè)務的日志統(tǒng)計請求;根據(jù)日志統(tǒng)計請求,對數(shù)據(jù)倉庫中的指定業(yè)務的格式化的日志數(shù)據(jù)進行統(tǒng)計計算,輸出統(tǒng)計計算結(jié)果。
在本發(fā)明的一個實施例中,上述裝置中,樣例解析單元包括:多個日志內(nèi)容識別引擎,用于分別識別不同格式的日志內(nèi)容并解析成一個或多個字段;匯總處理單元,適于將樣例日志依次輸入到多個日志內(nèi)容識別引擎中,將各日志內(nèi)容識別引擎的輸出各字段進行匯總得到格式化的解析結(jié)果。
在本發(fā)明的一個實施例中,上述裝置中,解析規(guī)則記錄單元,適于將有輸出結(jié)果的各日志內(nèi)容識別引擎的識別解析規(guī)則匯總記錄為解析樣例日志所采用的日志解析規(guī)則。
在本發(fā)明的一個實施例中,上述裝置還包括:自定識別單元,適于當樣例日志中存在各日志內(nèi)容識別引擎均無法識別的內(nèi)容時,通過自定義識別接口輸出該內(nèi)容;通過自定義識別接口接收人工識別后輸入的識別結(jié)果和相應的識別解析規(guī)則;將該人工識別后輸入的識別解析規(guī)則記錄為解析樣例日志所采用的日志解析規(guī)則的一部分。
在本發(fā)明的一個實施例中,上述裝置中,多個日志內(nèi)容識別引擎包括如下中的一種或多種:IP地址識別引擎;時間戳識別引擎;用戶ID識別引擎;渠道識別引擎;JSON格式內(nèi)容識別引擎。
在本發(fā)明的一個實施例中,上述裝置還包括:識別引擎管理單元,適于提供日志內(nèi)容識別引擎編輯接口,通過該接口接收增加/刪除/修改日志內(nèi)容識別引擎的指令,根據(jù)指令執(zhí)行相應的日志內(nèi)容識別模塊增加/刪除/修改操作。
在本發(fā)明的一個實施例中,上述裝置中,多個日志內(nèi)容識別引擎包括IP地址識別引擎;IP地址識別引擎在識別出IP地址后,進一步解析IP地址,IP地址解析結(jié)果包括如下一個或多個字段:國家、省、市、運營商。
在本發(fā)明的一個實施例中,上述裝置中,樣例解析單元,還適于提供解析結(jié)果編輯界面,通過該界面接收輸入的對解析結(jié)果中的各字段進行操作的指令,并執(zhí)行相應的操作;對解析結(jié)果中的各字段進行操作的指令包括如下中的一種或多種:調(diào)整各字段的排序順序的指令;修改指定字段的名稱的指令;刪除指定字段的指令。
在本發(fā)明的一個實施例中,上述裝置中,一個日志內(nèi)容識別引擎的識別解析規(guī)則包括:對識別并解析出的一個或多個字段中的指定字段的參數(shù)值設置限定閾值;日志解析單元,適于對于參數(shù)值超出限定閾值的日志數(shù)據(jù)進行丟棄處理。
下述實施例中,各單元皆為日志數(shù)據(jù)平臺中的組件,可以與前述實施中的各單元配合,實現(xiàn)日志數(shù)據(jù)平臺的其他功能。具體地:
在本發(fā)明的一個實施例中,上述裝置中的各單元包含在日志數(shù)據(jù)解析單元中,該單元適于配置業(yè)務和域名的對應關(guān)系,將接收到的日志數(shù)據(jù)按域名進行分類;根據(jù)該業(yè)務對應的域名,對該域名分類下的日志數(shù)據(jù)進行解析處理。
在本發(fā)明的一個實施例中,上述裝置中,日志數(shù)據(jù)解析單元還包括:存儲單元,適于根據(jù)字段屬性確定該字段對應的數(shù)據(jù)倉庫中的列;將待存儲數(shù)據(jù)按字段存儲到數(shù)據(jù)倉庫中相應的列中。
在本發(fā)明的一個實施例中,上述裝置中,存儲單元,適于讀取數(shù)據(jù)倉庫的元數(shù)據(jù),得到數(shù)據(jù)倉庫中各列的屬性;根據(jù)字段屬性和數(shù)據(jù)倉庫中各列的屬性,建立待存儲數(shù)據(jù)中各字段的數(shù)據(jù)和各列的映射關(guān)系。
在本發(fā)明的一個實施例中,上述裝置中,元數(shù)據(jù)包括:數(shù)據(jù)倉庫各列的業(yè)務屬性和/或數(shù)據(jù)屬性,其中,業(yè)務屬性包括如下中的至少一種:業(yè)務名稱、業(yè)務域名、業(yè)務描述信息;數(shù)據(jù)屬性包括如下中的至少一種:列名、數(shù)據(jù)格式、數(shù)據(jù)類型。
在本發(fā)明的一個實施例中,上述裝置中,日志數(shù)據(jù)解析單元還包括:數(shù)據(jù)操作單元,適于根據(jù)接收到的數(shù)據(jù)處理指令,對指定列的數(shù)據(jù)進行相應的處理。指令包括如下中的至少一種:數(shù)據(jù)解密,數(shù)據(jù)格式轉(zhuǎn)換、數(shù)據(jù)編碼轉(zhuǎn)換。
在本發(fā)明的一個實施例中,上述裝置中,日志數(shù)據(jù)解析單元還包括:數(shù)據(jù)操作單元,適于根據(jù)對指定列的列值設置限定閾值的指令,將列值超出限定閾值的整條數(shù)據(jù)進行刪除處理。
在本發(fā)明的一個實施例中,上述裝置中,日志數(shù)據(jù)解析單元還包括::數(shù)據(jù)操作單元,適于根據(jù)接收到的數(shù)據(jù)處理指令,對指定列的數(shù)據(jù)進行相應的處理。指令包括如下中的至少一種:調(diào)整各列的排序順序的指令;修改指定列的列名的指令;刪除指定列的指令。
需要說明的是,上述各裝置實施例的具體實施方式與前述對應方法實施例的具體方式相同,在此不再贅述。
綜上所述,本發(fā)明的技術(shù)方案,對輸入的一條樣例日志進行解析處理,輸出格式化的解析結(jié)果,經(jīng)用戶確認后將其記錄為解析樣例日志所采用的日志解析規(guī)則,利用該規(guī)則對用戶指定的業(yè)務的源日志數(shù)據(jù)進行解析處理,得到該業(yè)務的格式化的日志數(shù)據(jù)并保存到數(shù)據(jù)倉庫中。該技術(shù)方案利用對樣例日志進行解析得到的日志解析規(guī)則,實現(xiàn)了對業(yè)務的日志數(shù)據(jù)的格式化解析、統(tǒng)一管理入庫,規(guī)范、有秩序地實現(xiàn)了對日志數(shù)據(jù)的管控。
需要說明的是:
在此提供的算法和顯示不與任何特定計算機、虛擬裝置或者其它設備固有相關(guān)。各種通用裝置也可以與基于在此的示教一起使用。根據(jù)上面的描述,構(gòu)造這類裝置所要求的結(jié)構(gòu)是顯而易見的。此外,本發(fā)明也不針對任何特定編程語言。應當明白,可以利用各種編程語言實現(xiàn)在此描述的本發(fā)明的內(nèi)容,并且上面對特定語言所做的描述是為了披露本發(fā)明的最佳實施方式。
在此處所提供的說明書中,說明了大量具體細節(jié)。然而,能夠理解,本發(fā)明的實施例可以在沒有這些具體細節(jié)的情況下實踐。在一些實例中,并未詳細示出公知的方法、結(jié)構(gòu)和技術(shù),以便不模糊對本說明書的理解。
類似地,應當理解,為了精簡本公開并幫助理解各個發(fā)明方面中的一個或多個,在上面對本發(fā)明的示例性實施例的描述中,本發(fā)明的各個特征有時被一起分組到單個實施例、圖、或者對其的描述中。然而,并不應將該公開的方法解釋成反映如下意圖:即所要求保護的本發(fā)明要求比在每個權(quán)利要求中所明確記載的特征更多的特征。更確切地說,如下面的權(quán)利要求書所反映的那樣,發(fā)明方面在于少于前面公開的單個實施例的所有特征。因此,遵循具體實施方式的權(quán)利要求書由此明確地并入該具體實施方式,其中每個權(quán)利要求本身都作為本發(fā)明的單獨實施例。
本領(lǐng)域那些技術(shù)人員可以理解,可以對實施例中的設備中的模塊進行自適應性地改變并且把它們設置在與該實施例不同的一個或多個設備中。可以把實施例中的模塊或單元或組件組合成一個模塊或單元或組件,以及此外可以把它們分成多個子模塊或子單元或子組件。除了這樣的特征和/或過程或者單元中的至少一些是相互排斥之外,可以采用任何組合對本說明書(包括伴隨的權(quán)利要求、摘要和附圖)中公開的所有特征以及如此公開的任何方法或者設備的所有過程或單元進行組合。除非另外明確陳述,本說明書(包括伴隨的權(quán)利要求、摘要和附圖)中公開的每個特征可以由提供相同、等同或相似目的的替代特征來代替。
此外,本領(lǐng)域的技術(shù)人員能夠理解,盡管在此所述的一些實施例包括其它實施例中所包括的某些特征而不是其它特征,但是不同實施例的特征的組合意味著處于本發(fā)明的范圍之內(nèi)并且形成不同的實施例。例如,在下面的權(quán)利要求書中,所要求保護的實施例的任意之一都可以以任意的組合方式來使用。
本發(fā)明的各個部件實施例可以以硬件實現(xiàn),或者以在一個或者多個處理器上運行的軟件模塊實現(xiàn),或者以它們的組合實現(xiàn)。本領(lǐng)域的技術(shù)人員應當理解,可以在實踐中使用微處理器或者數(shù)字信號處理器(DSP)來實現(xiàn)根據(jù)本發(fā)明實施例的處理日志數(shù)據(jù)的裝置中的一些或者全部部件的一些或者全部功能。本發(fā)明還可以實現(xiàn)為用于執(zhí)行這里所描述的方法的一部分或者全部的設備或者裝置程序(例如,計算機程序和計算機程序產(chǎn)品)。這樣的實現(xiàn)本發(fā)明的程序可以存儲在計算機可讀介質(zhì)上,或者可以具有一個或者多個信號的形式。這樣的信號可以從因特網(wǎng)網(wǎng)站上下載得到,或者在載體信號上提供,或者以任何其他形式提供。
應該注意的是上述實施例對本發(fā)明進行說明而不是對本發(fā)明進行限制,并且本領(lǐng)域技術(shù)人員在不脫離所附權(quán)利要求的范圍的情況下可設計出替換實施例。在權(quán)利要求中,不應將位于括號之間的任何參考符號構(gòu)造成對權(quán)利要求的限制。單詞“包含”不排除存在未列在權(quán)利要求中的元件或步驟。位于元件之前的單詞“一”或“一個”不排除存在多個這樣的元件。本發(fā)明可以借助于包括有若干不同元件的硬件以及借助于適當編程的計算機來實現(xiàn)。在列舉了若干裝置的單元權(quán)利要求中,這些裝置中的若干個可以是通過同一個硬件項來具體體現(xiàn)。單詞第一、第二、以及第三等的使用不表示任何順序。可將這些單詞解釋為名稱。
本發(fā)明的實施例公開了A1、一種處理日志數(shù)據(jù)的方法,其中,該方法包括:
對輸入的一條樣例日志進行解析處理,輸出格式化的解析結(jié)果;
接收用戶的解析結(jié)果確認指令后,記錄解析所述樣例日志所采用的日志解析規(guī)則;
根據(jù)所記錄的所述日志解析規(guī)則,對用戶指定的業(yè)務的源日志數(shù)據(jù)進行解析處理,得到該業(yè)務的格式化的日志數(shù)據(jù)并保存到數(shù)據(jù)倉庫中。
A2、如A1所述的方法,其中,該方法還包括:
接收關(guān)于指定業(yè)務的日志統(tǒng)計請求;
根據(jù)所述日志統(tǒng)計請求,對數(shù)據(jù)倉庫中的所述指定業(yè)務的格式化的日志數(shù)據(jù)進行統(tǒng)計計算,輸出統(tǒng)計計算結(jié)果。
A3、如A1所述的方法,其中,所述對用戶輸入的一條樣例日志進行解析處理,輸出格式化的解析結(jié)果包括:
預設多個日志內(nèi)容識別引擎,用于分別識別不同格式的日志內(nèi)容并解析成一個或多個字段;
將所述樣例日志依次輸入到所述多個日志內(nèi)容識別引擎中;
將各日志內(nèi)容識別引擎的輸出各字段進行匯總得到所述格式化的解析結(jié)果。
A4、如A3所述的方法,其中,所述記錄解析所述樣例日志所采用的日志解析規(guī)則包括:
將有輸出結(jié)果的各日志內(nèi)容識別引擎的識別解析規(guī)則匯總記錄為解析所述樣例日志所采用的日志解析規(guī)則。
A5、如A3所述的方法,其中,該方法還包括:
當所述樣例日志中存在各日志內(nèi)容識別引擎均無法識別的內(nèi)容時,通過自定義識別接口輸出該內(nèi)容;
通過自定義識別接口接收人工識別后輸入的識別結(jié)果和相應的識別解析規(guī)則;
將該人工識別后輸入的識別解析規(guī)則記錄為解析所述樣例日志所采用的日志解析規(guī)則的一部分。
A6、如A3所述的方法,其中,所述多個日志內(nèi)容識別引擎包括如下中的一種或多種:
IP地址識別引擎;時間戳識別引擎;用戶ID識別引擎;渠道識別引擎;JSON格式內(nèi)容識別引擎。
A7、如A3所述的方法,其中,該方法還包括:
提供日志內(nèi)容識別引擎編輯接口,通過該接口接收增加/刪除/修改日志內(nèi)容識別引擎的指令,根據(jù)指令執(zhí)行相應的日志內(nèi)容識別模塊增加/刪除/修改操作。
A8、如A3所述的方法,其中,
所述多個日志內(nèi)容識別引擎包括IP地址識別引擎;
所述IP地址識別引擎在識別出IP地址后,進一步解析IP地址,IP地址解析結(jié)果包括如下一個或多個字段:國家、省、市、運營商。
A9、如A3所述的方法,其中,該方法還包括:提供解析結(jié)果編輯界面,通過該界面接收輸入的對解析結(jié)果中的各字段進行操作的指令,并執(zhí)行相應的操作;
所述對解析結(jié)果中的各字段進行操作的指令包括如下中的一種或多種:
調(diào)整各字段的排序順序的指令;
修改指定字段的名稱的指令;
刪除指定字段的指令。
A10、如A3所述的方法,其中,
一個日志內(nèi)容識別引擎的識別解析規(guī)則包括:對識別并解析出的一個或多個字段中的指定字段的參數(shù)值設置限定閾值;
對于參數(shù)值超出限定閾值的日志數(shù)據(jù)進行丟棄處理。
本發(fā)明的實施例還公開了B11、一種處理日志數(shù)據(jù)的裝置,其中,該裝置包括:
樣例解析單元,適于對輸入的一條樣例日志進行解析處理,輸出格式化的解析結(jié)果;
解析規(guī)則記錄單元,適于接收用戶的解析結(jié)果確認指令后,記錄解析所述樣例日志所采用的日志解析規(guī)則;
日志解析單元,適于根據(jù)所記錄的所述日志解析規(guī)則,對用戶指定的業(yè)務的源日志數(shù)據(jù)進行解析處理,得到該業(yè)務的格式化的日志數(shù)據(jù)并保存到數(shù)據(jù)倉庫中。
B12、如B11所述的裝置,其中,該裝置還包括:
統(tǒng)計計算單元,適于接收關(guān)于指定業(yè)務的日志統(tǒng)計請求;根據(jù)所述日志統(tǒng)計請求,對數(shù)據(jù)倉庫中的所述指定業(yè)務的格式化的日志數(shù)據(jù)進行統(tǒng)計計算,輸出統(tǒng)計計算結(jié)果。
B13、如B11所述的裝置,其中,所述樣例解析單元包括:
多個日志內(nèi)容識別引擎,用于分別識別不同格式的日志內(nèi)容并解析成一個或多個字段;
匯總處理單元,適于將所述樣例日志依次輸入到所述多個日志內(nèi)容識別引擎中,將各日志內(nèi)容識別引擎的輸出各字段進行匯總得到所述格式化的解析結(jié)果。
B14、如B13所述的裝置,其中,
所述解析規(guī)則記錄單元,適于將有輸出結(jié)果的各日志內(nèi)容識別引擎的識別解析規(guī)則匯總記錄為解析所述樣例日志所采用的日志解析規(guī)則。
B15、如B13所述的裝置,其中,該裝置還包括:
自定識別單元,適于當所述樣例日志中存在各日志內(nèi)容識別引擎均無法識別的內(nèi)容時,通過自定義識別接口輸出該內(nèi)容;通過自定義識別接口接收人工識別后輸入的識別結(jié)果和相應的識別解析規(guī)則;將該人工識別后輸入的識別解析規(guī)則記錄為解析所述樣例日志所采用的日志解析規(guī)則的一部分。
B16、如B13所述的裝置,其中,所述多個日志內(nèi)容識別引擎包括如下中的一種或多種:
IP地址識別引擎;時間戳識別引擎;用戶ID識別引擎;渠道識別引擎;JSON格式內(nèi)容識別引擎。
B17、如B13所述的裝置,其中,該裝置還包括:
識別引擎管理單元,適于提供日志內(nèi)容識別引擎編輯接口,通過該接口接收增加/刪除/修改日志內(nèi)容識別引擎的指令,根據(jù)指令執(zhí)行相應的日志內(nèi)容識別模塊增加/刪除/修改操作。
B18、如B13所述的裝置,其中,
所述多個日志內(nèi)容識別引擎包括IP地址識別引擎;
所述IP地址識別引擎在識別出IP地址后,進一步解析IP地址,IP地址解析結(jié)果包括如下一個或多個字段:國家、省、市、運營商。
B19、如B13所述的裝置,其中,
所述樣例解析單元,還適于提供解析結(jié)果編輯界面,通過該界面接收輸入的對解析結(jié)果中的各字段進行操作的指令,并執(zhí)行相應的操作;
所述對解析結(jié)果中的各字段進行操作的指令包括如下中的一種或多種:
調(diào)整各字段的排序順序的指令;
修改指定字段的名稱的指令;
刪除指定字段的指令。
B20、如B13所述的裝置,其中,
一個日志內(nèi)容識別引擎的識別解析規(guī)則包括:對識別并解析出的一個或多個字段中的指定字段的參數(shù)值設置限定閾值;
所述日志解析單元,適于對于參數(shù)值超出限定閾值的日志數(shù)據(jù)進行丟棄處理。