日志處理方法和裝置制造方法
【專(zhuān)利摘要】本發(fā)明公開(kāi)了一種日志處理方法和裝置。其中,日志處理方法包括:集群服務(wù)器接收用戶(hù)端的日志文件;集群服務(wù)器存儲(chǔ)日志文件;集群服務(wù)器對(duì)日志文件進(jìn)行分析,得到分析結(jié)果;以及集群服務(wù)器輸出分析結(jié)果。通過(guò)本發(fā)明,達(dá)到了提高日志處理效率的效果。
【專(zhuān)利說(shuō)明】日志處理方法和裝置
【技術(shù)領(lǐng)域】
[0001 ] 本發(fā)明涉及日志處理領(lǐng)域,具體而言,涉及一種日志處理方法和裝置。
【背景技術(shù)】
[0002]現(xiàn)有的日志處理系統(tǒng)通常采用傳統(tǒng)數(shù)據(jù)庫(kù)作為大數(shù)據(jù)載體,將非結(jié)構(gòu)化數(shù)據(jù)或半結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)于數(shù)據(jù)表中,這樣日志數(shù)據(jù)的讀寫(xiě)較為復(fù)雜,且性能較低,伸縮性差,無(wú)法適應(yīng)業(yè)務(wù)的快速變化。傳統(tǒng)的日志處理系統(tǒng)對(duì)海量日志數(shù)據(jù)的存儲(chǔ)和分析的時(shí)間很長(zhǎng),且隨著日志數(shù)據(jù)的爆炸式增長(zhǎng),只能一味地靠硬件提高數(shù)據(jù)處理效率及增加存儲(chǔ)量,不僅成本高,處理高維數(shù)據(jù)的效率也不會(huì)提高很多。
[0003]傳統(tǒng)架構(gòu)無(wú)法實(shí)現(xiàn)日志處理系統(tǒng)的存儲(chǔ)性能的線性擴(kuò)展,當(dāng)存儲(chǔ)性能壓力達(dá)到存儲(chǔ)的極限時(shí),無(wú)法快速有效的提升存儲(chǔ)的讀寫(xiě)性能。隨著日志數(shù)據(jù)的爆炸式增長(zhǎng),現(xiàn)有的日志處理效率低的問(wèn)題日益嚴(yán)峻。
[0004]針對(duì)現(xiàn)有技術(shù)中日志處理效率低的問(wèn)題,目前尚未提出有效的解決方案。
【發(fā)明內(nèi)容】
[0005]本發(fā)明的主要目的在于提供一種日志處理方法和裝置,以解決日志處理效率低的問(wèn)題。
[0006]為了實(shí)現(xiàn)上述目的,根據(jù)本發(fā)明的一個(gè)方面,提供了 一種日志處理方法。根據(jù)本發(fā)明的日志處理方法包括:集群服務(wù)器接收用戶(hù)端的日志文件;集群服務(wù)器存儲(chǔ)日志文件;集群服務(wù)器對(duì)日志文件進(jìn)行分析,得到分析結(jié)果;以及集群服務(wù)器輸出分析結(jié)果。
[0007]進(jìn)一步地,集群服務(wù)器存儲(chǔ)日志文件包括:集群服務(wù)器將日志文件拆分成日志數(shù)據(jù);以及集群服務(wù)器將日志數(shù)據(jù)傳送到分布式消息隊(duì)列中,其中,集群服務(wù)器從分布式消息隊(duì)列中讀取日志數(shù)據(jù),并對(duì)日志數(shù)據(jù)進(jìn)行分析。
[0008]進(jìn)一步地,在集群服務(wù)器將日志數(shù)據(jù)傳送到分布式消息隊(duì)列中之后,日志處理方法還包括:集群服務(wù)器從分布式消息隊(duì)列中讀取日志數(shù)據(jù);集群服務(wù)器對(duì)讀取的日志數(shù)據(jù)進(jìn)行解析,得到解析結(jié)果;集群服務(wù)器根據(jù)解析結(jié)果生成日志數(shù)據(jù)對(duì)應(yīng)的鍵值對(duì);以及集群服務(wù)器通過(guò)將鍵值對(duì)存儲(chǔ)到分布式數(shù)據(jù)庫(kù)中來(lái)存儲(chǔ)日志文件。
[0009]進(jìn)一步地,集群服務(wù)器對(duì)日志文件進(jìn)行分析包括:集群服務(wù)器從分布式數(shù)據(jù)庫(kù)中實(shí)時(shí)獲取增量的日志數(shù)據(jù);以及集群服務(wù)器對(duì)增量的日志數(shù)據(jù)采用流式計(jì)算進(jìn)行統(tǒng)計(jì)。
[0010]進(jìn)一步地,集群服務(wù)器對(duì)日志文件進(jìn)行分析包括:集群服務(wù)器按照預(yù)設(shè)周期從分布式數(shù)據(jù)庫(kù)中獲取增量的日志數(shù)據(jù);以及集群服務(wù)器對(duì)增量的日志數(shù)據(jù)進(jìn)行統(tǒng)計(jì)計(jì)算。
[0011]為了實(shí)現(xiàn)上述目的,根據(jù)本發(fā)明的另一方面,提供了一種日志處理裝置。根據(jù)本發(fā)明的日志處理裝置包括:接收單元,用于使得集群服務(wù)器接收用戶(hù)端的日志文件;存儲(chǔ)單元,用于使得集群服務(wù)器存儲(chǔ)日志文件;分析單元,用于使得集群服務(wù)器對(duì)日志文件進(jìn)行分析,得到分析結(jié)果;以及輸出單元,用于使得集群服務(wù)器輸出分析結(jié)果。
[0012]進(jìn)一步地,存儲(chǔ)單元包括:拆分模塊,用于使得集群服務(wù)器將日志文件拆分成日志數(shù)據(jù);以及傳送模塊,用于使得集群服務(wù)器將日志數(shù)據(jù)傳送到分布式消息隊(duì)列中,其中,集群服務(wù)器從分布式消息隊(duì)列中讀取日志數(shù)據(jù),并對(duì)日志數(shù)據(jù)進(jìn)行分析。
[0013]進(jìn)一步地,存儲(chǔ)單元還包括:讀取模塊,用于在集群服務(wù)器將日志數(shù)據(jù)傳送到分布式消息隊(duì)列中之后,使得集群服務(wù)器從分布式消息隊(duì)列中讀取日志數(shù)據(jù);解析模塊,用于使得集群服務(wù)器對(duì)讀取的日志數(shù)據(jù)進(jìn)行解析,得到解析結(jié)果;生成模塊,用于使得集群服務(wù)器根據(jù)解析結(jié)果生成日志數(shù)據(jù)對(duì)應(yīng)的鍵值對(duì);以及存儲(chǔ)模塊,用于使得集群服務(wù)器通過(guò)將鍵值對(duì)存儲(chǔ)到分布式數(shù)據(jù)庫(kù)中來(lái)存儲(chǔ)日志文件。
[0014]進(jìn)一步地,分析單元包括:第一獲取模塊,用于使得集群服務(wù)器從分布式數(shù)據(jù)庫(kù)中實(shí)時(shí)獲取增量的日志數(shù)據(jù);以及第一計(jì)算模塊,用于使得集群服務(wù)器對(duì)增量的日志數(shù)據(jù)采用流式計(jì)算進(jìn)行統(tǒng)計(jì)。
[0015]進(jìn)一步地,分析單元包括:第二獲取模塊,用于使得集群服務(wù)器按照預(yù)設(shè)周期從分布式數(shù)據(jù)庫(kù)中獲取增量的日志數(shù)據(jù);以及第二計(jì)算模塊,用于使得集群服務(wù)器對(duì)增量的日志數(shù)據(jù)進(jìn)行統(tǒng)計(jì)計(jì)算。
[0016]通過(guò)本發(fā)明,采用集群服務(wù)器來(lái)存儲(chǔ)和分析的分類(lèi)處理來(lái)達(dá)到海量日志處理的高效能,實(shí)現(xiàn)了海量日志分析,解決了現(xiàn)有技術(shù)中日志處理效率低的問(wèn)題,達(dá)到了提高日志處理效率的效果。
【專(zhuān)利附圖】
【附圖說(shuō)明】
[0017]構(gòu)成本申請(qǐng)的一部分的附圖用來(lái)提供對(duì)本發(fā)明的進(jìn)一步理解,本發(fā)明的示意性實(shí)施例及其說(shuō)明用于解釋本發(fā)明,并不構(gòu)成對(duì)本發(fā)明的不當(dāng)限定。在附圖中:
[0018]圖1是根據(jù)本發(fā)明實(shí)施例的日志處理方法的流程圖;
[0019]圖2是根據(jù)本發(fā)明實(shí)施例一種優(yōu)選的日志處理方法的流程圖;
[0020]圖3是根據(jù)本發(fā)明實(shí)施例的日志處理裝置的示意圖;以及
[0021]圖4是根據(jù)本發(fā)明實(shí)施例的一種優(yōu)選的日志處理裝置的示意圖。
【具體實(shí)施方式】
[0022]需要說(shuō)明的是,在不沖突的情況下,本申請(qǐng)中的實(shí)施例及實(shí)施例中的特征可以相互組合。下面將參考附圖并結(jié)合實(shí)施例來(lái)詳細(xì)說(shuō)明本發(fā)明。
[0023]為了使本【技術(shù)領(lǐng)域】的人員更好地理解本發(fā)明方案,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分的實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都應(yīng)當(dāng)屬于本發(fā)明保護(hù)的范圍。
[0024]需要說(shuō)明的是,本發(fā)明的說(shuō)明書(shū)和權(quán)利要求書(shū)及上述附圖中的術(shù)語(yǔ)“第一”、“第二”等是用于區(qū)別類(lèi)似的對(duì)象,而不必用于描述特定的順序或先后次序。應(yīng)該理解這樣使用的數(shù)據(jù)在適當(dāng)情況下可以互換,以便這里描述的本發(fā)明的實(shí)施例。此外,術(shù)語(yǔ)“包括”和“具有”以及他們的任何變形,意圖在于覆蓋不排他的包含,例如,包含了一系列步驟或單元的過(guò)程、方法、系統(tǒng)、產(chǎn)品或設(shè)備不必限于清楚地列出的那些步驟或單元,而是可包括沒(méi)有清楚地列出的或?qū)τ谶@些過(guò)程、方法、產(chǎn)品或設(shè)備固有的其它步驟或單元。[0025]本發(fā)明實(shí)施例還提供了一種日志處理方法。該方法運(yùn)行在計(jì)算機(jī)設(shè)備上。
[0026]圖1是根據(jù)本發(fā)明實(shí)施例的日志處理方法的流程圖。如圖1所示,該日志處理方法包括步驟如下:
[0027]步驟S102,集群服務(wù)器接收用戶(hù)端的日志文件。
[0028]用戶(hù)端可以是需要采集日志的服務(wù)器,也可以是用戶(hù)那一側(cè)需要采集日志的客戶(hù)端。例如,用戶(hù)通過(guò)一臺(tái)服務(wù)器對(duì)應(yīng)客戶(hù)端,不同的客戶(hù)端分別運(yùn)行各自的業(yè)務(wù),客戶(hù)端會(huì)產(chǎn)生日志。同時(shí),服務(wù)器在為個(gè)客戶(hù)端提供后臺(tái)服務(wù),服務(wù)器在運(yùn)行過(guò)程中也會(huì)產(chǎn)生一些日志。集群服務(wù)器可以接收服務(wù)器或者客戶(hù)端的發(fā)送過(guò)來(lái)的日志文件,用于對(duì)日志文件進(jìn)行處理。集群服務(wù)器可以同時(shí)接收多個(gè)用戶(hù)端的日志文件,對(duì)不同用戶(hù)端的日志文件分別進(jìn)行處理。
[0029]本發(fā)明實(shí)施例中,可以在需要采集日志的用戶(hù)端設(shè)置或者搭載一個(gè)代理模塊,用于定時(shí)采集日志文件,發(fā)送到集群服務(wù)器。用戶(hù)端通過(guò)HTTP協(xié)議發(fā)送請(qǐng)求及其對(duì)應(yīng)的日志文件,集群服務(wù)器響應(yīng)請(qǐng)求后,通過(guò)提供的服務(wù)接口接收日志文件,以便于將日志文件存儲(chǔ)在集群服務(wù)器上。
[0030]步驟S104,集群服務(wù)器存儲(chǔ)日志文件。
[0031]在接收到用戶(hù)端的日志文件之后,可以將日志文件存儲(chǔ)到集群服務(wù)器。
[0032]具體地,存儲(chǔ)日志文件可以是先將日志文件拆分成多行日志數(shù)據(jù),然后將多行日志數(shù)據(jù)依次傳送至分布式消息隊(duì)列中,例如kafka消息隊(duì)列,以便于集群服務(wù)器從分布式消息隊(duì)列中讀取日志數(shù)據(jù)進(jìn)行分析。在將日志數(shù)據(jù)依次傳送至分布式消息隊(duì)列之后,集群服務(wù)器還可以從分布式消息隊(duì)列中讀取日志數(shù)據(jù),對(duì)讀取的日志數(shù)據(jù)進(jìn)行解析,并生成鍵值對(duì)(key-value)的形式存儲(chǔ)在分布式數(shù)據(jù)庫(kù)中。在存儲(chǔ)日志文件的同時(shí),可以獲取日志文件的描述信息(如日志文件的路徑、創(chuàng)建時(shí)間等),存放在集群服務(wù)器的數(shù)據(jù)庫(kù)中。
[0033]步驟S106,集群服務(wù)器對(duì)日志文件進(jìn)行分析,得到分析結(jié)果。
[0034]當(dāng)用戶(hù)端將日志文件傳輸?shù)郊悍?wù)器之后,用戶(hù)可以訪問(wèn)集群服務(wù)器,查詢(xún)集群服務(wù)器對(duì)日志文件的分析結(jié)果。例如,通過(guò)日志分析,可以得到用戶(hù)端業(yè)務(wù)的運(yùn)行狀況或者故障狀況。對(duì)日志文件進(jìn)行分析可以是對(duì)日志文件中的信息進(jìn)行統(tǒng)計(jì),得到統(tǒng)計(jì)結(jié)果。
[0035]由于用戶(hù)對(duì)日志文件的分析結(jié)果的查詢(xún)情況的不同,根據(jù)查詢(xún)要求的及時(shí)性可以將日志的分析分為實(shí)時(shí)分析和離線分析。實(shí)時(shí)分析通常要求在數(shù)秒內(nèi)返回上億行日志數(shù)據(jù)的分析,才能達(dá)到不影響用戶(hù)查詢(xún)分析結(jié)果的目的。對(duì)日志數(shù)據(jù)進(jìn)行實(shí)時(shí)統(tǒng)計(jì),這部分日志數(shù)據(jù)量一般不會(huì)太大,可以通過(guò)流式計(jì)算來(lái)統(tǒng)計(jì)分析,結(jié)果暫存數(shù)據(jù)庫(kù)例如redis數(shù)據(jù)庫(kù)中,處理后再對(duì)分析結(jié)果進(jìn)行存儲(chǔ)。
[0036]離線分析對(duì)統(tǒng)計(jì)數(shù)據(jù)的及時(shí)性要求不高,可以隔天或者隔月分析結(jié)果進(jìn)行展示。把解析后的日志數(shù)據(jù)先存放在分布式數(shù)據(jù)庫(kù)如Hbase數(shù)據(jù)庫(kù)中,事先根據(jù)業(yè)務(wù)邏輯要求寫(xiě)好任務(wù)job,按預(yù)設(shè)周期定時(shí)跑任務(wù)來(lái)計(jì)算統(tǒng)計(jì)分析日志。
[0037]步驟S108,集群服務(wù)器輸出分析結(jié)果。
[0038]輸出分析結(jié)果可以是將分析結(jié)果輸出給相應(yīng)的用戶(hù)端,在用戶(hù)端可以通過(guò)網(wǎng)頁(yè)或者應(yīng)用程序?qū)Ψ治鼋Y(jié)果進(jìn)行展示,以便于工作人員進(jìn)行查看。
[0039]本發(fā)明實(shí)施例中,集群服務(wù)器中多個(gè)服務(wù)器用于接收日志文件,多個(gè)服務(wù)器用于存儲(chǔ)日志文件,以及多個(gè)服務(wù)器用于分析日志文件,本發(fā)明實(shí)施例將復(fù)雜的運(yùn)算均分配到各臺(tái)服務(wù)器,實(shí)現(xiàn)了整個(gè)系統(tǒng)的高并發(fā)能力,處理能力可以達(dá)到傳統(tǒng)架構(gòu)的10倍以上。通過(guò)集群服務(wù)器來(lái)存儲(chǔ)和分析的分類(lèi)處理來(lái)達(dá)到海量日志處理的高效能,實(shí)現(xiàn)了海量日志分析,解決了現(xiàn)有技術(shù)中日志處理效率低的問(wèn)題,達(dá)到了提高日志處理效率的效果。
[0040]本發(fā)明實(shí)施例可以是采用云計(jì)算原理,對(duì)日志文件進(jìn)行處理。其中,云計(jì)算(cloudcomputing)是基于互聯(lián)網(wǎng)的相關(guān)服務(wù)的增加、使用和交付模式,通常涉及通過(guò)互聯(lián)網(wǎng)來(lái)提供動(dòng)態(tài)易擴(kuò)展且經(jīng)常是虛擬化的資源。云是網(wǎng)絡(luò)、互聯(lián)網(wǎng)的一種比喻說(shuō)法。過(guò)去在圖中往往用云來(lái)表示電信網(wǎng),后來(lái)也用來(lái)表示互聯(lián)網(wǎng)和底層基礎(chǔ)設(shè)施的抽象。狹義云計(jì)算指IT基礎(chǔ)設(shè)施的交付和使用模式,指通過(guò)網(wǎng)絡(luò)以按需、易擴(kuò)展的方式獲得所需資源;廣義云計(jì)算指服務(wù)的交付和使用模式,指通過(guò)網(wǎng)絡(luò)以按需、易擴(kuò)展的方式獲得所需服務(wù)。這種服務(wù)可以是IT和軟件、互聯(lián)網(wǎng)相關(guān),也可是其他服務(wù)。它意味著計(jì)算能力也可作為一種商品通過(guò)互聯(lián)網(wǎng)進(jìn)行流通。云計(jì)算作為一種新興的技術(shù)理念,其提供的云存儲(chǔ)(海量數(shù)據(jù)分布存儲(chǔ)技術(shù))、云計(jì)算(hadoop的map reduce、流式實(shí)時(shí)計(jì)算)、云安全等很適用于大數(shù)據(jù)存儲(chǔ)、挖掘、分析、預(yù)警、統(tǒng)計(jì)等需求,且其高效的性能讓數(shù)據(jù)處理的及時(shí)和準(zhǔn)確得到保障?;谠朴?jì)算平臺(tái)的原理,進(jìn)行前期日志數(shù)據(jù)存儲(chǔ)的選擇和根據(jù)數(shù)據(jù)量和查詢(xún)實(shí)時(shí)性的要求做了分類(lèi)處理,最主要的是做到了一個(gè)業(yè)務(wù)任務(wù)分析的并行處理,而不是的多任務(wù)的并行處理,大大提升了查詢(xún)效率和統(tǒng)計(jì)結(jié)果的正確性。
[0041]本發(fā)明實(shí)施例的目的在于解決海量日志的云存儲(chǔ),以及海量日志能夠得到及時(shí)分析和深入分析挖掘的云計(jì)算服務(wù),并且保證日志數(shù)據(jù)的安全性、準(zhǔn)確性。同時(shí)解決了日志量的增長(zhǎng)只要通過(guò)新的計(jì)算節(jié)點(diǎn)來(lái)解決,而無(wú)需只是一味地靠硬件提高數(shù)據(jù)處理效率及增加
存儲(chǔ)量。
[0042]優(yōu)選地,集群服務(wù)器存儲(chǔ)日志文件的步驟包括以下步驟:
[0043]步驟SI,集群服務(wù)器將日志文件拆分成日志數(shù)據(jù)。
[0044]由于不同用戶(hù)端的日志文件的格式各不相同,而每個(gè)日志文件中包含有多個(gè)日志記錄,將日志文件拆分成日志數(shù)據(jù)可以是將日志文件拆分成多行日志數(shù)據(jù),形成數(shù)據(jù)行,以便于將不通過(guò)格式的日志文件拆分成日志數(shù)據(jù)傳送至分布式消息列中。
[0045]步驟S2,集群服務(wù)器將日志數(shù)據(jù)傳送到分布式消息隊(duì)列中。其中,集群服務(wù)器從分布式消息隊(duì)列中讀取日志數(shù)據(jù),并對(duì)日志數(shù)據(jù)進(jìn)行分析。
[0046]分布式消息隊(duì)列可以是kafka消息隊(duì)列,kafka的分布式消息隊(duì)列比較適合簡(jiǎn)單的消息傳遞和分發(fā),能支持大數(shù)據(jù)量,尤其是日志數(shù)據(jù),而且與mapreduce結(jié)合做實(shí)時(shí)分析也能達(dá)到很好的效果。
[0047]優(yōu)選地,在集群服務(wù)器將日志數(shù)據(jù)傳送到分布式消息隊(duì)列中的步驟之后,日志處理方法還包括:集群服務(wù)器從分布式消息隊(duì)列中讀取日志數(shù)據(jù);集群服務(wù)器對(duì)讀取的日志數(shù)據(jù)進(jìn)行解析,得到解析結(jié)果;集群服務(wù)器根據(jù)解析結(jié)果生成日志數(shù)據(jù)對(duì)應(yīng)的鍵值對(duì);以及集群服務(wù)器通過(guò)將鍵值對(duì)存儲(chǔ)到分布式數(shù)據(jù)庫(kù)中來(lái)存儲(chǔ)日志文件。
[0048]具體地,從分布式消息隊(duì)列中讀取日志數(shù)據(jù),對(duì)每條日志數(shù)據(jù)進(jìn)行解析,解析得到日志的關(guān)鍵字,例如mac地址、流量、具體應(yīng)用等,基于這些解析結(jié)果生成日志數(shù)據(jù)對(duì)應(yīng)的鍵值對(duì),如利用mac地址為key,其他的解析結(jié)果為value,然后得到日志數(shù)據(jù)的鍵值對(duì),然后把日志數(shù)據(jù)映射存儲(chǔ)到分布式數(shù)據(jù)庫(kù)如hbase數(shù)據(jù)庫(kù)中。
[0049]本發(fā)明實(shí)施例,利用分布式數(shù)據(jù)庫(kù)hbase存儲(chǔ)日志解析的數(shù)據(jù),由于hbase數(shù)據(jù)庫(kù)是基于key-value的數(shù)據(jù)存儲(chǔ)模式,擴(kuò)展性好,從hbase取數(shù)進(jìn)行分析速度夠快,而且結(jié)果可以任意存儲(chǔ),要繼續(xù)存儲(chǔ)hbase、關(guān)系型數(shù)據(jù)或者redis均可,不會(huì)有不兼容的情況出現(xiàn)。
[0050]優(yōu)選地,集群服務(wù)器對(duì)日志文件進(jìn)行分析包括:集群服務(wù)器從分布式數(shù)據(jù)庫(kù)中實(shí)時(shí)獲取增量的日志數(shù)據(jù);以及集群服務(wù)器對(duì)增量的日志數(shù)據(jù)采用流式計(jì)算進(jìn)行統(tǒng)計(jì)。
[0051]由于日志文件的不斷累加,存儲(chǔ)在分布式數(shù)據(jù)庫(kù)中的日志數(shù)據(jù)也不斷增加,本發(fā)明實(shí)施例中的實(shí)時(shí)分析可以是集群服務(wù)器實(shí)時(shí)從分布式數(shù)據(jù)庫(kù)中實(shí)時(shí)獲取增量的日志數(shù)據(jù),對(duì)增量的日志數(shù)據(jù)進(jìn)行計(jì)算統(tǒng)計(jì),避免對(duì)已經(jīng)計(jì)算過(guò)的日志數(shù)據(jù)進(jìn)行重復(fù)計(jì)算。實(shí)時(shí)獲取增量的日志數(shù)據(jù),采用流式計(jì)算對(duì)增量的數(shù)據(jù)進(jìn)行統(tǒng)計(jì)。其中,流式計(jì)算是采用storm的bolt來(lái)完成,bolt中自帶過(guò)濾、聚合、查詢(xún)數(shù)據(jù)庫(kù)等一系列操作,其中,過(guò)濾操作可以在前期的parse分析中完成,以DB表的形式存放在hbase中,只在流式計(jì)算中做了 map映射把需要的數(shù)據(jù)組織起來(lái)進(jìn)行聚合計(jì)算分析。
[0052]具體地,首先,從kafka隊(duì)列中取出日志數(shù)據(jù)經(jīng)過(guò)parse解析存放在hbase中,此過(guò)程將日志記錄進(jìn)行拆分,映射成DB表的形式存放在hbase中。然后,采用流式計(jì)算來(lái)進(jìn)行實(shí)時(shí)分析統(tǒng)計(jì),流式計(jì)算是采用storm的bolt來(lái)完成,bolt中自帶過(guò)濾、聚合、查詢(xún)數(shù)據(jù)庫(kù)等一系列操作,其中,過(guò)濾操作可以在前期的parse分析中完成,以DB表的形式存放在hbase中,只在流式計(jì)算中做了 map映射把需要的數(shù)據(jù)組織起來(lái)進(jìn)行聚合計(jì)算分析。接著將流式計(jì)算統(tǒng)計(jì)完的結(jié)果存放在數(shù)據(jù)庫(kù)如redis數(shù)據(jù)庫(kù)中。最后,把存儲(chǔ)在redis的結(jié)果數(shù)據(jù)依據(jù)實(shí)際需要存放在hbase數(shù)據(jù)庫(kù),或者關(guān)系型數(shù)據(jù)庫(kù)mysql中,供用戶(hù)查詢(xún)這些統(tǒng)計(jì)數(shù)據(jù)。
[0053]上述實(shí)施例描述了日志分析中的實(shí)時(shí)分析的一個(gè)流程,根據(jù)實(shí)時(shí)分析流程處理海量日志的實(shí)時(shí)分析,瞬間把結(jié)果反饋給客戶(hù),提高日志分析結(jié)果的及時(shí)性。
[0054]優(yōu)選地,集群服務(wù)器對(duì)日志文件進(jìn)行分析包括:集群服務(wù)器按照預(yù)設(shè)周期從分布式數(shù)據(jù)庫(kù)中獲取增量的日志數(shù)據(jù);以及集群服務(wù)器對(duì)增量的日志數(shù)據(jù)進(jìn)行統(tǒng)計(jì)計(jì)算。
[0055]由于用戶(hù)對(duì)日志文件的分析結(jié)果的查詢(xún)情況的不同可以采用離線分析的方式對(duì)日志數(shù)據(jù)進(jìn)行分析處理。可以預(yù)先設(shè)置分析的周期即預(yù)設(shè)周期,預(yù)設(shè)周期可以根據(jù)需要進(jìn)行設(shè)置,例如一個(gè)星期或者一個(gè)月等。按照預(yù)設(shè)周期從分布式數(shù)據(jù)庫(kù)中獲取增量的日志數(shù)據(jù),在對(duì)增量的日志數(shù)據(jù)進(jìn)行統(tǒng)計(jì)計(jì)算。
[0056]具體地,可以通過(guò)以下步驟實(shí)現(xiàn):
[0057]步驟一,從kafka隊(duì)列中取出日志數(shù)據(jù)經(jīng)過(guò)parse解析存放在hbase中,此過(guò)程將日志記錄進(jìn)行拆分,映射成DB表的形式存放在hbase中。
[0058]步驟二,根據(jù)具體需要?jiǎng)?chuàng)建一個(gè)個(gè)的作業(yè)任務(wù),任務(wù)邏輯根據(jù)實(shí)際的業(yè)務(wù)邏輯而定。
[0059]步驟三,創(chuàng)建周期性調(diào)度Task,就是設(shè)置周期性的調(diào)度作業(yè)任務(wù),比如預(yù)先創(chuàng)建任務(wù)1,每天零點(diǎn)跑任務(wù)I。
[0060]步驟四,到達(dá)的調(diào)度時(shí)間,依據(jù)調(diào)度內(nèi)容啟動(dòng)任務(wù)。
[0061]步驟五,執(zhí)行具體的任務(wù)邏輯計(jì)算統(tǒng)計(jì)日志數(shù)據(jù)。
[0062]步驟六,如果任務(wù)執(zhí)行失敗,則通過(guò)預(yù)先設(shè)置的通知模塊以短信或者mail的方式通知相關(guān)用戶(hù),用戶(hù)在手動(dòng)排查原因后重啟作業(yè)任務(wù)。
[0063]步驟七,任務(wù)執(zhí)行成功后,把執(zhí)行結(jié)果存放在hbase數(shù)據(jù)庫(kù)中,方便用戶(hù)查詢(xún)。[0064]步驟八,任務(wù)執(zhí)行成功并且把結(jié)果存放在hbase數(shù)據(jù)庫(kù)后,可以通過(guò)通知模塊以短信或者mail的方式通知用戶(hù),任務(wù)執(zhí)行成功。
[0065]上述實(shí)施例描述了日志分析中的離線分析的一個(gè)流程,根據(jù)這樣的離線分析流程并行處理海量日志的離線分析,并且把結(jié)果上報(bào)給前端供用戶(hù)展示。
[0066]圖2是根據(jù)本發(fā)明實(shí)施例一種優(yōu)選的日志處理方法的流程圖。如圖2所示,該日志處理方法包括步驟如下:
[0067]步驟202,提取用戶(hù)端的日志文件。提取日志文件可以是提取預(yù)設(shè)關(guān)鍵字相關(guān)的日志文件。通過(guò)設(shè)計(jì)一個(gè)腳本類(lèi)型的agent代理模塊,將其搭建在用戶(hù)端的服務(wù)器上,基于業(yè)務(wù)需要每隔一定時(shí)間采集需要的日志。提取用戶(hù)端的日志文件之后,可以將提取的日志文件推送到集群服務(wù)器。
[0068]步驟204,將推送出的日志文件存儲(chǔ)在集群服務(wù)器。集群服務(wù)器上存儲(chǔ)日志文件包括:首先是存儲(chǔ)日志文件,其次是把日志的描述文件(包括日志存放的路徑、大小、時(shí)間等)存儲(chǔ)在redis中。
[0069]步驟206,集群服務(wù)器讀取日志數(shù)據(jù),把日志數(shù)據(jù)傳送到分布式消息隊(duì)列中。
[0070]步驟208,集群服務(wù)器從分布式消息隊(duì)列中讀取日志數(shù)據(jù),并對(duì)日志數(shù)據(jù)進(jìn)行解析。先進(jìn)行日志解析,把有用的數(shù)據(jù)解析出來(lái),解析后的數(shù)據(jù)存儲(chǔ)在hbase相應(yīng)的表字段中。
[0071]步驟210,讀取日志解析后的數(shù)據(jù)進(jìn)行分析,得到分析結(jié)果。對(duì)解析后的數(shù)據(jù)可以采取實(shí)時(shí)分析和離線分析兩種方式。
[0072]步驟212,把分析結(jié)果通過(guò)展示在用戶(hù)端??梢允峭ㄟ^(guò)Thrift以網(wǎng)頁(yè)或者手機(jī)APP的形式來(lái)展現(xiàn)。
[0073]上述實(shí)施例描述了一個(gè)日志從采集到分析最后到結(jié)果展示整個(gè)一個(gè)流程,通過(guò)集群服務(wù)器來(lái)存儲(chǔ)和分析的分類(lèi)處理來(lái)達(dá)到海量日志處理的高效能,實(shí)現(xiàn)了海量日志分析。
[0074]下面通過(guò)本發(fā)明實(shí)施例的日志處理方法的一個(gè)應(yīng)用場(chǎng)景來(lái)詳細(xì)描述本發(fā)明。
[0075]對(duì)于聚合視頻流量日志的處理過(guò)程包括:首先,采集聚合視頻流量日志。然后,集群服務(wù)器把采集到的流量日志拆分成日志數(shù)據(jù)行傳送到kfaka隊(duì)列中。
[0076]在流量日志傳送到kfaka隊(duì)列中之后,集群服務(wù)器從kfaka隊(duì)列中依次讀取日志數(shù)據(jù),對(duì)每條日志進(jìn)行解析,解析成一些關(guān)鍵字,比如mac地址、流量、具體應(yīng)用等。
[0077]集群服務(wù)器解析后的結(jié)果,會(huì)形成日志數(shù)據(jù)對(duì)應(yīng)的key-value的模式,如利用mac為key,其余為value,把日志數(shù)據(jù)映射存儲(chǔ)到hbase中。
[0078]然后可以根據(jù)需要,采用實(shí)時(shí)分析或者離線分析的方式對(duì)日志文件進(jìn)行分析統(tǒng)計(jì)。其中,離線分析可以是每2H作為一次調(diào)度周期,調(diào)度時(shí)刻一到啟動(dòng)事先設(shè)計(jì)好的任務(wù),增量計(jì)算這2H的流量情況并且更新每月的流量記錄。同時(shí)告知用戶(hù)任務(wù)的執(zhí)行情況。
[0079]實(shí)時(shí)分析可根據(jù)查詢(xún)指令,迅速查詢(xún)上一次任務(wù)跑完到查詢(xún)點(diǎn)的流量信息,并把實(shí)時(shí)查詢(xún)的結(jié)果和上一次任務(wù)跑完的統(tǒng)計(jì)數(shù)據(jù)作為實(shí)際的流量數(shù)據(jù)反饋給用戶(hù)。
[0080]最后,將分析結(jié)果界面展示給用戶(hù)。
[0081]基于云計(jì)算平臺(tái)的原理,進(jìn)行前期數(shù)據(jù)存儲(chǔ)的選擇和根據(jù)數(shù)據(jù)量和查詢(xún)實(shí)時(shí)性的要求做了分類(lèi)處理,最主要的是做到了一個(gè)業(yè)務(wù)任務(wù)分析的并行處理,而不是的多任務(wù)的并行處理,大大提升了查詢(xún)效率和統(tǒng)計(jì)結(jié)果的正確性。[0082]本發(fā)明實(shí)施例提供了一種日志處理裝置,該裝置可以通過(guò)集群服務(wù)器實(shí)現(xiàn)其功能。需要說(shuō)明的是,本發(fā)明實(shí)施例的日志處理裝置可以用于執(zhí)行本發(fā)明實(shí)施例所提供的日志處理方法,本發(fā)明實(shí)施例的日志處理方法也可以通過(guò)本發(fā)明實(shí)施例所提供的日志處理裝置來(lái)執(zhí)行。
[0083]圖3是根據(jù)本發(fā)明實(shí)施例的日志處理裝置的示意圖。如圖3所示,該日志處理裝置包括接收單元10、存儲(chǔ)單元30、分析單元50和輸出單元70。
[0084]接收單元10用于使得集群服務(wù)器接收用戶(hù)端的日志文件。
[0085]用戶(hù)端可以是需要采集日志的服務(wù)器,也可以是用戶(hù)那一側(cè)需要采集日志的客戶(hù)端。例如,用戶(hù)通過(guò)一臺(tái)服務(wù)器對(duì)應(yīng)客戶(hù)端,不同的客戶(hù)端分別運(yùn)行各自的業(yè)務(wù),客戶(hù)端會(huì)產(chǎn)生日志。同時(shí),服務(wù)器在為個(gè)客戶(hù)端提供后臺(tái)服務(wù),服務(wù)器在運(yùn)行過(guò)程中也會(huì)產(chǎn)生一些日志。集群服務(wù)器可以接收服務(wù)器或者客戶(hù)端的發(fā)送過(guò)來(lái)的日志文件,用于對(duì)日志文件進(jìn)行處理。集群服務(wù)器可以同時(shí)接收多個(gè)用戶(hù)端的日志文件,對(duì)不同用戶(hù)端的日志文件分別進(jìn)行處理。
[0086]本發(fā)明實(shí)施例中,可以在需要采集日志的用戶(hù)端設(shè)置或者搭載一個(gè)代理模塊,用于定時(shí)采集日志文件,發(fā)送到集群服務(wù)器。用戶(hù)端通過(guò)HTTP協(xié)議發(fā)送請(qǐng)求及其對(duì)應(yīng)的日志文件,集群服務(wù)器響應(yīng)請(qǐng)求后,通過(guò)提供的服務(wù)接口接收日志文件,以便于將日志文件存儲(chǔ)在集群服務(wù)器上。
[0087]存儲(chǔ)單元30用于使得集群服務(wù)器存儲(chǔ)日志文件。
[0088]在接收到用戶(hù)端的日志文件之后,可以將日志文件存儲(chǔ)到集群服務(wù)器。
[0089]具體地,存儲(chǔ)日志文件可以是先將日志文件拆分成多行日志數(shù)據(jù),然后將多行日志數(shù)據(jù)依次傳送至分布式消息隊(duì)列中,例如kafka消息隊(duì)列,以便于集群服務(wù)器從分布式消息隊(duì)列中讀取日志數(shù)據(jù)進(jìn)行分析。在將日志數(shù)據(jù)依次傳送至分布式消息隊(duì)列之后,集群服務(wù)器還可以從分布式消息隊(duì)列中讀取日志數(shù)據(jù),對(duì)讀取的日志數(shù)據(jù)進(jìn)行解析,并生成鍵值對(duì)(key-value)的形式存儲(chǔ)在分布式數(shù)據(jù)庫(kù)中。在存儲(chǔ)日志文件的同時(shí),可以獲取日志文件的描述信息(如日志文件的路徑、創(chuàng)建時(shí)間等),存放在集群服務(wù)器的數(shù)據(jù)庫(kù)中。
[0090]分析單元50用于使得集群服務(wù)器對(duì)日志文件進(jìn)行分析,得到分析結(jié)果。
[0091]當(dāng)用戶(hù)端將日志文件傳輸?shù)郊悍?wù)器之后,用戶(hù)可以訪問(wèn)集群服務(wù)器,查詢(xún)集群服務(wù)器對(duì)日志文件的分析結(jié)果。例如,通過(guò)日志分析,可以得到用戶(hù)端業(yè)務(wù)的運(yùn)行狀況或者故障狀況。對(duì)日志文件進(jìn)行分析可以是對(duì)日志文件中的信息進(jìn)行統(tǒng)計(jì),得到統(tǒng)計(jì)結(jié)果。
[0092]由于用戶(hù)對(duì)日志文件的分析結(jié)果的查詢(xún)情況的不同,根據(jù)查詢(xún)要求的及時(shí)性可以將日志的分析分為實(shí)時(shí)分析和離線分析。實(shí)時(shí)分析通常要求在數(shù)秒內(nèi)返回上億行日志數(shù)據(jù)的分析,才能達(dá)到不影響用戶(hù)查詢(xún)分析結(jié)果的目的。對(duì)日志數(shù)據(jù)進(jìn)行實(shí)時(shí)統(tǒng)計(jì),這部分日志數(shù)據(jù)量一般不會(huì)太大,可以通過(guò)流式計(jì)算來(lái)統(tǒng)計(jì)分析,結(jié)果暫存數(shù)據(jù)庫(kù)例如redis數(shù)據(jù)庫(kù)中,處理后再對(duì)分析結(jié)果進(jìn)行存儲(chǔ)。
[0093]離線分析對(duì)統(tǒng)計(jì)數(shù)據(jù)的及時(shí)性要求不高,可以隔天或者隔月分析結(jié)果進(jìn)行展示。把解析后的日志數(shù)據(jù)先存放在分布式數(shù)據(jù)庫(kù)如Hbase數(shù)據(jù)庫(kù)中,事先根據(jù)業(yè)務(wù)邏輯要求寫(xiě)好任務(wù)job,按預(yù)設(shè)周期定時(shí)跑任務(wù)來(lái)計(jì)算統(tǒng)計(jì)分析日志。
[0094]輸出單元70用于使得集群服務(wù)器輸出分析結(jié)果。
[0095]輸出分析結(jié)果可以是將分析結(jié)果輸出給相應(yīng)的用戶(hù)端,在用戶(hù)端可以通過(guò)網(wǎng)頁(yè)或者應(yīng)用程序?qū)Ψ治鼋Y(jié)果進(jìn)行展示,以便于工作人員進(jìn)行查看。
[0096]本發(fā)明實(shí)施例中,集群服務(wù)器中多個(gè)服務(wù)器用于接收日志文件,多個(gè)服務(wù)器用于存儲(chǔ)日志文件,以及多個(gè)服務(wù)器用于分析日志文件,本發(fā)明實(shí)施例將復(fù)雜的運(yùn)算均分配到各臺(tái)服務(wù)器,實(shí)現(xiàn)了整個(gè)系統(tǒng)的高并發(fā)能力,處理能力可以達(dá)到傳統(tǒng)架構(gòu)的10倍以上。通過(guò)集群服務(wù)器來(lái)存儲(chǔ)和分析的分類(lèi)處理來(lái)達(dá)到海量日志處理的高效能,實(shí)現(xiàn)了海量日志分析,解決了現(xiàn)有技術(shù)中日志處理效率低的問(wèn)題,達(dá)到了提高日志處理效率的效果。
[0097]本發(fā)明實(shí)施例可以是采用云計(jì)算原理,對(duì)日志文件進(jìn)行處理。其中,云計(jì)算(cloudcomputing)是基于互聯(lián)網(wǎng)的相關(guān)服務(wù)的增力卩、使用和交付模式,通常涉及通過(guò)互聯(lián)網(wǎng)來(lái)提供動(dòng)態(tài)易擴(kuò)展且經(jīng)常是虛擬化的資源。云是網(wǎng)絡(luò)、互聯(lián)網(wǎng)的一種比喻說(shuō)法。過(guò)去在圖中往往用云來(lái)表示電信網(wǎng),后來(lái)也用來(lái)表示互聯(lián)網(wǎng)和底層基礎(chǔ)設(shè)施的抽象。狹義云計(jì)算指IT基礎(chǔ)設(shè)施的交付和使用模式,指通過(guò)網(wǎng)絡(luò)以按需、易擴(kuò)展的方式獲得所需資源;廣義云計(jì)算指服務(wù)的交付和使用模式,指通過(guò)網(wǎng)絡(luò)以按需、易擴(kuò)展的方式獲得所需服務(wù)。這種服務(wù)可以是IT和軟件、互聯(lián)網(wǎng)相關(guān),也可是其他服務(wù)。它意味著計(jì)算能力也可作為一種商品通過(guò)互聯(lián)網(wǎng)進(jìn)行流通。云計(jì)算作為一種新興的技術(shù)理念,其提供的云存儲(chǔ)(海量數(shù)據(jù)分布存儲(chǔ)技術(shù))、云計(jì)算(hadoop的map reduce、流式實(shí)時(shí)計(jì)算)、云安全等很適用于大數(shù)據(jù)存儲(chǔ)、挖掘、分析、預(yù)警、統(tǒng)計(jì)等需求,且其高效的性能讓數(shù)據(jù)處理的及時(shí)和準(zhǔn)確得到保障?;谠朴?jì)算平臺(tái)的原理,進(jìn)行前期日志數(shù)據(jù)存儲(chǔ)的選擇和根據(jù)數(shù)據(jù)量和查詢(xún)實(shí)時(shí)性的要求做了分類(lèi)處理,最主要的是做到了一個(gè)業(yè)務(wù)任務(wù)分析的并行處理,而不是的多任務(wù)的并行處理,大大提升了查詢(xún)效率和統(tǒng)計(jì)結(jié)果的正確性。
[0098]本發(fā)明實(shí)施例的目的在于解決海量日志的云存儲(chǔ),以及海量日志能夠得到及時(shí)分析和深入分析挖掘的云計(jì)算服務(wù),并且保證日志數(shù)據(jù)的安全性、準(zhǔn)確性。同時(shí)解決了日志量的增長(zhǎng)只要通過(guò)新的計(jì)算節(jié)點(diǎn)來(lái)解決,而無(wú)需只是一味地靠硬件提高數(shù)據(jù)處理效率及增加
存儲(chǔ)量。
[0099]優(yōu)選地,存儲(chǔ)單元包括拆分模塊和傳送模塊。
[0100]拆分模塊用于使得集群服務(wù)器將日志文件拆分成日志數(shù)據(jù)。
[0101]由于不同用戶(hù)端的日志文件的格式各不相同,而每個(gè)日志文件中包含有多個(gè)日志記錄,將日志文件拆分成日志數(shù)據(jù)可以是將日志文件拆分成多行日志數(shù)據(jù),形成數(shù)據(jù)行,以便于將不通過(guò)格式的日志文件拆分成日志數(shù)據(jù)傳送至分布式消息列中。
[0102]傳送模塊用于使得集群服務(wù)器將日志數(shù)據(jù)傳送到分布式消息隊(duì)列中。其中,集群服務(wù)器從分布式消息隊(duì)列中讀取日志數(shù)據(jù),并對(duì)日志數(shù)據(jù)進(jìn)行分析。
[0103]分布式消息隊(duì)列可以是kafka消息隊(duì)列,kafka的分布式消息隊(duì)列比較適合簡(jiǎn)單的消息傳遞和分發(fā),能支持大數(shù)據(jù)量,尤其是日志數(shù)據(jù),而且與mapreduce結(jié)合做實(shí)時(shí)分析也能達(dá)到很好的效果。
[0104]優(yōu)選地,存儲(chǔ)單元還包括讀取模塊、解析模塊、生成模塊和存儲(chǔ)模塊。
[0105]讀取模塊用于在集群服務(wù)器將日志數(shù)據(jù)傳送到分布式消息隊(duì)列中之后,使得集群服務(wù)器從分布式消息隊(duì)列中讀取日志數(shù)據(jù)。解析模塊用于使得集群服務(wù)器對(duì)讀取的日志數(shù)據(jù)進(jìn)行解析,得到解析結(jié)果。生成模塊用于使得集群服務(wù)器根據(jù)解析結(jié)果生成日志數(shù)據(jù)對(duì)應(yīng)的鍵值對(duì)。存儲(chǔ)模塊用于使得集群服務(wù)器通過(guò)將鍵值對(duì)存儲(chǔ)到分布式數(shù)據(jù)庫(kù)中來(lái)存儲(chǔ)日志文件。[0106]具體地,從分布式消息隊(duì)列中讀取日志數(shù)據(jù),對(duì)每條日志數(shù)據(jù)進(jìn)行解析,解析得到日志的關(guān)鍵字,例如mac地址、流量、具體應(yīng)用等,基于這些解析結(jié)果生成日志數(shù)據(jù)對(duì)應(yīng)的鍵值對(duì),如利用mac地址為key,其他的解析結(jié)果為value,然后得到日志數(shù)據(jù)的鍵值對(duì),然后把日志數(shù)據(jù)映射存儲(chǔ)到分布式數(shù)據(jù)庫(kù)如hbase數(shù)據(jù)庫(kù)中。
[0107]本發(fā)明實(shí)施例,利用分布式數(shù)據(jù)庫(kù)hbase存儲(chǔ)日志解析的數(shù)據(jù),由于hbase數(shù)據(jù)庫(kù)是基于key-value的數(shù)據(jù)存儲(chǔ)模式,擴(kuò)展性好,從hbase取數(shù)進(jìn)行分析速度夠快,而且結(jié)果可以任意存儲(chǔ),要繼續(xù)存儲(chǔ)hbase、關(guān)系型數(shù)據(jù)或者redis均可,不會(huì)有不兼容的情況出現(xiàn)。
[0108]優(yōu)選地,分析單元包括第一獲取模塊和第一計(jì)算模塊。
[0109]第一獲取模塊用于使得集群服務(wù)器從分布式數(shù)據(jù)庫(kù)中實(shí)時(shí)獲取增量的日志數(shù)據(jù)。第一計(jì)算模塊用于使得集群服務(wù)器對(duì)增量的日志數(shù)據(jù)采用流式計(jì)算進(jìn)行統(tǒng)計(jì)。
[0110]由于日志文件的不斷累加,存儲(chǔ)在分布式數(shù)據(jù)庫(kù)中的日志數(shù)據(jù)也不斷增加,本發(fā)明實(shí)施例中的實(shí)時(shí)分析可以是集群服務(wù)器實(shí)時(shí)從分布式數(shù)據(jù)庫(kù)中實(shí)時(shí)獲取增量的日志數(shù)據(jù),對(duì)增量的日志數(shù)據(jù)進(jìn)行計(jì)算統(tǒng)計(jì),避免對(duì)已經(jīng)計(jì)算過(guò)的日志數(shù)據(jù)進(jìn)行重復(fù)計(jì)算。實(shí)時(shí)獲取增量的日志數(shù)據(jù),采用流式計(jì)算對(duì)增量的數(shù)據(jù)進(jìn)行統(tǒng)計(jì)。其中,流式計(jì)算是采用storm的bolt來(lái)完成,bolt中自帶過(guò)濾、聚合、查詢(xún)數(shù)據(jù)庫(kù)等一系列操作,其中,過(guò)濾操作可以在前期的parse分析中完成,以DB表的形式存放在hbase中,只在流式計(jì)算中做了 map映射把需要的數(shù)據(jù)組織起來(lái)進(jìn)行聚合計(jì)算分析。
[0111]具體地,首先,從kafka隊(duì)列中取出日志數(shù)據(jù)經(jīng)過(guò)parse解析存放在hbase中,此過(guò)程將日志記錄進(jìn)行拆分,映射成DB表的形式存放在hbase中。然后,采用流式計(jì)算來(lái)進(jìn)行實(shí)時(shí)分析統(tǒng)計(jì),流式計(jì)算是采用storm的bolt來(lái)完成,bolt中自帶過(guò)濾、聚合、查詢(xún)數(shù)據(jù)庫(kù)等一系列操作,其中,過(guò)濾操作可以在前期的parse分析中完成,以DB表的形式存放在hbase中,只在流式計(jì)算中做了 map映射把需要的數(shù)據(jù)組織起來(lái)進(jìn)行聚合計(jì)算分析。接著將流式計(jì)算統(tǒng)計(jì)完的結(jié)果存放在數(shù)據(jù)庫(kù)如redis數(shù)據(jù)庫(kù)中。最后,把存儲(chǔ)在redis的結(jié)果數(shù)據(jù)依據(jù)實(shí)際需要存放在hbase數(shù)據(jù)庫(kù),或者關(guān)系型數(shù)據(jù)庫(kù)mysql中,供用戶(hù)查詢(xún)這些統(tǒng)計(jì)數(shù)據(jù)。
[0112]上述實(shí)施例描述了日志分析中的實(shí)時(shí)分析的一個(gè)流程,根據(jù)實(shí)時(shí)分析流程處理海量日志的實(shí)時(shí)分析,瞬間把結(jié)果反饋給客戶(hù),提高日志分析結(jié)果的及時(shí)性。
[0113]優(yōu)選地,分析單元包括第二獲取模塊和第二計(jì)算模塊。
[0114]第二獲取模塊用于使得集群服務(wù)器按照預(yù)設(shè)周期從分布式數(shù)據(jù)庫(kù)中獲取增量的日志數(shù)據(jù)。第二計(jì)算模塊用于使得集群服務(wù)器對(duì)增量的日志數(shù)據(jù)進(jìn)行統(tǒng)計(jì)計(jì)算。
[0115]由于用戶(hù)對(duì)日志文件的分析結(jié)果的查詢(xún)情況的不同可以采用離線分析的方式對(duì)日志數(shù)據(jù)進(jìn)行分析處理??梢灶A(yù)先設(shè)置分析的周期即預(yù)設(shè)周期,預(yù)設(shè)周期可以根據(jù)需要進(jìn)行設(shè)置,例如一個(gè)星期或者一個(gè)月等。按照預(yù)設(shè)周期從分布式數(shù)據(jù)庫(kù)中獲取增量的日志數(shù)據(jù),在對(duì)增量的日志數(shù)據(jù)進(jìn)行統(tǒng)計(jì)計(jì)算。
[0116]具體地,可以通過(guò)以下步驟實(shí)現(xiàn):
[0117]步驟一,從kafka隊(duì)列中取出日志數(shù)據(jù)經(jīng)過(guò)parse解析存放在hbase中,此過(guò)程將日志記錄進(jìn)行拆分,映射成DB表的形式存放在hbase中。
[0118]步驟二,根據(jù)具體需要?jiǎng)?chuàng)建一個(gè)個(gè)的作業(yè)任務(wù),任務(wù)邏輯根據(jù)實(shí)際的業(yè)務(wù)邏輯而定。[0119]步驟三,創(chuàng)建周期性調(diào)度Task,就是設(shè)置周期性的調(diào)度作業(yè)任務(wù),比如預(yù)先創(chuàng)建任務(wù)1,每天零點(diǎn)跑任務(wù)I。
[0120]步驟四,到達(dá)的調(diào)度時(shí)間,依據(jù)調(diào)度內(nèi)容啟動(dòng)任務(wù)。
[0121 ] 步驟五,執(zhí)行具體的任務(wù)邏輯計(jì)算統(tǒng)計(jì)日志數(shù)據(jù)。
[0122]步驟六,如果任務(wù)執(zhí)行失敗,則通過(guò)預(yù)先設(shè)置的通知模塊以短信或者mail的方式通知相關(guān)用戶(hù),用戶(hù)在手動(dòng)排查原因后重啟作業(yè)任務(wù)。
[0123]步驟七,任務(wù)執(zhí)行成功后,把執(zhí)行結(jié)果存放在hbase數(shù)據(jù)庫(kù)中,方便用戶(hù)查詢(xún)。
[0124]步驟八,任務(wù)執(zhí)行成功并且把結(jié)果存放在hbase數(shù)據(jù)庫(kù)后,可以通過(guò)通知模塊以短信或者mail的方式通知用戶(hù),任務(wù)執(zhí)行成功。
[0125]上述實(shí)施例描述了日志分析中的離線分析的一個(gè)流程,根據(jù)這樣的離線分析流程并行處理海量日志的離線分析,并且把結(jié)果上報(bào)給前端供用戶(hù)展示。
[0126]圖4是根據(jù)本發(fā)明實(shí)施例的一種優(yōu)選的日志處理裝置的示意圖。如圖4所示,該實(shí)施例的日志處理裝置包括日志采集模塊20、日志存儲(chǔ)模塊40、日志分析模塊60和顯示模塊80。
[0127]日志采集模塊20用于從外部系統(tǒng)上提取相關(guān)日志。外部系統(tǒng)可以是需要采集日志的服務(wù)器,也可以是用戶(hù)那一側(cè)需要采集日志的客戶(hù)端,即,本發(fā)明實(shí)施例中提供的用戶(hù)端。具體地,可以是通過(guò)設(shè)計(jì)的一個(gè)agent代理,搭載在需要采集日志的服務(wù)器上,定時(shí)采集相關(guān)日志往存儲(chǔ)模塊傳送。
[0128]日志存儲(chǔ)模塊40用于把采集來(lái)的日志存儲(chǔ)在collector集群服務(wù)器上。日志存儲(chǔ)模塊40具有兩部分功能,一是通過(guò)HTTP協(xié)議將采集來(lái)的日志文件存放在集群服務(wù)器上,并且把日志文件的描述信息(例如文件路徑、創(chuàng)建時(shí)間等)存放在Redis中;二是processor處理過(guò)程,通過(guò)redis讀取日志文件的描述信息把具體日志文件數(shù)據(jù)傳送到kafka消息隊(duì)列中,供日志分析模塊60調(diào)用分析。日志存儲(chǔ)模塊40可以通過(guò)本發(fā)明實(shí)施例中的存儲(chǔ)單元來(lái)實(shí)現(xiàn)其功能。
[0129]日志分析模塊60用于計(jì)算統(tǒng)計(jì)日志相關(guān)數(shù)據(jù),根據(jù)查詢(xún)要求的及時(shí)性分為實(shí)時(shí)分析和離線分析。日志分析模塊60可以通過(guò)本發(fā)明實(shí)施例的分析單元實(shí)現(xiàn)其功能。
[0130]實(shí)時(shí)分析通常要求在數(shù)秒內(nèi)返回上億行數(shù)據(jù)的分析,從日志存儲(chǔ)模塊40中分發(fā)出即時(shí)的日志數(shù)據(jù)進(jìn)行實(shí)時(shí)統(tǒng)計(jì),這部分?jǐn)?shù)據(jù)量一般不會(huì)太大,可以通過(guò)流式計(jì)算來(lái)統(tǒng)計(jì)分析,結(jié)果暫存redis中,處理后往hbase中存放,方便取數(shù)前端展示。
[0131]離線分析對(duì)統(tǒng)計(jì)數(shù)據(jù)的及時(shí)性要求不高,可以隔天或者隔月展示。從日志存儲(chǔ)模塊中把解析后的日志數(shù)據(jù)先存放在Hbase數(shù)據(jù)庫(kù)中,根據(jù)業(yè)務(wù)邏輯要求預(yù)先寫(xiě)好任務(wù)job,定時(shí)跑任務(wù)來(lái)計(jì)算統(tǒng)計(jì)分析日志。
[0132]顯示模塊80用于將日志分析結(jié)果通過(guò)網(wǎng)頁(yè)或者手機(jī)APP展示給用戶(hù)。
[0133]本發(fā)明實(shí)施例的優(yōu)點(diǎn)在于:第一,采用可搭可卸的agent代理采集日志,可以方便配置采集日志類(lèi)型,不需要也可以隨時(shí)卸載,方便快捷,無(wú)需重新定制開(kāi)發(fā)。第二,采用集群存儲(chǔ),作為一個(gè)日志中心,可接受所有傳送過(guò)來(lái)的日志,集中進(jìn)行key-value處理后進(jìn)行存儲(chǔ),尤其是隨著日志量的增長(zhǎng),只要通過(guò)增加硬盤(pán)、內(nèi)存等硬件來(lái)擴(kuò)容即可,即方便快捷又節(jié)省開(kāi)銷(xiāo)。第三,日志分析模塊60針對(duì)日志量和實(shí)際需求進(jìn)行分類(lèi)處理,對(duì)大數(shù)據(jù)量的分析速率較快,且準(zhǔn)確性較高,對(duì)于結(jié)果的反饋可自動(dòng)通知用戶(hù),及時(shí)性得到很好的保障。第四,利用hbase存儲(chǔ)日志解析的數(shù)據(jù),由于hbase是基于key value的數(shù)據(jù)存儲(chǔ)模式,擴(kuò)展性好,從hbase數(shù)據(jù)庫(kù)取數(shù)進(jìn)行分析速度夠快,而且結(jié)果可以任意存儲(chǔ),要繼續(xù)存儲(chǔ)hbase數(shù)據(jù)庫(kù)、關(guān)系型數(shù)據(jù)或者redis數(shù)據(jù)庫(kù)均可,不會(huì)有不兼容的情況出現(xiàn)。
[0134]綜上,本發(fā)明具有如下效果:
[0135]高運(yùn)算能力,將復(fù)雜的運(yùn)算均分配到各臺(tái)服務(wù)器,實(shí)現(xiàn)了整個(gè)裝置的高并發(fā)能力,處理能力是傳統(tǒng)架構(gòu)的10倍以上。
[0136]在用戶(hù)實(shí)際應(yīng)用環(huán)境中,各種不同類(lèi)型的軟硬件故障發(fā)生的概率較高,如硬件損壞、網(wǎng)絡(luò)中斷、系統(tǒng)崩潰等異常都會(huì)引起服務(wù)中斷,甚至造成數(shù)據(jù)丟失。本發(fā)明實(shí)施例是一個(gè)構(gòu)建在云平臺(tái)之上的海量日志的日志處理裝置,因此它可利用云計(jì)算環(huán)境的多主機(jī)冗余來(lái)保障服務(wù)的高可靠性。
[0137]本發(fā)明實(shí)施例能夠?qū)⑺杏脩?hù)端的本地存儲(chǔ)做匯總,可支持PB規(guī)模的存儲(chǔ)容量,且非常容易進(jìn)行存儲(chǔ)擴(kuò)容,整個(gè)擴(kuò)展過(guò)程不會(huì)影響服務(wù)的持續(xù)運(yùn)行。
[0138]本發(fā)明實(shí)施例使用的軟件產(chǎn)品為開(kāi)源產(chǎn)品,硬件采用低端的PC-SERVER,總成本較低。
[0139]需要說(shuō)明的是,對(duì)于前述的各方法實(shí)施例,為了簡(jiǎn)單描述,故將其都表述為一系列的動(dòng)作組合,但是本領(lǐng)域技術(shù)人員應(yīng)該知悉,本發(fā)明并不受所描述的動(dòng)作順序的限制,因?yàn)橐罁?jù)本發(fā)明,某些步驟可以采用其他順序或者同時(shí)進(jìn)行。其次,本領(lǐng)域技術(shù)人員也應(yīng)該知悉,說(shuō)明書(shū)中所描述的實(shí)施例均屬于優(yōu)選實(shí)施例,所涉及的動(dòng)作和模塊并不一定是本發(fā)明所必須的。
[0140]在上述實(shí)施例中,對(duì)各個(gè)實(shí)施例的描述都各有側(cè)重,某個(gè)實(shí)施例中沒(méi)有詳述的部分,可以參見(jiàn)其他實(shí)施例的相關(guān)描述。
[0141]在本申請(qǐng)所提供的幾個(gè)實(shí)施例中,應(yīng)該理解到,所揭露的裝置,可通過(guò)其它的方式實(shí)現(xiàn)。例如,以上所描述的裝置實(shí)施例僅僅是示意性的,例如所述單元的劃分,僅僅為一種邏輯功能劃分,實(shí)際實(shí)現(xiàn)時(shí)可以有另外的劃分方式,例如多個(gè)單元或組件可以結(jié)合或者可以集成到另一個(gè)系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點(diǎn),所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過(guò)一些接口,裝置或單元的間接耦合或通信連接,可以是電性或其它的形式。
[0142]所述作為分離部件說(shuō)明的單元可以是或者也可以不是物理上分開(kāi)的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個(gè)地方,或者也可以分布到多個(gè)網(wǎng)絡(luò)單元上。可以根據(jù)實(shí)際的需要選擇其中的部分或者全部單元來(lái)實(shí)現(xiàn)本實(shí)施例方案的目的。
[0143]另外,在本發(fā)明各個(gè)實(shí)施例中的各功能單元可以集成在一個(gè)處理單元中,也可以是各個(gè)單元單獨(dú)物理存在,也可以?xún)蓚€(gè)或兩個(gè)以上單元集成在一個(gè)單元中。上述集成的單元既可以采用硬件的形式實(shí)現(xiàn),也可以采用軟件功能單元的形式實(shí)現(xiàn)。
[0144]所述集成的單元如果以軟件功能單元的形式實(shí)現(xiàn)并作為獨(dú)立的產(chǎn)品銷(xiāo)售或使用時(shí),可以存儲(chǔ)在一個(gè)計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說(shuō)對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分或者該技術(shù)方案的全部或部分可以以軟件產(chǎn)品的形式體現(xiàn)出來(lái),該計(jì)算機(jī)軟件產(chǎn)品存儲(chǔ)在一個(gè)存儲(chǔ)介質(zhì)中,包括若干指令用以使得一臺(tái)計(jì)算機(jī)設(shè)備(可為個(gè)人計(jì)算機(jī)、移動(dòng)終端、服務(wù)器或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個(gè)實(shí)施例所述方法的全部或部分步驟。而前述的存儲(chǔ)介質(zhì)包括:U盤(pán)、只讀存儲(chǔ)器(ROM,Read-OnlyMemory)、隨機(jī)存取存儲(chǔ)器(RAM, Random Access Memory)、移動(dòng)硬盤(pán)、磁碟或者光盤(pán)等各種可以存儲(chǔ)程序代碼的介質(zhì)。
[0145]以上所述僅為本發(fā)明的優(yōu)選實(shí)施例而已,并不用于限制本發(fā)明,對(duì)于本領(lǐng)域的技術(shù)人員來(lái)說(shuō),本發(fā)明可以有各種更改和變化。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
【權(quán)利要求】
1.一種日志處理方法,其特征在于,包括: 集群服務(wù)器接收用戶(hù)端的日志文件; 所述集群服務(wù)器存儲(chǔ)所述日志文件; 所述集群服務(wù)器對(duì)所述日志文件進(jìn)行分析,得到分析結(jié)果;以及 所述集群服務(wù)器輸出所述分析結(jié)果。
2.根據(jù)權(quán)利要求1所述的日志處理方法,其特征在于,所述集群服務(wù)器存儲(chǔ)所述日志文件包括: 所述集群服務(wù)器將所述日志文件拆分成日志數(shù)據(jù);以及 所述集群服務(wù)器將所述日志數(shù)據(jù)傳送到分布式消息隊(duì)列中, 其中,所述集群服務(wù)器從所述分布式消息隊(duì)列中讀取所述日志數(shù)據(jù),并對(duì)所 述日志數(shù)據(jù)進(jìn)行分析。
3.根據(jù)權(quán)利要求2所述的日志處理方法,其特征在于,在所述集群服務(wù)器將所述日志數(shù)據(jù)傳送到分布式消息隊(duì)列中之后,所述日志處理方法還包括: 所述集群服務(wù)器從所述分布式消息隊(duì)列中讀取所述日志數(shù)據(jù); 所述集群服務(wù)器對(duì)讀取的日志數(shù)據(jù)進(jìn)行解析,得到解析結(jié)果; 所述集群服務(wù)器根據(jù)所述解析結(jié)果生成所述日志數(shù)據(jù)對(duì)應(yīng)的鍵值對(duì);以及 所述集群服務(wù)器通過(guò)將所述鍵值對(duì)存儲(chǔ)到分布式數(shù)據(jù)庫(kù)中來(lái)存儲(chǔ)所述日志文件。
4.根據(jù)權(quán)利要求3所述的日志處理方法,其特征在于,所述集群服務(wù)器對(duì)所述日志文件進(jìn)行分析包括: 所述集群服務(wù)器從所述分布式數(shù)據(jù)庫(kù)中實(shí)時(shí)獲取增量的日志數(shù)據(jù);以及 所述集群服務(wù)器對(duì)所述增量的日志數(shù)據(jù)采用流式計(jì)算進(jìn)行統(tǒng)計(jì)。
5.根據(jù)權(quán)利要求3所述的日志處理方法,其特征在于,所述集群服務(wù)器對(duì)所述日志文件進(jìn)行分析包括: 所述集群服務(wù)器按照預(yù)設(shè)周期從所述分布式數(shù)據(jù)庫(kù)中獲取增量的日志數(shù)據(jù);以及 所述集群服務(wù)器對(duì)所述增量的日志數(shù)據(jù)進(jìn)行統(tǒng)計(jì)計(jì)算。
6.一種日志處理裝置,其特征在于,包括: 接收單元,用于使得集群服務(wù)器接收用戶(hù)端的日志文件; 存儲(chǔ)單元,用于使得所述集群服務(wù)器存儲(chǔ)所述日志文件; 分析單元,用于使得所述集群服務(wù)器對(duì)所述日志文件進(jìn)行分析,得到分析結(jié)果;以及 輸出單元,用于使得所述集群服務(wù)器輸出所述分析結(jié)果。
7.根據(jù)權(quán)利要求6所述的日志處理裝置,其特征在于,所述存儲(chǔ)單元包括: 拆分模塊,用于使得所述集群服務(wù)器將所述日志文件拆分成日志數(shù)據(jù);以及 傳送模塊,用于使得所述集群服務(wù)器將所述日志數(shù)據(jù)傳送到分布式消息隊(duì)列中, 其中,所述集群服務(wù)器從所述分布式消息隊(duì)列中讀取所述日志數(shù)據(jù),并對(duì)所述日志數(shù)據(jù)進(jìn)行分析。
8.根據(jù)權(quán)利要求7所述的日志處理裝置,其特征在于,所述存儲(chǔ)單元還包括: 讀取模塊,用于在所述集群服務(wù)器將所述日志數(shù)據(jù)傳送到分布式消息隊(duì)列中之后,使得所述集群服務(wù)器從所述分布式消息隊(duì)列中讀取所述日志數(shù)據(jù); 解析模塊,用于使得所述集群服務(wù)器對(duì)讀取的日志數(shù)據(jù)進(jìn)行解析,得到解析結(jié)果;生成模塊,用于使得所述集群服務(wù)器根據(jù)所述解析結(jié)果生成所述日志數(shù)據(jù)對(duì)應(yīng)的鍵值對(duì);以及 存儲(chǔ)模塊,用于使得所述集群服務(wù)器通過(guò)將所述鍵值對(duì)存儲(chǔ)到分布式數(shù)據(jù)庫(kù)中來(lái)存儲(chǔ)所述日志文件。
9.根據(jù)權(quán)利要求8所述的日志處理裝置,其特征在于,所述分析單元包括: 第一獲取模塊,用于使得所述集群服務(wù)器從所述分布式數(shù)據(jù)庫(kù)中實(shí)時(shí)獲取增量的日志數(shù)據(jù);以及 第一計(jì)算模塊,用于使得所述集群服務(wù)器對(duì)所述增量的日志數(shù)據(jù)采用流式計(jì)算進(jìn)行統(tǒng)計(jì)。
10.根據(jù)權(quán)利要求8所述的日志處理裝置,其特征在于,所述分析單元包括: 第二獲取模塊,用于使得所述集群服務(wù)器按照預(yù)設(shè)周期從所述分布式數(shù)據(jù)庫(kù)中獲取增量的日志數(shù)據(jù);以及 第二計(jì)算模塊,用于使得所述集群服務(wù)器對(duì)所述增量的日志數(shù)據(jù)進(jìn)行統(tǒng)計(jì)計(jì)算。
【文檔編號(hào)】G06F17/30GK103838867SQ201410106430
【公開(kāi)日】2014年6月4日 申請(qǐng)日期:2014年3月20日 優(yōu)先權(quán)日:2014年3月20日
【發(fā)明者】洪珂, 劉華明, 盧榮斌, 閔杰, 李波, 陳燕華 申請(qǐng)人:網(wǎng)宿科技股份有限公司