專利名稱:日志收集系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及互聯(lián)網(wǎng)技術(shù)領(lǐng)域,具體涉及一種日志收集系統(tǒng)。
背景技術(shù):
互聯(lián)網(wǎng)時代的后臺數(shù)據(jù)非常重要而且龐大,比如日志數(shù)據(jù)和統(tǒng)計數(shù)據(jù)。這些后臺數(shù)據(jù)可能是后臺工程師分析程序運行狀況的第一手資料,也可能是業(yè)務(wù)運營決策所依賴的第一參考。然而大流量的網(wǎng)站一般都有上千萬臺生產(chǎn)服務(wù)器,且分布于各個不同的機房。日志文件或統(tǒng)計數(shù)據(jù)就會存放在這些網(wǎng)絡(luò)異構(gòu)且分布零散的生產(chǎn)服務(wù)器上,給日志的收集、傳輸、匯總及分析帶來很大的困難。目前有一些開源的軟件可以用來收集這些日志,但也存 在著很多不能解決的情況。目前較為常用的一些開源軟件例如Scribe,可以達到簡單收集日志數(shù)據(jù)的目的。Scribe是當(dāng)前的一個大型的社交網(wǎng)絡(luò)服務(wù)網(wǎng)站的開源的日志收集系統(tǒng),在該大型的社交網(wǎng)絡(luò)服務(wù)網(wǎng)站內(nèi)部已經(jīng)得到大量的應(yīng)用。它能夠從各種日志源上收集日志,存儲到一個中央存儲系統(tǒng)(可以是NFS,分布式文件系統(tǒng)HDFS等)上,以便于進行集中統(tǒng)計分析處理。它為日志的“分布式收集,統(tǒng)一處理”提供了一個可擴展的,高容錯的方案。當(dāng)中央存儲系統(tǒng)的網(wǎng)絡(luò)或者機器出現(xiàn)故障時,scribe會將日志轉(zhuǎn)存到本地或者另一個位置,當(dāng)中央存儲系統(tǒng)恢復(fù)后,scribe會將轉(zhuǎn)存的日志重新傳輸給中央存儲系統(tǒng)。其通常與Hadoop結(jié)合使用,scribe用于向HDFS中push日志,而Hadoop通過MapReduce作業(yè)進行定期處理。圖I是現(xiàn)有的Scribe收集日志的示意圖。如圖I所示,Scribe從作為種數(shù)據(jù)源的各應(yīng)用上收集數(shù)據(jù),放到一個共享隊列上,然后push到后端的中央存儲系統(tǒng)上。當(dāng)中央存儲系統(tǒng)出現(xiàn)故障時,scribe可以暫時把日志寫到本地文件中,待中央存儲系統(tǒng)恢復(fù)性能后,scribe把本地日志續(xù)傳到中央存儲系統(tǒng)上。各個數(shù)據(jù)源須通過THRIFT (由于采用了 THRIFT,客戶端可以采用各種語言編寫向scribe傳輸數(shù)據(jù),每條數(shù)據(jù)記錄包含一個category和一個message )??梢栽趕cribe配置用于監(jiān)聽端口的THRIFT線程數(shù)(默認為3)。在后端,scribe可以將不同category的數(shù)據(jù)存放到不同目錄中,以便于進行分別處理。后端的日志存儲方式可以是各種各樣的store,包括file (文件),buffer (雙層存儲,一個主儲存,一個副存儲),network (另一個scribe服務(wù)器)等。但是scribe存在如下缺點(I) scribe的一個缺點是前端組織數(shù)據(jù)不靈活,只能使用兩個字段,即catagory和message,在生產(chǎn)服務(wù)器的應(yīng)用程序中,如果想用scribe發(fā)送數(shù)據(jù),則每條數(shù)據(jù)只能有catagory和message兩個字段,如果想傳送多個字段,則必須自己組織數(shù)據(jù),將要傳送的多個數(shù)據(jù)合并到message里面。在后期分析數(shù)據(jù)時還要自己解析message,得到原來的多個字段。這給數(shù)據(jù)的傳輸造成了諸多的限制和不便。(2)另一個缺點是,scribe會接收每一條數(shù)據(jù),并把它們忠實地記錄在本地緩存,以一定頻率批量發(fā)送數(shù)據(jù),即便兩條數(shù)據(jù)的category和message是一模一樣的。這在數(shù)據(jù)傳輸量很大、傳輸頻率很高時,容易造成嚴重的網(wǎng)絡(luò)堵塞和延遲。
發(fā)明內(nèi)容
鑒于上述問題,提出了本發(fā)明以便提供一種克服上述問題或者至少部分地解決上述問題的日志收集系統(tǒng)。依據(jù)本發(fā)明,提供了一種日志收集系統(tǒng),該系統(tǒng)包括服務(wù)器端和部署于不同生產(chǎn)服務(wù)器上的多個客戶端,所述客戶端,適于獲取生產(chǎn)服務(wù)器所產(chǎn)生的對應(yīng)不同類別業(yè)務(wù)的數(shù)據(jù),并將特定標識的數(shù)據(jù)歸并為一條數(shù)據(jù)后發(fā)送給所述服務(wù)器端;所述服務(wù)器端,適于從各客戶端接收數(shù)據(jù),并進行存儲或轉(zhuǎn)發(fā)。可選地,該客戶端包括數(shù)據(jù)獲取單元、歸并處理單元和多個存儲單元,所述多個 存儲單元分別對應(yīng)不同類別的業(yè)務(wù),且每個存儲單元都有一個對應(yīng)的定時周期;所述數(shù)據(jù)獲取單元,適于從生產(chǎn)服務(wù)器獲取對應(yīng)不同類別業(yè)務(wù)的數(shù)據(jù),將所獲取的數(shù)據(jù)按照對應(yīng)的不同類別的業(yè)務(wù)分發(fā)到對應(yīng)的存儲單元進行保存;其中,每條數(shù)據(jù)包含一個以上的字段,不同的字段具有不同的類型,且每條數(shù)據(jù)的至少一個字段標識有關(guān)鍵碼;每個存儲單元,適于保存來自數(shù)據(jù)獲取單元的數(shù)據(jù);所述歸并處理單元,適于在每個存儲單元對應(yīng)的定時周期結(jié)束時,將該存儲單元所保存的數(shù)據(jù)中的標識有關(guān)鍵碼的字段的值相同的數(shù)據(jù)歸并為一條數(shù)據(jù)后發(fā)送給服務(wù)器端??蛇x地,所述歸并處理單元,進一步適于在每種類別業(yè)務(wù)對應(yīng)的定時周期結(jié)束時,將所保存的該類別業(yè)務(wù)的數(shù)據(jù)中的標識有關(guān)鍵碼的字段的值相同的數(shù)據(jù)歸并為一條數(shù)據(jù)時,對沒有標識關(guān)鍵碼的字段,按照不同的類型進行不同的歸并處理??蛇x地,歸并處理單元,進一步適于在按照不同的類型對沒有標識關(guān)鍵碼的字段進行不同的歸并處理時,采用以下一種或多種的組合對于求和類型的字段,將標識有關(guān)鍵碼的字段的值相同的各數(shù)據(jù)的該字段上的數(shù)值相加,其和作為歸并后該字段的值;對于求平均類型的字段,將標識有關(guān)鍵碼的字段的值相同的各數(shù)據(jù)的該字段上的數(shù)值求平均,其均值作為歸并后該字段的值;對于最大值類型的字段,從標識有關(guān)鍵碼的字段的值相同的各數(shù)據(jù)的該字段上的值中找出最大值,作為歸并后該字段的值;對于常字符類型的字段,從標識有關(guān)鍵碼的字段的值相同的各數(shù)據(jù)中取第一條數(shù)據(jù)的該字段上的值,作為歸并后該字段的值;對于累加字符類型的字段,將標識有關(guān)鍵碼的字段的值相同的各數(shù)據(jù)的該字段上的字符按指定順序串接后,作為歸并后該字段的值??蛇x地,所述服務(wù)器端,適于將所接收的數(shù)據(jù)轉(zhuǎn)發(fā)給其它的服務(wù)器,或轉(zhuǎn)發(fā)到數(shù)據(jù)庫設(shè)備,或保存成本地文件。根據(jù)本發(fā)明的這種在不同的生產(chǎn)服務(wù)器上分別部署客戶端,各客戶端將收集的數(shù)據(jù)發(fā)給服務(wù)器端,其中客戶端將所獲取的數(shù)據(jù)按照對應(yīng)的不同類別的業(yè)務(wù)分類存放,每條數(shù)據(jù)包含一個以上的不同類型的字段,在每種類別業(yè)務(wù)對應(yīng)的定時周期結(jié)束時,將所保存的該類別業(yè)務(wù)的數(shù)據(jù)中的,標識有關(guān)鍵碼的字段的值相同的數(shù)據(jù)歸并為一條數(shù)據(jù)后發(fā)送給服務(wù)器端的技術(shù)方案,可以傳送任意個字段的數(shù)據(jù),且在客戶端就進行了數(shù)據(jù)歸并處理,由此解決了現(xiàn)有的scribe只允許每條數(shù)據(jù)只能有catagory和message兩個字段,從而使得數(shù)據(jù)的傳送有諸多限制的問題,以及解決了現(xiàn)有的scribe在前端只是忠實地記錄數(shù)據(jù),不進行歸并處理,導(dǎo)致數(shù)據(jù)傳輸量大、傳輸頻率高,容易造成網(wǎng)絡(luò)堵塞和延遲的問題。上述說明僅是本發(fā)明技術(shù)方案的概述,為了能夠更清楚了解本發(fā)明的技術(shù)手段,而可依照說明書的內(nèi)容予以實施,并且為了讓本發(fā)明的上述和其它目的、特征和優(yōu)點能夠更明顯易懂,以下特舉本發(fā)明的具體實施方式
。
通過閱讀下文優(yōu)選實施方式的詳細描述,各種其他的優(yōu)點和益處對于本領(lǐng)域普通技術(shù)人員將變得清楚明了。附圖僅用于示出優(yōu)選實施方式的目的,而并不認為是對本發(fā)明的限制。而且在整個附圖中,用相同的參考符號表示相同的部件。在附圖中 圖I是現(xiàn)有的Scribe收集日志的示意圖;圖2示出了根據(jù)本發(fā)明一個實施例的一種日志收集系統(tǒng)的框圖;圖3示出了根據(jù)本發(fā)明一個實施例的一種日志收集系統(tǒng)的客戶端的結(jié)構(gòu)圖;圖4示出了根據(jù)本發(fā)明一個實施例的一種收集數(shù)據(jù)的方法的流程圖。
具體實施例方式下面將參照附圖更詳細地描述本公開的示例性實施例。雖然附圖中顯示了本公開的示例性實施例,然而應(yīng)當(dāng)理解,可以以各種形式實現(xiàn)本公開而不應(yīng)被這里闡述的實施例所限制。相反,提供這些實施例是為了能夠更透徹地理解本公開,并且能夠?qū)⒈竟_的范圍完整的傳達給本領(lǐng)域的技術(shù)人員。圖2示出了根據(jù)本發(fā)明一個實施例的一種日志收集系統(tǒng)的框圖。如圖2所示,該系統(tǒng)包括服務(wù)器端202和多個客戶端201。多個客戶端201分別部署于不同的需要收集各種數(shù)據(jù)的生產(chǎn)服務(wù)器上。每個客戶端201收集自身所在生產(chǎn)服務(wù)器所產(chǎn)生的數(shù)據(jù)并發(fā)送給服務(wù)器端202,服務(wù)器端202接收各個客戶端201發(fā)回的數(shù)據(jù),進行本地存儲或者轉(zhuǎn)發(fā)給其他的服務(wù)器。具體來說每個客戶端201,適于獲取生產(chǎn)服務(wù)器所產(chǎn)生的對應(yīng)不同類別業(yè)務(wù)的數(shù)據(jù),將所獲取的數(shù)據(jù)按照對應(yīng)的不同類別的業(yè)務(wù)分類存放。其中,每條數(shù)據(jù)包含一個以上的字段,不同的字段具有不同的類型,且每條數(shù)據(jù)的至少一個字段標識有關(guān)鍵碼;每種類別業(yè)務(wù)都有一個對應(yīng)的定時周期;每個客戶端201,在每種類別業(yè)務(wù)對應(yīng)的定時周期結(jié)束時,將所保存的該類別業(yè)務(wù)的數(shù)據(jù)中的,標識有關(guān)鍵碼的字段的值相同的數(shù)據(jù)歸并為一條數(shù)據(jù)后發(fā)送給所述服務(wù)器端202 ;服務(wù)器端202,適于從各客戶端201接收數(shù)據(jù),并進行存儲或轉(zhuǎn)發(fā)。這里,同一種類別業(yè)務(wù)的數(shù)據(jù)的數(shù)據(jù)格式相同,即數(shù)據(jù)所包含的字段個數(shù)和各字段的類型都相同。各類別的業(yè)務(wù)的可以根據(jù)實際需求定義數(shù)據(jù)的格式,即可以根據(jù)實際業(yè)務(wù)需求定義一條數(shù)據(jù)所包含的字段個數(shù)和各字段的類型。例如,可以定義如下類型的字段求和類型(SUM_INT)、求平均類型(AVG_INT)、最大值類型(MAX_INT)、常字符類型(CONST_STRING)和累加字符類型(CONST_STRING)等。設(shè)置這些字段的目的是為了針對各種不同類型業(yè)務(wù)的數(shù)據(jù)做各種優(yōu)化處理,使得數(shù)據(jù)占用空間少,在分析處理數(shù)據(jù)時速度更快,占用內(nèi)存更少,更容易識別每個字段的含義,并為后面的歸并做好準備。每個客戶端201根據(jù)配置維護多個“盒子”,每個盒子存放相同格式的數(shù)據(jù)。也就是說一種類別業(yè)務(wù)對應(yīng)一個“盒子”,該類別業(yè)務(wù)的數(shù)據(jù)存放到該對應(yīng)的盒子里??蛻舳?01將收集到的數(shù)據(jù),根據(jù)其數(shù)據(jù)格式?jīng)Q定存放在哪個盒子中。在某個盒子的一個周期結(jié)束時,客戶端201將該盒子中的數(shù)據(jù)做一次歸并處理,然后發(fā)送給服務(wù)器端202。在本發(fā)明中,作為歸并的依據(jù),在數(shù)據(jù)的某些字段上標識關(guān)鍵碼(“Key”屬性),在做數(shù)據(jù)歸并時,會比較數(shù)據(jù)中的標識有關(guān)鍵碼的字段,只有標識有關(guān)鍵碼的字段的值相同 的數(shù)據(jù)才可以歸并為一條數(shù)據(jù)??蛻舳?01在每種類別業(yè)務(wù)對應(yīng)的定時周期結(jié)束時,將所保存的該類別業(yè)務(wù)的數(shù)據(jù)中的,標識有關(guān)鍵碼的字段的值相同的數(shù)據(jù)歸并為一條數(shù)據(jù)時,對沒有標識關(guān)鍵碼的字段,按照不同的類型進行不同的歸并處理。即字段類型不同,其歸并方式也不同??蛻舳?01,在按照不同的類型對沒有標識關(guān)鍵碼的字段進行不同的歸并處理時,可以采用以下一種或多種的組合(I)對于求和類型的字段在歸并時,將標識有關(guān)鍵碼的字段的值相同的各數(shù)據(jù)的求和類型字段上的數(shù)值相加,其和作為歸并后數(shù)據(jù)的求和類型字段的值;(2)對于求平均類型的字段在歸并時,將標識有關(guān)鍵碼的字段的值相同的各數(shù)據(jù)的求平均類型字段上的數(shù)值求平均,其均值作為歸并后數(shù)據(jù)的求平均類型字段的值;(3)對于最大值類型的字段在歸并時,從標識有關(guān)鍵碼的字段的值相同的各數(shù)據(jù)的最大值類型字段上的值中找出最大值,作為歸并后數(shù)據(jù)的最大值類型字段的值;(4)對于常字符類型的字段在歸并時,從標識有關(guān)鍵碼的字段的值相同的各數(shù)據(jù)中取第一條數(shù)據(jù)的常字符類型字段上的值,作為歸并后數(shù)據(jù)的常字符類型字段的值;(5)對于累加字符類型的字段在歸并時,將標識有關(guān)鍵碼的字段的值相同的各數(shù)據(jù)的累加字符類型字段上的字符按指定順序串接后,作為歸并后數(shù)據(jù)的累加字符類型字段的值。以上舉例了 5種字段類型以及其各自對應(yīng)的歸并方式。但本發(fā)明中的字段類型不限于以上的5種,可以根據(jù)實際業(yè)務(wù)需求定義更多類型的字段以及其歸并方式。例如還可以定義浮點數(shù)求平均類型(AVG_FL0AT),最小值類型(MIN_INT)和浮點數(shù)求和類型(SUM_FLOAT)等,這里不再一一詳述。下面給出一個對數(shù)據(jù)進行歸并處理的具體例子。定義一個登陸業(yè)務(wù)的數(shù)據(jù)格式,該數(shù)據(jù)格式用于對登陸業(yè)務(wù)——“一個用戶訪問一個頁面的次數(shù)”的數(shù)據(jù)進行記錄,對應(yīng)地在客戶端上維護一個“盒子”,叫“Login”,周期是300 秒,則數(shù)據(jù)格式具體為Login (3OO) user_id KEY_STR, script KEY_STR, number SUM_INT, datetime TIME_FL00R ;該數(shù)據(jù)格式包括4個字段,前兩個字段user_id和script上標識有關(guān)鍵碼KEY_STR,后兩個字段number和datetime的類型分別為求和類型(SUM_INT)和地板時間類型(TIME_FL00R)o定義完成之后,就可以在生產(chǎn)服務(wù)器上發(fā)送符合各個字段類型的數(shù)據(jù),部署于該生產(chǎn)服務(wù)器上的客戶端對發(fā)送的數(shù)據(jù)進行收集。比如在2012-09-2100:00:00到2012-09-2100:04:59之間客戶端收集的數(shù)據(jù)如表I所示
權(quán)利要求
1.一種日志收集系統(tǒng),包括服務(wù)器端和部署于不同生產(chǎn)服務(wù)器上的多個客戶端, 所述客戶端,適于獲取生產(chǎn)服務(wù)器所產(chǎn)生的對應(yīng)不同類別業(yè)務(wù)的數(shù)據(jù),并將特定標識的數(shù)據(jù)歸并為一條數(shù)據(jù)后發(fā)送給所述服務(wù)器端; 所述服務(wù)器端,適于從各客戶端接收數(shù)據(jù),并進行存儲或轉(zhuǎn)發(fā)。
2.如權(quán)利要求I所述的系統(tǒng),其中,所述客戶端包括數(shù)據(jù)獲取單元、歸并處理單元和多個存儲單元,所述多個存儲單元分別對應(yīng)不同類別的業(yè)務(wù),且每個存儲單元都有一個對應(yīng)的定時周期; 所述數(shù)據(jù)獲取單元,適于從生產(chǎn)服務(wù)器獲取對應(yīng)不同類別業(yè)務(wù)的數(shù)據(jù),將所獲取的數(shù)據(jù)按照對應(yīng)的不同類別的業(yè)務(wù)分發(fā)到對應(yīng)的存儲單元進行保存;其中,每條數(shù)據(jù)包含一個以上的字段,不同的字段具有不同的類型,且每條數(shù)據(jù)的至少一個字段標識有關(guān)鍵碼;每個存儲單元,適于保存來自數(shù)據(jù)獲取單元的數(shù)據(jù); 所述歸并處理單元,適于在每個存儲單元對應(yīng)的定時周期結(jié)束時,將該存儲單元所保存的數(shù)據(jù)中的標識有關(guān)鍵碼的字段的值相同的數(shù)據(jù)歸并為一條數(shù)據(jù)后發(fā)送給服務(wù)器端。
3.如權(quán)利要求2所述的系統(tǒng),其中, 所述歸并處理單元,進一步適于在每種類別業(yè)務(wù)對應(yīng)的定時周期結(jié)束時,將所保存的該類別業(yè)務(wù)的數(shù)據(jù)中的標識有關(guān)鍵碼的字段的值相同的數(shù)據(jù)歸并為一條數(shù)據(jù)時,對沒有標識關(guān)鍵碼的字段,按照不同的類型進行不同的歸并處理。
4.如權(quán)利要求3所述的系統(tǒng),其中, 歸并處理單元,進一步適于在按照不同的類型對沒有標識關(guān)鍵碼的字段進行不同的歸并處理時,采用以下一種或多種的組合 對于求和類型的字段,將標識有關(guān)鍵碼的字段的值相同的各數(shù)據(jù)的該字段上的數(shù)值相力口,其和作為歸并后該字段的值; 對于求平均類型的字段,將標識有關(guān)鍵碼的字段的值相同的各數(shù)據(jù)的該字段上的數(shù)值求平均,其均值作為歸并后該字段的值; 對于最大值類型的字段,從標識有關(guān)鍵碼的字段的值相同的各數(shù)據(jù)的該字段上的值中找出最大值,作為歸并后該字段的值; 對于常字符類型的字段,從標識有關(guān)鍵碼的字段的值相同的各數(shù)據(jù)中取第一條數(shù)據(jù)的該字段上的值,作為歸并后該字段的值; 對于累加字符類型的字段,將標識有關(guān)鍵碼的字段的值相同的各數(shù)據(jù)的該字段上的字符按指定順序串接后,作為歸并后該字段的值。
5.如權(quán)利要求I至4中任一項所述的系統(tǒng),其中, 所述服務(wù)器端,適于將所接收的數(shù)據(jù)轉(zhuǎn)發(fā)給其它的服務(wù)器,或轉(zhuǎn)發(fā)到數(shù)據(jù)庫設(shè)備,或保存成本地文件。
全文摘要
本發(fā)明公開了一種日志收集系統(tǒng),屬于互聯(lián)網(wǎng)技術(shù)領(lǐng)域。本發(fā)明的方案包括服務(wù)器端和部署于不同生產(chǎn)服務(wù)器上的多個客戶端,所述客戶端,適于獲取生產(chǎn)服務(wù)器所產(chǎn)生的對應(yīng)不同類別業(yè)務(wù)的數(shù)據(jù),并將特定標識的數(shù)據(jù)歸并為一條數(shù)據(jù)后發(fā)送給所述服務(wù)器端;所述服務(wù)器端,適于從各客戶端接收數(shù)據(jù),并進行存儲或轉(zhuǎn)發(fā)。本發(fā)明的技術(shù)方案,可以傳送包含任意個數(shù)字段的數(shù)據(jù),使得數(shù)據(jù)的傳送不再有諸多限制,并在客戶端對數(shù)據(jù)進行了歸并處理,因此避免了因傳輸大量的相同或類似的數(shù)據(jù),造成網(wǎng)絡(luò)堵塞和延遲的問題。
文檔編號H04L12/24GK102902813SQ20121040469
公開日2013年1月30日 申請日期2012年10月22日 優(yōu)先權(quán)日2012年10月22日
發(fā)明者張珂, 郝國梁 申請人:北京奇虎科技有限公司, 奇智軟件(北京)有限公司