大數(shù)據(jù)時代,數(shù)據(jù)量呈幾何增長,為避免被時代潮流“拍在沙灘上”,就必須了解大數(shù)據(jù)的核心組成要素。其中,海量日志尤為重要,不管是IT達(dá)人還是企業(yè)本身,掌握海量日志的分析技術(shù)都必不可少。今天,就讓小編帶你探秘海量日志分析技術(shù),一起來看吧。
為什么海量日志很重要?
在討論海量日志分析技術(shù)之前,我們先來討論一下什么是海量日志。海量日志是大數(shù)據(jù)的重要組成部分。數(shù)據(jù)倉庫之父比爾.恩門(Bill Inmon) 在他的2016年的新書《數(shù)據(jù)架構(gòu)》中提到,企業(yè)中數(shù)據(jù)的組成部分中,非結(jié)構(gòu)化的數(shù)據(jù)占比已經(jīng)達(dá)到了 70% 以上。而這些非結(jié)構(gòu)化數(shù)據(jù)中,占據(jù)主導(dǎo)位置的是日志數(shù)據(jù),可以說日志數(shù)據(jù)是“大數(shù)據(jù)”分析的核心。這些數(shù)據(jù)貫穿所有的企業(yè)經(jīng)營活動,用戶的操作行為、服務(wù)器的系統(tǒng)日志、網(wǎng)絡(luò)設(shè)備的日志記錄、應(yīng)用程序的調(diào)試日志等等,會直接影響企業(yè)的日常運(yùn)行,與IT運(yùn)維人員也是息息相關(guān)。
海量日志數(shù)據(jù)有什么特征?
海量的日志數(shù)據(jù)十分滿足大數(shù)據(jù)的4V特征:產(chǎn)生速度快,每秒超過數(shù)萬、數(shù)十萬的情況已經(jīng)比比皆是;數(shù)據(jù)量巨大,速度一快,如果想要分析這數(shù)據(jù),勢必會帶來巨大的數(shù)據(jù)量;數(shù)據(jù)種類多,日志數(shù)據(jù)涵蓋IT系統(tǒng)的方方面面;價值密度低,雖然日志數(shù)據(jù)中能夠分析出大量有價值的信息,往往一條分析結(jié)果需要數(shù)百萬甚至上億條的數(shù)據(jù)支撐,而且單條日志的信息量有限。
日志樣例 那么,海量日志的威力有多大呢?我們可以通過一組數(shù)據(jù)來感受一下。假設(shè)有一個對外應(yīng)用服務(wù)器集群,產(chǎn)生日志的速度為10000條/s,每條日志的平均大小為200字節(jié),那么這個應(yīng)用服務(wù)器每天、每月、每年的日志增量為:
大數(shù)據(jù)時代計算方式的變革從行式存儲到列式存儲,再到流式計算 這么多的數(shù)據(jù),我們?nèi)绾蝸磉M(jìn)行分析呢?一方面我們需要能夠處理更多的數(shù)據(jù),另一方面,我們希望查詢結(jié)果更加的實(shí)時(例如:1秒之內(nèi)返回結(jié)果)。如果這些數(shù)據(jù)在關(guān)系型數(shù)據(jù)庫的世界里,數(shù)據(jù)以行的方式存儲,假設(shè)我們需要對數(shù)以億計的數(shù)據(jù)中的某一個數(shù)據(jù)進(jìn)行求和計算,那么首先,我們需要將所有這些數(shù)據(jù)全部讀出來,找到對應(yīng)的字段,然后進(jìn)行累加,而我們的計算瓶頸完全取決于磁盤的讀寫能力。我們可以用分庫或者分表的方式將數(shù)據(jù)庫進(jìn)行拆分,增加系統(tǒng)并行計算的能力,但是可能依然需要數(shù)百臺設(shè)備才能在1s之內(nèi)返回這些數(shù)據(jù)。然而我們沒有這么多機(jī)器,那么只能慢慢等待分析任務(wù)執(zhí)行完畢。如此一來,既耗時又費(fèi)力。后來,大數(shù)據(jù)技術(shù)誕生了。在大數(shù)據(jù)分析的場景中,列式存儲架構(gòu)取代了行式存儲。如果要對某一個字段進(jìn)行統(tǒng)計,只需要讀取相應(yīng)列的數(shù)據(jù),不需要進(jìn)行整個表的遍歷,這樣一來,需要讀取的數(shù)據(jù)量變小了,同時,MapReduce 也能夠使得分析應(yīng)用更好地實(shí)現(xiàn)分布式計算。可即便如此,計算的瓶頸依然在磁盤的讀寫效率上,計算速度并沒有本質(zhì)的變化,如果需要做實(shí)時數(shù)據(jù)的分析,還是需要大投入大量的存儲和計算資源。
行式數(shù)據(jù)庫vs列式數(shù)據(jù)庫 從邏輯上來說,如果要對海量的數(shù)據(jù)進(jìn)行快速的分析,在資源不變的前提下,最好的方法就是減少每次計算所需要讀取的數(shù)據(jù)量。但是如果減少了數(shù)據(jù)量的讀取,分析的結(jié)果就無法做到更大的覆蓋范圍和更加精準(zhǔn)的結(jié)果。基于這個思考,我們可以將計算分層,將最近一段時間產(chǎn)生的數(shù)據(jù)放在實(shí)時要求高的數(shù)據(jù)存儲中,使用更好的計算資源來進(jìn)行分析,將更長時間的歷史數(shù)據(jù)存入離線存儲設(shè)備中進(jìn)行批量計算,這部分計算時間可能長達(dá)數(shù)十分鐘或者數(shù)個小時,但是計算的結(jié)果可以用于和實(shí)時分析的結(jié)果進(jìn)行合并,使得分析的覆蓋范圍和結(jié)果的精準(zhǔn)度不受影響。在大數(shù)據(jù)分析技術(shù)中,還有一項(xiàng)非常重要的技術(shù) —— 流式計算,即數(shù)據(jù)進(jìn)入系統(tǒng)時就進(jìn)行必要的預(yù)處理操作,這部分的處理,同樣減少了后續(xù)數(shù)據(jù)分析中所需要讀取的數(shù)據(jù)量。
海量日志分析技術(shù)數(shù)據(jù)流程圖海量日志技術(shù)有哪些要點(diǎn)? 愛數(shù)AnyRobot Family 3.0(下面簡稱 AnyRobot) 海量日志分析融入了大數(shù)據(jù)分析技術(shù),其核心要點(diǎn)在于三個重要方面:海量日志的采集處理、海量日志的存儲、海量日志的分析。下面,我們就以AnyRobot為例剖析海量日志分析技術(shù)。海量日志的采集處理方面有兩個核心點(diǎn),分別是數(shù)據(jù)采集的多樣性和實(shí)時數(shù)據(jù)處理的性能。在采集數(shù)據(jù)源的多樣性上,AnyRobot 可以對接文件、TCP二進(jìn)制數(shù)據(jù)量、壓縮文件、結(jié)構(gòu)化數(shù)據(jù)、Syslog、SNMP 等多種數(shù)據(jù)源,我們還內(nèi)置了大量的分析模板,支持市面上多種網(wǎng)絡(luò)設(shè)備、數(shù)據(jù)庫、應(yīng)用軟件、中間件等各類應(yīng)用,可以實(shí)現(xiàn)大部分場景數(shù)據(jù)的“開箱即用”。當(dāng)然,數(shù)據(jù)源的接入也可以通過界面配置的方式快速完成。在實(shí)時處理上,AnyRobot 采用了可擴(kuò)展的消息隊(duì)列和流計算引擎,保證了實(shí)時處理的性能,能夠自如地應(yīng)對數(shù)萬甚至數(shù)十萬每秒的數(shù)據(jù)流量。海量日志的存儲方面我們采用存儲分層的策略對數(shù)據(jù)進(jìn)行分層,根據(jù)我們上文中探討的分析思路,應(yīng)該盡量減少用戶在實(shí)時分析場景下使用的數(shù)據(jù)量,我們將分析數(shù)據(jù)的存儲分為三個層次:第一層:用于實(shí)時分析和查詢的數(shù)據(jù),這部分?jǐn)?shù)據(jù)有兩個來源。第一部分是短期內(nèi)進(jìn)入系統(tǒng)中的數(shù)據(jù),這部分?jǐn)?shù)據(jù)保留的大量的細(xì)節(jié)信息,可以用戶排錯、細(xì)粒度的管理分析、事件分析等場景。第二部分是歷史數(shù)據(jù)經(jīng)過離線批量計算產(chǎn)生的分析結(jié)果,這部分?jǐn)?shù)據(jù)的細(xì)節(jié)已經(jīng)被隱藏起來,主要用戶統(tǒng)計分析和報表場景。這一部分的數(shù)據(jù)由于實(shí)時性要求高,也有高可用的要求,因此數(shù)據(jù)的量多于進(jìn)入系統(tǒng)的數(shù)據(jù)量,存儲方式可以采用更高性能的 SSD 存儲。第二層:用戶存儲離線分析的數(shù)據(jù),這部分?jǐn)?shù)據(jù)是對第一層數(shù)據(jù)的長期保存和離線分析,可以存儲在成本更低的對象存儲或者云存儲中,能夠滿足小時級別的數(shù)據(jù)分析和訪問需求,需要進(jìn)行實(shí)時分析和日志追溯時,可以重新導(dǎo)入到實(shí)時分析存儲中去。而且,這部分?jǐn)?shù)據(jù)可以通過壓縮的方式進(jìn)行存儲,由于日志文件的特性,壓縮比最高能夠達(dá)到原始數(shù)據(jù)1:5以上。第三層:歸檔存儲,由于合規(guī)性的要求和日志長期保存的需求,可以將更長時間的日志數(shù)據(jù)通過備份的方式進(jìn)行歸檔,采用愛數(shù)的AnyBackup 就能夠完成這一工作。這部分?jǐn)?shù)據(jù)不需要再實(shí)時或者離線分析中進(jìn)行查看,對它們的歷史分析結(jié)果已經(jīng)合并到和上兩層的分析當(dāng)中。采用 AnyBackup 自帶的壓縮和重復(fù)數(shù)據(jù)刪除功能,能夠獲得 95% 以上重復(fù)數(shù)據(jù)刪除率。
數(shù)據(jù)分層存儲 海量日志的分析方面AnyRobot實(shí)現(xiàn)了一個基于 SPL(搜索處理語言)的搜索引擎,采用分布式計算的方式對數(shù)據(jù)進(jìn)行分析和計算,在實(shí)時分析方面能夠快速的在數(shù)億級別數(shù)據(jù)量的情況下進(jìn)行實(shí)時分析,同時能夠兼容 Hadoop、Spark 等離線分析引擎,并能連接外部數(shù)據(jù)源,將實(shí)時分析、離線分析結(jié)果和外部數(shù)據(jù)源的查詢結(jié)果合并后呈現(xiàn)給最終用戶。在新版本的 AnyRobot 中也集成了機(jī)器學(xué)習(xí)能力,能夠?qū)崿F(xiàn)異常檢測、趨勢分析等應(yīng)用,滿足更多使用場景的覆蓋。
結(jié)語
日志是大數(shù)據(jù)的重要組成,為了滿足海量日志分析的需要,我們需要從海量日志處理、存儲和分析三個方面來設(shè)計我們的日志分析系統(tǒng)。愛數(shù) AnyRobot Family 3.0 通過加入消息隊(duì)列、流式處理、存儲分層、離線分析、機(jī)器學(xué)習(xí)等特性,是的海量日志分析的的效率和用戶體驗(yàn)都得到了大幅的提升。
文章摘自愛數(shù)
歡迎聯(lián)系寶通集團(tuán)咨詢愛數(shù)產(chǎn)品信息
寶通集團(tuán)聯(lián)系方式
咨詢熱線:0755-88603572
寶通官網(wǎng):www.bjrongxin.com
客戶垂詢郵箱:cuifang.mo@ex-channel.com
客戶垂詢QQ:1627678462
地址:深圳市福田區(qū)深南大道1006號國際創(chuàng)新中心C座11樓
郵編:518026