【具體實(shí)施方式】
[0059]下面將參照附圖更詳細(xì)地描述本公開的示例性實(shí)施例。雖然附圖中顯示了本公開的示例性實(shí)施例,然而應(yīng)當(dāng)理解,可以以各種形式實(shí)現(xiàn)本公開而不應(yīng)被這里闡述的實(shí)施例所限制。相反,提供這些實(shí)施例是為了能夠更透徹地理解本公開,并且能夠?qū)⒈竟_的范圍完整的傳達(dá)給本領(lǐng)域的技術(shù)人員。
[0060]本發(fā)明的實(shí)施例的核心構(gòu)思之一在于,通過改變現(xiàn)有日志服務(wù)端獲取日志數(shù)據(jù)的方式,從應(yīng)用服務(wù)器主動(dòng)推送變?yōu)槿罩痉?wù)器定時(shí)從應(yīng)用服務(wù)器抓取當(dāng)天全量的日志數(shù)據(jù),抓取再之后進(jìn)行集中,集中完成后將應(yīng)用服務(wù)器上已寫入日志數(shù)據(jù)庫的日志數(shù)據(jù)刪除。
[0061]參照?qǐng)D2,示出了本發(fā)明一種日志數(shù)據(jù)的傳輸方法實(shí)施例的流程圖,具體可以包括以下步驟:
[0062]步驟201、日志服務(wù)器定時(shí)從所述應(yīng)用服務(wù)器抓取日志數(shù)據(jù),并將所述日志數(shù)據(jù)寫入日志數(shù)據(jù)庫中;
[0063]步驟202、所述應(yīng)用服務(wù)器中刪除所述已寫入日志數(shù)據(jù)庫的日志數(shù)據(jù)。
[0064]本發(fā)明涉及兩個(gè)部分,應(yīng)用服務(wù)器和日志服務(wù)器。
[0065]應(yīng)用服務(wù)器可以是多臺(tái)平行分布的,前端可以設(shè)置負(fù)載均衡器進(jìn)行數(shù)據(jù)分發(fā),日志服務(wù)器是處于后端進(jìn)行匯總分析的服務(wù)器,可以是一臺(tái),也可以是多臺(tái),可以根據(jù)實(shí)際處理能力來部署。在本發(fā)明中,應(yīng)用服務(wù)器不使用日志數(shù)據(jù)庫進(jìn)行記錄,因?yàn)閼?yīng)用服務(wù)器需要更快的完成應(yīng)用服務(wù),并記錄下應(yīng)用服務(wù)過程中的原始日志數(shù)據(jù),至于日志分析,更多是依靠后端日志服務(wù)器的處理。日志服務(wù)器的主要工作是收集前端的原始日志數(shù)據(jù),進(jìn)行處理和加工后加以展示,以便于運(yùn)維人員迅速定位問題使用。例如,在發(fā)生緊急情況時(shí),通過在后端日志服務(wù)器的日志數(shù)據(jù)分析,就可以定位到應(yīng)用服務(wù)器上所發(fā)生的問題。日志服務(wù)器中日志數(shù)據(jù)庫可以位于日志服務(wù)器中,也可以單獨(dú)設(shè)置,與日志服務(wù)器相連。
[0066]在本發(fā)明中,日志數(shù)據(jù)庫還可以按照需求控制內(nèi)存空間的容量,定期清理不再需要的日志數(shù)據(jù)。應(yīng)用服務(wù)器記錄下原始日志數(shù)據(jù),日志服務(wù)器收集到日志服務(wù)器上,再根據(jù)查詢和分析的需求,設(shè)計(jì)出可以支持多個(gè)索引查詢的多維的表結(jié)構(gòu),對(duì)這些日志數(shù)據(jù)進(jìn)行深度加工,存入日志數(shù)據(jù)庫,就可以很好的支持展示的需求。
[0067]在具體實(shí)現(xiàn)中,日志服務(wù)器定時(shí)從所述應(yīng)用服務(wù)器抓取日志數(shù)據(jù),然后根據(jù)所述抓取的日志數(shù)據(jù)生成新日志文件,再將所述新日志文件與舊日志文件進(jìn)行比較,生成增量日志文件,然后將所述增量日志文件寫入日志數(shù)據(jù)庫中,最后從所述應(yīng)用服務(wù)器中刪除所述已寫入日志數(shù)據(jù)庫的日志數(shù)據(jù)。
[0068]在本發(fā)明的一種優(yōu)選實(shí)施例中,所述步驟201具體可以包括以下子步驟:
[0069]子步驟S101,日志服務(wù)器定時(shí)從所述應(yīng)用服務(wù)器抓取日志數(shù)據(jù);
[0070]子步驟S102,根據(jù)所述抓取的日志數(shù)據(jù)生成新日志文件;
[0071]子步驟S103,判斷所述日志服務(wù)器中是否存在舊日志文件;若是,則執(zhí)行子步驟S105,若否,則執(zhí)行子步驟S104 ;
[0072]子步驟S104,創(chuàng)建一個(gè)空文件作為舊日志文件,轉(zhuǎn)子步驟S105 ;
[0073]子步驟S105,將所述新日志文件與舊日志文件進(jìn)行比較,生成增量日志文件;
[0074]子步驟S106,將所述增量日志文件寫入日志數(shù)據(jù)庫中。
[0075]在具體實(shí)現(xiàn)中,所述日志服務(wù)器定時(shí)從所述應(yīng)用服務(wù)器抓取日志數(shù)據(jù)的方式可以由本領(lǐng)域技術(shù)人員根據(jù)需求進(jìn)行選擇,例如,可以采用在應(yīng)用服務(wù)器和日志服務(wù)器之間建立SSH(安全外殼協(xié)議)互信機(jī)制,使用CRONTAB命令(用于設(shè)置周期性被執(zhí)行的指令)和RSYNC(數(shù)據(jù)鏡像備份工具)進(jìn)行定時(shí)同步,和/或,編寫網(wǎng)絡(luò)傳輸程序,通過網(wǎng)絡(luò)將日志同步到日志服務(wù)器上等方式,本發(fā)明對(duì)此不作限制。
[0076]本發(fā)明通過改變現(xiàn)有日志服務(wù)器獲取日志數(shù)據(jù)的方式,從應(yīng)用服務(wù)器的日志客戶端主動(dòng)推送變?yōu)槿罩痉?wù)器定時(shí)從應(yīng)用服務(wù)器抓取當(dāng)天全量的日志數(shù)據(jù),抓取再之后進(jìn)行集中,集中完成后將應(yīng)用服務(wù)器上已寫入日志數(shù)據(jù)庫的日志數(shù)據(jù)刪除。
[0077]由于日志數(shù)據(jù)庫可以位于日志服務(wù)器中,也可以單獨(dú)設(shè)置,與日志服務(wù)器相連,日志數(shù)據(jù)庫可以按照需求控制內(nèi)存空間的容量,定期清理不再需要的日志數(shù)據(jù),日志服務(wù)器抓取日志數(shù)據(jù)進(jìn)行集中后則將應(yīng)用服務(wù)器上已寫入日志數(shù)據(jù)庫的日志數(shù)據(jù)刪除,降低了存儲(chǔ)的冗余;日志服務(wù)器定時(shí)從應(yīng)用服務(wù)器主動(dòng)抓取當(dāng)天全量的日志數(shù)據(jù),解決了現(xiàn)有技術(shù)在服務(wù)器宕機(jī)時(shí)未及時(shí)發(fā)送出去的日志數(shù)據(jù)會(huì)丟失的問題,降低數(shù)據(jù)丟失的風(fēng)險(xiǎn)。
[0078]在本發(fā)明的另一種優(yōu)選實(shí)施例中,所述步驟201具體可以包括以下子步驟:
[0079]子步驟S201,日志服務(wù)器定時(shí)從所述應(yīng)用服務(wù)器抓取日志數(shù)據(jù);
[0080]子步驟S202,根據(jù)所述抓取的日志數(shù)據(jù)生成新日志文件;
[0081]子步驟S203,判斷所述日志服務(wù)器中是否存在舊日志文件;若是,則執(zhí)行子步驟S205,若否,則執(zhí)行子步驟S204 ;
[0082]子步驟S204,創(chuàng)建一個(gè)空文件作為舊日志文件,轉(zhuǎn)子步驟S205 ;
[0083]子步驟S205,將所述新日志文件與舊日志文件進(jìn)行比較,提取新增內(nèi)容生成新比較文件;
[0084]子步驟S206、采用所述新比較文件替換在先的舊比較文件;
[0085]子步驟S207、去除所述新比較文件中的冗余數(shù)據(jù)后,生成新的增量日志文件;
[0086]子步驟S208、采用所述新增量日志文件替換在先的舊增量日志文件。
[0087]子步驟S209,將所述增量日志文件寫入日志數(shù)據(jù)庫中。
[0088]子步驟S210、采用所述新日志文件替換舊日志文件。
[0089]子步驟S211、若在將所述新增量日志文件寫入日志數(shù)據(jù)庫中發(fā)生錯(cuò)誤,則將寫入的日志數(shù)據(jù)進(jìn)行回滾。
[0090]在具體的實(shí)現(xiàn)中,所述新日志文件與舊日志文件比較,可以采用LINUX操作系統(tǒng)的DIFF命令進(jìn)行比較。
[0091]作為本發(fā)明實(shí)施例的一種示例,所述日志服務(wù)器定時(shí)從所述應(yīng)用服務(wù)器抓取日志數(shù)據(jù),并將所述日志數(shù)據(jù)寫入日志數(shù)據(jù)庫中步驟包括:
[0092]I)日志服務(wù)器定時(shí)從所述應(yīng)用服務(wù)器抓取日志數(shù)據(jù);
[0093]2)根據(jù)所述抓取的日志數(shù)據(jù)生成新日志文件*.new ;
[0094]3)判斷所述日志服務(wù)器中是否存在舊日志文件*.0ld ;若是,則執(zhí)行5),若否,則執(zhí)行4);
[0095]4)創(chuàng)建一個(gè)空文件作為舊日志文件*.0ld,轉(zhuǎn)5);
[0096]5)將所述新日志文件*.new與舊日志文件*.0ld進(jìn)行比較,提取新增內(nèi)容生成新比較文件*.temp ;
[0097]6)采用所述新比較文件*.temp替換在先的舊比較文件temp ;
[0098]7)去除所述新比較文件temp中的冗余數(shù)據(jù)后,生成新的增量日志文件氺.final ;
[0099]8)采用所述新增量日志文件*.final替換在先的舊增量日志文件*.final ;
[0100]9)將所述增量日志文件*.final寫入日志數(shù)據(jù)庫中;
[0101]10)采用所述新日志文件*.new替換舊日志文件*.0ld ;
[0102]11)若在將所述新增量日志文件*.final寫入日志數(shù)據(jù)庫中發(fā)生錯(cuò)誤,則將寫入的日志數(shù)據(jù)進(jìn)行回滾。
[0103]為使本領(lǐng)域技術(shù)人員更好地理解本發(fā)明,以下通過一個(gè)具體示例更好地闡述本發(fā)明實(shí)施例的處理過程:
[0104]1、設(shè)定每半個(gè)小時(shí)日志服務(wù)器從應(yīng)用服務(wù)器上抓取日志文件到日志服務(wù)器上,例如今天是2012年8月31日,日志服務(wù)器便會(huì)每半個(gè)小時(shí)抓取今天的全量日志數(shù)據(jù),例如GatewayServer_INFO_log.201208310
[0105]2、日志服務(wù)器抓取到日志數(shù)據(jù)后,對(duì)日志數(shù)據(jù)進(jìn)行重命名,命名為以new結(jié)尾的文件,例如GatewayServer_INFO_log.20120831.new,表示這個(gè)文件是新日志文件。
[0106]3、判斷日志服務(wù)器中是否存有 GatewayServer-_INFO_log.20120831.0ld 文件,若是,則執(zhí)行5,若否,則執(zhí)行4。
[0107]4、日志服務(wù)器創(chuàng)建一個(gè)空的舊文件,命名為GatewayServer__INFO_log.20120831.0ld 文件,轉(zhuǎn) 5。
[0108]5、使用 diff 命令將所述 GatewayServer_INFO_log.20120831.new 文件與GatewayServer_INFO_log.20120831.0ld文件進(jìn)行對(duì)比;,提取新增內(nèi)容生成新比較文件GatewayServer_INFO_log.20120831.temp 文件。
[0109]6、采用所述新比較文件GatewayServer_INFO_log.20120831.temp替換在先的舊比較文件 GatewayServer_INFO_log.20120831.temp。
[0110]7、使用sed命令刪