文章大綱一、日志系統(tǒng)概念介紹 一,、日志系統(tǒng)概念介紹1. 簡介日志主要包括系統(tǒng)日志,、應(yīng)用程序日志和安全日志。系統(tǒng)運(yùn)維和開發(fā)人員可以通過日志了解服務(wù)器軟硬件信息,、檢查配置過程中的錯(cuò)誤及錯(cuò)誤發(fā)生的原因。經(jīng)常分析日志可以了解服務(wù)器的負(fù)荷,,性能安全性,,從而及時(shí)采取措施糾正錯(cuò)誤。 2. 日志分類日志是帶時(shí)間戳的基于時(shí)間序列的機(jī)器數(shù)據(jù),,包括IT系統(tǒng)信息(服務(wù)器、網(wǎng)絡(luò)設(shè)備,、操作系統(tǒng),、應(yīng)用軟件)、物聯(lián)網(wǎng)各種傳感器信息,。日志可以反映用戶行為,,是真實(shí)數(shù)據(jù)。 日志處理v1.0 日志處理v2.0 日志處理v3.0 3. 日志實(shí)時(shí)性分析實(shí)時(shí) 準(zhǔn)實(shí)時(shí) 平臺(tái)在幾分鐘后完成重啟,,我們可以再登錄填寫,該情況并不造成原則性的影響,。因此,,我們可以將其列為準(zhǔn)實(shí)時(shí)的級(jí)別。 除了直接采集錯(cuò)誤與異常,,我們還需要進(jìn)行分析,。例如:僅知道某人的體重是沒什么意義的,但是如果增加了性別和身高兩個(gè)指標(biāo),,那么我們就可以判斷出此人的體重是否為標(biāo)準(zhǔn)體重,。 也就是說:如果能給出多個(gè)指標(biāo),就可以對(duì)龐大的數(shù)據(jù)進(jìn)行去噪,,然后通過回歸分析,讓采集到的數(shù)據(jù)更有意義,。 此外,,我們還要不斷地去還原數(shù)字的真實(shí)性。特別是對(duì)于實(shí)時(shí)的一級(jí)應(yīng)用,,我們要能快速地讓用戶明白他們所碰到現(xiàn)象的真實(shí)含義,。 例如:商家在上架時(shí)錯(cuò)把商品的價(jià)格標(biāo)簽 100 元標(biāo)成了 10 元,。這會(huì)導(dǎo)致商品馬上被搶購一空。 但是這種現(xiàn)象并非是業(yè)務(wù)的問題,,很難被發(fā)現(xiàn),,因此我們只能通過日志數(shù)據(jù)進(jìn)行邏輯分析,及時(shí)反饋以保證在幾十秒之后將庫存修改為零,,從而有效地解決此問題,。可見,,在此應(yīng)用場景中,,實(shí)時(shí)分析就顯得非常有用。 最后是追溯,,我們需要在獲取歷史信息的同時(shí),,實(shí)現(xiàn)跨時(shí)間維度的對(duì)比與總結(jié),那么追溯就能夠在各種應(yīng)用中發(fā)揮其關(guān)聯(lián)性作用了,。 4. 完整的日志系統(tǒng)包含內(nèi)容(1)收集-能夠采集多種來源的日志數(shù)據(jù) ELK提供了一整套解決方案,并且都是開源軟件,,之間互相配合使用,,完美銜接,高效的滿足了很多場合的應(yīng)用,。目前主流的一種日志系統(tǒng),。 5. 完整的日志系統(tǒng)作用(1)信息查找。通過檢索日志信息,,定位相應(yīng)的bug,,找出解決方案。 二、ELK日志系統(tǒng)介紹1. ELK組成成分ELK Stack是開源日志處理平臺(tái)解決方案,,背后的商業(yè)公司是elastic(https://www./),。它由日志采集解析工具Logstash、基于Lucene的全文搜索引擎Elasticsearch,、分析可視化平臺(tái)Kibana組成,。目前ELK的用戶有Adobe、Microsoft,、Mozilla,、Facebook、Stackoverflow,、Cisco,、ebay、Uber等諸多廠商,。 2. ELK工作原理展示圖3. Elasticsearch介紹Elasticsearch是基于Lucene的近實(shí)時(shí)搜索平臺(tái),,它能在一秒內(nèi)返回你要查找的且已經(jīng)在Elasticsearch做了索引的文檔。它默認(rèn)基于Gossip路由算法的自動(dòng)發(fā)現(xiàn)機(jī)制構(gòu)建配置有相同cluster name的集群,,但是有的時(shí)候這種機(jī)制并不可靠,,會(huì)發(fā)生腦裂現(xiàn)象。鑒于主動(dòng)發(fā)現(xiàn)機(jī)制的不穩(wěn)定性,,用戶可以選擇在每一個(gè)節(jié)點(diǎn)上配置集群其他節(jié)點(diǎn)的主機(jī)名,,在啟動(dòng)集群時(shí)進(jìn)行被動(dòng)發(fā)現(xiàn)。 4. Logstash介紹Logstash事件處理有三個(gè)階段:inputs → filters → outputs,。是一個(gè)接收,處理,,轉(zhuǎn)發(fā)日志的工具,。支持系統(tǒng)日志,webserver日志,,錯(cuò)誤日志,,應(yīng)用日志,總之包括所有可以拋出來的日志類型,。 5. Kibana介紹Kibana是專門設(shè)計(jì)用來與Elasticsearch協(xié)作的,,可以自定義多種表格、柱狀圖,、餅狀圖,、折線圖對(duì)存儲(chǔ)在Elasticsearch中的數(shù)據(jù)進(jìn)行深入挖掘分析與可視化。下圖定制的儀表盤可以動(dòng)態(tài)監(jiān)測數(shù)據(jù)庫集群中每個(gè)數(shù)據(jù)庫實(shí)例產(chǎn)生的各種級(jí)別的日志,。 6. ELK整體方案ELK中的三個(gè)系統(tǒng)分別扮演不同的角色,,組成了一個(gè)整體的解決方案。Logstash是一個(gè)ETL工具,,負(fù)責(zé)從每臺(tái)機(jī)器抓取日志數(shù)據(jù),,對(duì)數(shù)據(jù)進(jìn)行格式轉(zhuǎn)換和處理后,輸出到Elasticsearch中存儲(chǔ),。Elasticsearch是一個(gè)分布式搜索引擎和分析引擎,,用于數(shù)據(jù)存儲(chǔ),可提供實(shí)時(shí)的數(shù)據(jù)查詢,。Kibana是一個(gè)數(shù)據(jù)可視化服務(wù),,根據(jù)用戶的操作從Elasticsearch中查詢數(shù)據(jù),形成相應(yīng)的分析結(jié)果,,以圖表的形式展現(xiàn)給用戶,。 在前期部署階段,主要工作是Logstash節(jié)點(diǎn)和Elasticsearch集群的部署,,而在后期使用階段,,主要工作就是Elasticsearch集群的監(jiān)控和使用Kibana來檢索、分析日志數(shù)據(jù)了,,當(dāng)然也可以直接編寫程序來消費(fèi)Elasticsearch中的數(shù)據(jù),。 在上面的部署方案中,我們將Logstash分為Shipper和Indexer兩種角色來完成不同的工作,,中間通過Redis做數(shù)據(jù)管道,,為什么要這樣做?為什么不是直接在每臺(tái)機(jī)器上使用Logstash提取數(shù)據(jù),、處理,、存入Elasticsearch? 首先,,采用這樣的架構(gòu)部署,,有三點(diǎn)優(yōu)勢:第一,降低對(duì)日志所在機(jī)器的影響,,這些機(jī)器上一般都部署著反向代理或應(yīng)用服務(wù),,本身負(fù)載就很重了,所以盡可能的在這些機(jī)器上少做事,;第二,,如果有很多臺(tái)機(jī)器需要做日志收集,那么讓每臺(tái)機(jī)器都向Elasticsearch持續(xù)寫入數(shù)據(jù),,必然會(huì)對(duì)Elasticsearch造成壓力,,因此需要對(duì)數(shù)據(jù)進(jìn)行緩沖,同時(shí),,這樣的緩沖也可以一定程度的保護(hù)數(shù)據(jù)不丟失,;第三,將日志數(shù)據(jù)的格式化與處理放到Indexer中統(tǒng)一做,,可以在一處修改代碼,、部署,避免需要到多臺(tái)機(jī)器上去修改配置,。 其次,,我們需要做的是將數(shù)據(jù)放入一個(gè)消息隊(duì)列中進(jìn)行緩沖,,所以Redis只是其中一個(gè)選擇,也可以是RabbitMQ,、Kafka等等,,在實(shí)際生產(chǎn)中,Redis與Kafka用的比較多,。由于Redis集群一般都是通過key來做分片,,無法對(duì)list類型做集群,在數(shù)據(jù)量大的時(shí)候必然不合適了,,而Kafka天生就是分布式的消息隊(duì)列系統(tǒng)。 三,、互聯(lián)網(wǎng)行業(yè)日志處理方案介紹1. 新浪新浪采用的技術(shù)架構(gòu)是常見的Kafka整合ELK Stack方案,。Kafka作為消息隊(duì)列用來緩存用戶日志;使用Logstash做日志解析,,統(tǒng)一成JSON格式輸出給Elasticsearch,;使用Elasticsearch提供實(shí)時(shí)日志分析與強(qiáng)大的搜索和統(tǒng)計(jì)服務(wù);Kibana用作數(shù)據(jù)可視化組件,。該技術(shù)架構(gòu)目前服務(wù)的用戶包括微博,、微盤、云存儲(chǔ),、彈性計(jì)算平臺(tái)等十多個(gè)部門的多個(gè)產(chǎn)品的日志搜索分析業(yè)務(wù),,每天處理約32億條(2TB)日志。 2. 騰訊騰訊藍(lán)鯨數(shù)據(jù)平臺(tái)告警系統(tǒng)的技術(shù)架構(gòu)同樣基于分布式消息隊(duì)列和全文搜索引擎。但騰訊的告警平臺(tái)不僅限于此,,它的復(fù)雜的指標(biāo)數(shù)據(jù)統(tǒng)計(jì)任務(wù)通過使用Storm自定義流式計(jì)算任務(wù)的方法實(shí)現(xiàn),,異常檢測的實(shí)現(xiàn)利用了曲線的時(shí)間周期性和相關(guān)曲線之間的相關(guān)性去定義動(dòng)態(tài)的閾值,并且基于機(jī)器學(xué)習(xí)算法實(shí)現(xiàn)了復(fù)雜的日志自動(dòng)分類(比如summo logic),。 3. 七牛七牛采用的技術(shù)架構(gòu)為Flume+Kafka+Spark,,混部在8臺(tái)高配機(jī)器,。根據(jù)七牛技術(shù)博客提供的數(shù)據(jù),該日志處理平臺(tái)每天處理500億條數(shù)據(jù),,峰值80萬TPS,。 四,、參考文章 |
|